#include <stdio.h>
struct stu{
int num;
char name[20];
int age;
float math;
float computer;
float english;
float avg;
float sum;
};
struct stu s[100];
int count=0;
void printMenu()
{
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");
}
void insertStudent()
{
char ch;
while(1)
{
printf("请输入学生的学号\n");
scanf("%d",&s[count].num);
printf("请输入学生的姓名\n");
scanf("%s",s[count].name);
printf("请输入学生的年龄\n");
scanf("%d",&s[count].age);
printf("请输入学生的数学成绩\n");
scanf("%f",&s[count].math);
printf("请输入学生的计算机成绩\n");
scanf("%f",&s[count].computer);
printf("请输入学生的英语成绩\n");
scanf("%f",&s[count].english);
s[count].sum = s[count].computer + s[count].math + s[count].english ;
s[count].avg = s[count].sum / 3 ;
count++;
getchar();
printf("是否继续输入学生信息 y/n?\n");
scanf("%c",&ch);
if(ch=='n')
{
break;
}
}
}
void deleteStudent()
{
char ch;
int i,y;
for(i=0;i<count-1;i++)
printf("%-10d%-10s%-10d%-10f%-10f%-10f%-10f%-10f",s[i].num,s[i].name,s[i].age,s[i].math,s[i].computer,s[i].english,s[i].sum,s[i].avg);
getchar();
printf("是否删除学生信息 y/n?\n");
scanf("%c",&ch);
if(ch=='n')
{
for(i=0;i<count-1;i++)
y=y-1;
printf("你已经删除信息 \n");
}
else
printf("退出系统 \n");
getchar();
return;
}
void displayStudent()
{
int i;
printf("学号 姓名 年龄 数学 计算机 英语 平均分 总分\n");
for(i = 0 ; i<count ; i++)
{
printf("%-10d%-10s%-10d%-10f%-10f%-10f%-10f%-10f\n",s[i].num,s[i].name,s[i].age,s[i].math,s[i].computer,s[i].english,s[i].avg,s[i].sum);
}
}
void serach()
{
int i,temp;
printf("请输入要查询的学号:");
scanf("%d",&temp);
for(i=0;i<count;i++)
{
if(temp==s[i].num)
{
printf("学号 姓名 年龄 数学 计算机 英语 平均分 总分\n");
printf("%-10d%-10s%-10d%-10f%-10f%-10f%-10f%-10f\n",s[i].num,s[i].name,s[i].age,s[i].math,s[i].computer,s[i].english,s[i].avg,s[i].sum);
break;
}
}
if(i==count)
{
printf("无该学号信息!\n");
}
}
void readFile()
{
FILE * fp;
fp = fopen("C:\\ssy.txt","r");
if(fp==NULL)
{
printf("文件不存在或者打开错误\n");
return;
}
fread(&count,sizeof(int),1,fp);
fread(s,sizeof(struct stu),count,fp);
fclose(fp);
}
void writeFile()
{
FILE * fp;
fp = fopen("C:\\ssy.txt","w");
if(fp==NULL)
{
printf("文件不存在或者打开错误\n");
return;
}
fwrite(&count,sizeof(int),1,fp);
fwrite(s,sizeof(struct stu),count,fp);
fclose(fp);
}
void markSort()//按照总成绩排序
{
struct stu temp;
int i,j;
for(i=0;i<count-1;i++)
for(j=0;j<count-1-i;j++)
if(s[j].sum<s[j+1].sum)
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
void sidSort()//按照学号排序
{
struct stu id;
int a,b;
for(a=0;a<count;a++)
for(b=0;b<count-1;b++)
if(s[b].num>s[b+1].num)
{
id=s[b];
s[b]=s[b+1];
s[b+1]=id;
}
}
main()
{
int num;
readFile();
while(1){
printMenu();
printf("请选择一个数字:");
scanf("%d",&num);
switch(num)
{
case 1: insertStudent();break;
case 2: deleteStudent();break;
case 3: displayStudent();break;
case 4: markSort();displayStudent(); break;
case 5: sidSort();displayStudent(); break;
case 6: return;
case 7: serach();break;
}
writeFile();
}
}
学生管理系统
最新推荐文章于 2021-10-13 14:58:07 发布