#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10
struct student
{
int flag;//标记:未赋值时为0复制后为1判断数组是否为空的标记!很重要的思想
int number;
char name[20];
int Englishscore;
int Chinesescore;
};//此处不要忘记;
struct student stu[N];
int main()
{
int i=0;
while(i<N)
{
stu[i].flag=0;
i++;
}
char count;
int delet();
void input();
int increase();
int insert();
int query();
int sort();
//初始化工作
//FILE *fp;
//fp=fopen("student","w+");
while(1)
{
printf("************欢迎使用学生成绩管理系统*************\n");
printf("*
1.录入学生成绩
*\n");
printf("*
2.修改学生成绩
*\n");
printf("*
3.增加学生成绩
*\n");
printf("*
4.查询学生成绩
*\n");
printf("*
5.删除学生成绩
*\n");
printf("*
6.排序
*\n");
printf("*
7.退出系统
*\n");
printf("*************************************************\n");
scanf("%d",&count);
switch(count)
{
case 1: input();break;
//录入成绩
case 2: insert();break;
//修改成绩
case 3: increase();break;
//增加成绩
case 4: query();break;
//查询成绩
case 5: delet();break;
//删除成绩
case 6: sort();break;
//排序
case 7: printf("
感谢您使用本系统,欢迎下次使用!\n"); exit(0);
break;
}
}
return 0;
}
void input()
{
int i=0;
while(i<N)
{
printf("输入学生%d的信息:number,
Englishscore,
Chinesescore,
name:\n",(i+1));
scanf("%d,%d,%d,%s",&stu[i].number,&stu[i].Englishscore,&stu[i].Chinesescore,stu[i].name);//char[]类型的 输入和输出放到最后,不然不识别是否结束,若结构体数组里有两个char[],那要用两次SCANF()函数。多一次回车。
//scanf("%s",stu[i].name);一定注意char[]输入问题
stu[i].flag=1;
printf("录入成功\n");
i++;
}
}
int delet()
//删除
{
int count;
printf("请输入您要删除的学生学号:\n");
//没想到解决输出"要删除的信息不存在"的问题。
scanf("%d",&count);
for(int i=0;i<N;i++)
{
if(stu[i].number==count && stu[i].flag == 1)
{
stu[i].flag=0;
printf("删除成功!\n");
return 0;//作用结束当前整个函数,比如for循环共五次,后三次没必要继续,那就用Return0结束,并且下面的语句也不再继续进行执行。break结束循环,但是会继续执行下面的PRINT语句,注意区别。
}
}
printf("要删除的学生不存在!\n");
return 0;
}
int insert()
//修改
{
printf("按学号修改\n");
int choice;
scanf("%d",&choice);
int num;
printf("请输入您要修改学生的学号\n");
scanf("%d",&num);
for(int j=0;j<N;j++)
{
if((stu[j].number==num)&&(stu[j].flag==1))//这么写好像很省奥很概括
{
printf("请重新输入学生信息:number,
Englishscore,
Chinesescore,
name:\n");
scanf("%d,%d,%d,%s",&stu[j].number,&stu[j].Englishscore,&stu[j].Chinesescore,stu[j].name);
printf("修改成功!\n");
return 0;
}
}
printf("修改内容不存在\n");
return 0;
}
int query()
//输出
{
printf("number
name
Englishscore
Chinesescorec
flag\n");
for(int i=0;i<N;i++)
{
if(stu[i].flag==1)
printf("%5d
%5s
%10d
%10d
%12d\n",stu[i].number,stu[i].name,stu[i].Englishscore,stu[i].Chinesescore,stu[i].flag);
}
return 0;
}
sort()
{
int data[N];
int i,j,t;
data[N]=stu[N].number ;
for(i=0;i<N;i++)
for(j=0;j<N-i;j++)
if(data[j]>data[j+1])
{
t=data[j];
data[j]=data[j+i];
data[j+i]=t;
}
printf("排序结果为:\n");
return 0;
}
int increase()
{
for(int i=0;i<N;i++)
{
if(stu[i].flag==0)
{
printf("请输入学生信息\n");
printf("number
name
Englishscore
Chinesescorec
flag\n");
scanf("%d,%d,%d,%s",&stu[i].number,&stu[i].Englishscore,&stu[i].Chinesescore,stu[i].name);
stu[i].flag=1;
printf("输入学生信息成功!\n");
return 0;
}
}
printf("对不起,信息库已满,不能输入!\n");
return 0;
}