c语言课程设计学生信息管理系统.docx
《c语言课程设计学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计学生信息管理系统.docx(36页珍藏版)》请在冰豆网上搜索。
c语言课程设计学生信息管理系统
C语言课程设计报告
学生信息管理系统系统
姓名
学号
组长/成员
成绩
匡晨辉
2011040121015
组长
张旭
2011040121030
成员
望家谊
2011040121025
成员
蔡洋
2011040121027
成员
杨孝光
2011040121003
成员
指导老师:
袁琼
2012年6月15日
一系统功能分析------------------------------3
二总体功能模块设计与分析--------------3
三流程图----------------------------------------3
四系统调试及运行---------------------------9
五总结------------------------------------------15
六程序清单-----------------------------------20
七参考文献------------------------------------20
系统功能需求与分析
一个信息管理系统,必须能对学生的基本信息进行方便的查看,这就需这个系统能够对学生信息进行增加,删除,查找,查看,修改等操作。
另外还能退出,清空信息等使系统跟好跟方便的管理信息。
一、总体功能模块设计与分析
设计总体功能应有6大模块:
1.信息录入模块:
用来录入学生信息
2.信息修改模块:
用来修改学生信息
3.信息查找模块:
用来查找学生信息
4.信息删除模块:
用来删除学生信息
5.信息清空模块:
用来清空学生信息
6.信息显示模块:
用来显示学生信息
三、各模块程序流程图设计
按学生姓名查找按学生学号按学生年龄
添加信息函数
显示全部信息
修改学生信息
删除信息
查询学生信息
程序运行过程
四、系统运行及调试(分模块进行)
1.添加学生信息
2.查看全部学生信息
3.按姓名修改学生信息
4.删除学生信息
5.按年龄段查看学生信息
6按学号升序查看
7团队信息
五、总结
-------------------------------匡晨辉---------------------------------
这次课程设计是我第一次的设计,感慨很深,我发现做一个小小的通讯录都如此之难,可见开发一款软件是多麽的不容易啊。
通过这次试验我也更加体会到了合作的重要性,同时也非常感谢我的队友们对我的大力支持,和极力的配合。
没有他们的努力是不可能有这样的成功的。
我主要是做的学生信息删除,修改,文件的读写等模块。
在删除模块的编写过程中我遇到了很多不小的麻烦。
第一次写的时候发现只是在内存中删除了信息根本就没有从文件中把信息删除掉。
后来发现我的文件时一读(fp=fopen(“d\\studentinfo.txt”,”r”))的方式打开的。
后来在改正后在运行发现总是删除的最后一个人的信息。
就想到底是怎么回事呢,我是用for循环来实现对要删除的信息来查找的。
最后总是删最后一个人,那也就是说,i永远是最后一个stu[]的下标。
于是我就发现了原来我在for循环的查找过程中,找到了元素后没有结束循环而是继续i++,于是就在找到元素后加上break语句,退出循环。
等等还有很多问题就不一一列出了。
在程序的调试过程中我是采用分模块进行的,比如做好信息录入模块后就先把他放进主函数调试,看录入过程有什么问题。
这样可以容易的找出错误和解决。
在整个程序得框架基本完成,可以运行时进行的调试中发现界面不是很美观,于是再来修改代码这个过程是很繁琐的。
需要很好的耐心,不过好在我最后还是把界面弄得有模有样的。
在前面的几个模块中遇到了很多问题,让后解决,这个过程不仅让程序得以顺利完成,而且让我重温了c语言的语法和思想,在做这个实验的过城中发现前面学得有些忘了,于是后头再看。
印象变得更加深刻。
总之,这次的课程设计不但学会了发现问题,分析问题,解决问题。
还学会了共同合作,增强了团队精神。
而且品尝到了通过自己努力的成果,真的很自豪!
!
增强了自信
---------------------------杨孝光-------------------------------------
我做的这个模块是打开文件查看学生信息,刚开始这个指针文件类型不是太懂,在组队里成员帮助下,最后还是写下来了。
随后那个if语句里面也不是很好搞,循环语句里面的feof(fp),fclose(fp)都是比较费解的东西,也只能在队友的鼎力帮助下完成了。
总之这次这个学生信息管理系统程序设计打开文件模块设计文件这方面的知识。
我也渐渐掌握了指针文件的一些皮毛。
在接下来得学习中要多多接触这一类型的程序。
当然我得到最多的是团队里的协力协作,此程序写作过程在这里要特别感谢匡成辉,他给了我很大的帮助,对于资料的查找,这里也要感谢好友朱峰杰,知识点的查漏补缺,他与老匡给于我大量帮助,此部分工作的完成与其二人密不可分。
当然其他队友也给了我其他方面的帮助以及精神上的鼓励,在此一并感谢。
此部分程序的完成,功在团队。
再次感谢他们。
------------------------------蔡洋---------------------------------
通过我做的这模块,我发现C语言是一门很难的课程,但是我既然选择了,就得好好学习下去。
在本次程序设计过程中,我发现自己还有很多知识点没有掌握,通过边试验边巩固的方法,慢慢地把自己的知识漏洞补的八九不离十了。
在此次试验中,最重要的是团队合作,大家一起各自完成自己被分配到的任务,然后在综合在一起,慢慢地,发现大家不在是平时的嘻嘻哈哈,漫不经心,而是开始认真,踏实的完成各自的任务,没有人会因为自己的原因放弃自己的任务,做到了:
不放弃!
!
!
!
----------------------望家谊-------------------------------------
(按姓名查找学生信息模块)
熟练掌握for.while.do.while循环语句的使用。
熟练掌握if.switch分支语句的使用。
熟练掌握函数的定义、说明、参数传递及嵌套和递归调用方法。
通过C++实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。
不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。
这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。
如果是一个程序写完一处错误也没用,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。
C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。
比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到不在身边的时候也可以完成一些简单的程序编写与错误排除。
还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。
通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。
其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,C语言还是很有意思的课程。
自己亲自动手编写程序让我增加了对C语言程序开发环境的了解,不管以后从事什么行业,学习C语言都对自己的职业很有帮助,如果是从事编程工程工作的话,就更有帮助了,即使以后的编程工作可能不用C语言,但是拥有扎实的C语言基础是对工作很有用的。
-----------------------------------张旭--------------------------------------
经过一个星期的奋战,终于完成了一个还算可以的设计,这几天我过的很充实,是我大学生活里继两次考试后又一次最充实的生活,看着自己的劳动成果,心里有种说不出的感觉。
毕竟自己的努力还算有所回报,我为自己的努力感到自豪,当然我也认识到了自己学习中的不足,看到了自己在运用知识方面欠缺,在数组合指针方面的运用还不是很顺手,在写头文件时,也没做到和后面的引用一一对应。
但是通过这次课程设计,收获颇多。
我想说:
为完成这次课程设计我们确实很辛苦,但苦中仍有乐。
我们一边忙着复习备考,一边还要做课程设计,时间对我们来说一下子变得很宝贵,真是恨不得睡觉的时间也拿来用了。
当自己越过一个又一个难题时,笑容在脸上绽放。
当我们看到设计终于完成的时候,我们都乐了。
对我而言,知识上的收获重要,精神上的丰收更加可喜。
从这次的课程设计中,我不仅巩固了课本的知识,还学到了许许多多其他的知识。
我知道了关于嵌套及循环的规律,设计有用到指针,可是自己的指针没有学好,于是就要重新翻书来确定自己的一些设计是否正确。
其次了解到团队合作很重要,每个人都有分工,但是又不能完全分开来,还要合作,所以设计的成败因素中还有团队的合作好坏。
这次设计让我知道了学无止境的道理。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为我人生旅途上一个非常美好的回忆!
当然我们的设计肯定有不足之处,希望老师批评指正,下次一定会做得更好
六、参考文献
[1]王敬华《C语言程序设计教程(第二版)》清华大学出版社
[2]谭浩强编著《C程序设计题解与上机指导(第二版)》清华大学出
七、程序清单
#include
#include
#include
#include
voidwelcome_info();//小组信息
voidexchange();
voidtype();//输入函数
voidsave();//保存函数
voidclear();
//voidlook();//查看函数
voidfind_by_name();//通过姓名查找
voidfind_by_age();//通过年龄
voidfind_by_birthday();//通过生日
voidfind_by_numble();//通过学号
voiddele();//删除函数
intopenfile();//打开文件
voidopen_and_see();//打开并查看文件
structstudent
{
charnum[20];//学号
charname[20];//姓名
charsex[10];//性别
charage[5];//年龄
charbirthday[15],QQ[12],telephone[15],address[100];//生日,QQ,电话,地址。
}stu[100];
intn=0;//全局变量
voidmain()
{
intb,flag=0;
system("color1f");
while
(1)//菜单
{
printf("\n\t\t\t欢迎进入学生信息管理系统!
\n");
printf("\n--------------------------------------------------------------------------------");
printf("--------------------------------------------------------------------------------");
printf("\n\t\t\t1.录入学生信息。
");
printf("\n\t\t\t2.修改学生的信息。
");
printf("\n\t\t\t3.按姓名查看学生信息");
printf("\n\t\t\t4.按学号查看学生信息");
printf("\n\t\t\t5.按年龄查看学生信息");
printf("\n\t\t\t6.按学号排序查看信息");
printf("\n\t\t\t7.删除学生信息");
printf("\n\t\t\t8.打开这个文件");
printf("\n\t\t\t9.清空所有信息");
printf("\n\t\t\t10.合作团队");
printf("\n\t\t\t11.退出");
printf("\n\n--------------------------------------------------------------------------------");
printf("--------------------------------------------------------------------------------\n");
printf("\n\n\t\t\t请选择你要做的操作:
");
scanf("%d",&b);
printf("\n\n");
switch(b)
{
case1:
type();break;//录入学生信息函数。
case2:
exchange();break;
case3:
find_by_name();break;
case4:
find_by_numble();break;
case5:
find_by_age();break;
case6:
find_by_birthday();break;
case7:
dele();break;
case8:
open_and_see();break;
case9:
clear();break;
case10:
welcome_info();break;
case11:
flag=1;break;
default:
printf("\n\n\t\t\t未知错误\n");
}
if(flag)break;
}
}
/*团队信息模块*/
voidwelcome_info()
{
system("color1f");
printf("\n\n\t\t-------------------团队信息-------------------");
printf("\n\n\t\t\t\t组员\n");
printf("\n\t\t\t匡晨辉2011040121015");
printf("\n\t\t\t张旭2011040121030");
printf("\n\t\t\t望家谊2011040121025");
printf("\n\t\t\t蔡洋2011040121027");
printf("\n\t\t\t杨孝光2011040121003");
printf("\n\n\t\t\t\t\t11级软工一班");
printf("\n\t\t\t\t\t武汉东湖学院");
printf("\n\t\t----------------------------------------------");
printf("\n\n\t\t按任意键返回菜单:
");
getch();
printf("\n\n");
}
/*学生信息录入模块*/
voidtype()
{
inti;
printf("\t\t\t请输入学生人数:
");
scanf("%d",&n);
for(i=0;i{
printf("\t\t\t-------------------------------------\n");
printf("\t\t\t请输入姓名:
");
scanf("%s",&stu[i].name);
printf("\t\t\t请输入学号:
");
scanf("%s",&stu[i].num);
printf("\t\t\t请输入性别:
");
scanf("%s",&stu[i].sex);
printf("\t\t\t请输入年龄:
");
scanf("%s",&stu[i].age);
printf("\t\t\t请输入生日:
");
scanf("%s",&stu[i].birthday);
printf("\t\t\t请输入QQ号:
");
scanf("%s",&stu[i].QQ);
printf("\t\t\t请输入电话:
");
scanf("%s",&stu[i].telephone);
printf("\t\t\t请输入地址:
");
scanf("%s",&stu[i].address);
}
printf("\n\t\t\t按任意键返回:
");
getch();
save();
}
/*把信息保存为文件到磁盘模块*/
voidsave()
{
FILE*fp;
inti,j;
charchose;
for(j=1;j<20;j++)
{
printf("\n\t\t\t确实要进行以上操作?
yesorno\n");
printf("\n\n\t\t\t\tY\tN\n\n\t\t\t\t");
scanf("%s",&chose);
if(chose=='y'||chose=='Y')
{
j=30;
if((fp=fopen("d:
\\studentinfo.txt","a+"))==NULL)
{
printf("\n\n\t\t\t\t不能建立文件!
\n\n\t\t\t\t按任意键返回菜单");
getch();
return;
}
for(i=0;iif(fwrite(&stu[i],sizeof(structstudent),1,fp)!
=1)
printf("\n\n\t\t\t\t文件写入错误!
\n");
//rewind(fp);
fclose(fp);
printf("\n\n\n\t\t\t\t操作成功!
");
printf("\n\n\t\t\t按任意键返回菜单\n\n\t\t\t\t");
getch();
}
if(chose=='n'||chose=='N')
{
j=30;
printf("\n\n\t\t\t\t操作已取消\n");
printf("\n\n\t\t\t按任意键返回菜单\n\n");
getch();
}
if(chose!
='n'&&chose!
='N'&&chose!
='y'&&chose!
='Y')
{
printf("\n\n\t\t\t\t输入错误!
\n");
printf("\n\t\t\t\t请重新选择:
\n");
}
}
}
/*打开文件函数模块*/
intopenfile()
{
inti=0;
FILE*fp;
if((fp=fopen("d:
\\studentinfo.txt","r+"))==NULL)
{
printf("\n\t\t\t\t不能打开文件!
\n\n\t\t\t按任意键返回菜单");
getch();
printf("\n\n");
return-1;
}
for(i=0;!
feof(fp);i++)
fread(&stu[i],sizeof(structstudent),1,fp);
//rewind(fp);
fclose(fp);
return(i-1);
}
/*查看学生信息模块*//*查看文件中所有的学生信息模块*/
voidopen_and_see()
{
inti=0;
FILE*fp;
if((fp=fopen("d:
\\studentinfo.txt","r"))==NULL)
{
printf("\n\t\t\t\t不能打开文件!
\n\n\t\t\t按任意键返回菜单");
getch();
printf("\n\n");
return;
}printf("\n学号姓名性别年龄生日QQ号电话地址\n\n");
printf("--------------------------------------------------------------------------------\n");
for(i=0;!
feof(fp);i++)
{
stu[i]=stu[150];//先将内存中存在的数据清空。
在读。
fseek(fp,i*sizeof(structstudent),SEEK_SET);
fread(&stu[i],sizeof(structstudent),1,fp);
printf("%-9s%-9s%-6s%-6s%-14s%-12s%-14s%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].birthday,stu[i].QQ,stu[i].telephone,stu[i].address);
}
fclose(fp);
printf("\n\n\n\t\t\t按任意键返回菜单:
");
getch();
printf("\n\n");
}
/*删除学生信息模块*/
voiddele()
{
FILE*fp;
charchose;
inti,j;
chara;
charname[20];
system("color1f");
n=openfile();
printf("\n\t\t\t输入要删除学生名字:
");
scanf("%s",name);
printf("\n学号姓名性别年龄生日QQ号电话地址\n\n");
printf("--------------------------------------------------------------------------------\n");
for(i=0;iif(strcmp(stu[i].name,