名片管理系统的设计(python)

上进小菜猪 发表于 2022/01/24 15:21:52 2022/01/24
【摘要】 《Python语言设计》课程设计说明书题 目名片管理系统学 号姓 名指导教师刘麒日 期2021.7.5内蒙古科技大学课程设计任务及指导书课程设计名称Python语言课程设计设计题目名片管理系统的设计指导教师时间2021.7.5一、教学要求1. 巩固和加深学生对python语言课程的基本知识的理解和掌握2. 掌握python语言编程和程序调试的基本技能3. 利用python语言进行基本的软件设...


《Python语言设计》


课程设计说明书




题 目

名片管理系统

学 号


姓 名


指导教师

刘麒

日 期

2021.7.5







内蒙古科技大学课程设计任务及指导书

课程设计名称

Python语言课程设计

设计题目

名片管理系统的设计

指导教师


时间

2021.7.5

一、教学要求

1. 巩固和加深学生对python语言课程的基本知识的理解和掌握
2. 掌握python语言编程和程序调试的基本技能
3. 利用python语言进行基本的软件设计
4. 掌握书写程序设计说明文档的能力
5. 提高运用python语言解决实际问题的能力

二、设计资料及参数

通过本项目的学习,学员可以了解项目开发的流程,掌握项目需求分析、设计与功能的代码实现。提高同学们独立分析需求与功能实现的能力。

项目知识点:变量、流程控制、函数、模块等python基础中常用的知识点。

使用python设计一个名片管理系统,能提供下列服务:

1. 程序启动,显示名片管理系统欢迎界面,并显示功能菜单

2. 用户用数字选择不同的功能

3. 根据功能选择,执行不同的功能

4. 用户名片需要记录用户的 姓名、电话、QQ、邮件

5. 如果查询到指定的名片,用户可以选择 修改 或者 删除 名片

三、设计要求及成果

学生独立完成设计

编码并调试通过

制作课程设计报告

准备答辩材料

四、进度安排

资料查阅与讨论(1天)

系统分析(1天)

系统的开发与测试(2天)

编写课程设计说明书和验收(1天)

五、评分标准

通过设计答辩方式,并结合学生的动手能力,独立分析解决问题的能力和创新精神,总结报告和答辩水平以及学习态度综合考评。

课程设计成绩分三部分,设计报告占40%,设计作品占40%,答辩水平占20%。

成绩分优、良、中、及格和不及格五等。

每人独立完成所交给的任务,单独评定成绩。

课程设计报告需要提交可运行程序文件及完整设计文档

建议参考资料

1、《Python快速编程入门》,黑马程序员,人民邮电出版社,2017年08月

2、《Python语言程序设计基础》(第2版),嵩天主编,高等教育出版社,2017年02月

3、《Python语言及其应用》[美] 卢布诺维克著,人民邮电出版社,2016年01月

4、《Python程序设计与算法基础教程》,江红,清华大学出版社,2017年07月

备注:本表由指导教师在设计开始前一周按所分设计小组分别填写完成,经由领导审核签字后存档备查。同时要求每位学生附一份适合自己设计内容的任务及指导书在成果档案袋中。


指导教师(签字): 系部负责人审核签字:

第一章 需求分析

1.%2 引言

传统的手工方式,数据容易丢失,在统计时易发生错误高,速度慢。而使用计算机可以提高工作速度以及数据的准确性。从而提高了管理效率。在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,名片管理系统以计算机为工具,通过对所需信息的管理,把管理员从繁琐的数据计算处理中解脱出来。为用户节省很多时间跟精力,提高用户的工作效率。

随着计算机的普及,越来越多的管理系统应运而生。同时,随着人们交往范围的不断扩大,我们需要同更多的人保持交流和联系,尤其是已经参加了工作的公司职员,除了熟悉的朋友,还有很多的客户,我们都要时不时的同他们保持联系,这时个人名片管理系统就可以派上用场了。

个人名片管理系统是用于辅助个人完成其名片有序管理的计算机软件系统,系统实施的目的旨在帮助用户完成其私人名片管理的数字化,以提供较手工方式下更高的效率和更低的出错率。

电子名片管理系统要实现的目标是:

将用户目前在处理名片管理工作时所采用的手工处理方式进行计算机化,从而与整个办公自动化系统的数字化趋势相协调,以求为用户提供更为专业和高效的个人管理服务。

2.%2 任务概述

本系统属于人员信息管理系统中名片管理模块,实现网络管理系统中关于名片管理的子功能。通过此软件,提高用软件工程分析问题、解决问题的能力,同时增强对数据库和python的使用能力。

