C语言学生成绩管理系统设计方案.docx

上传人:b****8 文档编号:9355280 上传时间:2023-02-04 格式:DOCX 页数:29 大小:195.54KB
下载 相关 举报
C语言学生成绩管理系统设计方案.docx_第1页
第1页 / 共29页
C语言学生成绩管理系统设计方案.docx_第2页
第2页 / 共29页
C语言学生成绩管理系统设计方案.docx_第3页
第3页 / 共29页
C语言学生成绩管理系统设计方案.docx_第4页
第4页 / 共29页
C语言学生成绩管理系统设计方案.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C语言学生成绩管理系统设计方案.docx

《C语言学生成绩管理系统设计方案.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统设计方案.docx(29页珍藏版)》请在冰豆网上搜索。

C语言学生成绩管理系统设计方案.docx

C语言学生成绩管理系统设计方案

学生成绩管理系统

1系统分析

1.1课程设计容

设计一学生成绩管理系统,功能包括:

1.输入数据:

可输入学生、学号、及多门(至少5门)课程的成绩。

(先将所有学生的、学号输入完后,再逐科输入成绩)

2.

3.

4.

5.

6.

7.

编辑数据:

可添加、删除、修改数据。

计算:

计算出每个学生的总分及平均成绩;计算每门课程平均成绩。

查询:

可按、学号查询;可查询不及格的学生。

排序:

可按、学号、总分排序

浏览:

可浏览输入、查询或排序后的数据。

文件操作:

可打开、保存、关闭数据文件。

1.2系统功能需求分析

本系统应具有以下功能:

1、数据输入功能:

可输入学生人数、学号、数学成绩、英语成绩,语文成绩、物理成绩、电脑成绩,输入后自动保存学生数据。

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#include#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

if(fwrite(&stu[j],sizeof(structstudent),1,fp)!

=1)printf("filewriteerror\n");

fclose(fp);

}

voidreturn_menu()

{

/*返回菜单*/

printf("\n\n\tPressanykeytoreturntomenu...");getch();

}

voidmenu()

{

/*菜单*/

inti;

clrscr();

gotoxy(1,3);

for(i=0;i<37;i++)

printf("*");

printf("\n\n\n1.Setupnewfile\n");printf("2.Editdata\n");

printf("3.Calculation\n");

printf("4.Search\n");

printf("5.Sort\n");

printf("6.Browse\n");

printf("7.Openfile\n");

printf("0.exit\n");

printf("\n\n");

for(i=0;i<37;i++)

printf("*");

printf("\n\nPleaseselectthemenu:

");

}

voidnew_file()

{

/*输入数据*/

inti,j,sum;

charfile_name[10];

for(i=0;i<37;i++)

printf("*");

clrscr();

printf("\n\nPleaseinputthefilename:

");

scanf("%s",&file_name);

fp=fopen(file_name,"w");/*向文件写数据*/

printf("\nSuccessedtocreatfile");

printf("\n\nPleaseinputthenumberofstudents:

");

scanf("%d",&number);

for(i=0;i

{

printf("\nPleaseinputthenameofthestudent:

");scanf("%s",stu[i].name);

printf("Pleaseinputthenumberofstudentslearning:

");scanf("%s",stu[i].num);

printf("Pleaseinputthemathematicsscore:

");

scanf("%d",&stu[i].math);

printf("PleaseinputEnglishscore:

");

scanf("%d",&stu[i].english);

printf("Pleaseinputthemathematicsscore:

");

scanf("%d",&stu[i].Chinese);

printf("Pleaseinputthephysicalscore:

");

scanf("%d",&stu[i].physics);

printf("Pleaseinputthecomputerscore:

");

scanf("%d",&stu[i].computer);

}

fprintf(fp,"%d",number);

for(i=0;i

fprintf(fp,"\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);/*将学生信息输出到文件上*/

fclose(fp);/*关闭文件*/

/*save();*/

printf("\n\nPressanykeytoreturntothemenu");

getch();

}

voidedit_data()/*编辑数据*/

{

voidadd_data();

voiddel_data();

voidmod_data();

inti;

clrscr();

printf("\n\n1.Adddata\n");

printf("2.Deletedata\n");

printf("3.Modifydata\n");

printf("4.Returntomenu\n");

printf("\n\nYouchoiceis:

");

scanf("%d",&i);

switch(i)

{

case1:

add_data();break;

case2:

del_data();break;

case3:

mod_data();break;

case4:

return_menu();break;

default:

printf("Nothischoice");

}

}

voidadd_data()/*添加数据*/

{

inti,n;

charfname[10];

clrscr();

printf("\n\n\tPleaseinputthefilenamewhichyouwanttoadddata:

");scanf("%s",fname);

fp=fopen(fname,"r");

/*读入文件*/

fscanf(fp,"%d",&number);/*从文件读出学生人数*/for(i=0;i

fscanf(fp,"%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);/*从文件读入学生各项信息*/

fclose(fp);

printf("\n\nPleaseinputtheaddnumberofstudents:

");

scanf("%d",&n);

for(i=number;i

{

printf("\nPleaseinputthenameofthestudent:

");

scanf("%s",stu[i].name);

printf("Pleaseinputthenumberofstudentslearning:

");

scanf("%s",stu[i].num);

printf("Pleaseinputthemathematicsscore:

");

scanf("%d",&stu[i].math);

printf("PleaseinputEnglishscore:

");

scanf("%d",&stu[i].english);

printf("Pleaseinputthemathematicsscore:

");

scanf("%d",&stu[i].Chinese);

printf("Pleaseinputthephysicalscore:

");

scanf("%d",&stu[i].physics);

printf("Pleaseinputthecomputerscore:

");

scanf("%d",&stu[i].computer);

}

number=number+n;

fp=fopen(fname,"w");

fprintf(fp,"%d",number);

for(i=0;i

fprintf(fp,"%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);

fclose(fp);

save();

printf("\n\nPressanykeytoreturntothemenu");

getch();

}

voiddel_data()/*删除数据*/

{

inti,k,n;

charname[10],c;

charfname[10];

clrscr();

printf("\n\n\tPleaseinputthefilenamewhichyouwanttodeletedata:

");scanf("%s",fname);

fp=fopen(fname,"r");fscanf(fp,"%d",&number);for(i=0;i

/*把学生信息读进来*/

fscanf(fp,"%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);

fclose(fp);

printf("\toriginaldata:

");

printf("\n\nnamenummathenglisChinesephysicscomputer\n");

for(i=0;i

printf("%-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);

printf("\n\tPleaseinputthestudent'snamewhichyouwanttodelete:

");scanf("%s",name);

for(i=0;i

{

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;

}

}

printf("\n\tthenewdata:

");

printf("\n\nnamenummathenglisChinesephysicscomputer\n");

for(i=0;i

printf("%-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);

number--;

fp=fopen(fname,"w");

fprintf(fp,"%d",number);

for(i=0;i

/*将删除后的信息写到文件上*/

%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);

fclose(fp);

save();

printf("\n\nPressanykeytoreturntothemenu");getch();

}

voidmod_data()

{

/*修改数据*/

charname[10];

charfname[10];

clrscr();

printf("\n\n\tPleaseinputthefilenamewhichyouwanttomodifydata:

");scanf("%s",fname);

fp=fopen(fname,"r");

fscanf(fp,"%d",&number);

for(i=0;i

fscanf(fp,"%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);

fclose(fp);

clrscr();

printf("\n\nPleaseinputthestudent'snamewhoyouwanttomodify:

");scanf("%s",name);

for(i=0;i

{

if(strcmp(name,stu[i].name)==0)

{

printf("\nPleaseinputthenewnameofthestudent:

");

scanf("%s",stu[i].name);

printf("Pleaseinputthenewnumberofstudentslearning:

");scanf("%s",stu[i].num);

printf("Pleaseinputthenewmathematicsscore:

");

scanf("%d",&stu[i].math);

printf("PleaseinputnewEnglishscore:

");

scanf("%d",&stu[i].english);

printf("Pleaseinputthenewmathematicsscore:

");

scanf("%d",&stu[i].Chinese);

printf("Pleaseinputthenewphysicalscore:

");

scanf("%d",&stu[i].physics);

printf("Pleaseinputthenewcomputerscore:

");

scanf("%d",&stu[i].computer);

}

}

fp=fopen(fname,"w");

fprintf(fp,"%d",number);

for(i=0;i

fprintf(fp,"%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);

fclose(fp);

save();

printf("\n\nPressanykeytoreturntothemenu");

getch();

}

voidcalculate(intn){

/*计算*/

inti,math_ave=0,english_ave=0,chinese_ave=0,physics_ave=0,computer_ave=0;clrscr();

printf("\n\nEverystudent'stotalscoreandaveragescoreare:

\n\n");printf("nametatalaverage\n");

for(i=0;i

{

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;

printf("%-10s%-10d%-10d

\n",stu[i].name,stu[i].total,stu[i].average);

}

for(i=0;i

math_ave=(math_ave+stu[i].math);

math_ave=(math_ave/n);

for(i=0;i

english_ave=(english_ave+stu[i]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1