




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告( 20112012年度第2学期)实验名称:数据结构与算法 题 目:模拟手机号码薄管理 院 系:控制与计算机工程学院班 级:信安1102班 学 号:1111290201 学生姓名: 阿克伟 指导教师: 焦润海 设计周数:1周 成 绩: 日期:2012年7月5日 课程设计报告一、课程设计的目的与要求1 目的: 应用数据结构和算法来设计相应的程序,培养学生问题求解模块的框架设计和详细设计、相关程序实现和调试能力,完成创新能力和实践能力的训练。2 要求: 用高级程序设计语言c编码,用vc+开发平台调试3 二、设计正文(一) 课程设计题目(二) 需求分析(三) 概要设计(四) 详细设计(五
2、) 调试分析(六) 使用说明三、课程设计总结或结论1 完成的工作2 未完成的工作3 所需做的改进四、参考文献 1 作者1, 作者2. 书名. 出版单位, 版本. 出版日期附录(设计流程图、程序、测试数据等) 一、课程设计题目编写一个程序,模拟手机的电话薄管理系统,电话薄按姓名排序,插入新用户,用折半查找,所有信息用文件保存。二、需求分析 本程序用c语言编写,在vc+开发平台进行调试;采用顺序表完成对电话薄的建立、联系人的查找、删除、修改、插入、及导入联系人等功能。 输入的形式和输入值的范围:菜单中选择功能时需输入功能相应的编号;插入元素时需要输入联系人的姓名,电话号码;删除元素时输入要删除联系
3、人的姓名;查找操作时需要输入联系人姓名,修改联系人信息时需要输入联系人姓名和新的联系人信息,导入联系人信息时需要输入要导入文件的文件名称。在菜单操作中输入都为整数,在其余各项功能操作中输入为字符串; 输出的形式:在所有操作中都显示操作是否成功也可通过显示联系人功能进行检查。其中删除操作后显示删除的联系人的信息,查找操作后显示要找到联系人的信息。 该程序的所达到的功能:完成顺序表的建立、插入、删除、查找,修改操作 测试数据:a 在创建操作中依次输入3、12345,、bbbb、34567、cccc 、23456、aaaa;创建一个号码薄。b 在插入操作中输入dddd、45678;插入号码薄的最后。
4、c 在删除操作中输入cccc,将姓名为cccc的联系人信息删除;再次在该操作中输入hhhh,提示该联系人不存在。d 在修改操作中输入aaaa、gggg、67890;将aaaa的信息更新为gggg、67890。再次在该操作中输入hhhh,提示该联系人不存在。e 在查询操作中输入输入dddd,打印联系人dddd的信息。再次在该操作中输入hhhh,提示该联系人不存在。f 在显示操作中无需输入,显示所有j联系人信息。g 在保存联系人操作中输入lianxiren.txt,将联系人信息保存在文件中。h 在导入联系人操作中输入lianxiren.txt,将保存联系人信息导入顺序表中。再次在该操作中输入a.t
5、xt,提示文件不存在或已经损毁。三、概要设计 1)抽象数据类型:adt sqlist数据对象:d=ai|aielemtype&0in&n0 数据关系:r=|ai,ai+1 d基本操作:initlist(&sl)操作结果:构造一个空的顺序表; creatlist(sl) 初始条件:顺序表sl存在;操作结果:在顺序表中输入联系人信息; insertlist (&sl,i,x)初始条件:顺序表sl已存在;操作结果:将元素x插入到顺序表sl的i位置; scort(&sl)初始条件:顺序表sl存在;操作结果:将顺序表sl中的联系人按姓名排序;deletelist (&sl,i,&x)初始条件:顺序表sl
6、已存在;操作结果:将顺序表中i位置的元素删除,若删除成功返回1;updatelist(sl, i,x)初始条件:顺序表sl存在,有要修改的联系人信息;操作结果:将顺序表sl中i-1位置的联系人信息用x代替; listempty(&sl)初始条件:顺序表sl存在;操作结果:判断顺序表sl是否为空,若为空返回sl.length=0; displist(sl)初始条件:顺序表sl存在;操作结果:将顺序表sl中的联系人信息打印出来;binsearch( sl,a)初始条件:顺序表sl存在操作结果:顺序表sl中查找是否元素a,若存在,返回1并打印联系人信息;若不存在,返回0. binsearch1( s
7、l,a)初始条件:顺序表sl存在;操作结果:顺序表sl中查找是否元素a,若存在,返回mid+1;若不存在,返回0; savelist(sl)初始条件:顺序表sl存在;操作结果:将顺序表sl中联系人信息存入文件; open(sl,fp)初始条件:要导入的文件存在;操作结果:将文件中的联系人信息导入顺序表;menu()操作结果:在屏幕上显示操作菜单 2)本程序包含14个函数:1. 主函数 main()2. 菜单函数 menu()3. 初始化顺序表 initlist(&sl)4. 创建电话薄 creatlist(sl)5. 按联系人姓名排序 scort(&sl)6. 查找联系人信息 binsearc
8、h( sl,a)、binsearch1( sl,a)7. 插入联系人 insertlist (&sl,i,x)8. 删除联系人信息 deletelist (&sl,i,&x)9. 修改联系人信息 updatelist(sl, i,x)10. 判断电话薄是否为空 listempty(&sl)11. 显示联系人信息 displist(sl)12. 保存电话薄为文件 save(sl)13. 导入电话薄信息 open(sl,fp)3)函数间的调用关系如下:menu() save() deletelist()bisearch1()updatelist()main()displist()scort()cr
9、eatlist()initlist()insertlist()open()四、详细设计为了实现概要设计中定义的所有的数据类型;对主程序和其他模块写出伪代码算法或者画出流程图; 1) 结点类型和指针类型typedef struct phonechar name20;char no20;phone;typedef struct phone *pho;int length;int listsize;sqlist;2) 主要算法的伪代码或者流程图l 折半查找int binsearch(sqlist sl,char *a)int low=1,high=sl.length-1,mid;while(low=
10、high)mid=(low+high)/2;if(strcmp(a,)=0)printf(ttt查到的联系人信息如下:nn);printf(ttt姓名tt号码nn);printf(ttt*n);printf(ttt%stt%snn,,sl.phomid.no);return 1;else if(strcmp(a,)0)high=mid-1;elselow=mid+1;printf(tttt该联系人不存在!nn);return 0;l 插入排序void scort(sqlist &sl)/插入排序int j;fo
11、r(int i=2;isl.length;i+)if(strcmp(,)0)sl.pho0=sl.phoi;for(j=i-1;strcmp(,)0;j-)sl.phoj+1=sl.phoj;sl.phoj+1=sl.pho0;l 导入文件void open(sqlist &sl,file *fp)int i=2;initlist(sl);char fn50;phone pho;printf(请输入要打开的文件名:n);scanf(%s,fn);if(fp=fopen(fn,r)=null)pr
12、intf(文件已损坏或文件不存在!n);exit(0);while(!feof(fp)fscanf(fp,%s%s,,pho.no);insertlist(sl,i,pho);i+;fclose(fp);五、 调试分析 在将外部磁盘文件导入顺序表的操作中,调用insertlist()函数将联系人信息插入顺序表,用feof()判断信息是否读完。在生成联系人文件时,文件中有乱码,使用for循环控制写入文件的联系人信息。六、使用说明程序名为phone.exe,运行环境为dos。程序执行后显示:选择1:创建号码薄,要求输入要输入联系人个数及信息;选择2:插入联系人,输入要插入联系人的信
13、息;选择3:删除联系人,输入要删除联系人的姓名;选择4:修改联系人,输入要修改联系人的姓名及新的联系人信息;选择5:查询联系人,输入要查询联系人的姓名;选择6:显示所有联系人的信息;选择7:保存联系人,输入要保存的文件名称;选择8:导入联系人,输入要打开的文件名称;七、测试结果1、选择功能编号1输入:3、12345,、bbbb、34567、cccc 、23456、aaaa;操作结果: 2、选择功能编号2输入:dddd、45678;操作结果:3、选择功能编号3 输入:cccc; 操作结果:输入:hhhh操作结果: 4、选择功能编号4 输入:aaaa、gggg、67890; 操作结果 输入:hhh
14、h 操作结果: 5、选择功能编号5 输入:dddd; 操作结果: 输入:hhhh 操作结果: 6、选择功能编号6 输入:无需输入; 操作结果: 7、选择功能编号7 输入:lianxiren.txt 操作结果: 8、选择功能8 输入:lianxiren.txt 操作结果: 输入:a.txt 操作结果: 七、 课程设计总结或结论1完成的工作可以建立号码薄,对联系人进行插入、删除、修改、查询、显示、保存、导入等管理操作。 2未完成的工作 本次设计实现了手机上号码薄的基本功能,但是缺少创新。1. 所需做的改进:需要对插入操作进行优化,若有重复的号码则提示号码存在,若同姓名不同号码则说明联系人有两个号码
15、应该都保存。八、 参考文献【1】、郑玲等 ,c语言程序设计,中国电力出版社,第一版,2009 【2】、谭强浩等,数据结构教程,清华大学出版社,第二版,2008附录:程序清单#include #include #include #include #define maxsize 1000typedef struct phonechar name20;char no20;phone;typedef struct phone *pho;int length;int listsize;sqlist;int initlist(sqlist &sl)sl.pho=(phone*)malloc(maxsize
16、*sizeof(phone);if(!sl.pho)printf(初始化失败!);return 0;sl.length=0;sl.listsize=maxsize;return 1;int creatlist(sqlist &sl)initlist(sl);printf(下面创建联系人管理系统请按提示输入数据:n );sl.length=1;int m;printf(您一共要输入联系人个数: n);scanf(%d,&m);for(int i=2;i=m+1;i+)printf(请输入第%d个人的电话:n,i-1);scanf(%s,sl.phoi-1.no);printf(请输入第%d个人的
17、姓名:n,i-1);scanf(%s,);sl.length+;printf(本次操作您一共输入%d组联系人信息n,m);return 1;int binsearch(sqlist sl,char *a)int low=1,high=sl.length-1,mid;while(low=high)mid=(low+high)/2;if(strcmp(a,)=0)printf(ttt查到的联系人信息如下:nn);printf(ttt姓名tt号码nn);printf(ttt*n);printf(ttt%stt%snn,sl.phomid.nam
18、e,sl.phomid.no);return 1;else if(strcmp(a,)0)high=mid-1;elselow=mid+1;printf(tttt该联系人不存在!nn);return 0;int binsearch1(sqlist sl,char *a)int low=1,high=sl.length-1,mid;while(low=high)mid=(low+high)/2;if(strcmp(a,)=0)printf(ttt联系人信息如下:nn);printf(ttt姓名tt号码nn);printf(ttt*n);pr
19、intf(ttt%stt%snn,,sl.phomid.no);return mid+1;else if(strcmp(a,)0)high=mid-1;elselow=mid+1;printf(tttt该联系人不存在!nn);return 0;void save(sqlist &sl)file *fp;int i;char fn50;printf(请输入要保存的文件名:n);scanf(%s,fn);if(fp=fopen(fn,w)=null)printf(文件名为空,不能保存!n);for(i=1;isl.length;i+)fpri
20、ntf(fp,%s %sn,,sl.phoi.no);fclose(fp);printf(文件保存成功!n);int deletelist(sqlist &sl,int i,phone &x)int j;if(isl.length)printf(您要删除的人不存在,请检查!n);return 0;i-;x=sl.phoi;for(j=i;jsl.length-1;j+)sl.phoj= sl.phoj+1;sl.length-;return 1;void scort(sqlist &sl)/插入排序int j;for(int i=2;isl.length;i+)if(s
21、trcmp(,)0)sl.pho0=sl.phoi;for(j=i-1;strcmp(,)=sl.listsize) printf(容量不够!n); return 0; for(k=sl.length;k=i;k-) sl.phok=sl.phok-1; sl.phoi-1=x; sl.length=sl.length+1; return 1; void open(sqlist &sl,file *fp)int i=2;initlist(sl);char fn50;phone pho;print
22、f(请输入要打开的文件名:n);scanf(%s,fn);if(fp=fopen(fn,r)=null)printf(文件已损坏或文件不存在!n);exit(0);while(!feof(fp)fscanf(fp,%s%s,,pho.no);insertlist(sl,i,pho);i+;fclose(fp);int updatelist(sqlist sl,int i,phone x)if(sl.length=0)printf(没有数据,无法更新!);return 0;sl.phoi-1=x;return 1;int listempty(sqlist &sl)return(s
23、l.length=0);void displist(sqlist &sl)int i;if(listempty(sl)return;printf(ttt联系人信息如下:nn);printf(tttt姓名tt号码n);printf(ttt*n);for(i=1;isl.length;i+)printf(tttt%stt%s,,sl.phoi.no);printf(nn);int menu()int n;printf(ttt*欢迎使用联系人管理系统*n);printf(ttt* 1、创建联系人数据 *n);printf(ttt* 2、插入联系人数据 *n);printf(ttt* 3、删除联系人数据 *n);printf(ttt* 4、修改联系人数据 *n);printf(ttt* 5、按姓名查询信息 *n);printf(ttt* 6、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 22452-2025硼酸盐非线性光学单晶元件通用规范
- 肺癌晚期患者护理
- 代理食品经销商协议书
- 解除委托培养协议书
- 养牛场合作合同协议书
- 高校死亡赔偿协议书
- 食堂智能维护协议书
- 运动手环用户协议书
- 单位出租房消防协议书
- 酒店租赁会议协议书
- 机器智能如何促进科学研究
- 金属非金属地下矿山紧急避险系统建设规范培训
- 北京海淀2025届高考语文三模试卷含解析
- 地域文化(专)-终结性考试-国开(SC)-参考资料
- 《卵巢无性细胞瘤》课件
- PRP注射治疗膝关节炎
- 第一次电力工程例会发言稿
- 安徽省江南十校2023-2024学年高一下学期5月阶段联考化学试题2
- 东方电影学习通超星期末考试答案章节答案2024年
- (完整)注册安全工程师考试题库(含答案)
- 2024年贵州省贵阳市中考生物地理合卷试题(含答案逐题解析)
评论
0/150
提交评论