C语言课程设计报告学生通讯录管理系统设计资料.docx
- 文档编号:26145225
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:22
- 大小:495.20KB
C语言课程设计报告学生通讯录管理系统设计资料.docx
《C语言课程设计报告学生通讯录管理系统设计资料.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告学生通讯录管理系统设计资料.docx(22页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告学生通讯录管理系统设计资料
课程设计报告
(本科)
课程:
高级语言程序设计
学号:
1310411031
姓名:
秦钱军
班级:
2013级计算机科学与技术
教师:
冯凤
时间:
2014年1月
计算机科学与技术系
设计名称:
学生通讯录管理系统设计
设计内容、目的与要求:
设计内容:
设计一个学生通讯录,学生通讯录数据信息构成内容可自行设计(如:
姓名、家庭地址、邮政编码、电话号码等等),通讯录数据类型定义为结构类型。
目的与要求:
设计学生通讯录
1.主要功能:
(1)能建立、修改和增减学生通讯录
(2)能够多种方式进行查询
2.要求:
界面友好,易于操作,采用文件存储数据。
计划与进度安排:
12月20日至12月22日:
研究题目的要求及所给条件,综合分析实验应该达到的目标,探讨实验需要使用的方法和解决此问题的实际情况,图书馆查阅相关资料,综合比较;
12月23日至12月25日:
设计解题的方法和具体步骤,并进行分步思考,利用主菜单函数menu()将程序模块化,在进行各个模块的设计和制作方案,绘制实验的流程图,再将各个模块综合,将各个函数运用于主函数中,绘制主函数的流程图,综合运用所有的函数;
12月26日至12月31日:
查阅书籍,仔细研究书本上的例题,再结合网络资料,结合各方面所得的资料,编写程序,仔细修改程序;
1月1日至1月2日:
调试程序,运行程序,再次将程序修改;
1月3日至1月5日:
完善程序,仔细填写课程设计报告,再次认真阅读程序并熟悉程序,为验收做最后的准备。
设计过程、步骤(可加页):
整个程序主要使用了结构体类型,结构体类型充当了整个程序的骨架,将各个程序段有机巧妙的结合在一起。
例如:
structstudent//声明一个结构体类型structstudent
{
longnum;//学号
charname[20];//姓名
intbanji;//班级
chartel[11];//号码
charEmail[20];//邮箱
intsushe;//宿舍
structstudent*next;//next是指针变量,指向结构体变量
};
整个系统必须有一个主函数,为了尽量提高程序的易修改性,且不至于相互干扰,将每一个功能分成不同的模块,用不同的函数来实现,例如在我写的这个程序中,一共用了9个函数,分别是:
主菜单函数voidmenu(void);
输入函数structstudent*shuru(void);
输出单个学生信息函数voidshuchu(structstudent*s);
输出所有学生信息函数voidfindall();
按姓名查找函数voidfindname();
按学号查找函数voidfindnum();
删除函数structstudent*stushanchu(structstudent*stu);
排序函数voidpaixu();
主函数voidmain(),
这样在整个程序的设计过程中也就一目了然,写起来也相对轻松了不少。
下面是摘自源程序的主函数:
voidmain()/*主函数*/
{
chara;
menu();
puts("\n您为首次使用本系统,建议您按1开始录入学生信息,");
a=getche();
while(a){
puts("");
switch(a)
{
case'0':
gotoend;break;
case'1':
puts("\n好了,您可以开始向本系统录入学生通讯录信息了:
");
stu=shuru();
system("cls");
menu();
puts("\n学生信息录入完毕,请输入你的选择(0~6):
\n");
break;
case'2':
findall();puts("\n请输入你的选择(0~6):
");break;
case'3':
findname();puts("\n请输入你的选择(0~6):
");break;
case'4':
findnum();puts("\n请输入你的选择(0~6):
");break;
case'5':
stu=shanchu(stu);puts("\n请输入你的选择(0~6):
");break;
case'6':
paixu();puts("\n请输入你的选择(0~6):
");break;
default:
puts("输错了!
按数字1键录入学生信息吧!
");break;
}
a=getche();
}
end:
;
puts("谢谢您使用本系统,欢迎再次使用!
");
}
结果与分析(可以加页):
主界面:
按1录入学生通讯录信息:
按2查看所有学生信息:
按3按姓名查找学生信息:
按4按学号查找学生信息:
按5删除学生信息:
删除后:
按6将通讯录信息排序:
按0退出:
程序已实现对学生信息的录入、按姓名查询、按学号查询和删减,唯一的不足之处是没能实现对学生信息的修改。
设计体会与建议:
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在是生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。
具体的各个函数是参照课本上《链表》那一章的内容的,比如结构体的建立、查找和排序等功能,这些书上都有类似的,例如在第六章中有一个用冒泡法排序的例题,我就是仿照这个模式来对结构体进行排序的。
回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温顾。
在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。
在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。
在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。
没有了柳暗花明的一天,那么我怎么能说经受住了考验?
谢谢老师的那句话,她说:
人力有所不能及,然而,人的精神是不会败倒的。
我鼓起勇气,到处问,到处查资料,黄天不负有心人,在一篇文章上,终于看到了我所特别要求的函数,我实现了组合是关键的理论。
不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。
我们的课程设计结束了,但是它留给我的印象是不可磨灭的。
无论我以后会不会涉及到C语言程序编译的研究,我想,我至少掌握了一种系统的研究方法,我们学习的目的就在于运用,我们运用这种研究方法的时候会很多,我最后要感谢课程设计,它的确教会我很多。
附录:
#include
#include
#include
#include
#include
#defineNULL0
structstudent{
longnum;
charname[20];
intbanji;
chartel[11];
charEmail[20];
intsushe;
structstudent*next;
};
structstudent*stu;
intn;
voidmenu(void){/*主菜单函数*/
system("cls");
puts("****************************************************************************");
puts("**^_^学生通讯录管理系统^_^**");
puts("****************************************************************************");
puts("************");
puts("*****1=录入学生通讯录信息*****");
puts("****2=列出所有学生通讯录****");
puts("***3=按姓名查询信息***");
puts("**4=按学号查询信息**");
puts("*5=删除学生信息*");
puts("**6=按学号将通讯录排序**");
puts("*****0=退出***");
puts("**********");
puts("************");
puts("**************");
puts("****************************************************************************");
}
structstudent*shuru(void)/*输入函数*/
{
system("cls");
structstudent*s1,*s2;
n=1;
intnum;
puts("请输入学生个数(提示:
个数不能输入0!
):
");
scanf("%d",&num);
s1=s2=(structstudent*)malloc(sizeof(structstudent));
puts("*************************************************");
puts("请输入学号:
");
scanf("%ld",&s1->num);
puts("请输入学生姓名:
");
scanf("%s",s1->name);
puts("请输入班级:
");
scanf("%d",&s1->banji);
puts("请输入电话号码:
");
scanf("%s",s1->tel);
puts("请输入电子邮件:
");
scanf("%s",s1->Email);
puts("请输入学生宿舍号:
");
scanf("%d",&s1->sushe);
stu=s1;
while(n { s2->next=s1; s2=s1; s1=(structstudent*)malloc(sizeof(structstudent)); puts("*************************************************"); puts("请输入学号: "); scanf("%ld",&s1->num); puts("请输入学生姓名: "); scanf("%s",s1->name); puts("请输入班级: "); scanf("%d",&s1->banji); puts("请输入电话号码: "); scanf("%s",s1->tel); puts("请输入电子邮件: "); scanf("%s",s1->Email); puts("请输入学生宿舍号: "); scanf("%d",&s1->sushe); n=n+1; } puts("*************************************************"); s2->next=s1; s2=s1; s2->next=NULL; return(stu); //system("cls"); } voidshuchu(structstudent*s){/*输出单个学生信息*/ printf("*%-8ld",s->num); printf("%-15s",s->name); printf("%-8d",s->banji); printf("%-15s",s->tel); printf("%-15s",s->Email); printf("%-5d*\n",s->sushe); } voidfindall()/*输出所有学生信息*/ { system("cls"); structstudent*s; //if(n=2) //printf("\n现在有%d个学生信息,分别是: \n",n); //else printf("\n现在有%d个学生信息,分别是: \n",n); puts("________________________________________________________________________"); puts("*学号姓名班级电话电子邮件宿舍*"); s=stu; while(s! =NULL) { shuchu(s); s=s->next; } puts("________________________________________________________________________"); puts("返回主菜单请按【9】"); if(getche()=='9')menu(); } voidfindname(){/*按姓名查找函数*/ system("cls"); structstudent*s; charname[20]; printf("\n请输入你要查询的学生姓名: \n"); scanf("%s",name); s=stu; while(strcmp(s->name,name)! =0) { s=s->next; } if(s==NULL) { puts("查无此学生姓名! "); gotoend; } else { puts("该学生的信息为: "); puts("*学号姓名班级电话电子邮件宿舍*"); shuchu(s); } end: ; puts("返回主菜单请按【9】"); if(getche()=='9')menu(); } voidfindnum()/*按学号查找函数*/ { system("cls"); structstudent*s; puts("请输入你要查询的学生学号: "); longi; scanf("%ld",&i); s=stu; while(s->num! =i) { s=s->next; } if(s==NULL) {puts("查无此学生学号! ");gotoend;} else { puts("该学生的信息为: "); puts("*学号姓名班级电话电子邮件宿舍*"); shuchu(s); } end: ; puts("返回主菜单请按【9】"); if(getche()=='9')menu(); } structstudent*shanchu(structstudent*stu)/*删除函数*/ { system("cls"); longnum; chars; structstudent*s1,*s2; if(stu==NULL) { puts("没有任何学生信息。 "); gotoend; } puts("请输入你要删除的学生学号: "); scanf("%ld",&num); s1=stu; puts("警告: 你确定要删除这个学生的信息吗(Y/N)? "); scanf("%s",&s); if((s=='Y')||(s=='y')) { while((num! =s1->num)&&(s1->next! =NULL)) {s2=s1;s1=s1->next;} if(num==s1->num) {puts("该学生的信息为: "); puts("*学号姓名班级电话电子邮件宿舍*"); shuchu(s1); if(s1==stu) stu=s1->next; else s2->next=s1->next; puts("注意哟,该学生的信息已经删除了! 剩下的学生通讯录信息如下: "); n=n-1; } } findall(); return(stu); end: ; puts("返回主菜单请按【9】"); if(getche()=='9')menu(); } voidpaixu(){/*排序函数*/ structstudent*p,*p1,*p2; inti,j; inttemp; charb[20]; if(stu==NULL) {printf("\n学生信息不存在\n"); gotoend; } for(i=0;i {p1=stu; for(j=0;j { p2=p1->next; if(p1->num>p2->num) {temp=p1->num;p1->num=p2->num;p2->num=temp; strcpy(b,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,b); temp=p1->banji;p1->banji=p2->banji;p2->banji=temp; strcpy(b,p1->tel);strcpy(p1->tel,p2->tel);strcpy(p2->tel,b); strcpy(b,p1->Email);strcpy(p1->Email,p2->Email);strcpy(p2->Email,b); temp=p1->sushe;p1->sushe=p2->sushe;p2->sushe=temp; } p1=p1->next; } } p=stu; puts("已按学生学号顺序排序完毕! 重新排序如下: "); puts("****************************************************************************"); puts("*学号姓名班级电话电子邮件宿舍*"); while(p! =NULL) { printf("*%-8ld",p->num); printf("%-15s",p->name); printf("%-8d",p->banji); printf("%-15s",p->tel); printf("%-15s",p->Email); printf("%-5d*\n",p->sushe); p=p->next; } end: ; puts("返回主菜单请按【9】"); if(getche()=='9') menu(); } voidmain()/*主函数*/ { chara; menu(); puts("\n您为首次使用本系统,建议您按1开始录入学生信息,"); a=getche(); while(a){ puts(""); switch(a) {case'0': gotoend;break; case'1': puts("\n好了,您可以开始向本系统录入学生通讯录信息了: "); stu=shuru(); system("cls"); menu(); puts("\n学生信息录入完毕,请输入你的选择(0~6): \n"); break; case'2': findall();puts("\n请输入你的选择(0~6): ");break; case'3': findname();puts("\n请输入你的选择(0~6): ");break; case'4': findnum();puts("\n请输入你的选择(0~6): ");break; case'5': stu=shanchu(stu);puts("\n请输入你的选择(0~6): ");break; case'6': paixu();puts("\n请输入你的选择(0~6): ");break; default: puts("输错了! 按数字1键录入学生信息吧! ");break; } a=getche(); } end: ; puts("谢谢您使用本系统,欢迎再次使用! "); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 学生 通讯录 管理 系统 设计 资料