代码如下
:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 27
struct student
{
int num;
char name[20];
char sex[4];
int gaoshu;
int xiandai;
int yinyu;
int sum;
struct *next;
}stu[SIZE];
int s;
int i;
void main()
{
void menue(void);
printf(" ");
printf("**********************************\n");
printf(" ");
printf("*吉林大学软件学院学生成绩管理系统*\n");
printf(" ");
printf("**********************************\n");
printf("********************************************************************************\n");
printf("* 请输入选项前面的字母进入选项 *\n");
printf("********************************************************************************\n");
printf("* 原始成绩单 *\n");
printf("********************************************************************************\n");
printf("*q:按学号升序 w:按学号降序 e:按姓名升序 r:按姓名降序*\n");
printf("* *\n");
printf("* t:按总分升序 y:按总分降序 *\n");
printf("********************************************************************************\n");
printf("* 优秀成绩单 *\n");
printf("********************************************************************************\n");
printf("* z:高数 x:线代 c:英语 *\n");
printf("********************************************************************************\n");
printf("* 挂科成绩单 *\n");
printf("********************************************************************************\n");
printf("* v:高数 b:线代 n:英语 *\n");
printf("********************************************************************************\n");
menue();
}
void menue(void)//输入菜单指令函数
{
void ysxs(void);
void ysxj(void);
char x2;
printf("请输入菜单指令:");
scanf("%c",&x2);
switch(x2)
{
case 'q':ysxs();break;
case 'w':ysxj();break;
default:menue();
}
}
void ysxs(void)//输出原成绩单(学号升序)的函数
{ void menue(void);
FILE *p;
printf("请输入文件地址:");
char a[20];
gets(a);
if((p=fopen(a,"rb"))==NULL)
{
printf("不能打开文件,请重新输入:");
ysxs();
exit(0);
}
printf("********************************************************************************\n");
printf("* 原始成绩单(学号升序) *\n");
printf("********************************************************************************\n");
for(i=0;i<SIZE;i++)
{fread(&stu[i],sizeof(struct student),1,p);
printf("%3d\t%15s\t%1s\t%3d\t%3d\t%3d\t%3d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].gaoshu,stu[i].xiandai,stu[i].yinyu,stu[i].sum);
}
fclose(p);
menue();
}
void ysxj(void)//输出按学号降序的原始成绩单
{
void menue(void);
FILE *p;
printf("请输入文件地址:");
char a[20];
gets(a);
if((p=fopen(a,"rb"))==NULL)
{
printf("不能打开文件,请重新输入:");
ysxj();
exit(0);
}
printf("********************************************************************************\n");
printf("* 原始成绩单(学号降序) *\n");
printf("********************************************************************************\n");
struct student t;
int i,j;
for(i=0;i<SIZE;i++)
{
for(j=i+1;j<=SIZE;j++)
{
if(stu[i].num<stu[j].num)
{
t=stu[i];
stu[i]=stu[j];
stu[j]=t;
}
}
}
for(i=0;i<SIZE;i++)
{fread(&stu[i],sizeof(struct student),1,p);
printf("%3d\t%15s\t%1s\t%3d\t%3d\t%3d\t%3d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].gaoshu,stu[i].xiandai,stu[i].yinyu,stu[i].sum);
}
fclose(p);
menue();
}