c语言学生管理系统综合实验报告.docx
《c语言学生管理系统综合实验报告.docx》由会员分享,可在线阅读,更多相关《c语言学生管理系统综合实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
c语言学生管理系统综合实验报告
ThismodelpaperwasrevisedbytheStandardizationOfficeonDecember10,2020
佛山科学技术学院
实验报告
实验名称小型学生信息管理系统
实验项目编写一学生信息管理系统,用来管理学生基本信息及成绩信息
专业班级姓名XXX学号
指导教师成绩日期
一、试验目的
本实验为学生提供了一个既动手又动脑,上机实践的机会。
学生通过分析和解决该实验,将课本上的理论知识和实际有机地结合起来,锻炼学生分析、解决较复杂问题的能力,提高学生编写综合系统程序的能力。
二、实验内容
编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。
系统功能模块如下图:
具体要求为:
1.建立学生信息,每个学生的信息应包括:
学号、姓名、性别、班级、至少3门课程的成绩;
2.数据输入:
输入学生的各项信息;
3.数据修改:
根据输入学生的学号可以选择修改该学生的信息;
4.数据处理:
可以选择处理方式为:
排序、查询、统计。
其中:
a)排序:
按学号排序
b)查询:
根据学号查询成绩
c)统计:
可以选择统计各学生的平均成绩或统计所有存在不及格科目的学生;
5.数据输出:
输出学生的相应结果信息;
6.退出:
退出整个学生信息管理系统。
7.输出结果截屏的第一条记录一定要反映出你自己的真实信息。
三、程序组织结构图、函数调用关系图
四、程序清单
#include<>
structstudent
{
charnum[10];
charname[10];
charsex[4];
charclas[20];
intyw,sx,yy;
floatave;
}stu[100];
inti,j;
voidInputData()
charx;
while
(1)
printf("\t学号:
");
scanf("%s",stu[i].num);
printf("\t姓名:
scanf("%s",stu[i].name);
printf("\t性别:
scanf("%s",stu[i].sex);
printf("\t班级:
scanf("%s",stu[i].clas);
printf("\t语文:
scanf("%d",&stu[i].yw);
printf("\t数学:
scanf("%d",&stu[i].sx);
printf("\t英语:
scanf("%d",&stu[i].yy);
stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy)/;
i++;
printf("\t是否继续输入数据");cin>>x;
if(x=='n'||x=='N')break;
}
voidEditData()
intcount=0;
charstr[10];
printf("\n请输入学生学号:
cin>>str;
while(count
if(strcmp(str,stu[count].num)==0)
printf("学号姓名性别班级语文数学英语\n");
printf("----------------------------------------------------------------\n");
printf("%-11s",stu[count].num);
printf("%-13s",stu[count].name);
printf("%-8s",stu[count].sex);
printf("%-16s",stu[count].clas);
printf("%-6d",stu[count].yw);
printf("%-6d",stu[count].sx);
printf("%-4d",stu[count].yy);
printf("\n");
break;
count++;
if(count>=i)
printf("\n查无此人");
else
printf("\n\t修改数据:
\n");
stu[count].ave=float((stu[count].yw+stu[count].sx+stu[count].yy)/;
voidsx()
structstudenttemp;
inta,b,c;
for(a=0;a{c=a;for(b=a+1;bif(stu[b].ave>stu[c].ave)c=b;temp=stu[b];stu[b]=stu[c];stu[c]=temp;}printf("排序后结果为:\n");printf("学号姓名性别班级语文数学英语\n");printf("----------------------------------------------------------------\n");for(c=0;c{printf("%-11s",stu[c].num);printf("%-13s",stu[c].name);printf("%-8s",stu[c].sex);printf("%-16s",stu[c].clas);printf("%-6d",stu[c].yw);printf("%-6d",stu[c].sx);printf("%-4d",stu[c].yy);printf("\n");}printf("----------------------------------------------------------------\n");}voidcx(){intcount=0;charstr[10];printf("\n请输入要查询的学生学号:");cin>>str;while(count{if(strcmp(str,stu[count].num)==0){printf("学号姓名性别班级语文数学英语\n");printf("----------------------------------------------------------------\n");printf("%-11s",stu[count].num);printf("%-13s",stu[count].name);printf("%-8s",stu[count].sex);printf("%-16s",stu[count].clas);printf("%-6d",stu[count].yw);printf("%-6d",stu[count].sx);printf("%-4d",stu[count].yy);printf("\n");printf("----------------------------------------------------------------\n");break;}count++;}if(count>=i)printf("\n无该学号学生");else{printf("\n");}}voidtjpjf(){intcount=0;stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy)/;printf("学号姓名平均分\n");printf("--------------------------------------------------\n");for(j=0;jwhile(count{for(j=0;j{printf("%-21s",stu[count].num);printf("%-21s",stu[count].name);printf("%",stu[count].ave);count++;printf("\n");}}printf("--------------------------------------------------\n");}voidtjbhgrs(){intj,count=0;printf("有不及格科目的学生是:\n");printf("学号姓名性别班级语文数学英语\n");printf("----------------------------------------------------------------\n");for(j=0;j{if(stu[j].yw<60||stu[j].sx<60||stu[j].yy<60){printf("%-11s",stu[count].num);printf("%-13s",stu[count].name);printf("%-8s",stu[count].sex);printf("%-16s",stu[count].clas);printf("%-6d",stu[count].yw);printf("%-6d",stu[count].sx);printf("%-4d",stu[count].yy);printf("\n");}count++;}printf("----------------------------------------------------------------\n");}voidtj(){charx;while(1){printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t1.统计平均分2.统计不及格学生信息3.返回\n");printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("\n\t请选择具体的统计内容:");cin>>x;printf("\n");switch(x){case'1':tjpjf();break;case'2':tjbhgrs();break;case'3':break;}if(x=='3')break;printf("\n");}}voidDataProc(){charx;while(1){printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t处理数据\n");printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\n");printf("\t1.按学号排序\n");printf("\t2.查询\n");printf("\t3.统计\n");printf("\t4.返回主菜单\n");printf("\t\n");printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("\n\t请选择具体的处理内容:");cin>>x;printf("\n");switch(x){case'1':sx();break;case'2':cx();break;case'3':tj();break;case'4':break;}if(x=='4')break;printf("\n");}}voidDataOutput(){intcount=0;printf("学号姓名性别班级语文数学英语\n");printf("----------------------------------------------------------------\n");while(count{printf("%-11s",stu[count].num);printf("%-13s",stu[count].name);printf("%-8s",stu[count].sex);printf("%-16s",stu[count].clas);printf("%-6d",stu[count].yw);printf("%-6d",stu[count].sx);printf("%-6d",stu[count].yy);count++;printf("\n");}printf("----------------------------------------------------------------\n");}voidmain(){charx;while(1){printf("\t********************************************\n");printf("\t**\n");printf("\t*学生信息管理系统*\n");printf("\t*------------------------------------------*\n");printf("\t*1.输入数据*\n");printf("\t*2.修改数据*\n");printf("\t*3.处理数据*\n");printf("\t*4.输出数据*\n");printf("\t*5.退出*\n");printf("\t**\n");printf("\t********************************************\n");printf("\n\t请选择需要进行的操作:");cin>>x;printf("\n");switch(x){case'1':InputData();break;case'2':EditData();break;case'3':DataProc();break;case'4':DataOutput();break;case'5':printf("谢谢使用!\n");break;}if(x=='s')break;printf("\n");}}五、运行结果六、实验总结(调试分析、体会、致谢)从这一次的综合实验中,我感触很深可以这么说,为了这个实验花费比较的功夫。就我个人来说,其实我很害怕与电脑,程序有关的东西,可能因为一直以来很少接触电脑吧,对于相关的东西比较难理解。很认真去学,还是感觉很吃力。每次上课或做实验,发现自己在这方面很跟上大家的脚步。比如说,我去做了题,但是不能理解,也记不住。但是,这次的综合实验二做起来相对之前,我发现自己有了进步。从开始着手做,我就发现这个实验所需要的知识在前面的实验已经做过了。特别是综合实验一。我是像做实验一那样去完成这个实验的。首先把整个函数的结构,关系图先写出来。在把程序写出来时,先写主函数,然后把第一层函数的空函数写出来,调试主函数与第一层的空函数。第二步就是按照主菜单的顺序,把第一层函数写出来,输入数据的函数很快就写好,调试也没有任何问题。在写修改数据的函数就没那么容易,我参照了老师的程序,但是很奇怪,调试没问题,可当我输入数据后,进行第二的修改数据时,出现的数据一直是学号为1的学生的数据。我找了一天是哪的问题,却完全没头绪,然后我就求助舍友了,舍友帮我看了很久,她也找不到。等我返回去看流程图,才发现原来少了“if(strcmp(str,stu[count].num)==0)”这条件。接下来就是处理数据的函数,我个人感觉这里,既简单又比较难的。这个函数里面又包含里按学号排序,查询,统计这三个函数,而统计里面又有统计平均分及统计不及格学生信息两个函数。像之前一样,我先把第三层函数写好,再写第四层的。按学号排序那个因为刚好老师讲到相关的那节课很认真听了;做起来虽然有点磕磕碰碰,它的程序调试完全没问题。在调试查询的时候,我犯了一个特别低级的错误,在没有把上一次的运行窗口关掉就编译,运行,发现程序连接有错误。我第一反应以为代码出错,就一在代码上找错,但找不到,当我目光放到电脑的任务栏,才恍然大悟,没有把上次运行后的窗口关掉。并且,这种错误在做综合实验过程中犯了不止一次。这也提醒着我对于C语言很不熟练。做统计的函数时我花费了比较长的时间。其实统计里面的两个函数相对来讲不是特别难,但是因为前面的都忘了,所以在调试老是出错。后来,函数写出来了,编译,运行也没出错,可是统计出来的平均分就是不正确。看了又看,都找不到哪里有问题。我又去求助了问一个同学,找不到,又回来问舍友了。终于发现了,原来在输入数据那个求平均值那里,我把stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy)/;写成了stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy/);也就是括号放错地方了。到这里为止,我已经完成了整个系统,开始全面调试,随便输了几组数据,一步一步往下进行操作,整个系统运行正常。我很开心,至少在自己努力和老师,同学的帮助下完成整个实验。在这里,我从心里深深表示,感谢在我有困难时,文娴和王瑶对我的帮助,感谢老师在课上的耐心指导,让我对学习C语言有了兴趣与动力。我在完成这个系统后,我更加认识到:没什么是学不会的,只在于你自己去不去努力学,我很后悔之前遇到一点小困难就放弃的行为,不过,我不会再如此轻易放弃了,遇到困难要迎难而上。在这里,再一次对老师和同学表示真心的感谢!
c=a;
for(b=a+1;b
if(stu[b].ave>stu[c].ave)
c=b;
temp=stu[b];
stu[b]=stu[c];
stu[c]=temp;
printf("排序后结果为:
for(c=0;c
printf("%-11s",stu[c].num);
printf("%-13s",stu[c].name);
printf("%-8s",stu[c].sex);
printf("%-16s",stu[c].clas);
printf("%-6d",stu[c].yw);
printf("%-6d",stu[c].sx);
printf("%-4d",stu[c].yy);
voidcx()
printf("\n请输入要查询的学生学号:
printf("\n无该学号学生");
voidtjpjf()
printf("学号姓名平均分\n");
printf("--------------------------------------------------\n");
for(j=0;j
printf("%-21s",stu[count].num);
printf("%-21s",stu[count].name);
printf("%",stu[count].ave);
printf("\n");}
voidtjbhgrs()
intj,count=0;
printf("有不及格科目的学生是:
if(stu[j].yw<60||stu[j].sx<60||stu[j].yy<60)
{printf("%-11s",stu[count].num);
voidtj()
printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\t1.统计平均分2.统计不及格学生信息3.返回\n");
printf("\n\t请选择具体的统计内容:
cin>>x;
switch(x)
case'1':
tjpjf();break;
case'2':
tjbhgrs();break;
case'3':
if(x=='3')
voidDataProc()
printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\t处理数据\n");
printf("\t\n");
printf("\t1.按学号排序\n");
printf("\t2.查询\n");
printf("\t3.统计\n");
printf("\t4.返回主菜单\n");
printf("\n\t请选择具体的处理内容:
sx();break;
cx();break;
tj();break;
case'4':
if(x=='4')
voidDataOutput()
printf("%-6d",stu[count].yy);
voidmain()
{printf("\t********************************************\n");
printf("\t**\n");
printf("\t*学生信息管理系统*\n");
printf("\t*------------------------------------------*\n");
printf("\t*1.输入数据*\n");
printf("\t*2.修改数据*\n");
printf("\t*3.处理数据*\n");
printf("\t*4.输出数据*\n");
printf("\t*5.退出*\n");
printf("\t********************************************\n");
printf("\n\t请选择需要进行的操作:
cin>>x;printf("\n");
{case'1':
InputData();break;
EditData();break;
DataProc();break;
DataOutput();break;
case'5':
printf("谢谢使用!
\n");break;
if(x=='s')break;
五、运行结果
六、实验总结(调试分析、体会、致谢)
从这一次的综合实验中,我感触很深
可以这么说,为了这个实验花费比较的功夫。
就我个人来说,其实我很害怕与电脑,程序有关的东西,可能因为一直以来很少接触电脑吧,对于相关的东西比较难理解。
很认真去学,还是感觉很吃力。
每次上课或做实验,发现自己在这方面很跟上大家的脚步。
比如说,我去做了题,但是不能理解,也记不住。
但是,这次的综合实验二做起来相对之前,我发现自己有了进步。
从开始着手做,我就发现这个实验所需要的知识在前面的实验已经做过了。
特别是综合实验一。
我是像做实验一那样去完成这个实验的。
首先把整个函数的结构,关系图先写出来。
在把程序写出来时,先写主函数,然后把第一层函数的空函数写出来,调试主函数与第一层的空函数。
第二步就是按照主菜单的顺序,把第一层函数写出来,输入数据的函数很快就写好,调试也没有任何问题。
在写修改数据的函数就没那么容易,我参照了老师的程序,但是很奇怪,调试没问题,可当我输入数据后,进行第二的修改数据时,出现的数据一直是学号为1的学生的数据。
我找了一天是哪的问题,却完全没头绪,然后我就求助舍友了,舍友帮我看了很久,她也找不到。
等我返回去看流程图,才发现原来少了“if(strcmp(str,stu[count].num)==0)”这条件。
接下来就是处理数据的函数,我个人感觉这里,既简单又比较难的。
这个函数里面又包含里按学号排序,查询,统计这三个函数,而统计里面又有统计平均分及统计不及格学生信息两个函数。
像之前一样,我先把第三层函数写好,再写第四层的。
按学号排序那个因为刚好老师讲到相关的那节课很认真听了;做起来虽然有点磕磕碰碰,它的程序调试完全没问题。
在调试查询的时候,我犯了一个特别低级的错误,在没有把上一次的运行窗口关掉就编译,运行,发现程序连接有错误。
我第一反应以为代码出错,就一在代码上找错,但找不到,当我目光放到电脑的任务栏,才恍然大悟,没有把上次运行后的窗口关掉。
并且,这种错误在做综合实验过程中犯了不止一次。
这也提醒着我对于C语言很不熟练。
做统计的函数时我花费了比较长的时间。
其实统计里面的两个函数相对来讲不是特别难,但是因为前面的都忘了,所以在调试老是出错。
后来,函数写出来了,编译,运行也没出错,可是统计出来的平均分就是不正确。
看了又看,都找不到哪里有问题。
我又去求助了问一个同学,找不到,又回来问舍友了。
终于发现了,原来在输入数据那个求平均值那里,我把stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy)/;
写成了stu[i].ave=float((stu[i].yw+stu[i].sx+stu[i].yy/);也就是括号放错地方了。
到这里为止,我已经完成了整个系统,开始全面调试,随便输了几组数据,一步一步往下进行操作,整个系统运行正常。
我很开心,至少在自己努力和老师,同学的帮助下完成整个实验。
在这里,我从心里深深表示,感谢在我有困难时,文娴和王瑶对我的帮助,感谢老师在课上的耐心指导,让我对学习C语言有了兴趣与动力。
我在完成这个系统后,我更加认识到:
没什么是学不会的,只在于你自己去不去努力学,我很后悔之前遇到一点小困难就放弃的行为,不过,我不会再如此轻易放弃了,遇到困难要迎难而上。
在这里,再一次对老师和同学表示真心的感谢!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1