学生成绩管理系统程序设计c语言.docx

上传人:b****6 文档编号:8762764 上传时间:2023-05-14 格式:DOCX 页数:18 大小:82.30KB
下载 相关 举报
学生成绩管理系统程序设计c语言.docx_第1页
第1页 / 共18页
学生成绩管理系统程序设计c语言.docx_第2页
第2页 / 共18页
学生成绩管理系统程序设计c语言.docx_第3页
第3页 / 共18页
学生成绩管理系统程序设计c语言.docx_第4页
第4页 / 共18页
学生成绩管理系统程序设计c语言.docx_第5页
第5页 / 共18页
学生成绩管理系统程序设计c语言.docx_第6页
第6页 / 共18页
学生成绩管理系统程序设计c语言.docx_第7页
第7页 / 共18页
学生成绩管理系统程序设计c语言.docx_第8页
第8页 / 共18页
学生成绩管理系统程序设计c语言.docx_第9页
第9页 / 共18页
学生成绩管理系统程序设计c语言.docx_第10页
第10页 / 共18页
学生成绩管理系统程序设计c语言.docx_第11页
第11页 / 共18页
学生成绩管理系统程序设计c语言.docx_第12页
第12页 / 共18页
学生成绩管理系统程序设计c语言.docx_第13页
第13页 / 共18页
学生成绩管理系统程序设计c语言.docx_第14页
第14页 / 共18页
学生成绩管理系统程序设计c语言.docx_第15页
第15页 / 共18页
学生成绩管理系统程序设计c语言.docx_第16页
第16页 / 共18页
学生成绩管理系统程序设计c语言.docx_第17页
第17页 / 共18页
学生成绩管理系统程序设计c语言.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

学生成绩管理系统程序设计c语言.docx

《学生成绩管理系统程序设计c语言.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统程序设计c语言.docx(18页珍藏版)》请在冰点文库上搜索。

学生成绩管理系统程序设计c语言.docx

学生成绩管理系统程序设计c语言

课程设计报告书

学生成绩管理系统

 

班级

学号:

姓名:

指导老师:

 

1、题目要求----------------------------------------------------------1

2、设计思想----------------------------------------------------------3

3、系统完成功能及框图-------------------------------------------3

4、界面设计----------------------------------------------------------4

5、核心算法及说明-------------------------------------------------7

6、结论----------------------------------------------------------------16

7、参考资料----------------------------------------------------------16

8、后记----------------------------------------------------------------16

 

摘要:

学生成绩管理系统提供了强大学生成绩管理管理功能,方便系统管理员对学生成绩等信息添加,修改,删除,查询,留言等操作,同时一样方面学生对自己各科成绩查询,学习交流.随着科学技术不断提高,计算机科学日渐成熟,其强大功能已为人们深刻认识,它已进入人类社会各个领域并发挥着越来越重要作用.作为计算机应用一部分,使用计算机对学生成绩信息进行管理,有着手工管理所无法比拟优点.

1、题目要求

题目七:

学生成绩管理系统设计

学生成绩信息包括:

学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。

主要功能:

(1)能按学期、按班级完成对学生成绩录入、修改

(2)能按班级统计学生成绩,求学生总分及平均分

(3)能查询学生成绩,不及格科目及学生名单

(4)能按班级输出学生成绩单

要求:

使用二进制文件方式存储数据,系统以菜单方式工作 

2、设计思想

我们设计学生成绩管理系统共有7个功能,所涉及到函数有按回车返回主菜单、查询、保存、输入、修改、输出、统计等等。

这是一个关于学生成绩管理系统,所以就会涉及到一系列问题,例如:

去各科成绩总和、平均值、不几个学生科目及对应成绩。

这个程序整个思路就是按照要求写出相应程序并使之能够运行。

首先,写出所有能够用到库函数,并设计出能够显示主菜单程序。

其次按照主菜单设计出所有有关程序。

