学生成绩管理系统程序设计c语言Word下载.docx
- 文档编号:18060614
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:16
- 大小:83.34KB
学生成绩管理系统程序设计c语言Word下载.docx
《学生成绩管理系统程序设计c语言Word下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统程序设计c语言Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
首先,写出所有能够用到的库函数,并设计出能够显示主菜单的程序。
其次按照主菜单设计出所有的有关程序。
再次,由于这个程序会用到结构体所以会涉及到“将数据从结构体数组保存到文件中”、“将数据从文件读到结构体数组中”这两个程序。
为了使程序更完美还涉及了主函数的显示。
最后,就可以按照主菜单进行一系列的操作。
其实,这些程序的设计都是根据以前学过的只是进行的简单的程序的叠加。
没有什么可以害怕或是担心的。
3、系统完成功能及框图
4、界面设计
主菜单
运行1后界面
运行4后界面
运行5后界面
5、核心算法及说明
#include<
stdio.h>
io.h>
stdlib.h>
string.h>
#defineMAX300
structstudent
{
charcla[10];
//班级
charterm[10];
//学期
charname[10];
//姓名
charno[10];
//学号
floatch;
//语文
floatma;
//数学
floaten;
//英语
floatcom;
//计算机
};
structdata
{
intcount;
//当前学生数组中学生的个数
structstudentstu[MAX];
//学生数组
}dd;
//显示主菜单
voidmenu()
system("
cls"
);
printf("
\n"
\t\t\t************************************\n"
\t\t\t**\n"
\t\t\t*学生成绩管理系统*\n"
\t\t\t*[0]退出*\n"
\t\t\t*[1]查看所有学生信息*\n"
\t\t\t*[2]输入学生记录*\n"
\t\t\t*[3]修改学生记录*\n"
\t\t\t*[4]查询(班级)*\n"
\t\t\t*[5]查询(不及格记录)*\n"
\t\t\t*[6]成绩统计*\n"
}
//等待用户按回车后回到主菜单
voidto_menu()
charc1,c2;
\n\n\n按回车键返回主菜单..."
scanf("
%c%c"
&
c1,&
c2);
menu();
//查看所有学生信息
voidview_data()
inti;
班级\t学期\t姓名\t学号\t语文\t数学\t英语\t计算机"
\n-------------------------------------------------------------------\n"
for(i=0;
i<
dd.count;
i++)
%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);
k;
dd.stu[i],sizeof(structstudent),1,fp);
fclose(fp);
//输入学生记录(按班级和学期)
voidadd_data()
structstudentst;
intb;
inti,k,j;
charterm[10],cla[10];
请输入所要录入的学生的班级:
"
%s"
cla);
请输入所要录入的学期:
term);
while
(1)
{
j=0;
\n请输入学生信息:
\n姓名\t学号\t语文\t数学\t英语\t计算机"
\n---------------------------------------------------------------\n"
%s%s%f%f%f%f"
st.name,st.no,&
st.ch,&
st.ma,&
st.en,&
{
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信息已存在,请重新输入!
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++;
}
\n\n继续添加学生信息[1-yes0-no]:
%d"
b);
if(b==0)break;
save_data();
//将数据从文件读到结构体数组中
voidread_data()
k=0;
if(access("
0)==-1)//如果文件不存在
{
fp=fopen("
fwrite(&
fclose(fp);
r"
fread(&
dd.count=k;
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=;
//修改学生成绩记录(按班级和学期)
voidedit_data()
charcla[10],term[10];
floatch,ma,en,com;
请输入所要修改记录的班级:
请输入所要修改记录的学期:
if(strcmp(dd.stu[i].cla,cla)==0&
\n姓名:
%s,学号:
dd.stu[i].name,dd.stu[i].no);
\n请修改学生数据:
\n语文成绩:
%f"
ch);
dd.stu[i].ch=ch;
\n数学成绩:
ma);
dd.stu[i].ma=ma;
\n英语成绩:
en);
dd.stu[i].en=en;
\n计算机成绩:
com);
dd.stu[i].com=com;
\n\n编辑学生记录成功!
//按班级输出成绩单
voidquery_data_cla()
\n请输入要查询成绩的班级:
if(strcmp(dd.stu[i].cla,cla)==0)
//查询不及格科目的学生名单
voidquery_data_pass()
inti,s=0;
请输入所要查询的班级:
请输入所要查询的学期:
if(strcmp(dd.stu[i].term,term)==0&
strcmp(dd.stu[i].cla,cla)==0)
%s,学号:
%s的不及格科目有:
if(dd.stu[i].ch<
60){printf("
语文\t"
s++;
s=0;
if(dd.stu[i].ma<
数学\t"
if(dd.stu[i].en<
英语\t"
s=0;
if(dd.stu[i].com<
计算机\t"
if(s==0)printf("
0科"
//成绩统计(按班级和学期)求总分和平均分
voidcount_data()
inti,k=0;
floatsum[4]={0.0},average[4];
请输入所要统计记录的班级:
请输入所要统计记录的学期:
if(strcmp(dd.stu[i].cla,cla)==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;
\n所查询%s班级%s学期的各科总分为:
cla,term);
语文\t数学\t英语\t计算机"
%.1f\t%.1f\t%.1f\t%.1f\t"
sum[0],sum[1],sum[2],sum[3]);
\n所查询%s班级%s学期的各科平均分为:
average[0],average[1],average[2],average[3]);
//主函数
voidmain()
intfun;
read_data();
请输入功能号[0-8]:
fun);
scanf("
switch(fun)
case0:
//退出
break;
case1:
//查看所有学生信息
view_data();
case2:
//按班级和学期输入学生记录
add_data();
case3:
//按班级和学期修改学生记录
edit_data();
case4:
//查询(按班级)
query_data_cla();
case5:
//查询不及格学生及科目(按照班级和学期)
query_data_pass();
break;
case6:
//成绩统计(按班级和学期求平均分和总分)
count_data();
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语言的知识点,把他们系统化,融会贯通,而且让我再次学会了很多东西,知识面也得到拓展。
理论结合实际,把所学综合应用到实际问题中,极大提高了我们对这门课的兴趣。
在指导老师康亚男的耐心教导和细心提示下,我们的程序有了更进一步的完善,让我们在枯燥的学习生活的同时有感受到了老师的责任心。
这更让我们有信心把这份工作做好。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 程序设计 语言