ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:567.25KB ,
资源ID:5597384      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5597384.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(通讯录管理系统 数据结构课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

通讯录管理系统 数据结构课程设计.docx

1、通讯录管理系统 数据结构课程设计数据结构C+课程设计 一、设计题目通讯录管理系统实现一个通讯录管理系统。通讯录内容包括姓名及电话、QQ、E_mail四项内容。系统功能包括实现按姓名升序存放通讯录内容,查询某人信息,并在插入或修改一项新的信息后依然保持有序。最后将通讯录信息保存到数据文件中。二、需求分析1)运行环境(软、硬件环境)使用语言:C+软件环境:运行软件Microsoft Visual C+ 6.0 SP6 系统软件 Windows 7 旗舰版2)输入的形式和输入值的范围输入姓名和邮箱为字符型,范围为-128+127输入电话号码和QQ号为整型,范围为-2147483648+2147483

2、6473)输出的形式描述程序运行后经过屏幕输出4)功能描述 通讯录内容包括每个人的姓名及电话、QQ、E_mail四项内容;通讯录中的内容按姓名顺序(升序)存放;插入一项新的信息或修改一项信息后通讯录任然有序;查询某人的信息时,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息;修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息;删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息;能显示通讯录中的所有记录;采用菜单操作。通讯录的内容保存到数据文件中。5)测试数据姓名1:smj 电话1:123 QQ:123 邮箱:123姓名2:yyf 电话2:4

3、56 QQ:456 邮箱:456姓名3:vigoss 电话3:789 QQ:789 邮箱:789修改用:姓名:cold 电话:1 QQ:1 邮箱:1三、概要设计1)抽象数据类型定义描述(对各类的成员及成员函数进行抽象描述,参见书或ppt及实验)1、student类:成员类型有姓名,电话号码,QQ号及邮箱地址。2、input函数:输入:无前置条件:无功能:添加联系人信息输出:无3.output函数:输入:无前置条件:表存在功能:用来排序并输出所有联系人的信息输出:依次输出联系人信息后置条件:表不变4、友元类AddressBook类:定义头指针,存放数据key5、input函数:输入:无前置条件:

4、无功能:录入函数 输出:无后置条件:若添加成功,表中增加一个新元素,并且写入文件6、find函数:输入:无前置条件:found函数中有功能:子查找函数 输出:当调用删除、修改操作时,如果找到了,则进入find函数找出该联系人的信息;如果未找到,则提示通讯录中没有此人的信息7、found函数:输入:无前置条件:表存在功能:查找函数 输出:当调用查找操作时,如果找到了,则进入find函数找出该联系人的信息;如果未找到,则提示通讯录中没有此人的信息8、del函数:输入:无前置条件:表存在功能:删除函数 输出:如果找到了,则删除该联系人信息,如果未找到,则提示通讯录中没有此人的信息9、show函数:输

5、入:无前置条件:表存在功能:显示函数 输出:依次输出联系人信息10、mend函数:输入:无前置条件:表存在功能:修改函数 输出:如果找到了则显示该联系人信息并修改,如果未找到,则提示通讯录中没有此人的信息11、save函数输入:无前置条件:表存在功能:保存函数 输出:将数据保存到数据文件中12、begin函数:输入:无前置条件:表存在功能:初始化函数 输出:无13、clear函数:输入:无前置条件:表存在功能:清空函数 输出:无14、mainmenu函数:输入:无前置条件:表存在功能:主选菜单函数 输出:无15、main函数:输入:无前置条件:表存在功能:主函数 输出:无2)功能模块设计(如主

6、程序模块设计)1.添加联系人信息模块:void AddressBook:input()2.排序并显示所有联系人信息模块:void AddressBook:show()3.查询联系人信息模块:void AddressBook:find()void AddressBook:found()4.查找并修改联系人信息模块:void book:mend()5.查找并删除联系人信息模块:void book:del()6.联系人信息写入文件模块:void book:save()7.主程序模块:void main()3)模块层次调用关系图四、详细设计实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模

