实验6
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define len 15
#define N 50
#define MAX_LINE 1024
struct Student{
int q;
char code[len+1];
char name[len+1];
float score[3];
float average;
float total;
}stu[N];
int k=1,n=0,m=0; /*全局变量,n为当前记录的学生人数,m为新增加的学生人数*/
void insert(); //插入信息,并计算总分和平均分
void modify(); //修改信息
void del(); //删除信息
void menu();
void sort();
int main()
{
while(k) menu();
system("pause");
return 0;
}
void insert(){
int i=n,j,flag;
printf("请输入新增加的学生数:\n");
scanf("%d",&m);
if(m>0){
do{
flag=1;
while(flag){
flag=0;
printf("请输入第 %d 个学生的学号:\n",i+1);
scanf("%s",stu[i].code);
for(j=0;j<i;j++)
if(strcmp(stu[i].code,stu[j].code)==0){
printf("已有该学号,请检查后重新输入!\n");
flag=1;
break;
}
}
printf("请输入第 %d 个学生的学号:\n",i+1);
scanf("%s",stu[i].code);
printf("请输入第 %d 个学生的姓名:\n",i+1);
scanf("%d",&stu[i].name);
printf("请输入第 %d 个学生的语文成绩:\n",i+1);
scanf("%f",&stu[i].score[0]);
printf("请输入第 %d 个学生的数学成绩:\n",i+1);
scanf("%f",&stu[i].score[1]);
printf("请输入第 %d 个学生的英语成绩:\n",i+1);
scanf("%f",&stu[i].score[2]);
stu[i].total=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
stu[i].average=stu[i].total/3.0;
if(flag==0) i++;
}while(i<n+m);
}
n+=m;
printf("信息增加完毕!\n\n");
sort();
system("pause");
}
void modify(){
int i,item,num=-1;
char sex1,s1[len+1],s2[len+1]; /*最长长度加1*/
float score1;
printf("请输入要修改的学生的学号:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(stu[i].code,s1)==0)
num=i; /*保存要修改学生的序号*/
if(num!=-1){
printf("------------------------\n");
printf("1.修改姓名\n");
printf("2.修改语文成绩\n");
printf("3.修改数学成绩\n");
printf("4.修改英语成绩\n");
printf("5.退出本菜单\n");
printf("------------------------\n");
while(1){
printf("请选择子菜单编号:");
scanf("%d",&item);
switch(item){
case 1:
printf("请输入新的姓名:\n");
scanf("%s",s2);
strcpy(stu[num].name,s2);
break;
case 2:
printf("请输入新的语文成绩:\n");
scanf("%f",&score1);
stu[num].score[0]=score1;
break;
case 3:
printf("请输入新的数学成绩:\n");
scanf("%f",&score1);
stu[num].score[1]=score1;
break;
case 4:
printf("请输入新的英语成绩:\n");
scanf("%f",&score1);
stu[num].score[2]=score1;
break;
case 5:
return;
default:
printf("请在1-5之间选择\n");
}
}
}
printf("修改完毕!请及时保存!\n");
system("pause");
}
void del(){
int i,j,flag=0;
char s1[len+1];
printf("请输入要删除学生的学号:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(stu[i].code,s1)==0){ //查找学生记录
flag=1;
for(j=i;j<n-1;j++)
stu[j]=stu[j+1];
}
if(flag==0) printf("该学号不存在!\n");
if(flag==1) {
printf("删除成功!\n");
n--;
}
system("pause");
}