- 事先存入的数据:
- 菜单:
- 系统帮助及说明:
- 写入学生信息:
该写入仅写入数组并不存入文件。
- 读出学生信息
- 将学生信息存入文件中
此时文件中数据为:
- 输出每门课程最高分:
- 随机读取信息:
- 专业平均成绩升序(简单选择排序):
- 班级平均成绩降序(冒泡)::
- 班级单科成绩升序(插排):
- 综合查找:
- 输出所有信息:
- 删除学生信息:
源码如下(原创,如用请点赞):
-
#include
#include #include #include #include #include #include #include #define M 1000 int length; int l=5; char a[10],b[10],c[10],d[10],e[10],f[10],g[10];//标题 struct student { char num[10];//学号 char name[10];//姓名 char spec[10];//专业 char stu_class[10];//班级 int score1; int score2; int score3; }stu[30]; int Init()//初始化 { int i = 0; FILE *p = fopen("1.txt", "r"); //打开文件 if(p==NULL) return 0; fscanf(p,"%s%s%s%s%s%s%s",&a,&b,&c,&d,&e,&f,&g);//读取标题 while (!feof(p)) //检测流上的文件结束符,如果文件结束,则返回非0值 { //将文件中数据读取到结构体数组 fscanf(p,"%s%s%s%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].spec,&stu[i].stu_class,&stu[i].score1,&stu[i].score2,&stu[i].score3); i++; } length = i; fclose(p); return 1; } void Input()//从键盘输入一个学生信息存入文件和结构体数组。 { loop1:; printf("请输入学生信息:\n"); printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); int i = length; char num_stu[10]; scanf("%s%s%s%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].spec,&stu[i].stu_class,&stu[i].score1,&stu[i].score2,&stu[i].score3); int n; for(n=0;n<99;n++) { if(stu[i].num==num_stu) { printf("学号冲突,请重新输入"); goto loop1; } } FILE *p = fopen("1.txt", "c"); //打开文件 fclose(p); l=l+1; printf("写入信息成功!\n"); length++; } void Output1()//输入学号,将对应的学生信息格式化输出。
{ char *num; printf("请输入查询的学号:"); scanf("%d",num); printf("学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); for(int i=0;i
{ printf("请输入学生信息:\n"); printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); int i = length; scanf("%s%s%s%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].spec,&stu[i].stu_class,&stu[i].score1,&stu[i].score2,&stu[i].score3); FILE *p = fopen("1.txt", "a"); //打开文件 fprintf(p,"\n%s %s %s %s %d %d %d\n",stu[i].num,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3); printf("%s %s %s %s %d %d %d",stu[i].num,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3); l=l+1; fclose(p); printf("写入文件成功!\n"); } void del(struct student stu[M])//删除函数 { int j,index=0,k=l; char xh[25]; printf("所要删除的学生学号为:\n"); scanf("%s",xh); do{ for(j=0;j
{ int i; int max[3]={0,0,0}; for(i=0;i
{ int i = time(NULL) % length; printf("第%d名学生\n",i+1); printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); printf("%s %s %s %s %d %d %d \n",stu[i].num,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3); } void Sort_select()//按专业总平均成绩由低到高进行简单选择排序。
{ struct student tmp; char str[6]; int i,j,t,n,k; float avg[length],avg_temp; printf("请输入专业:\n"); scanf("%s",str); for(i=0;i
{ struct student tmp; char str[6]; float avg[length],avg_temp; int i,j; printf("请输入班级:\n"); scanf("%s",str); for(i=0;i
avg[j] && strcmp(stu[i].stu_class,str)==0 && strcmp(stu[j].stu_class,str)==0) { tmp = stu[i]; avg_temp = avg[i]; stu[i] = stu[j]; avg[i] = avg[j]; stu[j] = tmp; avg[j] = avg_temp; } printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3 平均分\n"); for(i=0;i { int i,j,len=0; char str[6]; int m; struct student tmp; struct student insert[100]; printf("请输入班级:\n"); scanf("%s",str); printf("请输入科目 :\n"); scanf("%s",m); if(m==1) { for(i=0;i
= 0 && insert[j].score1 > tmp.score1; j--) insert[j+1] = insert[j]; insert[j+1] = tmp; } } printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); for(i=0;i = 0 && insert[j].score1 > tmp.score1; j--) insert[j+1] = insert[j]; insert[j+1] = tmp; } } printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); for(i=0;i = 0 && insert[j].score1 > tmp.score1; j--) insert[j+1] = insert[j]; insert[j+1] = tmp; } } printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n"); for(i=0;i score) { printf("%5s %-6s %3s %s %3d %3d %3d %3d\n",stu[i].num,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3,sum); k++; } printf("%s班总分%d以上的一共有%d人。 \n",str,score,k); } void Deletedatd()//删除信息 { int i, j, flag = 0; char m; printf("请输入想删除的信息:\n"); scanf("%lld", m); for (i = 0; i < l; i++) { if (stu[i].num==&m) { for (j = i; j < l + 1; j++) { stu[j] = stu[j + 1]; } } } getch(); } int main() { int i,j; if(Init()==0) { printf("文件不存在!"); return 0; } system("color 0f");//变色 int choice; int num; //num为每次输入的人数 static int k; // k为总人数 且会变化 int label_of_save=0;//存盘判据 while(1)//死循环 支持多次不同操作 { printf("\t\t\t ******************************************************\n\n"); printf("\t\t\t * 学生信息管理系统 * \n\n"); printf("\t\t\t ******************************************************\n\n"); printf("\t\t\t*********************系统功能菜单*************************\n"); printf("\t\t\t ---------------------- ---------------------- \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 0.系统帮助及说明 * * 1.写入学生信息 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 2.查询学生信息 * * 3.保存学生信息 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 4.课程最高分 * * 5.随机读取信息 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 6.专业平均成绩升序 * * 7.班级平均成绩降序 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 8.班级单科成绩升序 * * 9.综合查找 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 10.输出所有信息 * * 11.删除学生信息 * \n"); printf("\t\t\t ********************************************* \n"); printf("\t\t\t * 12.退出系统 * \n"); printf("\t\t\t ********************** \n"); printf("\t\t\t ---------------------- ---------------------- \n"); scanf("%d",&choice);//功能选择 int j;//支持增补的变量保障 if(choice>=0&&choice<=13) { switch(choice) { case 0: help(); break; case 1: Input(); break; case 2: Output(stu); break; case 3: Save(); break; case 4: Max(); break; case 5: Fetch(); break; case 6: Sort_select(); break; case 7: Sort_buble(); break; case 8: Sort_insert(); //my_Sort_insert(); break; case 9: Search(); break; case 11: del(stu);//删除 break; case 10: all(); break; case 12: printf("\n ~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); //退出提示 printf(" Goodbye! \n"); printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); exit(0);//将程序退出 } } else //没有按规范选择功能,要进行错误提示 //错误提示 { printf("\n ~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf(" error input! \n"); printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); } } return 0; } void write() { int i = length; FILE *p = fopen("1.txt", "w"); //打开文件 fprintf(p,"%s %s %s %s %s %s %s\n",a,b,c,d,e,f,g); for(i=0;i
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)