代码如下
:
#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();
}