7、块写出伪码算法。类的定义及类中的成员函数:class student protected: char name20; int tel; int QQ; char E_mail20;public: student *next; student() student() char* getname() return name; void input() coutttt按提示输入:endl; coutname; couttel; coutQQ; coutE_mail; void input(ifstream & is) isnametelQQE_mail; is.get(); void output(

8、) cout学生基本信息如下:endl; cout 姓名:name 电话:tel QQ:QQ e_mail:E_mailendl; void output(ofstream & os) ossetw(15)name setw(15)tel setw(20)QQ setw(20)E_mail next=NULL; key=0; AddressBook() delete head; void input(); void mend(); void del(); int find(student *p,char *pn=); void found(); void show(); void count(

9、); void save(); void begin(); void clear(); char mainmenu(); int getkey() return key; void setkey(int k) key=k; private: student *head; int key;主要模块的伪码算法:1.添加联系人信息模块:void AddressBook:input() student *p,*p2=NULL; p=head; int n; while(p-next) p=p-next; while(n) p2=new student; p2-input(); p-next=p2; p

10、2-next=NULL; p=p-next; AddressBook:setkey(1); coutn; 2.排序并显示所有联系人信息模块:void AddressBook:show() student *p,*q; p=head-next; char temp20; while(p) q=p-next; while(q) if(strcmp(p-name,q-name)=1) strcpy(temp,q-name); strcpy(q-name,p-name); strcpy(p-name,temp); int temp1; temp1=q-tel; q-tel=p-tel; p-tel=t

11、emp1; int temp2; temp2=q-QQ; q-QQ=p-QQ; p-QQ=temp2; char temp320; strcpy(temp3,q-E_mail); strcpy(q-E_mail,p-E_mail); strcpy(p-E_mail,temp3); q=q-next; else q=q-next; p=p-next; student *p1; p1=head-next; while(p1) p1-output(); p1=p1-next; 3.查询联系人信息模块:int AddressBook:find(student *p1,char *pn) student

12、 *p; p=head; while(p-next) (*p1)=p; if(!strcmp(p-next)-getname(),pn) ) return 1; p=p-next; return 0;void AddressBook:found() student *p; char name20=; coutname; if(!find(&p,name) ) couttt找不到你要查找的内容!next)-output();4.查找并修改联系人信息模块:void AddressBook:mend() student *p; char name20=; coutname; if( !find(&p

13、,name) ) couttt找不到你要修改的内容!next)-output(); (p-next)-input(); AddressBook:setkey(1);5.查找并删除联系人信息模块:void AddressBook:del() student *p,*p2; char name; coutname; if( !find(&p,&name) couttt找不到你要删除的内容!next)-output(); p2=p-next; p-next=p2-next; delete p2; AddressBook:setkey(1);6.联系人信息写入文件模块:void AddressBook

14、:save() student *p; p=head; ofstream os(student.txt,ios:out); if (AddressBook:getkey()=1) while(p-next) (p-next)-output(os); p=p-next; coutttt文件已保存! endl; AddressBook:setkey(0);7.主程序模块:void main() AddressBook pp; int k=1; char n; pp.begin(); while(k=1) n=pp.mainmenu(); switch(n) case 1:pp.input(); b

15、reak; case 2:pp.show(); break; case 3:pp.found(); break; case 4:pp.del(); break; case 5:pp.mend(); break; case 6:pp.save(); break; case 0: if(pp.getkey()=1) coutk; if(k=1) pp.save(); pp.clear(); k=0; break; 五、调试分析包括调试过程中遇到的问题及解决的方法、算法的时间空间复杂性分析、经验体会。在调试过程中发现了很多问题,其中包括在实现升序输出的时候,我想运用冒泡排序的方法。起初直接将两个类进

16、行交换,但始终实现不了。经过反复的调试之后,我尝试将类中的“name”、“tel”、“QQ”、“E_mail”分别一次交换,最终实现了升序输出。我的程序中的输入联系人信息函数时间复杂度为O(1),平均空间复杂度为0(n/2),输出联系人信息函数时间复杂度由于有冒泡排序法所以为O(n2),平均空间复杂度为O(n),查询联系人信息函数平均时间复杂度为O(n),查询并修改联系人信息函数平均时间复杂度为O(1),查询并删除联系人信息函数平均时间复杂度为O(1)。调试过程中会有很多的问题,以前遇到问题时我总是显得很茫然不知所措,经过此次课程设计后,我通过逐条错误分析、修改语句,再反复调试,最终达到没有错