目标:搭建名片管理系统 框架结构

准备文件,确定文件名,保证能够 在需要的位置 编写代码

编写 主运行循环,实现基本的 用户输入和判断




3.%2 数据描述

1.静态数据:

所谓静态数据,指在运行过程中主要作为参考的数据,它们在很长的一段时间内不会变化,一般不随运行而改变。

2.动态数据:

所谓动态数据.包括所有在运行中要发生变化的数据以及在运行中要输入、输出的数据。

3.系统流程图:

4.%2 功能需求

1. 程序启动,显示名片管理系统欢迎界面,并显示功能菜单

2. 用户用数字选择不同的功能

3. 根据功能选择,执行不同的功能

4. 用户名片需要记录用户的 姓名、电话、QQ、邮件

5. 将用户输入的数据排序,可以对电话,QQ,邮件的大小排序

6. 如果查询到指定的名片,用户可以选择 修改 或者 删除 名片

提示用户依次输入名片信息

将名片信息保存到一个字典

将字典添加到名片列表

提示名片添加完成

5.%2 性能需求

用户进入系统在终端输入0~4数字序号,如果输入其他字符会显示“输入错误,请重新输入”,输出会以字符型输出相关内容。在名片管理模块中,我们可以新建名片,可以修改名片,可以删除名片资料,对名片列表进行了显示,提高用户体验。

6.%2 运行需求

(1)、数据精确度

进行操作请求时,如:名片录入、名片删除、名片修改、名片查询时,应保证输入数据与数据库数据的相匹配性。而在满足用户请求时,系统应保证所响应数据的正确性和全而性。

(2)、时间性

为满足用户高效要求,数据的响应时间、更新处理时间、数据转换与传输时间、运行时间都应在可接受范围之内。





















第2章 概要设计

1.%2 总体设计

设计主函数和部分功能的子函数,包括运行时的主菜单。首先函数运行时会弹出一个主菜单,然后输入数字选择操作,如图2.1.1主菜单。


图2.1.1 主菜单


2.%2 数据类型定义

def card(): 新增名片函数

def show(): 显示全部名片函数

def search(): 搜索名片函数

def deal_card(find_d): 删除名片函数

def xiugai(c,d): 修改名片函数

def paixu(): 对名片进行排序

3.%2 接口设计

表2.3:函数列表

函数名

函数格式 //即函数首部

函数功能

card

def card():

新增名片

show

def show():

显示全部名片

search

def search():

搜索名片

deal_card

def deal_card(find_d):

删除名片

xiugai

def xiugai(c,d):

修改名片

paixu

def paixu():

名片排序



4.%2 运行界面设计

以“—”为分割线,运行页面以简便友好的初衷设计,让用户可以轻松使用。

代码实现:

print("—"*10)
print("欢迎使用名片管理系统\n1.新增名片\n2.显示全部\n3.搜索名片\n4.排序系统\n0.退出系统")
a = input("请选择序号:")
if a in ["1", "2", "3","4"]:
if a == "1":
card()
elif a == "2":
show()
elif a == "3":
search()
elif a == "4":
paixu()
elif a == "0":
print("已退出")
break
else:
print("输入错误,请重新输入:")





第3章 详细设计

1.%2 添加模块设计

使用 字典 记录 每一张名片 的详细信息

使用 列表 统一记录保存所有的 名片字典

根据步骤实现代码:

def card():
print('新增名片')
name = input('姓名:')
phone = input('电话:')
qq = input('qq:')
email = input('邮箱:')
card_d = {'name': name, 'phone': phone,'qq': qq,'email': email}
card_list.append(card_d)
print('成功添加%s的名片' % card_d['name'])

2.%2 显示全部名片模块设计

首先提示进入显示所有名片模块,然后将card_list中的信息循环输出,如果链表为空,则提示没有任何名片录入。

代码实现:

def show():
print('显示全部')
if len(card_list) == 0:
print('没有任何名片记录')
return
print('姓名\t\t电话\t\t\t\tQQ\t\t\t\t邮箱')
for card_d in card_list:
print('%s\t\t%s\t\t%s\t\t%s\t\t' % (card_d['name'],card_d['phone'],card_d['qq'],card_d['email']))


3.%2 查询模块设计


提示用户要搜索的姓名,根据用户输入的姓名遍历列表,搜索到指定的名片后,再执行后续的操作。

代码实现

