#include<stdlib.h>
#include <stdio.h>
#include<string.h>
#include<process.h>
#include<string.h>
#include<math.h>
#define null 0
struct student
{
char clas; /*班级*/
int number; /*学号*/
char name; /*姓名*/
float clan;/*C语言成绩*/
float english; /*大学英语成绩*/
float math; /*高等数学成绩*/
float sum; /*总分*/
float adver; /*平均分*/
}stu[50];
static struct student *p=stu;
static int i=0;/*用来控制*P指向的数据输出时候的范围范围*/
FILE *fp;
/*输入数据系统*/
char input(int n)
{
if((fp=(fopen("d:\\student.txt","a+")))==null)
printf("there is not file!");
int main(int);
system("cls");/*清屏处理*/
printf("请输入学生的:班级,号数,姓名,C语言成绩,高英成绩,高数成绩)\n");
scanf("%s,%d,%s,%f,%f,%f",&((++p)->clas),&(p->number),&(p->name),&(p->clan),&(p->english),&(p->math));
i++;
fwrite(p,sizeof(struct student),1,fp);
fwrite("\n",1,1,fp);
fclose(fp);
/*处理数据*/
(p->adver)=((p->clan)+(p->english)+(p->math))/3;
(p->sum)=((p->clan)+(p->english)+(p->math));
printf("还需要输入数据吗?\n1---是 \n2---否\n请输入:");
scanf("%d",&n);
if(n==1) input(0);
else if(n==2) return(0),system("cls"),main(0);
else printf("输入已错误,请重新开吧");
}
int main(int) /*主函数*/
{
int n;
system("cls");
printf(" 本系统将所有学生资料自动储存在D盘的student.txt文档-请查收\n=====学生成绩管理系统=====\n\n【1】输入数据\n【2】显示所有数据\n【3】按平均分降序排列\n【4】查找并显示一组数据\n【5】插入一组数据\n【6】修改一组数据\n【7】删除一组数据\n【8】从文件中读入数据\n【9】将所有记录写入文件\n【0】退出本系统\n输入:");
scanf("%d",&n);
switch(n)
{
case 1:{input(0);break;}
case 2:{/*显示数据系统*/
system("cls");
printf("显示所有的数据:\n\n\n");
char word[10000];
memset(word,0,sizeof(word));
if((fp=(fopen("d:\\student.txt","a+")))==null)
printf("there is not file!");
fread(word,100,20,fp);
printf("%s\n",word);
fclose(fp);
printf("\n\n输入任意可回主菜单:");
scanf("%s",&word);
main(0);
}
case 3:{/*排序系统*/
system("cls");
int j,k,a[100];
if(i==1) printf("只有一个学生的数据,没什么好排序的。- -!\n");
for(k=1;k<=i;k++)
for(j=1;j<=i;j++)
{if(((p+k)->adver)<=((p+j)->adver))
a[k]=j;a[j]=k;
}
printf("\n\n降序排序数列:\n\n");
for(j=1;j<=i;j++)
printf("%s %d %s %d %d %d\n",((p+j)->clas),((p+j)->number),((p+j)->name),((p+j)->clan),((p+j)->english),((p+j)->math));
printf("输入任意内容回到主菜单:");
scanf("%d",j);
main(0);
}
case 4:break;
case 5:break;
case 6:break;
case 8:break;
case 9:break;
case 0:break;
default :printf("wrong!");
}
}