再次,由于这个程序会用到结构体所以会涉及到“将数据从结构体数组保存到文件中”、“将数据从文件读到结构体数组中”这两个程序。

为了使程序更完美还涉及了主函数显示。

最后,就可以按照主菜单进行一系列操作。

其实,这些程序设计都是根据以前学过只是进行简单程序叠加。

没有什么可以害怕或是担心。

 

3、系统完成功能及框图

4、界面设计

主菜单

运行1后界面

运行4后界面

运行5后界面

5、核心算法及说明

#include

#include

#include

#include

#defineMAX300

structstudent

{

charcla[10];//班级

charterm[10];//学期

charname[10];//姓名

charno[10];//学号

floatch;//语文

floatma;//数学

floaten;//英语

floatcom;//计算机

};

structdata

{

intcount;//当前学生数组中学生个数

structstudentstu[MAX];//学生数组

}dd;

//显示主菜单

voidmenu()

{

system("cls");

printf("\n");

printf("\t\t\t************************************\n");

printf("\t\t\t**\n");

printf("\t\t\t*学生成绩管理系统*\n");

printf("\t\t\t**\n");

printf("\t\t\t*[0]退出*\n");

printf("\t\t\t*[1]查看所有学生信息*\n");

printf("\t\t\t*[2]输入学生记录*\n");

printf("\t\t\t*[3]修改学生记录*\n");

printf("\t\t\t*[4]查询(班级)*\n");

printf("\t\t\t*[5]查询(不及格记录)*\n");

printf("\t\t\t*[6]成绩统计*\n");

printf("\t\t\t**\n");

printf("\t\t\t************************************\n");

}

//等待用户按回车后回到主菜单

voidto_menu()

{

charc1,c2;

printf("\n\n\n按回车键返回主菜单...");

scanf("%c%c",&c1,&c2);

menu();

}

//查看所有学生信息

voidview_data()

