《数据结构课程设计-通讯管理系统》由会员分享,可在线阅读,更多相关《数据结构课程设计-通讯管理系统(23页珍藏版)》请在金锄头文库上搜索。
1、淮 海 工 学 院 计算机工程学院课程设计报告设计名称:设计名称: 数据结构课程设计 选题名称:选题名称: 通讯录管理系统 姓姓 名:名: 学学 号:号: 专业班级:专业班级: 系系 (院):院): 计算机工程学院 设计时间:设计时间: 2012.12.242013.1.4 设计地点:设计地点: 软件工程实验室、教室 指导教师评语:签名: 成绩:成绩:年 月 日数据结构课程设计报告 第 1 页,共 页1课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3
2、.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。2课程设计任务与要求:任务任务根据教材数据结构-C 语言描述 (耿国华主编)和参考书数据结构题集(C 语言版) (严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。设计题目从任务书所列选题表中选取,每班每题不得超过 2 人。学生自选课题学生原则上可以结合个人爱好自选课题,要求课题有
3、一定的深度与难度,有一定的算法复杂性,能够巩固数据结构课程所学的知识。学生自选课题需在 18 周前报课程设计指导教师批准方可生效。要求:要求:1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、.设计的题目要求达到一定工作量(300 行以上代码) ,并具有一定的深度和难度。3、程序设计语言推荐使用 C/C+,程序书写规范,源程序需加必要的注释;4、每位同学需提交
4、可独立运行的程序;5 、每位同学需独立提交设计报告书(每人一份) ,要求编排格式统一、规范、内容充实,不少于 10 页(代码不算) ;6、课程设计实践作为培养学生动手能力的一种手段,单独考核。数据结构课程设计报告 第 2 页,共 页3课程设计说明书一 需求分析 该程序所做的工作是通讯录的管理系统,实现对联系人信息的添加、查询、浏览、 删除、修改等功能。程序规定: (1)建立通讯薄,添加联系人的信息到此通讯薄,包括姓名、性别、城市、邮编、 手机号、QQ 号、Email;(2)查询功能,按姓名、手机号查询联系人信息;(3)其他功能:现有联系人信息的浏览、修改、删除。结果保存在文件中。二 概要设计
5、系统用到的抽象数据类型定义:1. ADT LinearList数据元素:D=,i=1,2,n,为某一数据对象 0|iiaaD0n 0D关系:110,|,1,2,1iiiiSa aa aD in L基本操作: (1) InitList(L); (2) DestroyList(L); (3) ClearList(L); (4) EmptyList(L); (5) ListLength(L); (6) Locate(L,e); (7) GetData(L,i); (8) InsList(L,i,e); (9) DelList(L,i, 输入个数; for(i=0;iL-last+1)输出插入位置 i
6、 不合法;返回 ERROR; if(L-last=maxsize) 输出表已满无法插入; for(k=L-last;k=i-1;k-) k 位置的信息移到 k+1 上; 赋 i-1 上的值为输入的信息; 表长+1; int Add(SeqList L,) 调用函数 CreatSeq(L)得到一个联系人表; 调用函数 NameSort(r,l)对联系人信息进行排序; 调用函数 Display(r)输出当前联系人的信息;数据结构课程设计报告 第 4 页,共 页 输出请输入添加的联系人的信息; 输入添加的联系人的信息; 调用函数 InsList ( 返回(i) ; void NameSearch(S
7、eqList L) 输出请输出要查找的联系人的姓名; 输入联系人的姓名 char name; 调用函数 SeqSearch(L,name)得到联系人在表的位置 a; if(a=0) 输出该联系人不存在; else 调用函数 Output() ; void NumberSearch(SeqList L) 输出请输出要查找的联系人的手机号; 输入联系人的手机号 int phone; 调用函数 SeqSearch(L,phone)得到联系人在表的位置 a; if(a=0) 输出该联系人不存在; else 调用函数 Output() ;void NameSort(RecordType r,int le
8、ngth)for(i=2;i表长) 输出删除位置不合理; 返回错误; *e 指向顺序表记录表中的第 i 个记录; for(k=i;k #include #include #include #include #include #define maxsize 100 #define TRUE 1数据结构课程设计报告 第 12 页,共 页#define FALSE 0 #define OK 1 #define ERROR 0 typedef struct char name20; char sex20; char city20; char postcode20; char phone20; char
9、 qq20; char mail20; Data; typedef struct Data rmaxsize; int last; SeqList; void InitList(SeqList *L) L-last=-1; int save(SeqList *L) ofstream outfile(“通讯录.txt“,ios:out); if(!outfile) cerrlast;i+) outfileri.nameri.sexri.cityri.postcoderi.phoneri.qqri.mailri.name); scanf(“%s“, scanf(“%s“, scanf(“%s“,s
10、canf(“%s“,scanf(“%s“,scanf(“%s“, L-last=n-1; int InsList(SeqList *L,int i,Data r) int k; if(iL-last+2) printf(“插入位置 i 不合法“); return(ERROR); if(L-last=maxsize-1) printf(“表已满无法插入“); return(ERROR); for(k=L-last;k=i-1;k-) L-rk+1=L-rk; L-ri-1=r; L-last+; return (OK); void Output(SeqList *L,int i) printf(
11、“姓名 性别 城市 邮编 手机号 QQ 号 Emailn“); printf(“%-12s%-7s%-10s%-8s%-13s%-12s%sn“,L-ri-1.name,L-ri- 1.sex,L-ri-1.city, L-ri-1.postcode,L-ri-1.phone,L-ri-1.qq,L-ri-1.mail); int SeqSearch1(SeqList *L,char k20) 数据结构课程设计报告 第 14 页,共 页int i=0; while(ilast) if(ilast) return(i+1); else return (-1); int SeqSearch2(Se
12、qList *L,char k20) int i=0; while(ilast) if(ilast) return(i+1); else return (-1); void NameSearch(SeqList *L) int i; char a20; printf(“请输入要查找的联系人的姓名:“); scanf(“%s“,SeqSearch1(L,a); i=SeqSearch1(L,a); if(i=-1) printf(“该联系人不存在n“); else Output(L,i); void NumberSearch(SeqList *L) int i; char a20; printf
13、(“请输入要查找的联系人的手机号:“); scanf(“%s“,SeqSearch2(L,a); i=SeqSearch2(L,a); if(i=-1) printf(“该联系人不存在n“); else Output(L,i); 数据结构课程设计报告 第 15 页,共 页int QKPass(Data r,int left,int right) Data x; int low,high; x=rleft; low=left; high=right; while(low=0) high-; if(lowr,0,L-last); printf(“姓名 性别 城市 邮编 手机号 QQ 号 Email
14、n“);for(int i=0;ilast;i+) printf(“%-12s%-7s%-10s%-8s%-13s%-12s%sn“,L-ri.name,L-ri.sex,L-数据结构课程设计报告 第 16 页,共 页ri.city, L-ri.postcode,L-ri.phone,L-ri.qq,L-ri.mail); void Add(SeqList *L) Data r; printf(“n 请输入要添加的联系人的信息:n“); scanf(“%s“, scanf(“%s“, scanf(“%s“, scanf(“%s“,scanf(“%s“,scanf(“%s“,scanf(“%s“, InsList(L,L-last+2,r); printf(“n 当前联系人信息:n“); Display(L); int DelList(SeqList *L,int i,Data *r)