1、c语言报告学号1106420103成绩课程设计说明书 设计名称 C语言课程设计 设计题目 个人通讯录系统 设计时间 2012年6月18日6月22日 学 院 信息与控制工程学院 专 业 信息管理与信息系统 班 级 信息11-01班 姓 名 仇 睿 指导教师 董 洁 2012年 6月 21日 目 录一 设计目的.1 二 课程设计的内容.1三 课程设计的要求与数据.1四 课程设计应完成的工作.2五 总体设计.2六 源程序及运行结果.2-15七 总结.16一 . 设计目的进一步加深、巩固所学专业课程(C程序设计)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握运用C语言独
2、立地编写、调试应用程序和进行其它相关设计的技能。二. 课程设计的内容 通讯录管理系统主要管理用户通讯录的基本信息。在系统中,每个用户是一条记录,包括姓名、电话号码、通讯地址。系统要对一个有N个用户的通讯录统一进行管理。包括了用户信息的录入、显示、修改、排序、查询等操作。三课程设计的要求与数据1、用C语言实现系统;2、对个人通讯信息(包括姓名、电话号码、地址、邮编、e-mail)进行管理,包括个人通讯信息的输入、输出、查询、删除、排序、退出.3、个人通讯信息较多,为了简化讨论,要求设计的管理系统能够完成以下功能:(1)、每一条记录包括姓名、电话号码、地址、邮编、e-mail(2)、通讯信息录入功
3、能; (3)、通讯信息显示浏览功能:完成全部人信息的显示。(4)、查询功能:完成按姓名和电话号码查找信息并显示。(5)、通讯信息的删除:按姓名进行删除某人的通讯信息.(6)、排序功能:按姓名进行排序。(7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。四课程设计应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析; 1(3)撰写课程设计报告。内容包括:1) 封面扉页2) 设计任务书3) 目录4) 总体设计方案5) 使用说明及运行实例(包括界面)6) 设计内容简介7) 项目源程序代码(注意注释的使用)8) 指导教师评语五总体设计(包含几大功能模
4、块)1、信息录入功能2、信息输出功能3、信息查询功能4、删除模块 5、排序功能 6、统计功能 7、退出系统六源程序及运行结果1.源程序#include#include/定义杂项函数及内存分配函数#include/字符串处理#include/通过控制台进行数据输入和数据输出的函数struct record char name20; /姓名 char phone12; /电话 char adress50; /地址 char postcode8; /邮政编码 char e_mail20; /电子邮件。student100; /假设最大数为100./定义全局变量num,表示已经输入的人数 。2int
5、num; /这里使用数组解决通讯录的问题,实际上使用链表更好。int menu_select() char s80; int a;/*定义整形变量*/ system(cls); printf(tt*欢迎进入通讯管理界面*nn); printf(ttt0. 输入记录n); printf(ttt1. 显示记录n); printf(ttt2. 按姓名查找n); printf(ttt3. 按电话号码查找n); printf(ttt4. 插入记录 n); printf(ttt5. 按姓名排序n); printf(ttt6. 删除记录n); printf(ttt7. Quitn); printf(tt*n
6、n); do printf(Enter you choice(07):); scanf(%s,s); a=atoi(s); while (a7); return a;int adduser() printf(ttt* 请输入用户信息 *n); printf(ttt输入姓名:n); scanf(%s,studentnum.name); printf(ttt输入电话号码:n); scanf(%s,studentnum.phone); printf(ttt输入地址:n); scanf(%s,studentnum.adress); printf(ttt输入邮编:n); scanf(%s,student
7、num.postcode); printf(ttt输入e-mail:n); scanf(%s,studentnum.e_mail); num+; printf(ttt是否继续添加?(Y/N):n);3 if(getch()=y | getch()=Y) adduser(); return(0);void list() int i; system(cls); if(num!=0) printf(ttt* 以下为通讯录所有信息*n); for (i=0;inum;i+) printf(ttt姓名:%sn,studenti.name); printf(ttt电话:%sn,studenti.phone
8、); printf(ttt地址:%sn,studenti.adress); printf(ttt邮编:%sn,studenti.postcode); printf(ttte-mail:%sn,studenti.e_mail); if(i+1num) system(pause); printf(ttt*n); else printf(ttt通讯录中无任何纪录n); printf(ttt按任意键返回主菜单:n); getch(); /这里是无回显的输入字符,你输入的字符不会显示在屏幕上。 return;int searchbyname() int mark=0; int i; printf(ttt
9、* 按姓名查找 *n); char name20;4printf(ttt请输入姓名:n); scanf(%s,name); for(i=0;inum;i+) if (strcmp(studenti.name,name)=0) printf(ttt* 以下是您查找的用户信息 *n); printf(ttt姓名: %s,studenti.name); printf(ttt电话: %s,studenti.phone); printf(ttt地址: %s,studenti.adress); printf(ttte-mail:%s,studenti.e_mail); printf(ttt*n); mar
10、k+; if(i+1)num) printf(ttt是否继续查找相同名字的用户信息:(y/n)n); if(getch()=y | getch()=Y) continue; else return(0); else printf(ttt按任意键返回主菜单); getch(); return(0); if(mark = 0) printf(ttt没有相同姓名的用户纪录n); printf(ttt按任意键返回主菜单n); getch(); return(0);5 return 0;int searchbyphone() int mark=0; int i; printf(ttt* 按电话查找 *n
11、); char phone10; printf(ttt请输入电话号码:n); scanf(%s,phone); for(i=0;inum;i+) if (strcmp(studenti.phone,phone)=0) printf(ttt* 以下是您查找的用户信息 *n); printf(ttt姓名: %s,studenti.name); printf(ttt电话: %s,studenti.phone); printf(ttt地址: %s,studenti.adress); printf(ttte-mail:%s,studenti.e_mail); printf(ttt*n); printf(
12、ttt按任意键返回主菜单n); mark+; getch(); return(0); if (mark=0) printf(ttt没有改用户的信息n); printf(ttt按任意键返回主菜单n); getch(); return(0); return(0);void deletebyphone()6int i,j; int deletemark=0; char phone20; printf(ttt请输入要删除用户电话号码:n); scanf(%s,phone); if(num=0) printf(ttt对不起,文件中无任何纪录n); printf(ttt按任意键返回主菜单n); getch
13、(); return; for (i=0;inum;i+) if (strcmp(studenti.phone,phone)=0) printf(ttt以下是您要删除的用户纪录:n); printf(ttt姓名: %s,studenti.name); printf(ttt电话: %s,studenti.phone); printf(ttt地址: %s,studenti.adress); printf(ttte-mail:%s,studenti.e_mail); printf(ttt是否删除?(y/n); if (getch()=y | getch()=Y) for (j=i;jnum-1;j+
14、) studentj=studentj+1; num-; deletemark+; printf(ttt删除成功); printf(ttt是否继续删除?(y/n); if (getch()=y | getch()=Y) deletebyphone(); return; else return; continue; if (deletemark=0) 7printf(ttt没有该用户的纪录); printf(ttt是否继续删除?(y/n); if(getch()=y | getch()=Y) deletebyphone(); return; return;void deletebyname()
15、int a=0; int findmark=0; int j; int deletemark=0; int i; char name20; printf(ttt请输入要删除用户姓名:n); scanf(%s,name); for (i=a;inum;i+) if(strcmp(studenti.name,name)=0) printf(ttt以下是您要删除的用户纪录:); findmark+; printf(ttt_); printf(ttt姓名: %s,studenti.name); printf(ttt电话: %s,studenti.phone); printf(ttt地址: %s,stu
16、denti.adress); printf(ttte-mail:%s,studenti.e_mail); printf(ttt_); printf(ttt是否删除?(y/n); if (getch()=y | getch() = Y) for(j=i;jnum-1;j+) studentj=studentj+1; num-; deletemark+; printf(ttt删除成功); if(i+1)num) printf(ttt是否继续删除相同姓名的用户信息?(y/n);8 if (getch()=y) a=i; continue; printf(ttt是否继续删除?(y/n); if (ge
17、tch()=y) deletebyname(); return; if(i+1)num) printf(ttt是否继续删除相同姓名的用户信息?(y/n); if (getch()=y | getch() = Y) a=i; continue; else continue; if (deletemark=0)&(findmark=0) printf(ttt没有该用户的纪录); printf(ttt是否继续删除?(y/n); if(getch()=y | getch() = Y) deletebyphone(); return; else if (findmark!=0) printf(ttt没有
18、重名信息); printf(ttt没有该用户的纪录); printf(ttt是否继续删除?(y/n); if(getch()=y | getch() = Y) deletebyphone(); return; 9int dele() char choic; printf(ttt1-按电话号码删除 2-按姓名删除); printf(ttt请选择:); choic=getch(); switch (choic) case 1:deletebyphone();break; case 2:deletebyname();break; return(0);int sortbyname() /按姓名进行排序
19、 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,studentj.name)=0); studentj+1=tmp; printf(ttt排序成功,是否显示?(y/n); if (getch()=y) list(); return(0);int main() printf(tt*n); printf(tt*欢迎进入通讯录系
20、统 *n);10 printf(tt#制作人 仇睿 #n); printf(tt*n); printf(按任意键进入主菜单n); getch(); int selectnum; while(1) selectnum = menu_select(); switch(selectnum) case 0: adduser(); break; case 1: list(); break; case 2: searchbyname(); break; case 3: searchbyphone(); break; case 4: adduser(); /这里插入,应该能指定位置,不过意义不大,所以和添加
21、记录一样了。 break; case 5: sortbyname(); break; 11case 6: dele(); break; case 7: printf(BYE BYE!n); system(pause); getchar(); exit(0); getchar(); return 0;2.运行结果 运行开始按任意键入主菜单12添加界面显示界面13查找界面14排序界面删除界面15八 .总结 由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。在用的时候难免出现这样那样的错误。如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。解决的这个问题的办法是调整。一个系统
22、的菜单和提示信息非常重要。如果没有这些用户根本不知道怎么用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。回顾起此次课程设计,我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整一个礼拜的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程设计结束了,我通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我们知道自己哪些方面做得还不够。这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我们了解到团队合作的可贵.编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!在编写程序的过程中,错误不断出现,不同的类型(如少
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1