def search():
print('搜索名片')
find_name = input('请输入要搜索的姓名:')
for card_d in card_list:
if card_d['name'] == find_name:
print('姓名\t电话\tQQ\t邮箱')
print('%s\t%s\t%s\t%s' % (card_d['name'],card_d['phone'],card_d['qq'],card_d['email']))
deal_card(card_d)
break
else:
print('没有找%s的名片' % find_name)


4.%2 删除和修改名片模块设计

3.4.1删除模块

查询成功后删除名片,由于找到的字典记录已经在列表中保存,要删除名片记录,只需要把列表中对应的字典删除即可。

代码实现:

elif b == '2':
card_list.remove(find_d)
print('删除名片成功')

3.4.2修改模块

由于找到的字典记录已经在列表中保存要修改名片记录,只需要把列表中对应的字典中每一个键值对的数据修改即可。

代码实现:

if b == '1':
find_d['name'] = xiugai(find_d['name'], '姓名:')
find_d['phone'] = xiugai(find_d['phone'], '电话:')
find_d['qq'] = xiugai(find_d['qq'], 'QQ:')
find_d['email'] = xiugai(find_d['email'], '邮箱:')
print('修改名片成功')




3.5排序模块

根据链表card_list,只要使用sort快排函数即可完成排序,card_list.sort(key=lambda s: int(s["phone"][:]))。首先设b来获取需要排序的项目,实现对电话号,qq,邮箱的排序功能。

代码实现:

print("请输入排序的项目:\n1.根据电话号码排序\n2.根据qq排序\n3.根据邮箱排序")
b = input()
if b in ['1', '2', '3', ]:
if b == '1':
card_list.sort(key=lambda s: int(s["phone"][:]))
print('姓名\t\t电话\t\t\t\tQQ\t\t\t\t邮箱')
for card_d in card_list:
print('%s\t\t%s\t\t%s\t\t%s\t\t' % (card_d['name'], card_d['phone'], card_d['qq'], card_d['email']))
if b == '2':
card_list.sort(key=lambda s: int(s["qq"][:]))
print('姓名\t\t电话\t\t\t\tQQ\t\t\t\t邮箱')
for card_d in card_list:
print('%s\t\t%s\t\t%s\t\t%s\t\t' % (card_d['name'], card_d['phone'], card_d['qq'], card_d['email']))
if b == '3':
card_list.sort(key=lambda s: int(s["email"][:8]))
print('姓名\t\t电话\t\t\t\tQQ\t\t\t\t邮箱')
for card_d in card_list:
print('%s\t\t%s\t\t%s\t\t%s\t\t' % (card_d['name'], card_d['phone'], card_d['qq'], card_d['email']))







第4章 测试分析

1.%2 测试程序执行情况


图4.1名片创建


图4.2名片的显示

图4.3名片的搜索


图4.4名片的修改

图4.5名片的删除

图4.6电话号码排序



图4.7 qq号码


图4.8邮箱排序




2.%2 出现的问题和解决的方法

修改完之后,修改的程序无法运行,认真检查之后发现代码中有一个变量打错了,导致整个子函数无法运行,修改之后,正常运行。在测试中发现在主页面如果输入非0~3字符会报错,添加else语句进行提示就解决了这个问题。

while True:
print("欢迎使用名片管理系统\n1.新增名片\n2.显示全部\n3.搜索名片\n0.退出系统")
if a in ["1", "2", "3","4"]:
if a == "1":
card()
elif a == "2":
show()
elif a == "3":
search()
elif a == "4":
paixu()
elif a == "0":
print("已退出")
break
else:
print("输入错误,请重新输入:")

break
else:
print("输入错误,请重新输入:")








第5章 实训总结


一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。在设计过程中,和同学们相互探讨,相互学习,相互监督。我学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世,这次课程设计对我来说受益良多。

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。我这次设计的科目是名片管理系统。

通过这次设计,我在多方面都有所提高。

很多程序在结构上是独立的,但是本此设计的程序功能不是零散的,它有一个连接是的程序是一个整体对以后的学习充满了信心和期待通过这次的课程设计,更是让我深刻认识到自己在学习中的不足,同时也找到了克服这些不足的方法,这也是一笔很大的资源。在以后的时间中,我们应该利用更多的时间去上机实验,加强自学的能力,多编写程序,相信不久后我们的编程能力都会有很大的提高能设计出更多的更有创新的作品。

参考文献

[1].张跃廷,王小科,帖凌珍. ASP.NET程序开发范例宝典[M],北京:人民邮电出版社,2007

[2].马颖华苏贵洋袁艺等. ASP.NET 2.0网络编程从基础到实践[M],北京:电子工业出版社,2007


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。