数据结构课程设计.docx
- 文档编号:26428140
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:38
- 大小:169.89KB
数据结构课程设计.docx
《数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计.docx(38页珍藏版)》请在冰豆网上搜索。
数据结构课程设计
西安交通大学城市学院计算机系
课程设计
(数据结构)
班级
计算机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)退出程序。
做到看界面简单易懂,容易操作,提高了学校管理效率以及提升了图书信息的安全性和完整性。
第二章系统分析
图书管理基本内容包括:
添加,查找,删除图书,,上述基本功能用链式存储比较方便,由于查找,删除都是以书名或编号为关键字进行的,因此要用到双向链表,效率高,以实现各种功能。
由此重点和难点是双向链表的建立,查找,删除等基本操作。
图书管理软件,通过各种接口函数完成对图书的添加,查找,删除,看似简单,实际实现起来,还是有点困难,关键是要考虑到各种情况
程序执行时的命令:
本程序为了使用时的方便,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入选者即可。
界面友好,适合用户使用习惯。
测试数据。
在我的这个通讯录管理软件中;基本函数有
dlink*enter(dlink*h);//输入信息函数
intmenu_select();//菜单选择函数
dlink*add(dlink*h);//增加图书函数
voidsearch(dlink*h);//查找函数
dlink*deletebyname(dlink*h);//以书名为关键字删除
dlink*deletebyphone(dlink*h);//以编号为关键字删除
voidoutput(dlink*h);//输出函数
voidsearchbyname(dlink*h)//按书名查找
voidsearchbyphone(dlink*h)//按编号查找
voidsave(dlink*h)//保存图书信息到文件
详细分析:
1.通过dlink*creatlist()
{dlink*head,*p,*r;
p=newdlink;
head=p;
r=head;
p->Rlink=NULL;
returnhead;//创建双向链表
2.通过dlink*enter(dlink*h)函数输入图书信息
3.通过调用voidsearch(dlink*h)函数选择是以书名还是编号方式进行查找,分别调用函数voidsearchbyname(dlink*h),voidsearchbyphone(dlink*h)完成相应功能。
3.调用函数dlink*add(dlink*h)增加图书详细。
4.通过调用dlink*deletebyname(dlink*h),dlink*deletebyphone(dlink*h),分别以书名,编号为关键字进行删除。
5.调用voidoutput(dlink*h)函数输出所有图书信息
6.调用voidsave(dlink*h)函数保存图书信息。
第三章概要设计
1.数据结构设计:
双向链表的建立,查找,删除等基本操作、链式存储
2.算法的设计:
本系统从整体上分为7大模块:
(1)输入图书信息
(2)查找图书信息//根据指定关键字进行相关查找
(3)显示图书信息//显示所有图书信息
(4)增加图书信息//向通讯录中增加图书信息
(5)删除图书信息//根据指定关键字删除图书信息
(6)存储图书信息//存储通讯录中的图书信息
(7)退出程序
3.功能模块图:
图3.1系统功能模块图
第四章详细设计
#include
#include
#include
#include
#include
#include
usingnamespacestd;
unsignedintnum=0;
structinformation
{stringbook;
stringbianhao;
stringzuozhe;
stringdanjia;
stringchubanshe;
stringchubanshijian;
};
structinformationa[120];
typedefstructdoublelink//定义
{structinformationdata;
structdoublelink*Llink,*Rlink;
}dlink;
dlink*enter(dlink*h);
dlink*insert(dlink*h);
intmenu_select();
dlink*add(dlink*h);
voidsearch(dlink*h);
dlink*deletebybook(dlink*h);
dlink*deletebybianhao(dlink*h);
voidoutput(dlink*h);
dlink*creatlist()
{dlink*head,*p,*r;
p=newdlink;
head=p;
r=head;
p->Rlink=NULL;
returnhead;
}
//*********************************************************
dlink*enter(dlink*h)//创建
{dlink*head,*r,*p,*q;
head=h;
r=h;
q=h->Rlink;
system("cls");
//新建用户信息
p=newdlink;
cout<<"\n\t\t****************请输入图书信息****************"< cout<<"请输入书名: "< cin>>p->data.book; cout<<"请输入编号: "< cin>>p->data.bianhao; cout<<"请输入作者: "< cin>>p->data.zuozhe; cout<<"请输入单价: "< cin>>p->data.danjia; cout<<"请输入出版社: "< cin>>p->data.chubanshe; cout<<"请输入出版时间: "< cin>>p->data.chubanshijian; p->Rlink=NULL; while(q! =NULL) {r=q; q=q->Rlink; } p->Llink=r; r->Rlink=p; r=p; num++; charz; cout<<"是否要继续插入新图书信息? (Y/N): "< cin>>z; if((z=='y')||(z=='Y')) head=insert(head); returnhead; } //*********************************************************************** dlink*insert(dlink*h)//插入新图书信息 {dlink*head=h; if(num==0) {cout<<"\n\t图书管理中没有任何图书信息,确认要添加吗? (Y/N)"< charz; cin>>z; if((z=='y')||(z=='Y')) head=add(head); else; } else head=add(head); returnhead; } //***************************************************************** dlink*add(dlink*h) {dlink*head,*r,*p,*q; head=h; r=h; q=h->Rlink; system("cls"); //新建用户信息 p=newdlink; cout<<"\n\t\t****************请输入图书信息****************"< cout<<"请输入书名: "< cin>>p->data.book; cout<<"请输入编号: "< cin>>p->data.bianhao; cout<<"请输入作者: "< cin>>p->data.zuozhe; cout<<"请输入单价: "< cin>>p->data.danjia; cout<<"请输入出版社: "< cin>>p->data.chubanshe; cout<<"请输入出版时间: "< cin>>p->data.chubanshijian; p->Rlink=NULL; while(q! =NULL) {r=q; q=q->Rlink; }//while p->Llink=r; r->Rlink=p; r=p; num++; charz; cout<<"是否要继续插入新图书信息? (Y/N): "< cin>>z; if((z=='y')||(z=='Y')) head=insert(head); returnhead; } //******************************************************************************************* voidsearchbybook(dlink*h)//按书名查找 { if(num==0) {cout<<"\n\t当前图书管理没有任何图书信息! ! ! "< cout<<"\n\t\t\t*****无法执行查找操作! ! ! ! ******"< cout< } else {dlink*head,*p,*q; stringboo; head=h; p=h->Rlink; inti,j=1,k=1,mark=0; system("cls"); cout<<"请输入要查找的书名: "< cin>>boo; for(i=k;i<=num;i++,p=p->Rlink) { while(p&&p->data.book! =boo) {q=p; p=p->Rlink; j++; } if(p) {cout<<"您要查找的图书信息为: "< cout<<"*******************************************************************************"< cout<<"\n\t书名: "< cout<<"\n\t编号: "< cout<<"\n\t作者: "< cout<<"\n\t单价: "< cout<<"\n\t出版社: "< cout<<"\n\t出版时间: "< cout<<"*******************************************************************************"< cout< mark=1; if(p->Rlink==NULL) {cout<<"\n\t已无重名信息"< cout<<"\n\t您是否继续下一个查找? ? ? (Y/N)"< charz; cin>>z; if((z=='y')||(z=='Y')) search(head); elsebreak;} } if(p==NULL) { if(mark==1) { if(q->data.book! =boo) {cout<<"\n\t已无重名信息"< cout<<"\n\t您是否继续下一个查找? ? ? (Y/N)"< charz; cin>>z; if((z=='y')||(z=='Y')) search(head); elsebreak; } } else {cout<<"\n\t\t^^^^^搜索的图书不存在! ! ! ! ! ^^^^^^"< cout< cout<<"\n\t您是否继续下一个查找? ? ? (Y/N)"< charz; cin>>z; if((z=='y')||(z=='Y')) search(head); elsebreak; ;}} }//for }//else }//wai //************************************************************************** voidsearchbybianhao(dlink*h)//按编号查找 { if(num==0) {cout<<"\n\t当前图书管理没有任何图书信息! ! ! "< cout<<"\n\t\t\t*****无法执行查找操作! ! ! ! ******"< cout< } else {dlink*head,*p,*q; stringbianh; head=h; p=h->Rlink; intj=0,k=1; system("cls"); cout<<"请输入要查找的图书编号: "< cin>>bianh; while(p&&p->data.bianhao! =bianh) {q=p; p=p->Rlink; j++; } if(p) {cout<<"您要查找的图书信息为: "< cout<<"*******************************************************************************"< cout<<"\n\t书名: "< cout<<"\n\t编号: "< cout<<"\n\t作者: "< cout<<"\n\t单价: "< cout<<"\n\t出版社: "< cout<<"\n\t出版时间: "< cout<<"*******************************************************************************"< cout< } else{ cout<<"\n\t\t^^^^^搜索的图书信息不存在! ! ! ! ! ^^^^^^"< cout< cout<<"\n\t您是否继续下一个查找? ? ? (Y/N)"< charz; cin>>z; if((z=='y')||(z=='Y')) search(head); else; ;} }//else }//wai //********************************************************************************* voidsearch(dlink*h) {dlink*head; head=h; intchoic; cout<<"\n\t\t1-按图书编号查找2-按书名查找"; cout<<"\n\t\t请选择: "; cin>>choic; switch(choic) { case1: searchbybianhao(head); break; case2: searchbybook(head); break; } } //*********************************************************************************** dlink*deletebybook(dlink*h)//按书名删除 {dlink*head,*p,*q; if(num==0) {cout<<"\n\t\t当前图书管理没有任何图书信息! ! ! "< cout<<"\n\t\t\t\t删除操作无法执行! ! ! ! ! ! ! ! ! "< } else { stringboo; intflag=1,k=1,i,j=1; head=h; p=h->Rlink; system("pause"); system("cls"); cout<<"请输入要删除的书名: "< cin>>boo; for(i=k;i<=num;i++,p=p->Rlink) { while(p&&p->data.book! =boo) {q=p; p=p->Rlink; j++; }//while if(p)//waiif {cout<<"您要删除的图书信息为: "< cout<<"weiyu"< cout<<"*******************************************************************************"< cout<<"\n\t书名: "< cout<<"\n\t编号: "< cout<<"\n\t作者: "< cout<<"\n\t单价: "< cout<<"\n\t出版社: "< cout<<"\n\t出版时间: "< cout<<"*******************************************************************************"< charz; cout<<"您确定要删除该图书信息吗? (Y/N)"< cin>>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--; } elseif(p->Rlink==NULL) {p->Llink->Rlink=NULL; free(p); num--; } else {p->Rlink->Llink=p->Llink; q->Rlink=p->Rlink; free(p); num--; } cout<<"\n\t\t已删除成功! "< break; /*chars; cout<<"\n您是否继续删除相同书名的图书? ? ? (Y/N)"< cin>>s; if((s=='y')||(s=='Y'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计