c语言程序设计学生成绩管理系统Word文档下载推荐.docx
《c语言程序设计学生成绩管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言程序设计学生成绩管理系统Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
通过学生的姓名来查看学生的语文数学英语计算
机的有关成绩,同时也可以分别通过paverage()maverage()eaverage()
comaverage()来输出物理数学英语计算机等成绩的平均分最高分最低分。
5退出系统:
可以用一个函数来实现,首先将信息保存在文件中,释放动态创建
的存空间,再退出次程序。
流程图如下
六.调试情况及运行结果
1、对自己设计进行评价,指出合理和不足之处,提出改进的案。
此次实践课编写的是一个应用程序,相对于以前我们见到的程序,它要大得多,于是就按课本上的例子编了超市管理系统,先把界面弄好然后
再添加各模块,而且各模块也出现了不少问题,在同学们和老师的帮助下,我很有耐心的一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。
可结果还不是太理想。
由于时间很短,在选题报告中设想到的好多功能都没有实现。
已有的
那些功能虽已能基本上满足管理者和消费者的需要,但如果还有更多的功能程序就会更加完美。
如:
进入系统时没有设制密码,保护性不够强;
在输入商品号时没有出错提示,如果商品号输入负值
2、在设计过程中的感受。
本次C语言的实习课让我对C语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几学到的,学校组织的这次实习让我们这些实践知识匮乏的大学生增添了多社会经验,为我们将来走上工作岗位其了不小的铺垫作用。
本次实习中遇到了很多以前没有遇到过的问题,也曾想过要放弃,但看到那些同学都在那认真的写程序,给了我继续的信心。
在同学的帮助下,我顺利的结束了本次实习,让我知道原来凭借自己努力取得的成功会让自己这么欣慰,也让我知道了友谊和团结的重要性。
七.参考文献
《C语言程序设计》
八。
附录:
#include<
stdio.h>
stddef.h>
string.h>
stdlib.h>
conio.h>
#defineMAX10
intsum=10;
typedefstructstudent
{
charname[MAX];
intnum;
charsex[MAX];
floatphysic;
floatmathematic;
floatenglish;
floatcomputer;
structstudent*next;
}stu;
stu*head;
曙燕锰科学出版社
/*定义结构体*/
/*姓名*/
/*学号*/
/*性别*/
/*语文*/
/*数学*/
/*英语*/
/*计算机*/
/*结构体指针*/
/*读取信息*/
intread_message()
{FILE*fp;
stu*p;
inti=0;
if((fp=fopen("
student_manage.txt"
"
rb"
))==NULL)
{printf("
\n\n****暂时还没有任信息,输入密码进入主菜单选择基本信息录入!
****\n"
);
return0;
}
while(feof(fp)!
=1)
{fread(head,sizeof(stu),1,fp);
if(p->
num==0)break;
elsei++;
fclose(fp);
return(i);
/*显示或打印函数*/voidprint()
printf("
\t\t\t
ScoreManageSystem\n"
/*成绩
管理系统*/
成绩管理系统\n"
<
1>
EnterRecord:
输入数据\n"
/*输入
数据*/
2>
Display:
显示或打印\n"
/*
显示*/
3>
find:
查找数据\n"
/*访问
4>
Renew_message:
更新模块\n"
更新模块*/
5>
Save:
保存数据\n"
6>
sort_physic:
成绩排名\n"
物理成绩排名*/
7>
Count:
数据统计
\n"
/*数据统计*/
8>
PhysicAverage:
物理平均成绩
/*物理平均成绩*/
9>
MathAverage
:
数学平均成绩
/*数学平均成绩*/
10>
EnglishAverage:
英语平均成绩
/*英语平均成绩*/
11>
ComputerAverage:
计算机平均成绩
/*计算机平均成绩*/
12>
Quit:
退出
\t\n"
/*退出*/
/*****输入相关数据函数*****/
voidcin(stu*p1)
\nEntername:
scanf("
%s"
&
p1->
name);
printf("
Enternum:
%d"
num);
Entersex:
sex);
Enterscore\n"
Enterphysic:
%f"
physic);
Entermathematic:
mathematic);
Enterenglish:
english);
Entercomputer:
computer);
/*****其他数据是否输入函数*****/
stu*cindata()
{stu*p1,*p2;
inti=1;
charch;
p1=(stu*)malloc(sizeof(stu));
head=p1;
while(i)
{cin(p1);
Doyouwanttocontinue?
Yesorno:
fflush(stdin);
ch=getchar();
if(ch=='
n'
||ch=='
N'
){i=0;
next=NULL;
}else
{p2=p1;
p1=(stu*)malloc(sizeof(stu));
p2->
next=p1;
return(p1->
next);
/*查看数据函数*/
stu*lookdata(stu*p1)
while(p1!
=NULL)
Name:
%s\t"
p1->
Num:
%d\t"
Sex:
Physic:
%f\t"
Math:
English:
Computer:
p1=p1->
next;
returnp1;
/*通过比较学号来插入数据的函数*/voidinsert()
{stu*p1,*p3,*p2;
p1=head;
p3=(stu*)malloc(sizeof(stu));
p3->
if(head==NULL)
{head=p3;
return;
cin(p3);
=NULL&
&
(p1->
num<
num)){p2=p1;
if(p2==head)
{p3->
next=head;
head=p3;
next=p3;
/*通过姓名来查找的函数*/
voidfind(stu*p2)
{charname[20];
intb=0;
Enterthenameofthesutdentyouwanttofind:
"
name);
while(p2!
if(strcmp(name,p2->
name)==0)
Thedatayouwanthasbefind"
p2->
Physic%f\t"
Math%f\t"
English%f\t"
Computer%f\t"
b=1;
elseif(b==0)
sorrynotfinddata!
p2=p2->
if(b==1)
print();
Findone\n"
else
Notfind\n"
/*求各学生物理平均成绩*/
voidpaverage()
{stu*p1;
inti;
floatmax=0.0,min=200.0;
floatsum=0.0,aver=0;
if(p1==NULL)
notdata!
{for(i=0;
p1!
=NULL;
next)sum+=p1->
physic;
aver=sum/i;
for(i=0;
i++,p1=p1->
next)
{if(max<
physic)
max=p1->
if(min>
physic)min=p1->
%f"
aver);
PhysicMax:
max);
PhysicMin:
/*求各学生数学平均分最高和最低分成绩的函数*/
voidmaverage()
for(i=0;
mathematic;
aver=sum/i;
{if(max<
mathematic)max=p1->
mathematic)
min=p1->
MathAverage:
MathMax:
MathMin:
min);
/*求各学生英语平均分最高和最低分成绩的函数*/
voideaverage()
english;
english)max=p1->
next)if(min>
english)min=p1->
EnglishMax:
EnglishMin:
/*求各学生计算机平均成绩最高和最低分*/voidcomaverage()
computer;
computer)max=p1->
for(i=0;
computer)min=p1->
ComputerMax:
ComputerMin:
/*统计物理平均和总分*/
voidaver_sum_physic()
floatsum=0,aver;
if(p1=NULL)
}aver=sum/i;
PhysicSum:
sum);
/*统计数学平均和总分*/
voidaver_sum_mathematic()
MathematicAverage:
MathematicSum:
/*统计英语平均和总分*/
voidaver_sum_english()
EnglishSum:
/*统计计算机平均和总分*/voidaver_sum_computer()
if(p1=NULL)printf("
ComputerSum:
/*统计模块*/voidcount()
{intchoice;
do
*******统计学生平均分和总分********\n"
<
:
物理平均和总分\n"
数学平均和总分\n"
英语平均和总分\n"
计算机平均和总分\n"
0>
返回主菜单:
请选择(0~4):
choice);
switch(choice)
{case1:
aver_sum_physic();
break;
case2:
aver_sum_mathematic();
case3:
aver_sum_english();
case4:
aver_sum_computer();
case0:
}while(choice!
=0);
/*物理成绩排序*/
/*库存排行*/
sort_physic()
inti=1,j=1;
floatmin;
stu*newh,*newp,*tp1,*tp2,*p;
newp=newh=NULL;
tp1=tp2=NULL;
p=head;
do
i++;
p=p->
}while(p->
while(head!
tp1=tp2=p;
min=p->
while(p->
next!
next->
physic<
min)
{min=p->
tp1=p;
tp2=p->
if(newh==NULL)newp=newh=tp2;
else
newp->
next=tp2;
newp=tp2;
if(tp2==head)head=tp2->
tp1->
next=tp2->
tp2->
head=newh;
for(j=1;
j<
=i;
j++)
if(p!
\n物理成绩排行\n"
"
\n排名姓名性别学号物理成绩\n"
\n%18d%6s%8s%11d%10f\n"
j,p->
name,p->
sex,p->
num,p->
p=p->
elsebreak;
\n按任意键返回\n"
getch();
/*删除相关数据*/
shanchu()
{intnum;
stu*p,*p0;
cin(p);
请输入要删除的学号:
{head=p->
free(p);
return1;
p0=p->
while(p0!
{if(p0->
num==num)
p->
next=p;
free(p0);
}p=p0;
p0=p