C语言课程设计学生成绩管理系统.docx
《C语言课程设计学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理系统.docx(15页珍藏版)》请在冰豆网上搜索。
C语言课程设计学生成绩管理系统
*题目七:
学生成绩管理系统设计
学生成绩信息包括:
学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:
(1)能按学期、按班级完成对学生成绩的录入、修改
(2)能按班级统计学生的成绩,求学生的总分及平均分
(3)能查询学生成绩,不及格科目及学生
(4)能按班级输出学生的成绩单
要求:
使用二进制文件方式存储数据,系统以菜单方式工作
源代码:
#include
#include
#include
#include
structStudent
{
intcls;
charnam[10];
charnum[10];
intchinese;
intenglish;
intcomputer;
intmath;
}stud1[100],stud2[100];
intmenu()
{
chara;
while(a>'7'||a<'0')
{
system("cls");
printf("欢迎使用学生成绩管理系统\n");
printf("制作人:
章建\n");
printf("**********************学生成绩管理系统************************\n");
printf("1.输入学生成绩\n");
printf("2.输出学生成绩\n");
printf("3.查找并显示学生成绩\n");
printf("4.按姓名查找,修改学生资料\n");
printf("5.显示所有学生\n");
printf("6.查找并删除学生信息\n");
printf("7.从文件读取数据\n");
printf("0.储存学生资料并退出系统\n");
printf("**********************************************************************\n");
printf("请选择(0-7)\n");
a=getchar();
}
return(a-'0');
}
/***************************************************************************************/
intInput(Studentstud[],intn)//输入数据(第一学期)。
{
inti=0;
charsign,x[10];
for(;sign!
='n'&&sign!
='N';)
{
printf("姓名:
");
scanf("%s",stud[n+i].nam);
printf("班级:
");
scanf("%d",&stud[n+i].cls);
printf("学号:
");
scanf("%s",stud[n+i].num);
printf("语文:
");
scanf("%d",&stud[n+i].chinese);
printf("数学:
");
scanf("%d",&stud[n+i].math);
printf("英语:
");
scanf("%d",&stud[n+i].english);
printf("计算机:
");
scanf("%d",&stud[n+i].computer);
gets(x);
printf("还有要输入的信息吗?
(y/n)");
scanf("%c",&sign);
i++;
}
return(n+i);
}
/*************************************输出数据***********************************************/
voidDisplay(Studentstud[],intn)
{
inti;
printf("班级学号姓名语文数学英语计算机总分平均分\n");
for(i=1;i{
ints=stud[i-1].chinese+stud[i-1].math+stud[i-1].english+stud[i-1].computer;
printf("%7d,%7s,%7s,%7d,%7d,%7d,%7d,%7d,%7d\n",stud[i-1].cls,stud[i-1].num,stud[i-1].nam,stud[i-1].chinese,stud[i-1].math,stud[i-1].english,stud[i-1].computer,s,s/4);
if(i>1&&i%10==0)
{
system("pause");
}
}
system("pause");
}
/************************************查找学生显示其信息***************************************************/
voidQuery(Studentstud[],intn)
{
charnam[20];
printf("输入其姓名:
\n");
scanf("%s",nam);
inti=0;
while(strcmp(stud[i].nam,nam)!
=0&&ii++;
if(i==n)
{
printf("\t\t\t没有发现该学生的资料!
\n");
return;
}
printf("学号:
%s\n",stud[i].num);
printf("班级:
%d\n",stud[i].cls);
printf("语文:
%d\n",stud[i].chinese);
printf("英语:
%d\n",stud[i].english);
printf("数学:
%d\n",stud[i].math);
printf("计算机:
%d\n",stud[i].computer);
}
/*********************************删除学生信息************************************/
intDelete(Studentstud[],intn)
{
chars[20];
inti=0,j;
printf("请输入要删除的学生的姓名:
\n");
scanf("%s",s);
while(strcmp(stud[i].nam,s)!
=0&&iif(i==n)
{
printf("\t\t\t没有发现该学生资料!
\n");
return(n);
}
for(j=i;j{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].nam,stud[j+1].nam);
stud[j].cls=stud[j+1].cls;
stud[j].chinese=stud[j+1].chinese;
stud[j].math=stud[j+1].math;
stud[j].english=stud[j+1].english;
stud[j].computer=stud[j+1].computer;
}
printf("当前信息已删除成功!
");
return(n-1);
}
/*******************************修改信息******************************************/
intRevise(Studentstud[],intn)
{
inti=0;
charna[10];
scanf("%s",na);
while(strcmp(stud[i].nam,na)!
=0&&ii++;
if(i==n)
{
printf("\t\t\t没有发现该学生的资料!
\n");
}
printf("修改班级:
\n");
scanf("%d",&stud[i].cls);
printf("修改学号:
\n");
scanf("%s",stud[i].num);
printf("修改语文成绩:
\n");
scanf("%d",&stud[i].chinese);
printf("修改英语成绩:
\n");
scanf("%d",&stud[i].english);
printf("修改数学成绩:
\n");
scanf("%d",&stud[i].math);
printf("修改计算机成绩:
\n");
scanf("%d",&stud[i].computer);
printf("修改成功\n");
return(n);
}
/***************************************显示学生**************************************/
voidshow(Studentstud[],intn)
{
for(inti=0;i{
printf("%s\n",stud[i].nam);
}
system("pause");
}
/**************************************从文件读取数据*************************************************/
intAddfromText(Studentstud[],intn)
{
inti=0,number,x=0,y=0;
FILE*fp;
charfilename[20];
printf("输入文件名:
");
scanf("%s",filename);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("无法打开文件");
system("pause");
return(n);
}
fscanf(fp,"%d",&number);
for(;i{
fscanf(fp,"%d%s%s%d%d%d%d%d%d\n",&stud[n+i].cls,&stud[n+i].num,&stud[n+i].nam,&stud[n+i].chinese,
&stud[n+i].math,&stud[n+i].english,&stud[n+i].computer,&x,&y);
i++;
}
n+=number;
fclose(fp);
printf("读入成功!
");
system("pause");
return(n);
}
/**************************************将所有记录写进文件*************************************/
voidWritetoText(Studentstud[],intn)
{
inti=0;
FILE*fp;
charfilename[20];
printf("将资料输入文件\n");
printf("输入文件名\n");
scanf("%s",filename);
if((fp=fopen(filename,"w+"))==NULL)
{
printf("无法打开文件\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n);
for(;i{
fprintf(fp,"%-8d%-8s%-8s%-5d%-5d%-5d%-5d%-5d%-5d\n",stud[i].cls,stud[i].num,stud[i].nam,
stud[i].chinese,stud[i].math,stud[i].english,stud[i].computer,
stud[i].chinese+stud[i].math+stud[i].english+stud[i].computer,
(stud[i].chinese+stud[i].math+stud[i].english+stud[i].computer)/4);
i++;
}
fclose(fp);
}
/**************************************主函数调用*********************************************/
voidmain()
{
intn1=0,n2=0;
for(;;)
{
switch(menu())
{
case1:
intt;
printf("输入学生资料\n");
printf("输入学期");
scanf("%d",&t);
if(t==1)
{
n1=Input(stud1,n1);
}
elseif(t==2)
{
n2=Input(stud2,n2);
}
break;
case2:
printf("输出所有学生资料\n");
if(n1!
=0)
{
printf("第一学期\n");
Display(stud1,n1);
}
if(n2!
=0)
{
printf("第二学期\n");
Display(stud2,n2);
}
break;
case3:
intr;
printf("查找学生\n");
printf("请输入学期\n");
scanf("%d",&r);
if(r==1)
{
Query(stud1,n1);
}
elseif(r==2)
{
Query(stud2,n2);
}
system("pause");
break;
case4:
intp;
printf("修改学生资料\n");
printf("请输入学期\n");
scanf("%d",&p);
if(p==1)
{
printf("输入你要修改的学生的姓名:
");
n1=Revise(stud1,n1);
}
elseif(p==2)
{
printf("输入你要修改的学生的姓名:
");
n2=Revise(stud2,n2);
}
system("pause");
break;
case5:
printf("显示所有学生:
\n");
if(n1!
=0)
{
printf("第一学期\n");
show(stud1,n1);
}
if(n2!
=0)
{
printf("第二学期\n");
show(stud2,n2);
}
system("pause");
break;
case6:
printf("查找并删除学生信息\n");
into;
printf("请输入学期:
");
scanf("%d",&o);
if(o==1)
{
printf("第一学期\n");
n1=Delete(stud1,n1);
}
if(o==2)
{
printf("第二学期\n");
n2=Delete(stud2,n2);
}
system("pause");
break;
case7:
printf("从文件中读入数据\n");
printf("读取第一学期的文件\n");
n1=AddfromText(stud1,n1);
printf("读取第二学期的文件\n");
n2=AddfromText(stud2,n2);
break;
case0:
printf("将所有资料写入文件\n");
if(n1!
=0)
{
printf("存储第一学期学生资料\n");
WritetoText(stud1,n1);
}
if(n2!
=0)
{
printf("存储第二学期学生资料\n");
WritetoText(stud2,n2);
}
printf("输入成功\n");
intb;
printf("请确定是否退出系统\n");
printf("0.退出系统\n");
printf("1.返回\n");
scanf("%d",&b);
if(b==0)
{
printf("谢谢使用\n");
system("pause");
exit(0);
}
system("pause");
break;
}
}
}