17、误顺利运行,从而使我科服了以前的困难,编程和改错能力都有了质的提高。六 用户使用说明详细列出每一步的操作说明。1.添加联系人信息:第一步:打开程序,进入主界面选择菜单。第二步:键盘输入1进入添加联系人程序,按照提示依次输入联系人的姓名、电话、QQ号还有邮箱地址,然后按回车回到主界面选择菜单。2.查询联系人信息(表中有联系人信息为前提,下同):第一步:进入主界面选择菜单。第二步:键盘输入3进入查询联系人信息程序,按照提示输入要查询的联系人姓名,按回车,如果找到了则显示该联系人的信息,如果没有找到则显示“查无此人”,然后按回车回到主界面选择菜单。3.查询并修改联系人信息:第一步:进入主界面选择菜单

18、。第二步:键盘输入5进入查询并修改联系人信息程序,按照提示输入要查询并修改的联系人姓名,按回车,如果找到了则提示输入修改后的信息,然后按照提示依次输入修改后的姓名、电话、QQ号还有邮箱地址,然后按回车回到主界面选择菜单,如果没找到则提示“找不到你要查找的内容”,然后按回车回到主界面选择菜单。4.查询并删除联系人信息:第一步:进入主界面选择菜单。第二步:键盘输入4进入查询并删除联系人信息程序,按照提示输入要查询并修改的联系人姓名,按回车,如果找到了则删除该联系人信息,然后按回车回到主界面选择菜单,如果没找到则提示“找不到你要查找的内容”,然后按回车回到主界面选择菜单。5.排序并显示所有联系人信息

19、:第一步:进入主界面选择菜单。第二步:键盘输入2进入排序并显示所有联系人信息程序,然后便会得到按照姓名升序排列以后所有联系人的信息,然后按回车回到主界面选择菜单。6.保存联系人信息第一步:进入主界面选择菜单。第二步:键盘输入6进入查询联系人信息程序,按照提示将数据存入“student.txt”文件,输入的内容已保存在此文件内。7.关闭通讯录:第一步:进入主界面选择菜单。第二步:键盘输入0则关闭通讯录,再按一下任意一个键则退出程序窗口。七、测试结果1.主界面选择菜单:2.添加新联系人:3.查询联系人信息:如果表中有联系人信息:如果表中有联系人信息但没有匹配的姓名:4.查询并修改联系人信息:如果表

20、中有联系人信息且有相匹配的姓名:如果表中没有联系人信息:5.查询并删除联系人信息:如果表中有联系人信息且有相匹配的姓名:如果表中没有联系人信息:6.排序并显示所有联系人信息:7.联系人信息写入文件:八、附录:程序设计源代码#include#include#include#include#include#include using namespace std;class student protected: char name20; int tel; int QQ; char E_mail20;public: student *next; student() student() char* ge

21、tname() return name; void input() coutttt按提示输入:endl; coutname; couttel; coutQQ; coutE_mail; void input(ifstream & is) isnametelQQE_mail; is.get(); void output() cout学生基本信息如下:endl; cout 姓名:name 电话:tel QQ:QQ e_mail:E_mailendl; void output(ofstream & os) ossetw(15)name setw(15)tel setw(20)QQ setw(20)E_

22、mail next=NULL; key=0; AddressBook() delete head; void input(); void mend(); void del(); int find(student *p,char *pn=); void found(); void show(); void count(); void save(); void begin(); void clear(); char mainmenu(); int getkey() return key; void setkey(int k) key=k; private: student *head; int k

23、ey;/录入函数void AddressBook:input() student *p,*p2=NULL; p=head; int n; while(p-next) p=p-next; while(n) p2=new student; p2-input(); p-next=p2; p2-next=NULL; p=p-next; AddressBook:setkey(1); coutn; /子查找函数int AddressBook:find(student *p1,char *pn) student *p; p=head; while(p-next) (*p1)=p; if(!strcmp(p-

24、next-getname(),pn) return 1; p=p-next; return 0;/查找函数void AddressBook:found() student *p; char name20=; coutname; if(!find(&p,name) ) couttt找不到你要查找的内容!next)-output();/删除函数void AddressBook:del() student *p,*p2; char name20; coutname;/ coutstrlen(name); if( !find(&p,name) couttt找不到你要删除的内容!next)-output(); p2=p-next; p-next=p2-next; delete p2; AddressBook:setkey(1);/显示函数void AddressBook:show() student *p,*q; p=head-next; char temp20; while(p) q=p-next; while(q) if(strcmp(p-n

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1