学生成绩管理C语言.docx
《学生成绩管理C语言.docx》由会员分享,可在线阅读,更多相关《学生成绩管理C语言.docx(37页珍藏版)》请在冰豆网上搜索。
![学生成绩管理C语言.docx](https://file1.bdocx.com/fileroot1/2022-11/20/6c7e8625-6f1a-47c4-a07d-35924897213b/6c7e8625-6f1a-47c4-a07d-35924897213b1.gif)
学生成绩管理C语言
学生成绩管理系统需求分析
现在的学校需要一个很好的学生成绩管理系统,以方便对学生的成绩进行有效的管理,系统有老师对学生信息的查询功能、添加功能、修改功能、删除功能,也可以让学生对自己成绩查询的功能。
1、功能要求
(1)学生查询功能:
为了方便学生查找成绩等信息,将所有信息按照需要进行分类。
这样学生就能很方便的找到自己所需要的信息。
(2)老师查询功能:
老师可以通过条件选择查询所有信息,并进行排序。
(3)添加功能:
老师可以通过填写输入学生成绩等相关信息。
系统可以自动显示信息。
(4)修改功能:
老师可以对数据库中的信息进行修改。
系统能够通过老师给出的条件查找出所要修改的信息,对修改后的信息进行保存,并自动查找是否是重复信息。
(5)删除功能:
老师可以对数据进行删除操作。
系统能够通过老师给出的条件查找出要删除的信息,并提示是否确定删除,如果确定删除,则把相关信息从数据库中删除。
(6)自动排序功能:
老师将学生的信息输入到计算机中,计算机对其进行由高分到低分的一个排序,以便进行分级别统计学生人数。
2、系统存储方案考虑到用户实际情况和存储的数据类型,因此采用数据库sqlserver来存储整个系统应保存的数据。
3、性能要求
(1)保证查询时的查全率和查准率。
(2)保证添加数据时的完整性。
4、数据流图分析数据流图分析
1)顶层数据流图老师成绩管理查询更新删除查询请求成绩管理系统当前系统日期系统时钟学生
2)分层数据流图处理请求登录用户请求有效性检查有效的请求查询请求处理查询学生成绩学生信息查询数据流图
3)处理请登录用户请求有效性检查有效的请求求添加请求处理添加学生成绩学生信息添加数据流图
4)处理请求登录用户请求检查有效性有效的请求更新请求学生成绩检查有效性处理更新学生信息更新数据流图
5)用户请求检查有效性有效的请求处理请求登录删除请求删除处理学生成绩学生信息删除数据流图
实现代码如下:
(程序的用户名:
徐凯,密码:
123456)
#include
#include
#include
#include
voiddenglu();//登陆函数
voidoutput();//查看显示
voidinput();//添加成员
voidxiugai();//修改成绩
voiddel();//删除成绩
voidhuifu();//还原成绩
voidempty();//清空成绩
voidsearch();//查询成绩
voidpaixu();//按要求排序
voidtongji();//按要求统计
voidff();
intN=1000;//定义学生人数的最大值
staticintM=3;//计数器,统计学生人数
structstudent
{
intno;//学号
charname[50];//姓名
charbanji[50];//班级
intyuwen;//语文成绩
intshuxue;//数学成绩
intyingyu;//英语成绩
intzongfen;//总分
intshan;//删除辅助
}s1,s[1000]={{2010117,"徐凯","计科1012班",79,99,55,163,0},{2010118,"杨康","计科1012班",88,90,92,270,0},2010119,"柯磊","计科1012班",80,83,77,240,0};
voidmain()
{
denglu();
ff();
}
voiddenglu()
{
charname0[20];//用户名
charmima[6];//密码
inti=0;
charch;
intcount;
floattime,x;
printf("\n\n\n\n");
printf("********************************\n");
printf("******************************\n");
printf("***********************************************\n");
printf("***//////////////O(∩_∩)O\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\***\n");
printf("*******************************************\n");
printf("**********************\n");
printf("******\n");
printf("****欢迎进入学生管理系统****\n");
printf("**********\n");
printf("******************************\n");
printf("********************************\n");
printf("\n");
printf("请输入用户名:
");
gets(name0);
fflush(stdin);
printf("请输入用户密码:
");
while((ch=getch())!
=13)
{
if(ch==8)
{
printf("\b");
printf("");
printf("\b");
ch='\0';
mima[i]='\0';
i--;
}
else
{
printf("*");//输入一个字符,输出'*',隐藏密码
mima[i]=ch;//把输入元素存储在字符数组中
i++;
}
}
mima[i]='\0';//把字符数组的尾部元素赋值:
'\0'
printf("\n\n");
printf("登录中");
for(i=0;i<100000000;i++)
{
if(i%1500000==0)
printf(">");//等待登陆
}
if((strcmp(name0,"徐凯")==0)&&(strcmp(mima,"123456")==0))//比较用户名和密码
{
printf("\n\n");
for(time=0,x=1,count=1;count<=1;count++,x*=2.0)
{
time+=1.0/x;
printf("恭喜您成功登录!
!
!
本次登陆用时:
%fs\n",time);
}
printf("按ENTER下一步\n");
getch();
system("cls");
ff();
}
else
{
printf("\n\n");
printf("用户名和或密码无效,请重新输入!
!
!
\n");
printf("按ENTER下一步\n");
getch();
system("cls");
denglu();//用户名和或密码无效时重新输入
}
}
voidoutput()//查询所有记录
{
inti;
system("cls");
printf("\n");
printf("*******学************生***********管**********理**********系***********统******\n");
printf("\n");
printf("***************显示学生成绩*****************\n");
printf("*******************************************************************************\n");
printf("学号姓名班级语文数学英语总分\n");
printf("*******************************************************************************\n");
for(i=0;i{
s[i].zongfen=((s[i].yuwen)+(s[i].shuxue)+(s[i].yingyu));//计算总分
if(s[i].shan==0)//判断是否为已经删除的文件
{
printf("%7d%6s%10s%3d%3d%3d%3d\n",s[i].no,s[i].name,s[i].banji,s[i].yuwen,s[i].shuxue,s[i].yingyu,s[i].zongfen);
}//输出
}
printf("****************************************\n");
printf("按ENTER下一步:
\n");
getch();
}
voidinput()//添加成员
{
staticinti=3;
charchoice,choice0;
system("cls");
printf("\n\n");
printf("*******学************生***********管**********理**********系***********统******\n");
printf("\n");
printf("***************添加学生成绩*****************\n");
printf("*******************************************************************************\n");
do
{
printf("\n");
printf("是否返回主菜单?
(按y返回,ERTER继续输入):
");
scanf("%c",&choice0);
fflush(stdin);
if(choice0=='y'||choice0=='Y')
{
ff();
}
else
{
printf("\n");
printf("输入学生信息(按enter下一步):
\n");
printf("*******************************************************************************\n");
printf("请输入学生学号:
");
scanf("%d",&s[i].no);
fflush(stdin);
printf("请输入学生姓名:
");
scanf("%s",s[i].name);
fflush(stdin);
printf("请输入学生班级:
");
scanf("%s",s[i].banji);
fflush(stdin);
printf("请输入学生语文:
");
scanf("%d",&s[i].yuwen);
fflush(stdin);
printf("请输入学生数学:
");
scanf("%d",&s[i].shuxue);
fflush(stdin);
printf("请输入学生英语:
");
scanf("%d",&s[i].yingyu);
fflush(stdin);
s[i].shan=0;
i++;
M++;//记录输入学生的人数
printf("\n");
printf("是否继续输入?
(按y返回,ERTER继续输入):
");
scanf("%c",&choice);//输入判断
fflush(stdin);
}
}while(choice=='\n');//判断循环条件
}
voidxiugai()//修改成绩
{
inti;
charchoice;
intchoice0;
charchoice1;
intnum;
charnum0[50];
system("cls");
printf("\n\n");
printf("*******学************生***********管**********理**********系***********统******\n");
printf("\n");
printf("***************修改学生成绩*****************\n");
printf("*******************************************************************************\n");
output();
printf("*******************************************************************************\n");
printf("\n");
printf("是否返回主菜单?
(按y返回,ERTER继续修改):
");
scanf("%c",&choice1);
fflush(stdin);
if(choice1=='y'||choice1=='Y')
{
ff();
}
else
{
printf("您要根据什么来修改?
\n");
printf("1、根据学号\n");
printf("2、根据姓名\n");
printf("\n请选择:
");
scanf("%d",&choice);
fflush(stdin);
switch(choice)
{
case1:
printf("请输入要修改的学生学号:
");
scanf("%d",&num);
fflush(stdin);
for(i=0;i{
if(s[i].no==num)//判断学号,定位要修改的学生学号
{
printf("学号:
%d\n姓名:
%s\n班级:
%s\n语文成绩:
%d\n数学成绩:
%d\n英语成绩:
%d\n总分:
%d\n",s[i].no,s[i].name,s[i].banji,s[i].yingyu,s[i].shuxue,s[i].yingyu,s[i].zongfen);//显示修改前的学生成绩
break;
}
}
if(i==1000)
{
printf("没有找到该学号的学生,请重新输入!
!
!
\n");
printf("按ERTER进行下一步:
");
getch();
xiugai();
}
break;
case2:
printf("请输入要修改的学生姓名:
");
gets(num0);
fflush(stdin);
for(i=0;i{
if(!
(strcmp(s[i].name,num0)))//判断姓名,定位要修改的学生姓名
{
printf("学号:
%d\n姓名:
%s\n班级:
%s\n语文成绩:
%d\n数学成绩:
%d\n英语成绩:
%d\n总分:
%d\n",s[i].no,s[i].name,s[i].banji,s[i].yingyu,s[i].shuxue,s[i].yingyu,s[i].zongfen);//显示修改前的学生成绩
break;
}
}
if(i==1000)
{
printf("没有找到该姓名的学生,请重新输入!
!
!
\n");//错误
printf("按ERTER进行下一步:
");
getch();
xiugai();
}
break;
default:
printf("选择有误!
!
!
(ENTER下一步)");
getch();
xiugai();
}
printf("****************************************\n");
printf("1、学号2、姓名3、班级4、语文5、数学6、英语\n");
printf("\n请选择要修改的项目:
");
scanf("%d",&choice0);
fflush(stdin);
switch(choice0)
{
case1:
{
printf("请输入你修改后的学号:
");
scanf("%d",&num);
s[i].no=num;//修改后的学号赋给原来的学号,覆盖
break;}
case2:
{
printf("请输入你修改后的姓名:
");
gets(num0);
strcpy(s[i].name,num0);//字符串复制,修改后的姓名赋给原来的姓名,覆盖
break;}
case3:
{
printf("请输入你修改后的班级:
");
gets(num0);
strcpy(s[i].banji,num0);//字符串复制,修改后的班级赋给原来的班级,覆盖
break;}
case4:
{
printf("请输入你修改后的语文成绩:
");
scanf("%d",&num);//修改后的成绩赋给原来的成绩,覆盖
s[i].yuwen=num;
break;}
case5:
{
printf("请输入你修改后的数学成绩:
");
scanf("%d",&num);
s[i].shuxue=num;//修改后的成绩赋给原来的成绩,覆盖
break;}
case6:
{
printf("请输入你修改后的英语成绩:
");
scanf("%d",&num);
s[i].yingyu=num;//修改后的成绩赋给原来的成绩,覆盖
break;}
default:
{printf("选择有误!
!
!
(ENTER下一步)");
getch();
xiugai();}
}
printf("goodjob!
!
!
修改成功\n");
}
printf("按ERTER进行下一步:
");
getch();
printf("修改后的成绩:
\n");
output();//调用显示函数,输出修改后的成绩
printf("是否继续输入?
(按y返回,ERTER继续修改):
");
scanf("%c",&choice);//输入判断
fflush(stdin);
if(choice=='\n')
{
xiugai();
}
else
{
ff();
}
}
voiddel()
{
inti;
charchoice;
charchoice0,choice1;
intnum;
charnum0[50];
system("cls");
printf("\n\n");
printf("*******学************生***********管**********理**********系***********统******\n");
printf("\n");
printf("***************删除学生成绩*****************\n");
printf("*******************************************************************************\n");
output();
printf("*******************************************************************************\n");
printf("\n");
printf("是否返回主菜单?
(按y返回,ERTER继续删除):
");
scanf("%c",&choice1);
fflush(stdin);
if(choice1=='y'||choice1=='Y')
{
ff();
}
else
{
printf("您要根据什么来删除?
\n");
printf("1、根据学号\n");
printf("2、根据姓名\n");
printf("\n请选择:
");
scanf("%d",&choice);
fflush(stdin);
switch(choice)
{
case1:
printf("请输入要删除的学生学号:
");
scanf("%d",&num);
fflush(stdin);
printf("确认删除?
(y取消,ENTER继续):
");
scanf("%c",&choice0);
fflush(stdin);
if(choice0=='\n')
{
for(i=0;i{
if(s[i].no==num)
{
s[i].shan=1;//s[i].shan=1时,显示函数不会输出
break;
}