C语言学生成绩管理系统设计方案Word格式文档下载.docx
- 文档编号:22491344
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:29
- 大小:195.54KB
C语言学生成绩管理系统设计方案Word格式文档下载.docx
《C语言学生成绩管理系统设计方案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统设计方案Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
2、数据添加、修改、删除功能:
可以添加多名学生信息,包括、学号、各科成绩等待,可以修改某学生的全部信息,也可以删除某学生的全部信息。
3、计算功能:
可以计算出每个学生的总分以及平均成绩,也可以计算出全部学生的各科的平均成绩。
4、查询功能:
可按、学号查询到某个学生的信息,可以输出不及格的学生。
5、排序功能:
可以按学生、学号、总分对全部学生排序。
6、浏览功能:
7、文件功能:
可以新建文件,打开文件。
8、关闭系统。
2系统设计
2.1总体设计
按系统分析的功能要求将系统划分为以下几个主要功能模块:
2.2详细设计
1、主函数main()
利用While循环语句和switch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
2、菜单函数menu()
通过菜单函数显示可选择的菜单,每次操作完后按任意键回到菜单函数。
3、新建文件函数new_file()
通过该函数实现新建文件、输入学生数据功能。
4、编辑数据函数edit_data()
该函数下还有3个函数,通过switch()功能去选择其包含3个函数去实现不同的功能。
3个函数分别是添加学生数据函数add_data()、删除学生信息函数del_data()、修改学生信息函数mod_data()。
5、计算函数calculate()
通过该函数计算每个学生的平均成绩及总成绩,计算出每科的平均成绩,并显示出来。
6、查询函数search()
该函数包含3个子涵数,分别按照查询函数search_name():
、按照学号查询函数search_num()、查询不及格函数search_fail()。
通过switch()来选这3个函数去实现不同的查询功能。
7、排序函数sort()
该函数包含3个子函数,分别按照排序函数sort_name()、按照学号排序函数sort_num()、按照分数高低排序函数sort_score(),通过switch()来选择这3个函数,每个函数排序好后会显示出来。
8、浏览函数browse()
通过该函数可以查看可浏览输入、查询或排序后的数据。
9、打开文件函数open_file()
通过该函数可以打开已经保存的文件,查看里面的数据。
10、保存函数save()
把该函数放在子函数末尾,比如放在排序函数,编辑函数等函数容的末尾,这个就可以实现将修改后的数据保存下来。
11、清屏函数clrscr()
通过该函数可以独立显示每个函数的容。
12、返回菜单函数return_menu()
这个函数反正子函数里面,当子函数操作完后,通过该函数可按任意键返回到目录。
13、定义一个结构体structstudent{}stu[SIZE]
这样就可以将不同类型的数组组合成一个有机的整体,以便引用,还可以通过SIZE的大小来控制最多可输入的学生人数。
3系统运行
菜单界面:
输入数据:
删除数据:
计算数据:
按排序后的数据:
按排序:
打开文件:
4总结
本次设计达到了设计要求的基本容,各功能都能正常运行,设计的系统使用方法容易理解,界面清晰但不够华丽,没有设计到要求以外的其它功能。
设计过程中文件操作这一部分把我难住了,由于之前没有系统地去学这一块,自己只有看书,问同学来了解,搞了很久才完成这一块。
还有输入错误检查这一部分做得不好。
通过一个多星期的C语言课程设计,感觉自己收获了不少。
首先学会了一些书本没学到的函数,比如clrscr()等。
我对各函数的作用有更加进一步的了解,熟悉了函数之间的调用关系。
懂得了冷静地去处理编译时出现的问题。
从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件,写的程序往往是很长的,有时候面对几百行的程序甚至数千行的程序,自己也会看傻,这就需要我们在设计时要有耐心,适当地做下注释。
这次课程设计对我以后在单片机编程这一块打下了很好的基础,对我以后的学习有很大的帮助。
参考文献
C程序设计(第三版)谭浩强编著
C程序设计题解与上机指导(第三版)谭浩强编著
附录:
代码
#include"
stdio.h"
#include<
string.h>
stdlib.h>
#defineSIZE100
inti,number;
/*包含exit()*/
FILE*fp,*fp1;
structstudent
{
charname[20];
charnum[10];
intmath;
intenglish;
intChinese;
intphysics;
intcomputer;
inttotal;
intaverage;
}stu[SIZE];
voidsave()
/*将数据储存于文件*/
FILE*fp;
intj;
if((fp=fopen("
stu_list"
"
wb"
))==NULL)
printf("
cannotopenfile\n"
);
return;
}
for(j=0;
j<
SIZE;
j++)
if(fwrite(&
stu[j],sizeof(structstudent),1,fp)!
=1)printf("
filewriteerror\n"
fclose(fp);
voidreturn_menu()
/*返回菜单*/
\n\n\tPressanykeytoreturntomenu..."
getch();
voidmenu()
/*菜单*/
inti;
clrscr();
gotoxy(1,3);
for(i=0;
i<
37;
i++)
*"
\n\n\n1.Setupnewfile\n"
printf("
2.Editdata\n"
3.Calculation\n"
4.Search\n"
5.Sort\n"
6.Browse\n"
7.Openfile\n"
0.exit\n"
\n\n"
\n\nPleaseselectthemenu:
"
voidnew_file()
/*输入数据*/
inti,j,sum;
charfile_name[10];
*"
\n\nPleaseinputthefilename:
scanf("
%s"
&
file_name);
fp=fopen(file_name,"
w"
/*向文件写数据*/
\nSuccessedtocreatfile"
\n\nPleaseinputthenumberofstudents:
"
%d"
number);
number;
\nPleaseinputthenameofthestudent:
scanf("
stu[i].name);
Pleaseinputthenumberofstudentslearning:
stu[i].num);
Pleaseinputthemathematicsscore:
&
stu[i].math);
PleaseinputEnglishscore:
stu[i].english);
stu[i].Chinese);
Pleaseinputthephysicalscore:
stu[i].physics);
Pleaseinputthecomputerscore:
stu[i].computer);
fprintf(fp,"
number);
\n%s%s%d%d%d%d%d"
stu[i].name,stu[i].num,stu[i].math,stu[i].english,stu[i].Chinese,stu[i].physics,stu[i].computer);
/*将学生信息输出到文件上*/
/*关闭文件*/
/*save();
*/
\n\nPressanykeytoreturntothemenu"
getch();
voidedit_data()/*编辑数据*/
voidadd_data();
voiddel_data();
voidmod_data();
\n\n1.Adddata\n"
2.Deletedata\n"
3.Modifydata\n"
4.Returntomenu\n"
\n\nYouchoiceis:
i);
switch(i)
case1:
add_data();
break;
case2:
del_data();
case3:
mod_data();
case4:
return_menu();
default:
Nothischoice"
voidadd_data()/*添加数据*/
inti,n;
charfname[10];
\n\n\tPleaseinputthefilenamewhichyouwanttoadddata:
fname);
fp=fopen(fname,"
r"
/*读入文件*/
fscanf(fp,"
/*从文件读出学生人数*/for(i=0;
%s%s%d%d%d%d%d"
stu[i].name,stu[i].num,&
stu[i].math,&
stu[i].english,&
stu[i].Chinese,&
stu[i].physics,&
/*从文件读入学生各项信息*/
\n\nPleaseinputtheaddnumberofstudents:
n);
for(i=number;
number+n;
number=number+n;
i++)/*将学生信息输出到文件上*/
%s%s%d
%d%d%d%d"
stu[i].name,stu[i].num,stu[i].math,stu[i].english,stu[i].Chinese,stu[i].physics,stu[i].computer);
save();
voiddel_data()/*删除数据*/
inti,k,n;
charname[10],c;
\n\n\tPleaseinputthefilenamewhichyouwanttodeletedata:
fscanf(fp,"
for(i=0;
/*把学生信息读进来*/
\toriginaldata:
\n\nnamenummathenglisChinesephysicscomputer\n"
%-10s%-10s%-10d%-10d%-10d%-10d%-10d\n"
stu[i].name,stu[i].num,stu[i].math,stu[i].english,stu[i].Chinese,stu[i].physics,stu[i].computer);
\n\tPleaseinputthestudent'
snamewhichyouwanttodelete:
name);
if(strcmp(name,stu[i].name)==0)
/*将学生信息向前移一位*/
strcpy(stu[i].name,stu[i+1].name);
strcpy(stu[i].num,stu[i+1].num);
stu[i].math=stu[i+1].math;
stu[i].english=stu[i+1].english;
stu[i].Chinese=stu[i+1].Chinese;
stu[i].physics=stu[i+1].physics;
stu[i].computer=stu[i+1].computer;
\n\tthenewdata:
number-1;
stu[i].name,stu[i].num,stu[i].math,stu[i].english,stu[i].Chinese,stu[i].physics,stu[i].computer);
number--;
i++)fprintf(fp,"
/*将删除后的信息写到文件上*/
voidmod_data()
/*修改数据*/
charname[10];
\n\n\tPleaseinputthefilenamewhichyouwanttomodifydata:
\n\nPleaseinputthestudent'
snamewhoyouwanttomodify:
\nPleaseinputthenewnameofthestudent:
Pleaseinputthenewnumberofstudentslearning:
Pleaseinputthenewmathematicsscore:
PleaseinputnewEnglishscore:
Pleaseinputthenewphysicalscore:
Pleaseinputthenewcomputerscore:
voidcalculate(intn){
/*计算*/
inti,math_ave=0,english_ave=0,chinese_ave=0,physics_ave=0,computer_ave=0;
clrscr();
\n\nEverystudent'
stotalscoreandaveragescoreare:
nametatalaverage\n"
n;
stu[i].total=stu[i].math+stu[i].english+stu[i].Chinese+stu[i].physics+stu[i].computer;
stu[i].average=stu[i].total/5;
%-10s%-10d%-10d
\n"
stu[i].name,stu[i].total,stu[i].average);
math_ave=(math_ave+stu[i].math);
math_ave=(math_ave/n);
english_ave=(english_ave+stu[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 成绩管理系统 设计方案