赞
踩
现有学生成绩信息文件1(1.txt),内容如下
姓名 学号 语文 数学 英语
张明明 01 67 78 82
李成友 02 78 91 88
张辉灿 03 68 82 56
王露 04 56 45 77
陈东明 05 67 38 47
…. … … … …
学生成绩信息文件2(2.txt),内容如下:
姓名 学号 语文 数学 英语
陈果 31 57 68 82
李华明 32 88 90 68
张明东 33 48 42 56
李明国 34 50 45 87
陈道亮 35 47 58 77
…. … … … …
试编写一管理系统,要求如下:
#include <stdio.h> #include <string.h> typedef struct { char id[10]; char name[20]; char score[10]; }student; #define N 1024 void menu(int *n) { printf("\t\t\t*********************************************\n"); printf("\t\t\t\t\t1.查找学生信息\n"); printf("\t\t\t\t\t2.按成绩进行排序\n"); printf("\t\t\t\t\t3.合并信息表\n"); printf("\t\t\t\t\t4.创建补考信息表\n"); printf("\t\t\t\t\t0.退出\n"); printf("\t\t\t*********************************************\n"); printf("请输入操作数0-4:"); scanf("%d", n); }//创建菜单 void Printfstudent(student p[N], int len) { int i; printf("学号\t\t姓名\t\t分数\n\n"); for (i = 0; i < len; i++) { printf("%s\t\t", p[i].id); printf("%c%c%c%c%c%c%c%c%c\t\t", p[i].name[0],p[i].name[1],p[i].name[2],p[i].name[3],p[i].name[4],p[i].name[5],p[i].name[6],p[i].name[7],p[i].name[8]); printf("%s\t\\t\n", p[i].score); } } int visit(student p[N],int len,int i) { int k=0; while(p[i].score[k] !='\0') k++; return k; } void Sort(student p[N], int len) { student st; int i,j,a,b; for(i=0;i<len-1;i++) { for(j=0;j<len-1-i;j++) { if(strcmp(p[j].score,p[j+1].score) < 0) { st = p[j]; p[j] = p[j+1]; p[j+1] = st; } a=visit(p,len,j); b=visit(p,len,j+1); if(a<b) { st = p[j]; p[j] = p[j+1]; p[j+1] = st; } } } Printfstudent(p, len); } void serch(student p[N], int len) { int i, j; int flat = 0; char num[100]; char name1[100]; printf("请输入1或2,1按学号查找,2按姓名查找:"); scanf("%d", &i); if (i == 1) { printf("请输入要查找的学号:"); scanf(" %s", num); for (j = 0; j <len; j++) { if (strcmp(p[j].id, num) == 0) { flat++; break; } } if ( flat==0 ) { printf("学号出现错误!\n"); } else { printf("学号: %s,姓名: %c%c%c%c%c%c%c%c%c,得分: %s\n", p[j].id, p[j].name[0],p[j].name[1],p[j].name[2],p[j].name[3],p[j].name[4],p[j].name[5],p[j].name[6],p[j].name[7],p[j].name[8], p[j].score); } } else if (i == 2) { flat = 0; printf("请输入要查找的姓名:"); scanf(" %s", name1); for (j = 0; j <len; j++) { if (strcmp(p[j].name, name1) == 0) { flat++; printf("学号: %s,姓名: %c%c%c%c%c%c%c%c%c,得分: %s\n", p[j].id, p[j].name[0],p[j].name[1],p[j].name[2],p[j].name[3],p[j].name[4],p[j].name[5],p[j].name[6],p[j].name[7],p[j].name[8], p[j].score); break; } } if (!flat) { printf("姓名输入有误!\n"); } } } //文件1.txt的读入 int dos1(student p[N],int len) { int i,k; char a[200]; FILE *fp = fopen("1.txt", "r+"); if (fp == NULL) return 1; fgets(a,200,fp); fclose(fp); i=0; len=0; k=0; while (a[i] != '#') { while (a[i] != ',') { p[len].id[k]=a[i]; i++;k++; } i++; k=0; while (a[i] != ',') { p[len].name[k]=a[i]; i++; k++; } i++; k=0; while (a[i] != '&') { p[len].score[k]=a[i]; i++; k++; } i++; k=0; len++; } return len; } //文件2.txt的读入 int dos2(student p[N],int len) { int i,k; char b[200]; FILE *fp = fopen("2.txt", "r+"); if (fp == NULL) return 1; fgets(b,200,fp); fclose(fp); i=0; k=0; while ( b[i]!='#') { while (b[i] != ',') { p[len].id[k]=b[i]; i++;k++; } i++; k=0; while (b[i] != ',') { p[len].name[k]=b[i]; i++; k++; } i++; k=0; while (b[i] != '&') { p[len].score[k]=b[i]; i++; k++; } i++; k=0; len++; } return len; } //合并到文件3.txt void dos3(student p[N],int len) { FILE *fp; int i; fp=fopen("3.txt","w+"); for(i=0;i<len;i++) { fprintf(fp,"%s,%c%c%c%c%c%c%c%c%c,%s &",p[i].id,p[i].name[0],p[i].name[1],p[i].name[2],p[i].name[3],p[i].name[4],p[i].name[5],p[i].name[6],p[i].name[7],p[i].name[8],p[i].score); } fclose(fp); } //将补考的人的名单输出到文件4.txt void dos4(student p[N],int len) { FILE *fp; int i=0,a; char b[2]="60"; fp=fopen("4.txt","w+"); while(i<len) { a=visit(p,len,i); if(a==3) i++; else if(strcmp(p[i].score,b) > 0) i++; else if(strcmp(p[i].score,b) < 0) { fprintf(fp," %s,%c%c%c%c%c%c%c%c%c,%s &",p[i].id,p[i].name[0],p[i].name[1],p[i].name[2],p[i].name[3],p[i].name[4],p[i].name[5],p[i].name[6],p[i].name[7],p[i].name[8],p[i].score); i++; } } fclose(fp); } void main() { int n,len; student p[N]={0}; len=dos1(p,len); len=dos2(p,len); while (1) { menu(&n); switch (n) { case 1:serch(p,len); break; case 2:Sort(p,len); break; case 3:dos3(p,len); printf("合并完成\n"); break; case 4:dos4(p,len); printf("创建完成\n"); break; case 0:printf("欢迎再次使用.\n"); break; default: printf("您的输入有误,请重新输入.\n"); break; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。