学生成绩管理系统c语言作业,用c++编写学生成绩管理系统
c语言大作业 学生成绩管理系统
给个参考你:
/*编制一个学生成绩管理系统,每个学生信息包括:学号、姓名、C语言、高数和英语成绩。具体功能:
(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的成绩;
(3)按学号或姓名查询成绩;
(4)添加成绩记录;
(5)修改指定姓名或学号的学生的成绩并可存盘;
(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。以C语言成绩为例*/
#include stdio.h
#include stdlib.h
#include conio.h
#include string.h
#define N 20
typedef struct
{
char name[10];
int num;
float c;
float math;
float english;
float aver;
}stu;
//菜单
void menu() /*便于操作员使用*/
{ /*清屏*/
system("cls");
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(" 8.删除\n");
printf(" 0.退出\n");
printf("=======================\n");
printf("请选择相应的功能:");
}
//成绩录入
void input()
{
FILE *fp;
stu xs; /*定义一个结构体变量来装从文件中读出来的数据*/
if((fp=fopen("student.dat","ab"))==NULL) {printf("can't open file!\n");exit(0);}
printf("\n录入格式: 姓名 学号 C语言 高数 英语 当输入姓名为ps结束录入\n");
while(1) /*中间加油break,可使循环中断*/
{
scanf("%s",xs.name);
if(strcmp(xs.name,"ps")==0) break;/*判断姓名是否为ps,用字符串判断*/
scanf("%d%f%f%f",xs.num,xs.c,xs.math,xs.english);
xs.aver=0;/*给平均分变量赋初值*/
fwrite(xs,sizeof(stu),1,fp); //将成绩信息写入文件
}
fclose(fp);
}
//计算平均分
void sum()
{
int i=0,n;
stu xs[N];
FILE *fp;
if((fp=fopen("student.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
while(!feof(fp))/*文件读入内存,读取指针未到文件尾时返回值为0,读到尾时返回值为1,加!取反后,结束即为0*/
{
fread(xs[i],sizeof(stu),1,fp);/*读入结构体变量*/
if(feof(fp)) break;/*上面while循环那个会多读一次因为读到尾时那个0还没返回,这里判断如果以读到文件尾,则直接停止,避免重复输入*/
xs[i].aver=(xs[i].c+xs[i].math+xs[i].english)/3;
i++;
}
n=i;/*把i的末尾值给n,用于下面循环写入*/
i=0;
fclose(fp);
if((fp=fopen("student.dat","wb"))==NULL) {printf("can't open file!\n");exit(0);}
while(in)
{
fwrite(xs[i],sizeof(stu),1,fp);
i++;
}
fclose(fp);
}
void xingming()
{
FILE *fp;
stu xs;
char name[10];
printf("\n输入要查学生的姓名: ");scanf("%s",name);
if((fp=fopen("student.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}
while(!feof(fp))
{
fread(xs,sizeof(stu),1,fp);
if(strcmp(xs.name,name)==0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/
{
printf(" 学生的信息如下:\n");
printf("\n%10s %6s %6s %6s %6s %6s\n","姓名","学号","C语言","高数"," 英语","平均成绩");
printf("%10s %6d %6.2f %6.2f %6.2f %6.2f\n",xs.name,xs.num,xs.c,xs.math,xs.english,xs.aver);
break;
}
}
if(feof(fp)) printf("查找失败!!!"); /*学生不存在*/
fclose(fp);
}
void xuehao()
{
FILE *fp;
stu xs;
int num;
printf("\n输入要查学生的学号: ");scanf("%d",num);
if((fp=fopen("student.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}
while(!feof(fp))
{
fread(xs,sizeof(stu),1,fp);
if(xs.num==num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/
{
printf(" 学生的信息如下:\n");
printf("\n%10s %6s %6s %6s %6s %6s\n","姓名","学号","C语言","高数"," 英语","平均成绩");
printf("%10s %6d %6.2f %6.2f %6.2f %6.2f\n",xs.name,xs.num,xs.c,xs.math,xs.english,xs.aver);
break;
}
}
if(feof(fp)) printf("查找失败!!!");
fclose(fp);
}
//查询
void search()
{
char ch1;
system("cls");
printf("请输入按何种方式查询:\n");
printf("1-姓名,2-学号:");
ch1=getchar();/*用字符接收*/
switch(ch1)/*判断*/
{
case '1':xingming();break;
case '2':xuehao();break;
}
getch();/*让屏幕停留同时按任意键返回*/
}
//修改:输入学生的姓名,查找该学生,若找到则修改该生的成绩信息,并显示修改前后的结果;
void modi()
{
stu xs;
FILE *fp;
char name[10];
system("cls");
printf("\n输入要查学生的姓名: ");scanf("%s",name);
if((fp=fopen("student.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
while(!feof(fp))
{
fread(xs,sizeof(stu),1,fp);
if(strcmp(xs.name,name)==0)/*判断输入要修改的姓名是否存在*/
{
printf(" 修改前学生的信息如下:\n");
printf("\n%10s %6s %6s %6s %6s %6s\n","姓名","学号","C语言","高数"," 英语","平均成绩");
printf("%10s %6d %6.2f %6.2f %6.2f %6.2f\n",xs.name,xs.num,xs.c,xs.math,xs.english,xs.aver);
printf("\n请输入该生的C语言成绩:");scanf("%f",xs.c);
printf("\n高数成绩:");scanf("%f",xs.math);
printf("\n英语成绩:");scanf("%f",xs.english);
xs.aver=(xs.c+xs.math+xs.english)/3;
break;
}
}
if(!feof(fp))
{
printf(" \n 修改后的学生的信息如下:\n");
printf("\n%10s %6s %6s %6s %6s %6s\n","姓名","学号","C语言","高数"," 英语","平均成绩");
printf("%10s %6d %6.2f %6.2f %6.2f %6.2f\n",xs.name,xs.num,xs.c,xs.math,xs.english,xs.aver);
fseek(fp,sizeof(-stu),1);/*负号表示后退,1表示文件当前位置*/
fwrite(xs,sizeof(stu),1,fp);/*再写入,同时把要修改的那个覆盖掉*/
}
else
printf("\n学生不存在,修改失败!!");
fclose(fp);
getch();
}
//插入:输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。
void insert()
{
int i=0,j,k,lenth;
FILE *fp;
stu s,xs[N];
system("cls");
printf("\n请输入插入的学生的姓名:");scanf("%s",s.name);
printf("\n学生的学号:");scanf("%d",s.num);
printf("\n学生的C成绩:");scanf("%f",s.c);
printf("\n高数成绩:");scanf("%f",s.math);
printf("\n英语成绩:");scanf("%f",s.english);
s.aver=(s.c+s.math+s.english)/3;
printf("\n插入位置:");scanf("%d",k);
// i=0;
if((fp=fopen("student.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}
while(!feof(fp))
{
fread(xs[i],sizeof(stu),1,fp);/*把数据读入到结构体数组中*/
if(feof(fp)) break;
i++;
}
fclose(fp);
lenth=i;
if(klenth k=0)/*k的位置要位于数组范围之内*/
{//插入
for(j=lenth-1;j=k;j--)
xs[j+1]=xs[j];/*一开始j是最大的,往后移一个这样移动避免数据被覆盖*/
/*循环是只循环这一句的*/
xs[k]=s;/*将输入的学生信息加入这个k位置*/
lenth++;/*长度+1*/
//写回
if((fp=fopen("student.dat","wb"))==NULL) {printf("不能建立文件!!\n");exit(0);}
for(i=0;ilenth;i++)
fwrite(xs[i],sizeof(stu),1,fp);
}
else/*不再数组范围之内*/
{
if((fp=fopen("student.dat","ab"))==NULL) {printf("不能建立文件!!\n");exit(0);}
fwrite(s,sizeof(stu),1,fp);
}
fclose(fp);
}
//显示
void print()
{
FILE *fp;
stu s;
system("cls");
if((fp=fopen("student.dat","rb"))==NULL) {printf("can't open file!\n");exit(0);}
printf("\n%10s %s %6s %6s %6s %6s\n","姓名","学号","C语言","高数"," 英语","平均成绩");
while(!feof(fp))
{
fread(s,sizeof(stu),1,fp);//从文件中读取成绩信息
if(feof(fp)) break;//判断是否文件尾
printf("%10s %6d %6.2f %6.2f %6.2f %6.2f\n",s.name,s.num,s.c,s.math,s.english,s.aver);
}
fclose(fp);
getch();
}
//统计
void tongji()
{
int i=0,j=0,k=0,l=0,m=0,n,p,q,r,t,u;
FILE *fp;
stu s[N], *p1[N],*p2[N],*p3[N],*p4[N];/*用指针数组*/
system("cls");
if((fp=fopen("student.dat","rb"))==NULL) {printf("cant't open file!\n");exit(0);}
while(!feof(fp))
{
fread(s[i++],sizeof(stu),1,fp);/*读入数据*/
if(feof(fp)) break;
}
t=i;i=0;
for(u=0;ut;u++)/*以下每个指针数组用于指向各分数段的学生信息*/
{
if(s[i].c60) {p1[j++]=s[i++];continue;}/*每个学生信息只能位于一个分数段*/
if(s[i].c=60s[i].c80) {p2[k++]=s[i++];continue;}
if(s[i].c=80s[i].c90) {p3[l++]=s[i++];continue;}
if(s[i].c=90) {p4[m++]=s[i++];continue;}
}
printf("不及格:姓名 学号 C语言\n");
for(n=0;nj-1;n++)
{
printf("%10s %6d %6.2f\n",p1[n]-name,p1[n]-num,p1[n]-c);
}
printf("60-79:姓名 学号 C语言\n");
for(p=0;pk;p++)
{
printf("%10s %6d %6.2f\n",p2[p]-name,p2[p]-num,p2[p]-c);
}
printf("80-89:姓名 学号 C语言\n");
for(q=0;ql;q++)
{
printf("%10s %6d %6.2f\n",p3[q]-name,p3[q]-num,p3[q]-c);
}
printf("90以上:姓名 学号 C语言\n");
for(r=0;rm;r++)
{
printf("%10s %6d %6.2f\n",p4[r]-name,p4[r]-num,p4[r]-c);
}
fclose(fp);
getch();
}
//删除:输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息
void dele()
{
stu xs[N];
FILE *fp;
char name[10];
int i=0,len,k=-1/*k0是为后面if判断用的*/;
system("cls");
printf("\n输入要删除的学生姓名: ");scanf("%s",name);
if((fp=fopen("student.dat","rb+"))==NULL) {printf("can't open file!\n");exit(0);}
while(!feof(fp))
{
fread(xs[i],sizeof(stu),1,fp);
if(feof(fp)) break;
if(strcmp(xs[i].name,name)==0) k=i;
i++;
}
fclose(fp);
//以下是删除后重新写文件
len=i;/*结构体数组上限*/
if(k=0)/*k0说明找到删除学生位置*/
{
if((fp=fopen("student.dat","wb+"))==NULL) {printf("can't open file!\n");exit(0);}
for(i=0;ilen;i++)
{
if(i==k) continue;/*从这个位置开始写入*/
fwrite(xs[i],sizeof(stu),1,fp);
}
fclose(fp);
}
else {printf("删除失败!!!\n");getch();} /*失败后重新返回菜单*/
print();
}
//菜单选择
void main()
{
char ch;
while(1)
{
menu();// 显示菜单
ch=getch();//选择菜单
if(ch=='0') break;
switch(ch)//判断功能项
{
case '1':input();break;
case '2':sum();break;
case '3':search();break;
case '4':modi();break;
case '5':insert();break;
case '6':print( );break;
case '7':tongji();break;
case '8':dele();break;
}
}
printf("\n欢迎使用!!!\n");
}

2.学生成绩管理系统 (c语言做)
给你找一份类似的。不完全一致。做课程设计还是可行的。自己稍加修改即可!
总体设计
一、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)
1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。
4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:
详细设计
一、 界面设计
此系统界面采用图形和数字化菜单设计。
主界面设计如下:
学生成绩管理系统
请选择相应的数字执行相应的功能:
1:是否输入其他数据
2:查看数据
3:插入数据
4:查找数据
5:更新数据
6:保留数据
7:显示或打印数据
8:语文成绩状况
9:数学成绩状况
10:英语成绩状况
11:计算机成绩状况
12:?
13:退出系统
二、 数据结构设计:
程序设计中用到的结构体类型:
学生信息结构体类型:
typedef struct student{
char name[MAX];
int num[MAX];
char sex[MAX];
int chinese;
int mathematic;
int english;
int computer;
struct student *next;
}
程序代码:
//原始密码是123456
#include"stdio.h"
#include"stddef.h"
#include"stddef.h"
#include"string.h"
#define MAX 10
typedef struct student{ /*定义结构体*/
char name[MAX]; /*姓名*/
int num[MAX]; /* 学号*/
char sex[MAX]; /*性别*/
int chinese; /*语文*/
int mathematic; /* 数学*/
int english; /*英语*/
int computer; /*计算机*/
struct student *next; /*结构体指针*/
}stu;
stu *head; /*头指针*/
void print() /*显示或打印函数*/
{
system("cls");
printf("\t\t\tScore Manage System\n"); /*成绩管理系统*/
printf("1Enter Record\t"); /*输入数据*/
printf("2Display\t"); /*显示*/
printf("3Insert\t"); /*插入数据*/
printf("4Quest\t"); /*访问数据*/
printf("5Update\t"); /*以前数据*/
printf("6Save\t"); /*保留数据*/
printf("7Fresh\t"); /*更新数据*/
printf("8Chinese Average\t"); /*语文平均成绩*/
printf("9Math Average\t"); /*数学平均成绩*/
printf("10English Average\t"); /*英语平均成绩*/
printf("11Computer Average\t"); /*计算机平均成绩*/
printf("12Quit\t\n"); /*退出*/
}
void cin(stu *p1) /*输入相关数据的函数*/
{ printf("Enter name:\n");
scanf("%s",p1-name);
printf("Enter num:\n");
scanf("%d",p1-num);
printf("Enter sex:\n");
scanf("%s",p1-sex);
printf("Enter score:\n");
printf("Enter chinese:\n");
scanf("%d",p1-chinese);
printf("Enter math:\n");
scanf("%d",p1-mathematic);
printf("Enter English:\n");
scanf("%d",p1-english);
printf("Enter Computer:\n");
scanf("%d",p1-computer);
}
stu *cindata() /*其他数据是否继续输入的函数*/
{ stu *p1,*p2;
int i=1;
char ch;
p1=(stu *)malloc(sizeof(stu));
head=p1;
while(i)
{
cin(p1);
printf("Do you Want to Continue?yes or no"); /*是否继续输入数据*/
ch=getchar();
ch=getchar();
if(ch=='n'||ch=='N')
{ i=0;
p1-next=NULL;
}
else
{ p2=p1;
p1=(stu *)malloc(sizeof(stu));
p2-next=p1;
}
}
return(p1-next);
}
stu *lookdata(stu *p1) /*查看数据的函数*/
{
while(p1!=NULL)
{ printf("Num:%d\t",p1-num);
printf("Name:%s\t",p1-name);
printf("Sex:%s\t",p1-sex);
printf("\n");
printf("Chinese:%d\t",p1-chinese);
printf("Math:%d\t",p1-mathematic);
printf("English:%d\t",p1-english);
printf("Computer:%d\t",p1-computer);
printf("\n");
p1=p1-next;
}
return p1;
}
void insert() /*通过比较学号来插入数据的函数*/
{ stu *p1,*p3,*p2;
char ch;
p1=head;
p3=(stu *)malloc(sizeof(stu));
p3-next=NULL;
if(head==NULL){ head=p3; return;}
cin(p3);
while(p1!=NULL(p1-nump3-num)) /*通过学号的比较来插入*/
{ p2=p1;p1=p1-next;}
if(p2==head) {p3-next=head; head=p3; return;}
p3-next=p1;
p2-next=p3;
}
find(stu *p2) /*通过姓名查找查看数据的函数*/
{ char name[20];
int b=0;
printf("Enter the name of the student you want to find:"); /*通过姓名查看*/
scanf("%s",name);
while(p2!=NULL)
{if(strcmp(name,p2-name)==0)
{
printf("The data you want has be found\n");
printf(" Name:%s\t",p2-name);
printf("Num:%d\t",p2-num);
printf("sex%s\t",p2-sex);
printf("\n");
printf("Chinese:%d\t",p2-chinese);
printf("Math:%d\t",p2-mathematic);
printf("English:%d\t",p2-english);
printf("Computer:%d\t",p2-computer);
printf("\n");
b=1;
}
else if(b==0)
printf("sorry not find data!");
p2=p2-next;
}
if(b==1)
{
print();
printf("Find one\n");}
else
{print();
printf("Not find\n");
}
}
void caverage() /*求各学生语文平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1-next)
sum+=p1-chinese;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1-next)
{if(maxp1-chinese)
max=p1-chinese;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1-next)
if(minp1-chinese)
min=p1-chinese;
}
printf("Chinese Average:%f",aver);
printf("Chinese Max:%f",max);
printf("Chinese Min:%f",min);
}
void maverage() /*求各学生数学平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1-next)
sum+=p1-mathematic;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1-next)
{if(maxp1-mathematic)
max=p1-mathematic;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1-next)
if(minp1-mathematic)
min=p1-mathematic;
}
printf("Mathe Average:%f",aver);
printf("Mathe Max:%f",max);
printf("Mathe Min:%f",min);
}
void eaverage() /*求各学生英语平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1-next)
sum+=p1-english;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1-next)
{if(maxp1-english)
max=p1-english;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1-next)
if(minp1-english)
min=p1-english;
}
printf("English Average:%f",aver);
printf("English Max:%f",max);
printf("English Min:%f",min);
}
void comaverage() /*求各学生计算机平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1-next)
sum+=p1-computer;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1-next)
{if(maxp1-computer)
max=p1-computer;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1-next)
if(minp1-computer)
min=p1-computer;
}
printf("Computer Average:%f",aver);
printf("Computer Max:%f",max);
printf("Computer Min:%f",min);
}
update(stu *p2) /*通过姓名查找来更新数据*/
{
char name[10]; /*p2为指向结构体struct student的指针*/
int b=0;
printf("Enter The Name"); /*输入姓名*/
scanf("%s",name);
while(p2!=NULL)
{if(strcmp(name,p2-name)==0)
{
printf("Find you data\n");
scanf("Name:%s",p2-name);
scanf("Num:%s",p2-num);
scanf("Sex:%s",p2-sex);
scanf("Chinese:%d",p2-chinese);
scanf("Math:%d",p2-mathematic);
scanf("english:%d",p2-english);
scanf("Computer:%d",p2-computer);
printf("Success!");
b=1;}
else if(b==0)
printf("Sorry not Find data!");
p2=p2-next;}
if(b==0)
{print();
printf("Sorry not Find data!");
}
else
{
print();
printf("Finish!");
}
}
save(stu *p2) /*保留数据函数*/
{
FILE *fp;
char file[10];
printf("Enter file name"); /*输入文件名*/
scanf("%s",file);
fp=fopen(file,"w");
while(p2!=NULL)
{
fprintf(fp,"%s",p2-name);
fprintf(fp,"%s",p2-num);
fprintf(fp,"%s",p2-sex);
fprintf(fp,"%d",p2-chinese);
fprintf(fp,"%d",p2-mathematic);
fprintf(fp,"%d",p2-english);
fprintf(fp,"%d",p2-computer);
p2=p2-next;
}
fclose(fp);
}
char password[7]="123456"; /*定义初始密码*/
void main() /*主函数*/
{ int choice;
stu *p2;
char s[8];
int flag=0,i; /*标志项*/
int n=3;
do{ printf("Enter password:\n");
scanf("%s",s);
if(!strcmp(s,password)) /*进行密码匹配验证*/
{ printf("PASS\n\n\n");
flag=1;
break;
}
else{
printf("Error Enter again:\n");
n--;
}
}
while(n0);
if(!flag)
{printf("you have Enter 3 times!"); /*输入密码超过了3次!!*/
exit(0); /*自动退出*/
}
/*密码验证成功后进入的界面*/
printf("~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n"); /*操作界面*/
printf("\t\tWelcom to the Mis\n");
printf("Author:-----\tClass:------\tNum:------\n"); /*作者,班级和号码*/
printf("Adress:HG\n"); /*地址*/
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
printf("\t\tEnter OP:\n");
printf("\n\n\n\n");
printf("==============\t\t==============\n");
printf("==============\t\t==============\n");
printf("\t\tEnter the MIS yes or no\n"); /*问进入系统与否*/
scanf("%d",choice);
if(choice=='n'||choice=='N')
exit(1);
print();
while(1)
{
printf("Enter choice:");
scanf("%d",i);
if(i1||i13)
{
printf("Enter num from 1 to 13:\n"); /*再从1-13中进行选择*/
exit(1);
}
switch(i)
{ case 1:
p2=cindata(); /*其他数据是否继续输入的函数*/
break;
case 2:
p2=lookdata(head); /*查看数据的函数*/
break;
case 3:
insert(); /*通过比较学号来插入数据的函数*/
break;
case 4:
find(head); /*通过姓名查找查看数据的函数*/
break;
case 5:
update(head); /*通过姓名查找来更新数据*/
break;
case 6:
save(head); /*保留数据函数*/
break;
case 7:
print(); /*显示或打印函数*/
break;
case 8:
caverage(); /*求各学生语文平均分、最高和最低分成绩的函数*/
break;
case 9:
maverage(); /*求各学生数学平均分、最高和最低分成绩的函数*/
break;
case 10:
eaverage(); /*求各学生英语平均分、最高和最低分成绩的函数*/
break;
case 11:
comaverage(); /*求各学生计算机平均分、最高和最低分成绩的函数*/
break;
case 12:
; /*空操作*/
case 13:
exit(1); /*退出*/
break;
}
scanf("%d",i);
}
}
用C语言编写一个学生成绩管理系统
// testzhidao4.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include stdio.h
#include stdlib.h
#include string.h
#include malloc.h
struct Student //学生结构体
{
char name[20]; //名字
char sex[10]; //性别
char zuanye[20]; //专业
char code[13]; //学号
char department[20]; //学院
char degree[20]; //学历
};
struct node
{
struct Student data;
struct node *next;
};
//---------------------------------------------------------------------------------
void print_menu(void) // 打印总菜单
{
printf(" |--------------------------------------------------|\n");
printf(" | 总 菜 单 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1--增加一个学生信息 | 5--删除一个学生信息 |\n");
printf(" | 2--显示一个学生信息 | 6--统计功能 |\n");
printf(" | 3--显示一个班级信息 | 7--结束 |\n");
printf(" | 4--修改一个学生信息 | \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 |\n");
printf(" |--------------------------------------------------|\n");
}
void print_menu4(void ) //打印修改功能
{
printf(" |--------------------------------------------------|\n");
printf(" | 修 改 功 能 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1--修改名字 | 5--修改学院 |\n");
printf(" | 2--修改性别 | 6--修改专业 |\n");
printf(" | 3--修改学号 | 7--不作修改 |\n");
printf(" | 4--修改学历 | \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 |\n");
printf(" |--------------------------------------------------|\n");
printf("再次选择选项 :");
}
void print_static_function_menu(void) //打印统计功能
{
printf(" |--------------------------------------------------|\n");
printf(" | 统 计 功 能 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1.男/女人数 | 3.一个专业人数 |\n");
printf(" | 2.一个班级人数 | 4.结束 |\n");
printf(" |--------------------------------------------------|\n");
printf("请选择选项:\n");
}
int compareCode(char a[],char b[]) //比较 判断是否是同一个班级
{
for(int i=0;i9;i++)
if(a[i]!=b[i]) break;
if(i==9) return 1;
else return 0;
}
//-------------------------------------------------------------------------------------
void main() //主函数从这里开始
{
system("color 3");
printf("\n\n\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3 学 生 证 管 理 程 序 \3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3 作者: \3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
int choice;
struct node *studentlist=(struct node*)malloc(sizeof(struct node)); //学生链表头 //////////////////////////////////////////////////////////
studentlist-next=NULL;
struct node *temp=NULL;
struct node *p=(struct node*)malloc(sizeof(struct node));
char tempcode[13]; //临时学号
char tempclass[11]; //临时班级
char tempzuanye[20];//临时专业
int count=0;
int choice6,count_male,count_female;
const int sizeStu=sizeof(struct Student);
struct Student data;
FILE *fp;
if((fp=fopen("d:\\学生证管理程序.dat","rb"))==NULL)
{
fp=fopen("d:\\学生证管理程序.dat","wb");
}
fclose(fp);
fp=fopen("d:\\学生证管理程序.dat","rb");
while(fread(data,sizeStu,1,fp)==1)
{
p-data=data;
p-next=NULL;
if(studentlist==NULL)
studentlist=p;
else
{ temp=studentlist;
while(temp-next!=NULL){temp=temp-next;}
temp-next=p;
}
p=(struct node*)malloc(sizeof(struct node));
}
fclose(fp);
print_menu(); //打印菜单
scanf("%d",choice); //读进选项
while(choice!=7) //未遇到结束键
{
switch(choice)
{
//----------------------------------------------------------------
//选项1,增加学生学生证信息
case 1: //输入一个学生信息
p=(node*) malloc(sizeof(node));
printf("\n请输入姓名:");
scanf("%s",p-data.name);
printf("\n请输入性别(男/女):");
scanf("%s",p-data.sex);
printf("\n请输入学号(12位):");
scanf("%s",p-data.code);
printf("\n请输入学制(本科生/研究生):");
scanf("%s",p-data.degree);
printf("\n请输入学院:");
scanf("%s",p-data.department);
printf("\n请输入专业:");
scanf("%s",p-data.zuanye);
p-next=NULL;
//----------------------------------------------------------链表连接
if(studentlist==NULL) { studentlist=p; studentlist-next=NULL;}
else {
temp=studentlist;
while(temp-next!=NULL) ////////////////////
{
temp=temp-next;
}
temp-next=p;
p-next=NULL;
}
break;
//---------------------------------------------------------------------
//选项2,显示给定学生学生证信息
case 2: printf("\n请输入学生学号(12位数):");
scanf("%s",tempcode);
temp=studentlist;
while(temp!=NULL) //寻找响应的学生
{
if(strcmp(tempcode,temp-data.code)==0) break;
temp=temp-next;
}
if(temp==NULL) printf("\n不能找到该学生信息.\n");
else {
printf("------------------------------------------------\n");
printf("姓名: %s\n",temp-data.name);
printf("性别: %s\n",temp-data.sex);
printf("学号: %s\n",temp-data.code);
printf("学历: %s\n",temp-data.degree);
printf("学院: %s\n",temp-data.department);
printf("专业: %s\n",temp-data.zuanye);
printf("------------------------------------------------\n\n");
}
break;
//-----------------------------------------------------------------
//选项3,显示给定班级的学生信息
case 3:printf("\n请输入班级号 :"); //输入班级号
scanf("%s",tempclass);
while(strlen(tempclass)10) //班级号位数小于10时,重新输入
{
printf("错误的班级号,请重新输入:");
scanf("%s",tempclass);
}
count=0; //班级学生数
temp=studentlist;
while(temp!=NULL) //检索链表,并打印相应学生的学生证信息
{
if(compareCode(tempclass,temp-data.code)) {//打印属于这个班级的学生
printf("-----------------------------------------------\n");
printf("姓名: %s\n",temp-data.name);
printf("性别: %s\n",temp-data.sex);
printf("学号: %s\n",temp-data.code);
printf("学历: %s\n",temp-data.degree);
printf("学院: %s\n",temp-data.department);
printf("专业: %s\n",temp-data.zuanye);
printf("-----------------------------------------------\n");
count++;
}
temp=temp-next;
}
if(count==0) printf("该班级还未有成员.\n");
break;
//-------------------------------------------------------------------
//选项4,修改给定学生的信息
case 4: printf("请输入要作修改的学生证号:");
scanf("%s",tempcode);
temp=studentlist;
while(temp!=NULL) //寻找响应的学生
{
if(strcmp(tempcode,temp-data.code)==0) break;
temp=temp-next;
}
if(temp==NULL) printf("\n找不到相应学生的信息.\n");//找不到相应的学生
else {
int choice2;
print_menu4();
scanf("%d",choice2);
while(choice2!=7)
{
switch(choice2)
{
case 1:printf("修改名字:"); //修改名字
scanf("%s",temp-data.name);
break;
case 2:printf("修改性别:");//修改性别
scanf("%s",temp-data.sex);
break;
case 3:printf("修改学号:");//修改学号
scanf("%s",temp-data.code);
break;
case 4:printf("修改学历 :"); //修改学历
scanf("%s",temp-data.degree);
break;
case 5:printf("修改学院:"); //修改学院
scanf("%s",temp-data.department);
case 6:printf("修改专业:");//修改专业
scanf("%s",temp-data.zuanye);
break;
default: break;
}
printf("请选择选项:");
scanf("%d",choice2); //再次选择菜单选项
}
}
break;
//----------------------------------------------------------------
//选项5,删除给定学号的学生
case 5: printf("\n输入学号 :"); //输入学号
scanf("%s", tempcode);
temp=studentlist;
p=temp;
while(temp!=NULL) //寻找相应的学生
{
if(strcmp(tempcode,temp-data.code)==0) break;
p=temp;
temp=temp-next;
}
if(temp==NULL) printf("\n找不到该学生信息.\n"); //找不到
else if(temp==studentlist) {studentlist=temp-next; free(temp);}
else {
p-next=temp-next;//找到时删除
free(temp);
}
break;
//------------------------------------------------------------------
//选项6,统计功能
case 6: print_static_function_menu();
scanf("%d",choice6);//选择菜单选项
while(choice6!=4)
{
switch(choice6)
{
//选项1,统计男女个数
case 1:temp=studentlist;
count_male=0; //男生数
count_female=0; //女生数
while(temp!=NULL) //检索链表查找
{
if(strcmp(temp-data.sex,"男")==0) count_male++;
if(strcmp(temp-data.sex,"女")==0) count_female++;
temp=temp-next;
}
printf("男: %d\n",count_male);
printf("女: %d\n",count_female);
break;
//选项2,统计给定班级的人数
case 2:printf("请输入班级号:");
scanf("%s",tempclass); //给定班级
temp=studentlist;
count=0;
while(temp!=NULL) //检索链表查找
{
if(compareCode(temp-data.code,tempclass)==1) count++;
temp=temp-next;
}
printf("%s班级总人数为: %d\n",tempclass,count);
break;
case 3:printf("请输入专业:");
scanf("%s",tempzuanye); //给定专业
temp=studentlist;
count=0;
while(temp!=NULL) //检索链表查找
{
if(strcmp(temp-data.zuanye,tempzuanye)==0) count++;
temp=temp-next;
}
printf("%s专业总人数为: %d\n",tempzuanye,count);
break;
//缺省项
default: break;
}
printf("请选择选项:");
scanf("%d",choice6);
}
break;
//-----------------------------------------------------------------
default:free(p); break;
}
if((fp=fopen("d:\\学生证管理程序.dat","wb"))==NULL)
{
printf("文件无法打开!");
return;
}
p=studentlist;
while(p)
{
fwrite(p-data,sizeStu,1,fp);
p=p-next;
}
fclose(fp);
print_menu( );//打印菜单 进入循环
scanf("%d",choice);
}
}
c语言作业学生成绩管理系统
#includestdio.h
#includewindows.h
#includestring.h
#includestdlib.h
void caidan();
void denglu()
{
//定义用户名数组为char类型
char mz[20];
//定义密码数组为char类型
char mima[20];
//定义学员初始值为0
int count=0;
do
{
//清空屏幕
system("cls");
printf("\t\t\t\t学员管理系统平台\n");
printf("=============================================================================\n");
printf("\t\t【用户登陆】\n");
printf("\t\t\t\t用户名:");
fflush(stdin);
//存储用户名
scanf("%s",mz);
printf("\t\t\t\t密码:");
fflush(stdin);
//存储密码
scanf("%s",mima);
//如果输入正确,执行菜单功能
if(strcmp(mz,"kkk")==0strcmp(mima,"ok")==0)
{
caidan();
break;
}
//如果输不正确,提示登录失败
else
{
printf("登陆失败\n");
count++;
system("pause");
system("cls");
}
//超过三次退出程序
if(count=3)
{
printf("登陆失败,请稍后再试\n");
exit(5);
}
}while(1);
}
struct student
{
int num;
char name[20];
int fs[3];
int zf;
}stu[50];
//定义登录函数
void danlu(student *p)
{
printf("输入学号:");
scanf("%d",p-num);
printf("输入姓名:");
fflush(stdin);
scanf("%s",p-name);
fflush(stdin);
p-zf=0;
//循环输入三门成绩
for(int i=0;i3;i++)
{
printf("输入第%d门成绩",i+1);
scanf("%d",p-fs[i]);
p-zf=p-zf+p-fs[i];
}
}
//定义录入函数
int luru(student *p,int n)
{
//int j=0;
do
{
printf("输入第%d个学员的学号:",n+1);
scanf("%d",(p+n)-num);
fflush(stdin);
printf("输入第%d个学员的姓名:",n+1);
scanf("%s",(p+n)-name);
fflush(stdin);
(p+n)-zf=0;
for(int i=0;i3;i++)
{
printf("输入第%d个学员第%d门成绩",n+1,i+1);
scanf("%d",(p+n)-fs[i]);
(p+n)-zf=(p+n)-zf+(p+n)-fs[i];
}
n++;
printf("继续请按y键");
fflush(stdin);
//如果输入的不是‘y’,就退出
if(getchar()!='y')
break;
else
continue;
}while(1);
return n;
}
//定义排序函数
void paixu(student stu[],int h)
{
//定义一个student类型的结构tt
student tt;
for(int i=0;ih;i++)
{
for(int j=0;jh-i;j++)
{
if(stu[j].zfstu[j+1].zf)
{
tt=stu[j];
stu[j]=stu[j+1];
stu[j+1]=tt;
}
}
}
}
//定义插入函数
void charu(student stu[],int t,student s)
{
int i=0;
for( i=0;it;i++)
{
if(stu[i].zfs.zf)
break;
}
for(int j=t-1;j=i;j--)
{
stu[j+1] = stu[j];
}
stu[i]=s;
}
int cha(student stu[],int n)
{
//定义变量保存要插入学员的信息
student s;
do{
//录入单个学员信息
danlu(s);
//把学员信息插入到数组中
charu(stu,n,s);
//学员的总数要加1
n++;
printf("是否继续插入(y/n):");
fflush(stdin);
if(getchar()!='y')
break;
}while(1);
return n;
}
void shucu(student stu[],int k)
{
printf("-----------学员信息如下---------\n");
printf("学号\t姓名\t语文\t数学\t英语\t总分\n");
for(int i=0;ik;i++)
{
printf("%d\t%s\t%d\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);
}
}
int shancu(student stu[],int n)
{
int i,xuehao;
printf("输入要删除的学号:");
scanf("%d",xuehao);
for(i=0;in;i++)
{
if(xuehao==stu[i].num)
break;
}
for(int j = i;j=n-2;j++)
stu[j] = stu[j+1];
return n-1;
}
void chazao(student stu[],int d)
{
int xuehao,i;
printf("输入要查找的学号");
scanf("%d",xuehao);
for(i=0;id;i++)
{
if(xuehao==stu[i].num)
break;
}
printf("-----------该学员信息如下---------\n");
printf("学号\t姓名\t语文\t数学\t英语\t总分\n");
printf("%d\t%s\t%d\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);
}
void baocun(student stu[],int n)
{
FILE *fp;
fp=fopen("E:\\studentbin.txt","wb");
fwrite(stu,sizeof(struct student),n,fp);
fclose(fp);
printf("保存成功!\n");
}
void read(student stu[])
{
FILE *fp;
int a=0;
fp=fopen("E:\\studentbin.txt","rb");
a=fread(stu,sizeof(struct student),100,fp);
printf("学号\t姓名\t语文\t数学\t英语\t总分\n");
for(int i=0;ia;i++)
{
printf("%d\t%s\t%d\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);
}
fclose(fp);
}
void caidan()
{
int i;
student stu[50];
int count=0,s=0;
do{
system("cls");
printf("\t\t\t\t请选择要进行功能菜单:\n");
printf("\t\t\t\t----------------------\n");
printf("\t\t\t\t1.录入单个学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t2.显示所有学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t3.排序显示所有学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t4.插入单个学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t5.删除单个学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t6.查找单个学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t7.读取所有学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t8.保存所有学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t9.退出系统。\n");
printf("\t\t\t\t----------------------\n");
scanf("%d",i);
switch(i)
{
case 1:
//录入学员
system("cls");
count = luru(stu,count);
system("pause");
break;
case 2:
//输出学员信息
system("cls");
shucu(stu,count);
system("pause");
break;
case 3:
//排序
system("cls");
paixu(stu,count);
shucu(stu,count);
system("pause");
break;
case 4:
//插入学员信息
system("cls");
count = cha(stu,count);
paixu(stu,count);
shucu(stu,count);
system("pause");
break;
case 5:
//删除学员信息
system("cls");
count = shancu(stu,count);
shucu(stu,count);
system("pause");
break;
case 6:
system("cls");
chazao(stu,count);
system("pause");
break;
case 7:
system("cls");
read(stu);
system("pause");
break;
case 8:
system("cls");
baocun(stu,count);
system("pause");
break;
case 9:
exit(8);
}
}while('0');
}
void main()
{
int m,w,n;
struct student stu[50];
denglu();
caidan();
}
急求C语言期末大作业:学生成绩管理系统!!!(并附有详解)
1、题目:
学生成绩管理程序
2、要求:
1)编制一个统计学生考试分数的管理程序。
2)设学生成绩已以一个学生一个记录的形式存储在文件中,
3)每位学生记录包含的信息有:姓名,学号和各门功课的成绩。
4)程序具有以下几项功能:求出各门课程的总分,平均分,按姓名,
5)按学号寻找其记录并显示,浏览全部学生成绩和按总分由高到低显示学生信息等。
#includeiostream
#includestring
using namespace std;
struct record
{
char name[20]; /* 姓名 */
char code[20]; /* 学号 */
int mathmark; /* 数学课程成绩 */
int englishmark; /* 英语课程成绩 */
int compmark; /* 计算机课程成绩 */
}stu[20];
int total[20][3],avg[20][3];
int student_total[20],flag[20];
void input()//从键盘输入20个学生的各项信息
{
int i;
for(i=0;i20;i++)
{
cout"输入第"i+1"个学生信息"endl;
cout"输入学生姓名:";
cinstu[i].name;
cout"输入学生学号:";
cinstu[i].code;
cout"输入数学成绩: ";
cinstu[i].mathmark;
cout"输入英语成绩: ";
cinstu[i].englishmark;
cout"输入计算机成绩: ";
cinstu[i].compmark;
coutendl;
}
}
void find_by_name(char *p)//按姓名寻找其记录并显示,如输入“张三”,即可输出该同学的学号和三门功课的成绩
{
int i;
for(i=0;i20;i++)
if(strcmp(stu[i].name,p)==0)
{
cout"学号\t""数学\t""英语\t""计算机"endl;
coutstu[i].code"\t"stu[i].mathmark"\t"stu[i].englishmark"\t"stu[i].compmarkendl;
break;
}
}
void find_by_code(char *p)//按学号寻找其记录并显示,如输入“09001”,即可输出该同学的姓名和三门功课的成绩
{
int i;
for(i=0;i20;i++)
if(strcmp(stu[i].code,p)==0)
{
cout"姓名\t""数学\t""英语\t""计算机"endl;
coutstu[i].name"\t"stu[i].mathmark"\t"stu[i].englishmark"\t"stu[i].compmarkendl;
break;
}
}
void disp()//浏览全部学生的各项信息
{
int i;
cout"姓名\t""学号\t""数学\t""英语\t""计算机"endl;
for(i=0;i20;i++)
{
coutstu[i].name"\t"stu[i].code"\t"stu[i].mathmark"\t"stu[i].englishmark"\t"stu[i].compmarkendl;
}
}
void dis_by_total()//按总分由高到低显示学生信息等
{
int i,j,n;
int temp1,temp2;
for(i=0;i20;i++)flag[i]=i;
n=19;
while(n0)
{
j=0;
for(i=0;in;i++)
if(student_total[i]student_total[i+1])
{
temp1=student_total[i];
student_total[i]=student_total[i+1];
student_total[i+1]=temp1;
temp2=flag[i];
flag[i]=flag[i+1];
flag[i+1]=temp2;
j=i;
}
n=j;
}
cout"姓名\t""学号\t""数学\t""英语\t""计算机"endl;
for(i=0;i20;i++)
{
coutstu[flag[i]].name"\t"stu[flag[i]].code"\t"stu[flag[i]].mathmark"\t"stu[flag[i]].englishmark"\t"stu[flag[i]].compmarkendl;
}
}
int main()
{
char name[20];
char code[20];
cout"请输入学生信息!!"endl;
input();
cout"\n请输入您要查找的名字:";
cinname;
find_by_name(name);
cout"\n请输入您要查找的学号:";
cincode;
find_by_code(code);
cout"\n显示所有学生信息:"endl;
disp();
cout"\n按总分由高到低显示学生信息!!"endl;
dis_by_total();
return 0;
}
自己再根据需要改改,应该可以的
C语言编写一个简单的学生成绩管理系统
C语言程序:
#include?stdio.h
#include?string.h
typedef?struct?student
{
char?name[20]; /*?姓名?*/
int?code; /*?学号?*/
int?kor,?eng,?math; /*?3门课程的成绩?*/
}STUDENT;
/*?返回输入数据?*/
STUDENT?Input();
/*?输出所有输入的数据?*/
void?Output(STUDENT?info[],?int?cnt);
/*?将输入分数转换为A-F?*/
char?grade(int?score);
int?main()
{
STUDENT?S[10];
int?cnt?=?0,?select;
int?i,?j;
int?code;
while(1)
{
printf("\t学生信息管理系统\n\n");
printf("\t\t1\t添加\n");
printf("\t\t2\t删除\n");
printf("\t\t3\t查询\n");
printf("\t\t0\t结束\n");
printf("\t\t您的选择[0-3]:");
scanf("%d",?select);
if(select??0?||?select??3)
continue;
if(select?==?0)
{
printf("退出系统!\n");
break;
}
if(select?==?1) /*?添加?*/
{
S[cnt++]?=?Input();
}
else?if(select?==?2) /*?删除?*/
{
printf("\t\t待删除学生的学号:");
scanf("%d",?code);
for(i=0;?icnt;?i++)
if(S[i].code?==?code)
break;
if(i?=?cnt)
{
printf("学号不存在,删除失败!\n");
}
else?{
for(j=i+1;?jcnt;?j++)
{
strcpy(S[j-1].name,?S[j].name);
S[j-1].code?=?S[j].code;
S[j-1].kor?=?S[j].kor;
S[j-1].eng?=?S[j].eng;
S[j-1].math?=?S[j].math;
}
cnt--;
printf("删除成功!\n");
}
}
else /*?查询?*/
{
printf("\t\t待查找学生的学号:");
scanf("%d",?code);
for(i=0;?icnt;?i++)
if(S[i].code?==?code)
break;
if(i?=?cnt)
{
printf("学号不存在,查找失败!\n");
}
else
{
printf("\t查询结果:\n");
Output(S,?i);
}
}
}
return?0;
}
/*?返回输入数据?*/
STUDENT?Input()
{
STUDENT?stu;
printf("\t\t新学生信息\n");
printf("\t\t学号:");
scanf("%d",?stu.code);
printf("\t\t姓名:");
getchar();
gets(stu.name);
printf("\t\t3门课程成绩(以空格分隔):");
scanf("%d%d%d",?stu.kor,?stu.eng,?stu.math);
return?stu;
}
/*?输出所有输入的数据?*/
void?Output(STUDENT?info[],?int?cnt)
{
printf("学号:%d\n",info[cnt].code);
printf("姓名:");
puts(info[cnt].name);
printf("成绩:%c?%c?%c\n",?grade(info[cnt].kor),?grade(info[cnt].eng),?grade(info[cnt].math));
}
/*?将输入分数转换为A-F?*/
char?grade(int?score)
{
if(score??0?||?score??100)
return?'F';
if(score?=?90)
return?'A';
if(score?=?80)
return?'B';
if(score?=?70)
return?'C';
if(score?=60)
return?'D';
else
return?'E';
}
运行测试: