1、课程设计(大作业)报告课程名称: 数据结构 设计题目: 通讯录信息管理系统 院 系: 信息技术学院 班 级: 12级计算机2班 设 计 者: * 学 号: 201211010214 指导教师: SSSSSS 设计时间:2013.12.282013.12.31昆明学院课程设计(大作业)任务书姓 名:* 院(系): 信息技术学院专 业:计算机科学与技术学 号: 201211010214任务起止日期:2013/12/28课程设计题目:通讯录信息管理系统课程设计要求:(1)通讯录的建立 (2)通讯者的插入 (3)通讯者的删除 (4)通讯者的查询 (5)通讯录表的输出工作计划及安排: 4小时 复习相关的
2、课程设计所需的内容,提出要求、提供选题并检索资料、确定设计项目 8小时 数据类型定义、确定存储结构、算法设计 10小时 算法实现 4小 时 编写课程设计报告指导教师签字 年 月 日 课程设计(大作业)成绩学号:201211010214 姓名:* 指导教师:SSSSS课程设计题目:通讯录信息管理系统总结:这个课题是设计一个通讯录系统,该通讯系统能够较好的管理好我们的通讯录记录,也拥有比较完善的功能,但是该系统依旧有漏洞,此程序必须按照系统提示的操作来执行,不然的话就会使程序进入死循环,比如,如果我输入字符串的长度过长的话,程序就会终止运行了,并且还没有提示;后面的删除模块所用的方法是用空格替代,
3、虽然可以删除,但达不到理想的效果。在编写过程中,我逐步的了解了程序模块化设计的思想含义。在整个程序设计的过程中语法的错误还是比较容易检查的,但是对于那些逻辑思维的问题方面的缺陷不易查出,因此常常出现系统提示没有错误但是仍然不能够正常运行的境况,尽管有很多不足之处,但我在整个系统程序设计的过程中,我可以感受到自己对C语言有了一定的掌握,对整体的把握度也提高了很多。此外编程是一项高精度的工作,所以我们要有规范化,标准化的代码编写习惯,良好的编写习惯,不但有助于代码的纠错,也有助于不同人员之间的协作。 我们还要有模块化思维能力,模块化思维就是编程任何一个功能模块或函数的时候,要多想一些,不要局限在完
4、成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大的避免重复性的工作。另外我们要重视程序的算法,在程序中,算法是灵魂,我们要努力学习各种先进的算法,提高自己的编程能力。指导教师评语:成绩:填表时间:指导教师签名:课程设计(大作业)报告一、数据结构及算法描述1. 数据类型定义2. 说明主要变量含义3. 说明数据输入的要求和格式-即输入数据的类型、值的范围及输入的形式4. 输出数据的类型、值的范围及输出的形式5. 确定存储结构6. 编写算法并实现二、程序测试并运行通过1. 测试与分析、记录调试过程及结果 添加通
5、讯录记录显示通讯录记录 按姓名方式查找按电话方式查找插入通讯录记录按姓名方式排序删除通讯录记录按记录保存文件2. 出现的问题、解决的方法、最终运行结果三、源程序#include stdio.h#include stdlib.h#include string.h#include conio.h#include stdlib.h#define null 0struct recordchar name20;char phone20;char adress40;char postcode10;char e_mail30;student500;struct LinkList struct record
6、US; struct LinkList *next;a; struct LinkList *head=null;int num=0;FILE *fp;int menu_select();int adduser();int list();int search();int display();int add();int listbyname();int dele();int save();int exit();void main() system(cls); for(;) switch(menu_select() case 0:adduser();break; case 1:list();brea
7、k; case 2:search();break; case 3:display();break; case 4:add();break; case 5:listbyname();break; case 6:dele();break; case 7:save();break; case 8:exit(0); menu_select() char s80; int a; system(color 2f); printf(*_* press any key enter menu! *_* n); getch(); system(cls); printf(t*MENU*n); printf(t* |
8、 0. 添加通讯录记录 | *n); printf(t* | 1. 显示通讯录记录 | *n); printf(t* | 2. 按姓名方式查找 | *n); printf(t* | 3. 按电话方式查找 | *n); printf(t* | 4. 插入通讯录记录 | *n); printf(t* | 5. 按姓名方式排序 | *n); printf(t* | 6. 删除通讯录记录 | *n); printf(t* | 7. 按记录保存文件 | *n); printf(t* | 8. Quit | *n); printf(t*n); do printf(n Enter you choice(08
9、):); scanf(%s,s); a=atoi(s); while (a8); return a;adduser() printf(ntt* 请输入用户信息 *n); printf(ntt输入姓名:); scanf(%s,&studentnum.name); printf(ntt输入电话号码:); scanf(%s,&studentnum.phone); printf(ntt输入地址:); scanf(%s,&studentnum.adress); printf(ntt输入邮编:); scanf(%s,&studentnum.postcode); printf(ntt输入e-mail:);
10、scanf(%s,&studentnum.e_mail); num+; printf(ntt是否继续添加?(Y/N):);if (getch()=y) adduser();return(0); list() int i; system(cls); if(num!=0) printf(ntt* 以下为通讯录所有信息*); for (i=0;inum;i+) printf(ntt姓名: %s,studenti.name); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntt邮编: %s,st
11、udenti.postcode); printf(ntte-mail:%s,studenti.e_mail); printf(tt); if (i+1num) printf(ntt_); system(pause); printf(ntt*); else printf(ntt通讯录中无任何纪录); printf(ntt按任意键返回主菜单:); getch(); return(0);search() int mark=0; int i; int a=0; printf(ntt* 按姓名查找 *); char name20; printf(ntt请输入姓名:); scanf(%s,name); f
12、or(i=a;inum;i+) if (strcmp(studenti.name,name)=0) printf(ntt* 以下是您查找的用户信息 *); printf(ntt姓名: %s,studenti.name); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(ntt*); mark+; if (i+1)num) printf(ntt是否继续查找相同名字的用户信息:(y/n); if (getch()=y)
13、a=i; continue; else return(0); else printf(ntt按任意键返回主菜单); getch(); return(0); if(mark!=0) printf(ntt没有相同姓名的用户纪录); printf(ntt按任意键返回主菜单); getch(); return(0); else printf(ntt没有相同姓名的用户纪录); printf(ntt按任意键返回主菜单); getch(); return(0); display()int mark=0;int i;int a=0;printf(ntt* 按电话查找 *);char phone10;print
14、f(ntt请输入电话号码:);scanf(%s,phone);for(i=0;inum;i+) if (strcmp(studenti.phone,phone)=0) printf(ntt* 以下是您查找的用户信息 *); printf(ntt姓名: %s,studenti.name); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(ntt*); printf(ntt按任意键返回主菜单:); mark+; getc
15、h(); return(0); if (mark=0) printf(ntt没有改用户的信息); printf(ntt按任意键返回主菜单); getch(); return(0);return(0);add() int i; if (fp=fopen(student.bin,wb)=NULL) printf(ntt文件打开失败); for (i=0;inum;i+) if (fwrite(&studenti,sizeof(struct record),1,fp)!=1) printf(ntt写入文件错误!n); printf(ntt* 请输入用户信息 *n); printf(ntt输入姓名:)
16、; scanf(%s,&studentnum.name); printf(ntt输入电话号码:); scanf(%s,&studentnum.phone); printf(ntt输入地址:); scanf(%s,&studentnum.adress); printf(ntt输入邮编:); scanf(%s,&studentnum.postcode); printf(ntt输入e-mail:); scanf(%s,&studentnum.e_mail); num+; printf(ntt是否继续添加?(Y/N):); if (getch()=y) adduser(); return(0); fc
17、lose(fp); printf(ntt通讯录文件已保存); printf(ntt按任意键退出程序ntt); exit(0); return(0);void deletebyphone()int i,j;int deletemark=0;char phone20; printf(ntt请输入要删除用户电话号码:); scanf(%s,phone); if(num=0) printf(ntt对不起,文件中无任何纪录); printf(ntt按任意键返回主菜单); getch(); return; for (i=0;inum;i+) if (strcmp(studenti.phone,phone)
18、=NULL) printf(ntt以下是您要删除的用户纪录:); printf(ntt姓名: %s,studenti.name); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(ntt是否删除?(y/n); if (getch()=y) for (j=i;jnum-1;j+) studentj=studentj+1; num-; deletemark+; printf(ntt删除成功); printf(ntt是否继
19、续删除?(y/n); if (getch()=y) deletebyphone(); return; else return; continue; if (deletemark=0) printf(ntt没有该用户的纪录); printf(ntt是否继续删除?(y/n); if (getch()=y) deletebyphone(); return; void deletebyname()int a=0;int findmark=0;int j;int deletemark=0;int i;char name20; printf(ntt请输入要删除用户姓名:); scanf(%s,name);
20、for (i=a;inum;i+) if (strcmp(studenti.name,name)=NULL) printf(ntt以下是您要删除的用户纪录:); findmark+; printf(ntt_); printf(ntt姓名: %s,studenti.name); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(ntt_); printf(ntt是否删除?(y/n); if (getch()=y) for
21、 (j=i;jnum-1;j+) studentj=studentj+1; num-; deletemark+; printf(ntt删除成功); if(i+1)num) printf(ntt是否继续删除相同姓名的用户信息?(y/n); if (getch()=y) a=i; continue; printf(ntt是否继续删除?(y/n); if (getch()=y) deletebyname(); return; if(i+1)num) printf(ntt是否继续删除相同姓名的用户信息?(y/n); if (getch()=y) a=i; continue; elsecontinue;
22、if (deletemark=0)&(findmark=0) printf(ntt没有该用户的纪录); printf(ntt是否继续删除?(y/n); if (getch()=y) deletebyphone(); return; return;else if (findmark!=0) printf(ntt没有重名信息); printf(ntt没有该用户的纪录); printf(ntt是否继续删除?(y/n); if (getch()=y) deletebyphone(); return; return; dele()char choic; printf(ntt1-按电话号码删除 2-按姓名
23、删除); printf(ntt请选择:); choic=getch();switch (choic) case 1:deletebyphone();break; case 2:deletebyname();break; return(0);listbyname() int i,j; struct record tmp; for (i=1;inum;i+) if(strcmp(studenti.name,studenti-1.name)0) tmp=studenti; j=i-1; do studentj+1=studentj; j-; while (strcmp(tmp.name,studen
24、tj.name)=0); studentj+1=tmp; printf(ntt排序成功,是否显示?(y/n); if (getch()=y) list(); return(0);save() int j; FILE*fp; fp=fopen(student.txt,w); if (fp=NULL) printf(cant open the file.); if(num!=0) for(j=0;jnum;j+) fwrite(student,sizeof(student),1,fp); printf(保存成功!); fclose(fp); return(0); 四、参考文献其中专业理论知识内容包
25、括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。二培训的及要求培训目的安全生产目标责任书为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标:一、目标值:1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。2、现金安全保管,不发生盗窃事故。3、每月足额提取安全生产费用,保障安全生产投入资金的到位。4、安全培训合格率为100%。二、本单位安全工作上必须做到以下内容: 1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管
26、理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。 2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。 3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。 4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。 5、在公司及政府的安全检查中杜绝各类违章现象。 6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。 7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。 8、虚心接受员工提出的问题,杜绝不接受或盲目指挥;9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。 10、必须按规定对单位员工进行培训和新员工上岗教育;11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。 三、 安全奖惩: 1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。 2、每月接受主管领导指派人员对安全生产责任状的落