青岛农业大学理学与信息科学学院高级语言课程设计报告设计题目学生通讯录设计与实现学生专业班级电子信息工程专业2012级02班学生姓名(学号)刘涛(20123134)设计小组其他同学姓名(学号)王博宸(20123190)于勐涛(20123294)周巧丽(20123288)周倩(20123287)邓楚玉(20120822)指导教师孙华丽完成时间2014.12.25设计地点理信学院软件实验室2014 年 12 月 25 日学生通讯录设计与实现一、课程设计目的和意义高级语言课程设计是计算机科学与技术专业的主要实践性教学环节。
其目的在于加深对面向对象程序设计语言程序设计理论和基本知识的理解,掌握使用C++语言进行面向对象程序设计的基本方法,提高运用面向对象知识解决实际问题的能力。
为毕业设计和以后的工程实践打下良好的基础。
该课程设计的意义也十分重大,它可以充分锻炼自己的逻辑思维,提升自己对编程语言的认识和运用,我在设计过程中充分的与其他的学科进行了整合,使自己加深了对程序语言的认识,自己的治学态度也得到了提升。
二、需求分析与设计1.设计任务分析设计任务为学生通讯录设计与实现。
学生通讯录拥有以下几种功能:添加记录、查找记录、删除记录、修改记录。
添加功能可以向数据库中追加数据,查找功能能够根据要求超找记录,删除能够删除数据库中的指定记录,修改功能能够修改制定记录的指定内容。
记录储存在文本数据库中,每个记录记录一个联系人的详细信息,记录内容分别为姓名、年龄、电话、邮箱、地址。
我们小组每个人都有明确的任务分工,本次课程设计我主要负责添加纪录模块的设计与实现。
该程序使用Python语言来进行设计。
Python,是一种面向对象、解释型计算机程序设计语言,应用于设计各种各样的应用程序。
Python在设计上坚持了清晰划一的风格,语法简洁而清晰,具有丰富和强大的类库,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。
2.设计方案论证程序通过调用4个函数来实现通讯录的4个模块功能,通过一个home()函数来实现主界面。
home()函数使用一个while循环,根据用户的输入来选定通讯录的功能。
addMes()函数用来添加记录,通过input()函数来获取用户的输入,将一个用户的记录写到一个字典对象中,然后将字典对象字符串化存储到数据库文件中。
findMes()函数用来查找记录,通过input()函数获取要查询的关键类型和关键字,通过字典的键-值映射来查询数据并输出到屏幕上。
delMes()函数用来删除记录,通过input()函数获取要删除的用户的用户名,在循环中通过字典的键-值映射找到要删除的记录,将其余的记录储存在一个list列表中,循环结束后再将列表重新写入数据库文件中。
changeMes()函数用来修改记录,通过input()函数获取要修改的关键类型和关键字,在循环中通过字典的键-值映射找到要修改的记录,将其值修改后与其他记录一同储存在一个list列表中,循环结束后再将列表重新写入数据库文件中。
几大模块功能相辅相成,利用Python语言函数进行纪录的添加,查找,删除和修改,共同实现学生通讯录的设计与实现。
三、设计代码#!/usr/bin/python# -*- coding: cp936 -*-#Filename : 学生通讯录添加操作:def addMes():file = open('data.txt','a+')while True:name = input('Please input name:')age = input('Please input age:')tel = input('Please input telephone:')mail = input('Please input E-mail:')address = input('Please input address:')对姓名,年龄,电话,邮箱和地址进行添加;data = {"Name":name,"Age":age,"Tel":tel,"Mail":mail,"Address":address} data = str(data)+'\n'file.write(data)while True:check = input('Would you want to add again? Y/N:')if (check == 'Y') or (check == 'N'):breakelse:检查是否继续添加纪录;print('Wrong number,Please Input Y or N!\n')if check == 'N':break检查是否正确输入‘Y’或’N’;file.close()print('All added success!') 保存纪录并返回主界面;查找操作:def findMes():print('Please choose the keyword:\\n2.Telephone\n3.Mail\n4.Return\n')对纪录项目进行编号;kind = input('Please input 1~4:')输入编号查找;if kind == '1':keyword = 'Name'elif kind == '2':keyword = 'Tel'elif kind == '3':keyword = 'Mail'elif kind == '4':home()else:print('Please input the right number!')检查输入号码是否正确;flag = input('Please input message:')fin = 0file = open('data.txt','r') 查找数据库中对应行中的信息,并进行相应的匹配,若符合则进行查找显示;for line in file:line = eval(line)if line[keyword] == flag:print(str(line).strip("{}"))fin += 1breakif fin == 0:print('Can not find the item!\n')不匹配,则无法显示;file.close()删除操作:def delMes():keyword = input('Please input the name that you Wwnt to del:')list = []file = open('data.txt','r')根据输入的信息对其与数据库中的信息进行匹配,相辅则进行删除操作;for line in file:line = eval(line)if line['Name'] == keyword:passelse:line = str(line)+'\n'list.append(line)file.close()file = open('data.txt', 'w') 匹配数据库信息,通过‘写’操作来完成纪录删除;for line in list:file.write(line)file.close()print('Delete success!\n')删除成功;修改操作:def changeMes():print('Please Choic Which Kind Of Word You Want To Change:\\n2.Age\n3.Telephone\n4.Mail\n5.Address\n6.Return\ n')kind = input('Please input 1~6:')输入数字来寻找所要修改的功能;if kind == '1':keyword = 'Name'elif kind == '2':keyword = 'Age'elif kind == '3':keyword = 'Tel'elif kind == '4':keyword = 'Mail'elif kind == '5':keyword = 'Address'elif kind == '6':home()else:print('Please input the right number!\n')注意输入数字正确性;mesg = input('Please input the information you want to changed:') flag = input('Please input the name that whose information you want to changed:')list = []file = open('data.txt','r')与数据库中相关信息进行匹配,正确才能进行修改操作;for line in file:line = eval(line)if line[keyword] == flag:line[keyword] = mesgline = str(line)+'\n'list.append(line)else:line = str(line)+'\n'list.append(line)file.close()file = open('data.txt', 'w') 匹配数据库,利用‘写’操作来完成通讯录修改操作;for line in list:file.write(line)file.close()print('Changed Success!\n')修改成功;通过home 函数来实现通讯录功能:def home():while True:print('\nStudent Contacts\n')print('1.Add Record\n2.Find Record\n3.Del Record\n4.Change Record\n5.Exit Program\n')通讯录的添加,查找,删除,修改功能;kind = input('Please Choose Operation(1~5):')选择编号进行通讯录功能选择;if kind == '1':addMes()elif kind == '2':findMes()elif kind == '3':delMes()elif kind == '4':changeMes()elif kind == '5':breakelif kind == '6':exit()else:print('Please input the right number!\n')注意编号输入正确性;home()四、运行结果1.主界面:显示学生通讯录的添加,查找,删除,修改和返回操作。