#include #include #include #include #include #define LEN sizeof(struct student) #define FORMAT "\t%s\t%s\t\t%d\n" //宏定义输出格式 #define DATA peo[i].name,peo[i].num,peo[i].score //宏定义结构体(方便输出) struct student { char name[100]; char num[100]; int score; }; struct student peo[100]; void addman(); void queryman(); void delman(); void update(); void outputman(); void menu(); void menu()//菜单模块 { system("cls"); printf("\n\t\t*********C语言成绩记录簿*********\n"); printf("\t\t┌-------------------------------┐\n"); printf("\t\t│ 1.添加学生信息 │\n"); printf("\t\t│ 2.查询学生信息 │\n"); printf("\t\t│ 3.删除学生信息 │\n"); printf("\t\t│ 4.修改学生信息 │\n"); printf("\t\t│ 5.分段输出学生信息 │\n"); printf("\t\t│ 0.退出 │\n"); printf("\t\t└-------------------------------┘\n"); printf("\t\t请您选择功能(0-5):"); } void tou() //列表头 { system("cls"); printf("\n"); printf("**************学生信息列表*********************\n\n"); printf("\t姓名\t 学号\t C语言成绩\n"); } void wei() //列表尾 { printf("\n**********************************************\n\n"); } int main () { int n; menu(); scanf("%d",&n); while(n) { switch(n) { case 1: addman(); system("pause"); break; case 2: queryman(); system("pause"); break; case 3: delman(); system("pause"); break; case 4: update(); system("pause"); break; case 5: outputman(); system("pause"); break; default:break; } menu(); scanf("%d",&n); } } void addman() { FILE *p1; int i,n,count=0; // count为学生人数 if ((p1=fopen("D:\\课设1\\student.txt","a+"))==NULL) //打开linkman文件 { printf("不能打开此文件"); exit(0); } while(!feof(p1)) //feof为检测文件结束符 { if(fread(&peo[count],LEN,1,p1)==1) count++; } fclose(p1); //关闭文件 if(count==0) printf("\n\t\t学生信息列表为空!\n\n"); else { system("cls"); //清屏 outputman(); } if ((p1=fopen("D:\\课设1\\student.txt","wb"))==NULL)//以二进制方式打开linkman文件 { printf("\t\t不能打开学生信息列表\n"); return; } for(i=0;i=60&&peo[i].score<80) printf(FORMAT,DATA); } printf("\n大于80分小于90分的有:\n"); for(i=0;i=80&&peo[i].score<90) printf(FORMAT,DATA); } printf("\n大于90分的有:\n"); for(i=0;i=90) printf(FORMAT,DATA); } wei(); } void delman() { FILE *p1; int i,j,k=1,count=0; char name[100]; if((p1=fopen("D:\\课设1\\student.txt","r+"))==NULL) return; while(!feof(p1)) if(fread(&peo[count],LEN,1,p1)==1) count++; fclose(p1); if(count==0) { printf("学生信息列表为空"); return; } outputman(); printf("请输入想要删除的学生的名字:"); scanf("%s",&name); for(i=0;i