c语言课程设计学生成绩管理系统
#includestdio.h
#includeconio.h
#include stdlib.h
#includestring.h
#define MAX 80
#define max 3
int nu=0;
struct classname
{
char name[20];
float score;
};
struct student
{
char no[20];
char std_name[20];
struct classname km[max];
float ave;
float sum;
int save;
};
struct student stu[MAX],*p;
void chushi()
{
int i,j;
for(i=0;iMAX;i++)
{
for(j=0;j20;j++)
{
stu[i].no[j]=NULL;
stu[i].std_name[j]=NULL;
stu[i].km[j].name[j]=NULL;
stu[i].km[j].score=0;
}
stu[i].ave=0;
stu[i].sum=0;
stu[i].save=0;
}
}
void av()/*求平均值*/
{
int i;
for(i=0;inu;i++)
{
stu[i].sum=stu[i].km[1].score+stu[i].km[2].score+stu[i].km[3].score;
stu[i].ave=stu[i].sum/3;
}
}
void first_check()
{
FILE *p;
int i,j;
struct classname frist[max];
for(i=0;imax;i++)
{
for(j=0;j20;j++)
frist[i].name[j]=NULL;
frist[i].score=0;
}
if ((p=fopen(“c:\\kemu.txt”,”r”))==NULL)
{
printf(“您好,欢迎使用学生成绩管理系统\n\n因为您是第一次使谨渗用,请输入科目名称(三科)\n\n”);
p=fopen(“c:\\kemu.txt”,”w”);
printf(“输入课程1名称:”);
scanf(“%s”,frist[0].name);
fprintf(p,”%s\n”,frist[0].name);
printf(“输入课程2名称:”);
scanf(“%s”,frist[1].name);
fprintf(p,”%s\n”,frist[1].name);
printf(“输入课程3名祥高脊称:”);
scanf(“%s”,frist[2].name);
fprintf(p,”%s\n”,frist[2].name);
}
system(“cls”);
fclose(p);
}
void save_nu()
{
FILE *p;
p=fopen(“c:\\renshu.txt”,”w”);
fprintf(p,”%d\n”,nu);
fclose(p);
}
void Save_add(int n)
{
FILE * p;
int i;
p= fopen(“c:\\cheji.txt”,”at”);
if (p == NULL)
{
printf(“文件不存在!!\n”);
exit(0);
}
save_nu();
for (i = 0;in;i++)
if(stu[i].save==1)
{
stu[i].sum=stu[i].km[1].score+stu[i].km[2].score+stu[i].km[3].score;
stu[i].ave=stu[i].sum/3;
fprintf(p,”%s %s %2.1f %2.1f %2.1f %2.1f %2.1f \n”,stu[i].no,stu[i].std_name,stu[i].km[0].score,stu[i].km[1].score,stu[i].km[2].score,stu[i].ave,stu[i].sum);
}
fclose(p);
}
void Save()
{
FILE * p;
int i;
p= fopen(“c:\\念轿cheji.txt”,”w”);
if (p == NULL)
{
printf(“文件不存在!!\n”);
exit(0);
}
save_nu();
for (i = 0;inu;i++)
if(stu[i].save==1)
{
av();
fprintf(p,”%s %s %2.1f %2.1f %2.1f %2.1f %2.1f \n”,stu[i].no,stu[i].std_name,stu[i].km[0].score,stu[i].km[1].score,stu[i].km[2].score,stu[i].ave,stu[i].sum);
}
fclose(p);
}
int read_nu()
{
FILE *p;
char ch,s[10]={‘\0’};
int i=0;
p=fopen(“c:\\renshu.txt”,”r”);
if(p==NULL)
{
save_nu();
return 0;
}
ch=fgetc(p);
while(ch!=’\n’)
{
s[i]=ch;
ch=fgetc(p);
i++;
}
nu=atoi(s);
fclose(p);
return 0;
}
int read_km()
{
FILE *p;
int i,j=0;
char s[20]={‘\0’};
chushi();
p=fopen(“c:\\kemu.txt”,”r”);
if(p==NULL)
{
printf(“ERROR read_km”);
return 0;
}
fgets(s,20,p);
while(strlen(s)!=0)
{
for(i=0;istrlen(s);i++)
if(s[i]==10)
{
s[i]=’\0′;
break;
}
for(i=0;i=nu;i++)
strcpy(stu[i].km[j].name,s);
for(i=0;i20;i++)
s[i]=’\0′;
j++;
fgets(s,20,p);
}
}
void read()
{
FILE *p;
int i,j,n,k,z=0;
char s[50]={‘\0’};
char o[10]={‘\0’};
p=fopen(“c:\\cheji.txt”,”r”);
if(p==NULL)
printf(“ERROR_read”);
chushi();
read_km();
fgets(s,50,p);
while(strlen(s)!=0)
{
j=0;
for(i=0;i50;i++)
{
if(s[i]!=’\n’)
{
n=0;
while(j==0)
{
if(s[i]!=’ ‘)
{
stu[z].no[n]=s[i];
n++;i++;
}
else
break;
}
while(j==1)
{
if(s[i]!=’ ‘)
{
stu[z].std_name[n]=s[i];
n++;i++;
}
else
break;
}
while(j==2)
{
if(s[i]!=’ ‘)
{
o[n]=s[i];
n++;i++;
}
else
{
stu[z].km[0].score=atoi(o);
break;
}
}
while(j==3)
{
if(s[i]!=’ ‘)
{
o[n]=s[i];
n++;i++;
}
else
{
stu[z].km[1].score=atoi(o);
break;
}
}
while(j==4)
{
if(s[i]!=’ ‘)
{
o[n]=s[i];
n++;i++;
}
else
{
stu[z].km[2].score=atoi(o);
break;
}
}
while(j==5)
{
if(s[i]!=’ ‘)
{
o[n]=s[i];
n++;i++;
}
else
{
stu[z].ave=atoi(o);
break;
}
}
while(j==6)
{
if(s[i]!=’ ‘)
{
o[n]=s[i];
n++;i++;
}
else
{
stu[z].sum=atoi(o);
break;
}
}
for(k=0;k10;k++)
o[k]=’\0′;
}
else
break;
j++;
}
for(i=0;i50;i++)
s[i]=’\0′;
fgets(s,50,p);
z++;
}
}
void putin()
{
int n,i=0;
char ch;
read_km();
do
{
printf(“\t\t\t\t录入学员信息\n输入第%d个学员的信息\n”,i+1);
printf(“\n输入学生编号:”);
scanf(“%s”,stu[i].no);
printf(“\n输入学员姓名:”);
scanf(“%s”,stu[i].std_name);
printf(“\n输入课程%s的分数:”,stu[0].km[0].name);
scanf(“%f”,stu[i].km[0].score);
printf(“\n输入课程%s的分数:”,stu[0].km[1].name);
scanf(“%f”,stu[i].km[1].score);
printf(“\n输入课程%s的分数:”,stu[0].km[2].name);
scanf(“%f”,stu[i].km[2].score);
stu[i].save=1;
printf(“\n\n”);
i++;
n=i;
printf(“是否继续输入?(Y/N)”);
fflush(stdin);
ch=getch();
system(“cls”);
}
while(ch!=’n’ch!=’N’);
system(“cls”);
if(nu==0)
{
nu=n;
Save();
}
else
{
nu=n+nu;
Save_add(n);
}
}
int putout()
{
int i;char s;
if(nu==0)
{
printf(“学生信息为零!请录入…”);
return 0;
}
read();
do
{
printf(“学生成绩信息:\n\n”);
for(i=0;inu;i++)
printf(“学号:%s 姓名:%s\n%s分数:%2.1f\t%s分数:%2.1f\t%s分数:%2.1f\n平均分数:%2.1f\t总成绩:%2.1f\n\n”,stu[i].no,stu[i].std_name,stu[i].km[0].name,stu[i].km[0].score,stu[i].km[1].name,stu[i].km[1].score,stu[i].km[2].name,stu[i].km[2].score,stu[i].ave,stu[i].sum);
printf(“\t\t按任意键返回主菜单”);
fflush(stdin);
s=getch();
}
while(!s);
system(“cls”);
}
int sort()/*排序数据函数*/
{
struct student temp;
int i,j;
char s;
if(nu==0)
{
printf(“学生信息为零!请录入…”);
return 0;
}
chushi();
read();
for(i=1;inu;i++)
{
for(j=1;j=nu-i;j++)
{
if(stu[j-1].avestu[j].ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
do
{
printf(“学生成绩信息:\n\n”);
for(i=0;inu;i++)
printf(“学号:%s 姓名:%s 平均成绩:%2.1f\n\n”,stu[i].no,stu[i].std_name,stu[i].ave);
printf(“\t\t按任意键返回主菜单”);
fflush(stdin);
s=getch();
}
while(!s);
system(“cls”);
}
void find()/*查询函数*/
{
int j,i=0;
int c=0;
char search[10]={‘\0’};
char as;
if(nu==0)
{
printf(“学生信息为零!请录入…”);
return 0;
}
chushi();
read();
do
{
printf(“输入要查询课程名称:”);
scanf(“%s”,search);
for(j=0;jmax;j++)
if(!strcmp(stu[i].km[j].name,search))
{
c=1;
printf(“\n该课程不及格学生姓名:\n”);
for(i=0;inu;i++)
if(stu[i].km[j].score60)
printf(“%s\n”,stu[i].std_name);
}
if(c==0)
printf(“无此课程!”);
printf(“\n\t\t按任意键返回主菜单”);
fflush(stdin);
as=getch();
}
while(!as);
system(“cls”);
}
void tongji()
{
int j,m,z,i=0;
char s;
if(nu==0)
{
printf(“学生信息为零!请录入…”);
return 0;
}
chushi();
read();
for(z=0;zmax;z++)
{
m=stu[i].km[z].score;j=0;
printf(“%s 最高分: “,stu[i].km[z].name);
for(i=0;inu;i++)
if(mstu[i].km[z].score)
{
m=stu[i].km[z].score;
j=i;
}
printf(“%s\t”,stu[j].std_name);
j=0;i=0;m=stu[i].km[z].score;
printf(“%s 最低分: “,stu[i].km[z].name);
for(i=0;inu;i++)
if(mstu[i].km[z].score)
{
m=stu[i].km[z].score;
j=i;
}
printf(“%s\t”,stu[j].std_name);
m=0;j=0;i=0;
printf(“%s 平均分: “,stu[i].km[z].name);
for(i=0;inu;i++)
m=m+stu[i].km[z].score;
printf(“%d\n”,m/nu);
m=0;i=0;
printf(“%s 分数低于的60人数: “,stu[i].km[z].name);
for(i=0;inu;i++)
if(stu[i].km[z].score60)
m++;
printf(“%d\t”,m);
m=0;j=0;i=0;
printf(“%s 分数高于60的人数: “,stu[i].km[z].name);
for(i=0;inu;i++)
if(stu[i].km[z].score60)
m++;
printf(“%d\n\n”,m);
}
do
{
printf(“\t\t按任意键返回主菜单”);
fflush(stdin);
s=getch();
}
while(!s);
system(“cls”);
}
void main()/*主函数*/
{
int as;
first_check();
start: printf(“\n\t\t\t欢迎使用学生成绩管理系统\n”);
/*一下为功能选择模块*/
do
{
printf(“\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.查询不及格学生\n\t\t\t\t5.统计信息\n\t\t\t\t6.退出\n”);
printf(“\t\t\t\t选择功能选项:”);
fflush(stdin);
read_nu();
scanf(“%d”,as);
switch(as)
{
case 1:system(“cls”);putin();break;
case 2:system(“cls”);putout();break;
case 3:system(“cls”);sort();break;
case 4:system(“cls”);find();break;
case 5:system(“cls”);tongji();break;
case 6:system(“exit”);exit(0);
default:system(“cls”);goto start;
}
}
while(1);
/*至此功能选择结束*/
}
用c语言编写 学生成绩管理
#includestdio.h
#includestring.h
#includestdlib.h
#includeconio.h
#define max 20
typedef struct student //学生
{
char sno[max]; // 学号
char sname[max]; //姓名
char sex[max]; //性别
char age[max]; //年龄
char depart[max]; //系
char classs[max]; //班
char grade[max]; //年级
struct student* next;
} student;
student* head;
int LogOn() //登录模块,已实现输入密码不回显,如果中途发现输错某几位,可退格键重输
{
char username[max],password[max];
printf(“\n请输入用户名:”);
scanf(“%s”,username);
printf(“\n请输入密码(最多15位):”);
//开始以不回显且支持退格方式获取输入密码
int i=0;
while((i=0)(password[i++]=getch())!=13)//条件i=0是用于限制退格的范围
{
if(password[i-1]==’\b’)//对退格键的处理
{
printf(“%c%c%c”,’\b’,’\0′,’\b’);
i=i-2;
}
else
printf(“*”);
}
password[–i]=’\0′;
//已获取密码。验轮皮证用册陵户身份
if(!strcmp(username,”zhang”)!strcmp(password,”8147086″))
{
printf(“\n登录成功!”);
return 1;
}
else
return 0;
}
void regist()
{
char ch;
student *s,*ptr; //s用来建新结点,ptr用来暂存头结点
do
{
s=(student*)malloc(sizeof(student)); // 新建一个学生结点
printf(“\n开始注册…”); //开始注册
printf(“\n请输入该学生的学号:”);
scanf(“%s”,s-sno);
printf(“\n请输入该学生的姓名:”);
scanf(“%s”,s-sname);
printf(“\n请输入该学生的性别:”);
scanf(“%s”,s-sex);
printf(“\n请输入该学腊姿差生的年龄:”);
scanf(“%s”,s-age);
printf(“\n请输入该学生的系:”);
scanf(“%s”,s-depart);
printf(“\n请输入该学生所在的班:”);
scanf(“%s”,s-classs);
printf(“\n请输入该学生所在的年级”);
scanf(“%s”,s-grade);
ptr=head;
head=s;//将新结点插入队头
s-next=ptr;
fflush(stdin);
printf(“\n请问是否继续注册?(Y/N)”);
scanf(“%c”,ch);
}while(ch==’Y’||ch==’y’);
return;
}
void ElePrint(char str[]) //输出单个元素
{
if(str==NULL) exit(0);
printf(“%s”,str);
for(unsigned int i=0;i12-strlen(str);i++) printf(” “);//为了对齐输出,需插入一些空格
return;
}
int LinePrint(student *ptr) //输出一行
{
if(ptr==NULL) //检查传进来的指针
return 0;
printf(“\n”);
ElePrint(ptr-sno);
ElePrint(ptr-sname);
ElePrint(ptr-age);
ElePrint(ptr-sex);
ElePrint(ptr-depart);
ElePrint(ptr-classs);
ElePrint(ptr-grade);
return 1;
}
void print() //输出全部学生信息
{
student *ptr=head;
printf(“\n学号 姓名 年龄 性别 系 班 年级 “);
while(ptr)
{
LinePrint(ptr);
ptr=ptr-next;
}
printf(“\n”);
return;
}
void search()//查询模块
{
int method;//查询方式
char no[max],name[max],departm[max],clss[max],grades[max]; //用来接收查询关键字
while(1)
{
printf(“\n请选择查询方式”);
printf(“\n1.按学号查询”);
printf(“\n2.按姓名查询”);
printf(“\n3.按所在系查询”);
printf(“\n4.按所在班级查询”);
printf(“\n5.按所在年级查询”);
printf(“\n6.打印全部学生信息”);
printf(“\n7.返回主菜单\n”);
scanf(“%d”,method);
student *p=head,*temp;
switch(method)
{
case 1:
printf(“\n请输入要查询的学号:”);
scanf(“%s”,no);
while(p)
{
if(!strcmp(p-sno,no))
break;
else
{
temp=p;
p=p-next;
}
}
printf(“\n学号 姓名 年龄 性别 系 班 年级 “);
LinePrint(p);
break;
case 2:
printf(“\n请输入要查询的姓名:”);
scanf(“%s”,name);
printf(“\n学号 姓名 年龄 性别 系 班 年级 “);
while(p)
{
if(!strcmp(p-sname,name))
LinePrint(p);
p=p-next;
}
break;
case 3:
printf(“\n请输入学生所在的系:”);
scanf(“%s”,departm);
printf(“\n学号 姓名 年龄 性别 系 班 年级 “);
while(p)
{
if(!strcmp(p-depart,departm))
LinePrint(p);
p=p-next;
}
break;
case 4:
printf(“\n请输入学生所在的班:”);
scanf(“%s”,clss);
printf(“\n请输入学生所在的年级:”);
scanf(“%s”,grades);
printf(“\n学号 姓名 年龄 性别 系 班 年级 “);
while(p)
{
if(!strcmp(p-classs,clss)!strcmp(p-grade,grades))
LinePrint(p);
p=p-next;
}
break;
case 5:
printf(“\n请输入学生所在的年级:”);
scanf(“%s”,grades);
printf(“\n学号 姓名 年龄 性别 系 班 年级 “);
while(p)
{
if(!strcmp(p-grade,grades))
LinePrint(p);
p=p-next;
}
break;
case 6:
print();
break;
case 7:
return;
default:
printf(“很抱歉,暂无此查询方式!”);
break;
}
}
}
void modify()//修改学生信息
{
char num[max];
student *p=head;
printf(“\n请输入要修改的学生的学号:”);
scanf(“%s”,num);
while(p)
{
if(!strcmp(p-sno,num))
break;
else
p=p-next;
}
if(p==NULL)
{
printf(“\n错误:没有此学生的信息!\n”);
return;
}
LinePrint(p);
printf(“\n请输入要修改的该学生的信息:”);
printf(“\n1.姓名”);
printf(“\n2.性别”);
printf(“\n3.年龄”);
printf(“\n4.所在的系”);
printf(“\n5.所在的班”);
printf(“\n6.所在的年级”);
char name1[max],sex1[max],age1[max],depart1[max],class1[max],grade1[max];
int select;
fflush(stdin);
scanf(“%d”,select);
printf(“\n请输入新的信息:”);
switch(select)
{
case 1:
scanf(“%s”,name1);
strcpy(p-sname,name1);
break;
case 2:
scanf(“%s”,sex1);
strcpy(p-sex,sex1);
break;
case 3:
scanf(“%s”,age1);
strcpy(p-age,age1);
break;
case 4:
scanf(“%s”,depart1);
strcpy(p-depart,depart1);
break;
case 5:
scanf(“%s”,class1);
strcpy(p-classs,class1);
break;
case 6:
scanf(“%s”,grade1);
strcpy(p-grade,grade1);
break;
default:
printf(“\nError!”);
break;
}
LinePrint(p);
return;
}
void del()// 删除某学生的信息
{
student *p=head,*temp=head,*s;
char num1[max];
printf(“\n请输入要删除的学生的学号:”);
scanf(“%s”,num1);
while(p)//查找该学生所在的结点
{
if(!strcmp(p-sno,num1))
break;
else
{
temp=p;
p=p-next;
}
}//while
if(!p)
{
printf(“\n不存在此学生的信息.”);
return;
}
LinePrint(p);//输出该学生的信息
printf(“\n请问真的要删除该学生的信息吗?(Y/N)”);
char ch;
fflush(stdin);
scanf(“%c”,ch);
if(ch==’Y’||ch==’y’)
{
s=p-next;
temp-next=s;
free(p);
printf(“\n已经删除该学生的信息.”);
}
return;
}
void sort() //排序模块。将学生记录按学号从小到大排列。用起泡排序算法实现
{
student *ptr,*s=head,*p;
int count=0,count1;
while(s)//统计链表结点个数
{
count++;
s=s-next;
}
for(int i=1;icount;i++)
{
ptr=head;
p=NULL;
count1=count-i; //用来控制每轮起泡排序的终点,即每次把学号最小的结点移到倒数第i个结点
while(ptrptr-next(count1–))
{
if(strcmp(ptr-sno,ptr-next-sno)0)
{
s=ptr-next;
ptr-next=s-next;
if(p==NULL) //ptr处于队头时
head=s;
else
p-next=s;
s-next=ptr;
p=s;
}
else
{
ptr=ptr-next;
if(p==NULL) //ptr处于队头时
p=head;
else
p=p-next;
}
}
}
return;
}
void quit()
{
char ch;
printf(“\n真的要退出?(Y/N)”);
fflush(stdin);
scanf(“%c”,ch);
if(ch==’Y’||ch==’y’)
exit(0);
return;
}
int main()
{
int option;
printf(“\nCopyright@2005 KongXinCai All rights reserved.”);
printf(“\n欢迎使用学生信息管理系统!\n”);
//登录模块
int icheck=0;
while(icheck3)
{
if(LogOn()==0)
icheck++;
else
break;
}
if(icheck==3)
{
printf(“\n连续登录三次不成功,退出!”);
exit(0);
}
//系统界面
while(1)
{
printf(“\n\n请选择需要的服务:”);
printf(“\n1.注册”);
printf(“\n2.查询”);
printf(“\n3.修改”);
printf(“\n4.删除”);
printf(“\n5.排序”);
printf(“\n7.求平均”);
printf(“\n6.退出\n”);
scanf(“%d”,option);
switch(option)
{
case 1:
regist();
break;
case 2:
search();
break;
case 3:
modify();
break;
case 4:
del();
break;
case 5:
sort();
break;
case 6:
quit();
break;
}
}
return 0;
}
学生成绩管理系统 c语言
//用字符界面实现,比如按数慎闷字1,可以录入学生所有信息;//按数字2,显示所有学生成绩;//按数字3,进入查询,按学号或姓名查询该学生是否存在,如果存在显示他的所有信息,///否则给出不存在提示。#include struct student{ char num[6]; /*学号*/ char name[10]; char subject[20]; /*科目*/ float grade;}stu[10];void menu(){ printf(“====================================\n”); printf(“| 学生成绩管理系统 |\n”); printf(“| 1 输入学生成绩 |\n”); printf(“| 2 输出学生成绩 |\n”); printf(“| 3 查询学生成绩 |\n”); printf(“| 0 退出管理系统 |\n”); printf(“====================================\n”);}void input(){ for(int i=0;i10;i++) scanf(“%s%s%s%f”,stu[i].num,stu[i].name,stu[i].subject,stu[i].grade);}void show(){ printf(“学号\t姓名\t科目咐孝巧\t成绩\n”); for(int i=0;i10;i++) printf(“%s\t%s\t%s\t%f\n”,stu[i].num,stu[i].name,stu[i].subject,stu[i].grade);}void serach(){ char obj[10]; printf(“输入要查询的学号”); scanf(“%s”,obj); for(int i=0;i10;i++) { if(strcmp(obj,stu[i].num)) { printf(“学号\t姓名\t科目\t成绩\n”); printf(“%s\t%s\t%s\t%f\n”,stu[i].num,stu[i].name,stu[i].subject,stu[i].grade); } } }int main(){ int selection; while(true) { clrscr(); menu(); printf(“请选择0–3: “); scanf(“%d”,selection); switch(selection) { case 1: input();break; case 2: show();break; case 3: search();break; case 0: exit(0);break; default: printf(“错误的输入,衡键请重新输入:”); } } return 0;}
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();
}