{

inti;

printf("班级\t学期\t姓名\t学号\t语文\t数学\t英语\t计算机");

printf("\n-------------------------------------------------------------------\n");

for(i=0;i

printf("%s\t%s\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n",dd.stu[i].cla,dd.stu[i].term,dd.stu[i].name,dd.stu[i].no,dd.stu[i].ch,dd.stu[i].ma,dd.stu[i].en,dd.stu[i].com);

}

//将数据从结构体数组保存到文件中

voidsave_data()

{

FILE*fp;

inti,k;

k=dd.count;

fp=fopen("c:

/dada.txt","w");

fwrite(&k,sizeof(int),1,fp);

for(i=0;i

fwrite(&dd.stu[i],sizeof(structstudent),1,fp);

fclose(fp);

}

//输入学生记录(按班级和学期)

voidadd_data()

{

structstudentst;

intb;

inti,k,j;

charterm[10],cla[10];

printf("请输入所要录入学生班级:

");

scanf("%s",cla);

printf("请输入所要录入学期:

");

scanf("%s",term);

while

(1)

{

j=0;

printf("\n请输入学生信息:

");

printf("\n姓名\t学号\t语文\t数学\t英语\t计算机");

printf("\n---------------------------------------------------------------\n");

scanf("%s%s%f%f%f%f",st.name,st.no,&st.ch,&st.ma,&st.en,&);

for(i=0;i

{

if(strcmp(dd.stu[i].no,st.no)==0&&strcmp(dd.stu[i].term,term)==0)

{

if(strcmp(dd.stu[i].no,st.no)==0)

printf("\n信息已存在,请重新输入!

\n");

j=1;

break;

}

}

if(j==1)

continue;

if(j==0)

{

k=dd.count;

strcpy(dd.stu[k].cla,cla);strcpy(dd.stu[k].term,term);

strcpy(dd.stu[k].name,st.name);

strcpy(dd.stu[k].no,st.no);

dd.stu[k].ch=st.ch;

dd.stu[k].ma=st.ma;

dd.stu[k].en=st.en;

dd.stu[k].com=;

dd.count++;

}

printf("\n\n继续添加学生信息[1-yes0-no]:

");

scanf("%d",&b);

if(b==0)break;

}

save_data();

}

 

//将数据从文件读到结构体数组中

voidread_data()

{

FILE*fp;

inti,k;

structstudentst;

k=0;

if(access("c:

/dada.txt",0)==-1)//如果文件不存在

{

fp=fopen("c:

/dada.txt","w");

fwrite(&k,sizeof(int),1,fp);

fclose(fp);

}

fp=fopen("c:

/dada.txt","r");

fread(&k,sizeof(int),1,fp);

dd.count=k;

for(i=0;i

{

fread(&st,sizeof(structstudent),1,fp);

strcpy(dd.stu[i].cla,st.cla);

strcpy(dd.stu[i].term,st.term);

strcpy(dd.stu[i].name,st.name);

strcpy(dd.stu[i].no,st.no);

dd.stu[i].ch=st.ch;

dd.stu[i].ma=st.ma;

dd.stu[i].en=st.en;

dd.stu[i].com=;

}

fclose(fp);

}

 

//修改学生成绩记录(按班级和学期)

voidedit_data()

{

charcla[10],term[10];

inti;floatch,ma,en,com;

printf("请输入所要修改记录班级:

");

scanf("%s",cla);

printf("请输入所要修改记录学期:

");

scanf("%s",term);

for(i=0;i

{

if(strcmp(dd.stu[i].cla,cla)==0&&strcmp(dd.stu[i].term,term)==0)

{

printf("\n姓名:

%s,学号:

%s",dd.stu[i].name,dd.stu[i].no);

printf("\n请修改学生数据:

");

printf("\n语文成绩:

");

scanf("%f",&ch);

dd.stu[i].ch=ch;

printf("\n数学成绩:

");

scanf("%f",&ma);

dd.stu[i].ma=ma;

printf("\n英语成绩:

");

scanf("%f",&en);

dd.stu[i].en=en;

printf("\n计算机成绩:

");

scanf("%f",&com);

dd.stu[i].com=com;

printf("\n\n编辑学生记录成功!

");

}

}

save_data();

}

 

//按班级输出成绩单

voidquery_data_cla()

{

inti;

charcla[10];

printf("\n请输入要查询成绩班级:

");

scanf("%s",cla);

for(i=0;i

{

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

{

printf("班级\t学期\t姓名\t学号\t语文\t数学\t英语\t计算机");

printf("\n-------------------------------------------------------------------\n");

printf("%s\t%s\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n",dd.stu[i].cla,dd.stu[i].term,dd.stu[i].name,dd.stu[i].no,dd.stu[i].ch,dd.stu[i].ma,dd.stu[i].en,dd.stu[i].com);

}

}

}

 

//查询不及格科目学生名单

voidquery_data_pass()

{

inti,s=0;

charcla[10],term[10];

printf("请输入所要查询班级:

");

scanf("%s",cla);

printf("请输入所要查询学期:

");

scanf("%s",term);

for(i=0;i

{

if(strcmp(dd.stu[i].term,term)==0&&strcmp(dd.stu[i].cla,cla)==0)

{

printf("\n姓名:

%s,学号:

%s不及格科目有:

",dd.stu[i].name,dd.stu[i].no);

if(dd.stu[i].ch<60){printf("语文\t");s++;}

s=0;

if(dd.stu[i].ma<60){printf("数学\t");s++;}

s=0;

if(dd.stu[i].en<60){printf("英语\t");s++;}

s=0;

if(dd.stu[i].com<60){printf("计算机\t");s++;}

s=0;

if(s==0)printf("0科");

}

}

}

//成绩统计(按班级和学期)求总分和平均分

voidcount_data()

{

charcla[10],term[10];

inti,k=0;floatsum[4]={0.0},average[4];

printf("请输入所要统计记录班级:

");

scanf("%s",cla);

printf("请输入所要统计记录学期:

");

scanf("%s",term);

for(i=0;i

{

if(strcmp(dd.stu[i].cla,cla)==0&&strcmp(dd.stu[i].term,term)==0)

{

k++;

sum[0]+=dd.stu[i].ch;

sum[1]+=dd.stu[i].ma;

sum[2]+=dd.stu[i].en;

sum[3]+=dd.stu[i].com;

}

}

average[0]=sum[0]/k;

average[1]=sum[1]/k;

average[2]=sum[2]/k;

average[3]=sum[3]/k;

printf("\n所查询%s班级%s学期各科总分为:

\n",cla,term);

printf("语文\t数学\t英语\t计算机");

printf("\n-------------------------------------------------------------------\n");

printf("%.1f\t%.1f\t%.1f\t%.1f\t",sum[0],sum[1],sum[2],sum[3]);

printf("\n所查询%s班级%s学期各科平均分为:

\n",cla,term);

printf("语文\t数学\t英语\t计算机");

printf("\n-------------------------------------------------------------------\n");

printf("%.1f\t%.1f\t%.1f\t%.1f\t",average[0],average[1],average[2],average[3]);

}

 

//主函数

voidmain()

{

intfun;

read_data();

menu();

while

(1)

{

printf("请输入功能号[0-8]:

",&fun);

scanf("%d",&fun);

switch(fun)

{

case0:

//退出

break;

case1:

//查看所有学生信息

view_data();

break;

case2:

//按班级和学期输入学生记录

add_data();

break;

case3:

//按班级和学期修改学生记录

edit_data();

break;

case4:

//查询(按班级)

query_data_cla();

break;

case5:

//查询不及格学生及科目(按照班级和学期)

query_data_pass();

break;

case6:

//成绩统计(按班级和学期求平均分和总分)

count_data();

break;

}

if(fun==0)break;

to_menu();

}

}

相关程序分析

1、查看所有学生信息

先定义相关变量,然后设计输入输出程序。

输出所要查询东西,并设计好输出形式,这是很重要一点。

这样就可以查看到所有已存学生信息了

2、按班级查询

同样先定义变量,然后按照要求设计所要输出文字。

主要应用for循环对已存所有学生信息进行输出。

3、查询不及格记录

同样还是先定义变量,设计出要按照班级和学期查询不几个同学记录。

对于每一科又要进行验证所以涉及到了S++,最后还要有S=0设计,是因为每一个同学都有四科成绩,S++后就改变了运来值,因此没计算完一个同学后都要归零。

6、结论

通过这次小组亲自编写较大程序,使我更好掌握了一些函数应用是自己更彻底懂了这些函数作用,这对以后再编一些其他程序奠定了良好基础。

同时也是自己对这些程序有了一定记忆和一定编程能力。

好处有很多,中途会遇到一些困难,例如:

不知用那一个函数、怎样将信息保存到结构体变量中等等。

有了问题就要解决所以就去问同学或是老师,是自己能够弄懂并能够正确编写出程序。

同时这也证明了团队力量是无穷。

还可以学到一些课本学不到东西。

总之这次编程使我收获很大。

7、参考资料

《C程序设计》谭浩强第三版2005年7月清华大学出版社

《TURBOC实用大全》徐金梧2001年8月机械工业出版社

《C语言程序设计》王声决2003年8月中国铁道出版社

《C程序设计题解及上机指导》谭浩强第三版2005年7月清华大学出版社

《C语言程序设计应用教程》刘玲2006年1月西南师范大学出版社

8、后记

在及同组同学反复研究改编和老师耐心提示下,这段时间功夫终于没有白费。

不仅巩固了这半年来所学关于c语言知识点,把他们系统化,融会贯通,而且让我再次学会了很多东西,知识面也得到拓展。

理论结合实际,把所学综合应用到实际问题中,极大提高了我们对这门课兴趣。

在指导老师康亚男耐心教导和细心提示下,我们程序有了更进一步完善,让我们在枯燥学习生活同时有感受到了老师责任心。

这更让我们有信心把这份工作做好。

 

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2