学生成绩管理系统课程报告Word文档下载推荐.docx
- 文档编号:21362334
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:18
- 大小:89.18KB
学生成绩管理系统课程报告Word文档下载推荐.docx
《学生成绩管理系统课程报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程报告Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
charname[8];
charnum[11];
charcla[20];
intscore[3];
//int类型的成绩数组
doubleave;
//平均分
};
//定义结构体类型的学生数组
student_typestud[SIZE];
student_typetemp;
2、本实验程序包括六个模块
(1)主程序模块:
intmain(){
定义变量;
接受命令;
处理命令;
退出(return0);
}
(2)保存文件
(3)文件输出
(4)读(输)入各个成绩
(5)插入学生信息
(6)按照平均分从大到小排序
(7)以姓名为关键字删除指定信息
3、各模块之间的调用关系如下:
Main()函数
函
4、函数原型清单
1)主菜单
voidmain();
2)保存文件:
voidsave()
3)输出文件:
voiddisplay()
4)输入函数:
voidread()
5)增加函数:
:
voidInsert()
6)排序函数:
voidSort()/*按平均分高到低排序*/
7):
删除函数:
voidDelete()/*按学生姓名删除*/
五、运行环境
硬件:
cpu、内存、主板、显卡、键盘、显示器、等等
软件:
windowsXPVisualc++6.0应用软件
六、开发工具和编程语言:
开发工具:
viscualc++6.0
编程语言:
c语言
七、详细设计
1、文件的保存
voidsave()
FILE*fp;
inti;
//如果打开不成功
if((fp=fopen("
score.txt"
"
wb"
))==NULL)
{
printf("
Thefilecan'
topen!
\n"
);
return;
}
//以结构体形式保存到文件之中
for(i=0;
i<
SIZE;
i++)
if(fwrite(&
stud[i],sizeof(structstudent_type),1,fp)!
=1)
{
printf("
filewriteerror!
"
return;
}
fclose(fp);
//关闭文件流
//显示文件保存成功
printf("
\n\nThefilesavesuccess.\n\n"
2、文件的输出
voiddisplay()
//打开所保存的文件
fp=fopen("
"
rb"
printf("
Now,readthefile...\n"
*****************WelcometoTheScoreManageSystem****************\n"
NameNo.Classscore1score2score3ave\n"
*******************************************************************\n"
for(i=0;
i++)//将文件中的结构体读取出来,并显示到屏幕
fread(&
stud[i],sizeof(student_type),1,fp);
%-10s%10s%10s%8d%8d%8d%10.2f\n"
stud[i].name,stud[i].num,stud[i].cla,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].ave);
//关闭文件
3、输入学生信息
voidread()
doublesum[SIZE]={0};
//总分数组初始化
i++)
EnterName,No.,Class,score1,score2andscore3:
scanf("
%s%s%s%d%d%d"
stud[i].name,stud[i].num,stud[i].cla,&
stud[i].score[0],&
stud[i].score[1],&
stud[i].score[2]);
sum[i]=stud[i].score[0]+stud[i].score[1]+stud[i].score[2];
//求总分
stud[i].ave=sum[i]/3;
//求平均成绩
4、增加学生信息
voidInsert()
inti,t,n;
FILE*fp,*fp1;
PleaseEntertheInformationyouInsert:
Name,StudentID,class,score1,score2,score3:
//输入的变量临时存储在temp中
scanf("
temp.name,temp.num,temp.cla,&
temp.score[0],&
temp.score[1],&
temp.score[2]);
temp.ave=(temp.score[0]+temp.score[1]+temp.score[2])/3.0;
sortScore.txt"
r"
))==NULL)//打开排序后的文件
tepen.\n\n"
exit(0);
//输出原始数据
\n\nTheoriginalscoreis:
stud[i].name,stud[i].num,
stud[i].cla,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].ave);
//从最后一个开始判断,是否大于,因为要插入,最后要向后移动一个位置
n=i;
for(t=0;
stud[t].ave>
temp.ave&
&
t<
n;
t++);
//找到不大于的位置
Now:
fp1=fopen("
InsertScore.txt"
w"
t;
i++)//输出没有变的一部分信息
fwrite(&
stud[i],sizeof(structstudent_type),1,fp1);
//输出要插入的信息
fwrite(&
temp,sizeof(structstudent_type),1,fp1);
temp.name,temp.num,
temp.cla,temp.score[0],temp.score[1],temp.score[2],temp.ave);
//输出原来剩余一部分信息
for(i=t;
i++)
//关闭文件流
fclose(fp1);
5、学生成绩的排序
voidSort()
FILE*fp1,*fp2;
inti,j;
//打开原来存储信息的文件
if((fp1=fopen("
))==NULL)
//建立一个存储排序后的信息的文件
if((fp2=fopen("
Thefilewriteerror.\n"
exit(0);
if(fread(&
stud[i],sizeof(structstudent_type),1,fp1)!
filereaderror."
exit(0);
//循环遍历比较
{
for(j=i+1;
j<
j++)
//交换排序
if(stud[i].ave<
stud[j].ave)
{
temp=stud[i];
stud[i]=stud[j];
stud[j]=temp;
}
fwrite(&
stud[i],sizeof(structstudent_type),1,fp2);
fclose(fp2);
//直接输出排序后的文件
fp=fopen("
\n\nAftersort,thescoreis:
fclose(fp);
6、删除学生信息(按姓名)
voidDelete()
{
inti,j,n,flag;
charname[10];
//打开添加后的文件
if((fp=fopen("
//输出原始信息
fread(&
stud[i],sizeof(structstudent_type),1,fp)!
=0;
//输入要删除的姓名
\nEnterthenameyoudelete:
%s"
name);
for(flag=1,i=0;
flag&
if(strcmp(name,stud[i].name)==0)
//如果找到该位置,将后面的依次向前移动一个位置
for(j=i;
n-1;
strcpy(stud[j].name,stud[j+1].name);
strcpy(stud[j].cla,stud[j+1].cla);
strcpy(stud[j].num,stud[j+1].num);
stud[j].ave=stud[j+1].ave;
stud[j].score[0]=stud[j+1].score[0];
stud[j].score[1]=stud[j+1].score[1];
stud[j].score[2]=stud[j+1].score[2];
flag=0;
if(!
flag)
n=n-1;
else
\nCan'
tfound!
//输出删除后的信息
Now,thesocreare:
if((fp=fopen("
AfterDelete.txt"
Can'
topenfile!
fwrite(&
stud[i],sizeof(structstudent_type),1,fp);
fread(&
stud[i],sizeof(structstudent_type),1,fp)!
i++)
7、主函数和菜单
voidmain()
intchoice;
\t~~WelcometothescoreManageSystem~~\n"
Enteryouchoice:
1,Add2,sort3,Insert4,Delete0exit\n"
%d"
&
choice);
while(choice!
=0)
switch(choice)
case1:
read();
save();
display();
break;
case2:
system("
cls"
Sort();
case3:
Insert();
case4:
Delete();
default:
Entererror."
break;
八、调试分析
1.最初编译程序时是想把全部程序输完一起调试,可一运行竟有一百多个错误,于是选择了单个程序慢慢调试
2.在写输入函数input()时,费我了三天时间,一直没办法把曾输入的信息保存在文件里,每次运行程序都要重新输入信息,与所做的程序不符,后来经过请教别人,另编译了一个程序建立文件,终于可以把每次的信息保留在文件里了!
3.在写输出函数output()是,显示出的结果总是乱码,一步一步检查程序,才发现原来是自己忽略了文件信息已以全局变量形式显示,可自己在编程时仍从文件中读取,导致输出结果是乱码。
4.有些功能不能实现,但通过F10调试,自己的分析和请教别人,终于程序可以实现简单的功能了。
九、测试结果
1、输入学生信息
2、增加学生信息
3、学生成绩排序
4、删除学生信息
十参考文献
[1]谭浩强《C程序设计》第三版北京清华大学出版社
[2]边肇祺,《模式识别》(第二版),北京:
清华大学出版社,1988,25~35
[5]丁华伟《C语言程序设计系统》第三版北京清华大学出版社
[4]严蔚敏《数据结构》C语言版北京清华大学出版社
课程设计总结
通过C课程设计的实验课使我了解到了一个程序的开发过程,虽然规模不大,但是为我以后的编程学习打下了基础。
在整个编程过程中,我体会到了编程的辛苦,特别是当一个程序无法运行而又无计可施时,那种难受实在无法用语言表达,但当为一个程序而绞尽脑汁,在自己的努力和同学的帮助下最终运行成功时的那种喜悦感也是溢于言表的,最重要的是我从这次实验课中发现了自己的不足,知识掌握的不牢固,以及这门课知识的广泛。
良好的习惯的养成,需要我坚强的毅力和持久的耐力,同别人的交流也能很快提过自己的编程技能,编程高手是在一天天的难受和惊喜中磨练而成的,向更高的方向前进,这是我的兴趣和梦想,也同时要感激徐老师对我们的关心和帮助,对于他的教学很满意,把每个知识都给我们讲的很细,并让我们学以致用,更告诉我们一定要打好C语言的基础,它是学习各种软件的基础,希望老师能给我更多的题让我去运行,在大学要给我一点小小的压力,只有我们练的多了,自然而然的就会了!
像这样的大型的程序就比较有挑战性,如果有多一点的时间,我们会编出更完美的程序,在平常能给我们一些这样的程序,我们会很感兴趣的,在编程序中我从别的同学那里还了解到密码的设置及修改,让我对程序产生了极大的兴趣,有这个程序设计的机会,让我对它有所了解,以后我还会去编这样或更高层次的程序,为我的梦想而奋斗!
总之,这次试验让我了解到编写一个程序的难度,充分的说明了我对知识了解的不完善,对很多的程序结构模糊不清,以致在这次编写程序是漏洞百出,花了好长的时间才把程序改完整,等于又把书本知识看了一遍,但这同时巩固了我的C语言的基础,为我以后的编程生涯打下很好的基础!
但程序中还会有一些我没考虑到的缺点,我以后会继续改进,使我的程序更加完善,也使我得到进一步的提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 课程 报告