数据结构课程设计-通讯录的制作.doc_第1页
数据结构课程设计-通讯录的制作.doc_第2页
数据结构课程设计-通讯录的制作.doc_第3页
数据结构课程设计-通讯录的制作.doc_第4页
数据结构课程设计-通讯录的制作.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安交通大学城市学院计算机系课 程 设 计(数据结构)班 级计算机102姓 名学 号 指导教师二一三年6 月 26 日课程设计任务书及成绩评定课题名称 通讯录的制作、题目的目的和要求: 1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。2、设计题目要求:设计内容:本系统应完成一下几方面的功能:输入信息enter();显示信息display( );查找以姓名作为关键字 search( );删除信息delete( );存盘save ( );装入load( ) ;设计要求:1)每条信息至包含 :姓名(NAME )街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项2)作为一个完整的系统,应具有友好的界面和较强的容错能力3)上机能正常运行,并写出课程设计报告、成绩评定:设计成绩: (教师填写)指导老师: (签字)二一三 年 月 日目 录第一章 概述1第二章 系统分析2第三章 概要设计第四章 详细设计第五章 运行与测试第六章 总结与心得参考文献第一章 概述信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。为了适应现代社会人们高度强烈的时间观念,图书管理系统软件为图书馆带来了极大的方便。面对学校的规模不断过大,图书的数量急剧增加,有关图书的各种信息量成倍增加。面对庞大的信息量需要有图书管理系统来提高图书管理工作的效率。通过这样的系统可以做到信息的规范化管理、科学性统计和快速查询、修改、增加、删除等,从而减少管理方面的工作量。通过本系统软件,能帮助图书管理人员人员利用计算机,快速方便的对图书信息管理进行录其主要任务是计算学生各种信息进行日常管理,(1)输入图书信息(2)查找图书信息 、(3)显示图书信息 、(5)删除图书信息信息、(6)存储图书信息 、(7)退出程序。做到看界面简单易懂,容易操作,提高了学校管理效率以及提升了图书信息的安全性和完整性。1第二章 系统分析图书管理基本内容包括:添加,查找,删除图书,上述基本功能用链式存储比较方便,由于查找,删除都是以书名或编号为关键字进行的,因此要用到双向链表,效率高,以实现各种功能。由此重点和难点是双向链表的建立,查找,删除等基本操作。图书管理软件,通过各种接口函数完成对图书的添加,查找,删除,看似简单,实际实现起来,还是有点困难,关键是要考虑到各种情况程序执行时的命令:本程序为了使用时的方便,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入选者即可。界面友好,适合用户使用习惯。测试数据。在我的这个通讯录管理软件中;基本函数有dlink *enter(dlink *h);/ 输入信息函数int menu_select();/菜单选择函数dlink *add(dlink *h);/增加图书函数void search(dlink *h) ;/查找函数dlink *deletebyname(dlink *h);/ 以书名为关键字删除dlink *deletebyphone(dlink *h) ;/以编号为关键字删除void output(dlink *h);/ 输出函数void searchbyname(dlink *h) /按书名查找void searchbyphone(dlink *h) /按编号查找void save(dlink *h) /保存图书信息到文件详细分析:1.通过dlink *creatlist()dlink *head,*p,*r;p=new dlink;head=p;r=head;p-Rlink=NULL;return head; / 创建双向链表2.通过dlink *enter(dlink *h)函数输入图书信息3.通过调用void search(dlink *h)函数选择是以书名还是编号方式进行查找,分别调用函数void searchbyname(dlink *h),void searchbyphone(dlink *h)完成相应功能。3.调用函数dlink *add(dlink *h)增加图书详细。4.通过调用dlink *deletebyname(dlink *h),dlink *deletebyphone(dlink *h),分别以书名,编号为关键字进行删除。5.调用void output(dlink *h)函数输出所有图书信息6.调用void save(dlink *h)函数保存图书信息。第三章 概要设计1.数据结构设计: 双向链表的建立,查找,删除等基本操作、链式存储2.算法的设计:本系统从整体上分为7大模块: (1)输入图书信息(2)查找图书信息 /根据指定关键字进行相关查找(3)显示图书信息 /显示所有图书信息(4)增加图书信息 /向通讯录中增加图书信息(5)删除图书信息 /根据指定关键字删除图书信息(6)存储图书信息 /存储通讯录中的图书信息(7)退出程序 3.功能模块图:按书名查找退出输入继续输入按书名查找按编号查找按书名查找输入图书信息显示图书信息储存图书信息删除图书信息增加图书信息查找图书信息图书管理系统 图3.1 系统功能模块图第四章 详细设计#include#include#include#include#include #include using namespace std;unsigned int num=0;struct informationstring book; string bianhao; string zuozhe; string danjia; string chubanshe; string chubanshijian; struct information a120;typedef struct doublelink /定义struct information data; struct doublelink *Llink,*Rlink;dlink;dlink *enter(dlink *h);dlink *insert(dlink *h) ;int menu_select();dlink *add(dlink *h);void search(dlink *h) ;dlink *deletebybook(dlink *h);dlink *deletebybianhao(dlink *h) ;void output(dlink *h);dlink *creatlist()dlink *head,*p,*r;p=new dlink;head=p;r=head;p-Rlink=NULL;return head;/*dlink *enter(dlink *h) /创建 dlink *head,*r,*p,*q; head=h; r=h; q=h-Rlink; system(cls); /新建用户信息 p=new dlink;coutntt* 请输入图书信息 *endl;cout请输入书名:p-data.book; cout请输入编号:p-data.bianhao; cout请输入作者: p-data.zuozhe; cout请输入单价: p-data.danjia; cout请输入出版社: p-data.chubanshe; cout请输入出版时间: p-data.chubanshijian;p-Rlink=NULL;while(q!=NULL)r=q;q=q-Rlink;p-Llink=r;r-Rlink=p;r=p;num+;char z;cout 是否要继续插入新图书信息? (Y/N):z; if(z=y)|(z=Y) head=insert(head);return head;/*dlink *insert(dlink *h) /插入新图书信息 dlink *head=h;if(num=0) coutnt图书管理中没有任何图书信息,确认要添加吗?(Y/N)z; if(z=y)|(z=Y) head=add(head); else ; else head=add(head);return head;/*dlink *add(dlink *h)dlink *head,*r,*p,*q; head=h; r=h; q=h-Rlink; system(cls); /新建用户信息 p=new dlink;coutntt* 请输入图书信息 *endl;cout请输入书名:p-data.book;cout请输入编号:p-data.bianhao; cout请输入作者: p-data.zuozhe; cout请输入单价: p-data.danjia; cout请输入出版社: p-data.chubanshe; cout请输入出版时间: p-data.chubanshijian;p-Rlink=NULL;while(q!=NULL)r=q;q=q-Rlink; /while p-Llink=r;r-Rlink=p;r=p;num+;char z;cout 是否要继续插入新图书信息? (Y/N):z; if(z=y)|(z=Y) head=insert(head); return head;/*void searchbybook(dlink *h) /按书名查找if(num=0) coutnt当 前 图 书 管 理 没 有 任 何 图 书 信 息!endl; coutnttt*无法执行查找操作!*endl; coutRlink;int i,j=1,k=1,mark=0; system(cls);cout请输入要查找的书名: boo;for(i=k;iRlink)while(p&p-data.book!=boo)q=p;p=p-Rlink;j+;if(p)cout您要查找的图书信息为:endl; cout*endl; coutnt书名: data.bookendl; coutnt编号:data.bianhaoendl; coutnt作者: data.zuozheendl; coutnt单价: data.danjiaendl; coutnt出版社: data.chubansheendl; coutnt出版时间: data.chubanshijianendl; cout*endl; coutRlink=NULL) coutnt已无重名信息endl; coutnt您是否继续下一个查找?(Y/N)z; if(z=y)|(z=Y) search(head); else break;if(p=NULL) if(mark=1)if(q-data.book!=boo) coutnt已无重名信息endl; coutnt您是否继续下一个查找?(Y/N)z; if(z=y)|(z=Y) search(head); else break; elsecoutntt搜索的图书不存在!endl;coutendl;coutnt您是否继续下一个查找?(Y/N)z; if(z=y)|(z=Y) search(head); else break; ;/for/else/wai/*void searchbybianhao(dlink *h) /按编号查找if(num=0) coutnt当 前 图 书 管 理 没 有 任 何 图 书 信 息!endl; coutnttt*无法执行查找操作!*endl; coutRlink;int j=0,k=1; system(cls);cout请输入要查找的图书编号: bianh;while(p&p-data.bianhao!=bianh)q=p;p=p-Rlink;j+;if(p)cout您要查找的图书信息为:endl; cout*endl; coutnt书名: data.bookendl; coutnt编号:data.bianhaoendl; coutnt作者: data.zuozheendl; coutnt单价: data.danjiaendl; coutnt出版社: data.chubansheendl; coutnt出版时间: data.chubanshijianendl; cout*endl; coutendl;else coutntt搜索的图书信息不存在!endl;coutendl;coutnt您是否继续下一个查找?(Y/N)z; if(z=y)|(z=Y) search(head); else ; ;/else/wai/*void search(dlink *h)dlink *head; head=h;int choic; coutntt1-按图书编号查找 2-按书名查找; coutchoic; switch (choic) case 1: searchbybianhao(head); break; case 2: searchbybook(head); break; /*dlink *deletebybook(dlink *h) /按书名删除dlink *head,*p,*q;if(num=0) coutntt当 前 图 书 管 理 没 有 任 何 图 书 信 息!endl;coutntttt删除操作无法执行!Rlink;system(pause); system(cls);cout请输入要删除的书名: boo;for(i=k;iRlink)while(p&p-data.book!=boo)q=p;p=p-Rlink;j+; /whileif(p) /waiifcout您要删除的图书信息为:endl;coutweiyuj+1weizhiendl; cout*endl; coutnt书名: data.bookendl; coutnt编号:data.bianhaoendl; coutnt作者: data.zuozheendl; coutnt单价: data.danjiaendl; coutnt出版社: data.chubansheendl; coutnt出版时间: data.chubanshijianendl; cout*endl; char z; cout您确定要删除该图书信息吗?(Y/N)z; if(z=y)|(z=Y) if(num=1) p-Llink-Rlink=NULL; free(p); num-; else if(p-Llink=head) p-Rlink-Llink=head; p-Llink-Rlink=p-Rlink; free(p); num-; else if(p-Rlink=NULL) p-Llink-Rlink=NULL; free(p); num-; else p-Rlink-Llink=p-Llink; q-Rlink=p-Rlink; free(p); num-; coutntt已删除成功!endl; break;/*char s; coutn您是否继续删除相同书名的图书?(Y/N)s;if(s=y)|(s=Y) continue;else break;*/ else coutnt已放弃删除!endl; /有问题char d; coutn您是否继续删除相同书名的图书?(Y/N)d;if(d=y)|(d=Y) continue;else break; /waiifelse cout没有此图书信息endl; char a; coutn您是否要继续删除?(Y/N)a; if(a=y)|(a=Y) head=deletebybook(head); else break; /for/elsecoutendl;return head;/wai/*dlink *deletebybianhao(dlink *h) /按编号删除dlink *head,*p,*q;if(num=0) coutntt当 前 图 书 管 理 没 有 任 何 图 书 信 息!endl;coutntttt删除操作无法执行!Rlink;system(pause); system(cls);cout请输入要删除的图书编号: bianh;while(p&p-data.bianhao!=bianh)q=p;p=p-Rlink;j+; /whileif(p) /waiifcout您要删除的图书信息为:endl; cout*endl; coutnt书名: data.bookendl; coutnt编号:data.bianhaoendl; coutnt作者: data.zuozheendl; coutnt单价: data.danjiaendl; coutnt出版社: data.chubansheendl; coutnt出版时间: data.chubanshijianendl; cout*endl; char z; cout您确定要删除该图书信息吗?(Y/N)z; if(z=y)|(z=Y) if(num=1) p-Llink-Rlink=NULL; free(p); num-; else if(p-Llink=head) p-Rlink-Llink=head; p-Llink-Rlink=p-Rlink; free(p); num-; else if(p-Rlink=NULL) p-Llink-Rlink=NULL; free(p); num-; else p-Rlink-Llink=p-Llink; q-Rlink=p-Rlink; free(p); num-; coutntt已删除成功!endl;char a; coutn您是否要继续删除?(Y/N)a; if(a=y)|(a=Y) head=deletebybianhao(head); else ; else coutntt已放弃删除!endl; char a; coutn您是否要继续删除?(Y/N)a; if(a=y)|(a=Y) head=deletebybianhao(head); else ; elsecoutnt没有此图书信息endl; char a; coutnn您是否要继续删除?(Y/N)a; if(a=y)|(a=Y) head=deletebybianhao(head); else ; coutendl;return head;dlink *dele(dlink *h)dlink *head; head=h;int choic; coutntt1-按编号删除 2-按书名删除; coutchoic; switch (choic) case 1: head=deletebybianhao(head); break; case 2: head=deletebybook(head); break; return head;void output(dlink *h) / 输出dlink *p; if(num=0) coutntt当 前 图 书 管 理 没 有 任 何 图 书 信 息!endl; coutnttt*无法执行显示操作!*Rlink;system(pause); system(cls); coutntt输出所有图书的信息:endl; coutnttt当前通讯录共有num个图书信息endl; for(i=1;i=num;i+) coutnttt第 i个图书信息为:endl; cout*endl; coutnt书名: data.bookendl; coutnt编号:data.bianhaoendl; coutnt作者: data.zuozheendl; coutnt单价: data.danjiaendl; coutnt出版社: data.chubansheendl; coutnt出版时间: data.chubanshijianendl; cout*Rlink; coutendl;int menu_select()int b;cout*(o)欢迎使用通讯录管理软件 请按任意键进入主菜单! (o)*endl; getch(); system(cls); couttt*WELCOME TO USE THIS SOFTWARE *endl; couttt*通讯录管理软件*endl; couttt* COPYRIGHT 2011 *endl; couttt*DESIGNED BY DaiJunYou O (_)O哈哈 *endl; couttt* MENU *endl;coutntt1: 输入图书信息endl;coutntt2: 查找图书信息endl;coutntt3: 显示图书信息endl;coutntt4: 增加图书信息endl;coutntt5: 删除图书信息endl;coutntt6: 存储图书信息endl;coutntt7: 退出本程序endl;for(;)coutn*Please make your choice(17)* endl; coutb; if(b7) continue; else return b; break; int WriteLinklistToFile(const char* strFile, dlink *h) FILE *fpFile;dlink *head = h;dlink *p;p=head-Rlink; if(!(fpFile = fopen(strFile,w)/以写的方式打开 printf(Open file failedn); return 0; while(p) fprintf(fpFile,%st%st%st%st%st%stn,p-data.book,p-data.bianhao,p-data.zuozhe,p-data.danjia,p-data.chubanshe,p-data.chubanshijian); p=p-Rlink; fclose(fpFile); return 1;void save(dlink *h) cout暂不支持 很快会解决endl; exit(0);dlink *head;head=h;int a;char* strBook = test.txt;a=WriteLinklistToFile(strBook, head);void main() dlink *head;head=creatlist();system(cls);for(;)switch(menu_select()case 1: head=enter(head); break;case 2: search(head);break; case 3: output(head);break;case 4: head=insert(head); break;case 5: head=dele(head);break;case 6: save(head) ; break;case 7: exit(0);第五章 运行与测试程序测试数据及执行流程如下系列截图:总界面,如图5.1所示,只需用户作出相应选择即可。图5.1 图书系统总界面17可以任意选而不会停止工作,容错能力较强,在输入过程中,摁下任意键便会进入总界面。现在我们开始测试程序,输入“1”,如图5.2所示。图5.2 输入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论