当前位置:文档之家› 南邮学生基本信息管理系统程序设计报告

南邮学生基本信息管理系统程序设计报告

程序设计报告( 2014/2015学年第二学期)题目:学生基本信息管理系统专业信息管理与信息系统组长学号姓名组员学号姓名指导教师指导单位计算机软件中心日期 2015 年 6 月 25 日学生基本信息管理系统一、课题内容和要求此系统是可实现最基本功能的学生管理系统。

具体的管理信息应包括:两个txt文件,其中a.txt为学生基本信息文件,应该包括学号、姓名、性别、宿舍号码、电话号码;b.txt 为学生成绩基本信息文件,应包括学号、课程编号、课程名称、学分、平实得分、实验成绩、卷面成绩、综合成绩、实得学分。

① a.txt文件不需要编程录入数据,可用文本编辑工具直接生成②数据录入功能: 对b.txt进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。

③学生基本情况查询1)输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。

2)输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。

④成绩查询:输入一个学号时,查询出此生的所有课程情况,⑤删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。

⑥排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。

二、需求分析学生基本信息管理系统的功能框架图如图2.1所示。

图2.1 功能框架图本次课程设计主要利用了结构体数组、结构体指针以及与文件有关的基本操作,通过采用模块化设计的思想,首先创建好各个模块的函数,然后被主函数调用。

主函数通过多次调用不同的函数实现创建文件、查询、删除学生信息模块和排序得基本功能,其总体框图如图2.1。

各个模块的程序编写比较容易,各个函数的接口是否处能理好,是本次课程设计能否成功的关键。

通过合理处理各函数得接口,使之能结合为一个完整的具有多功能的程序,从而顺利完成本次课程设计。

三、概要设计3.1主函数模块在主函数中需要输出主菜单选择界面,简单菜单的制作可利用myprint()函数实现。

获取用户的输入选择,存放在choose 中,接着判断用户是否继续选择,若选择,则重新获得用户输入;否则,推出程序,其流程图见图3.1。

图 3.1 主函数模块的流程图3.2显示菜单模块myprint()函数不需要传递参数,也不需要再定义任何变量,主要是实现输出主菜单。

其函数的流程图见图3.2.图3.2 myprint()函数的流程图3.3创建文件模块3.3创建文件模块mycreat()函数主要实现打开 b.txt文件,并通过fscanf()函数从磁盘上读取文件b.txt的学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩信息然后依据学分、平时成绩、实验成绩、卷面成绩计算得到综合成绩和实得学分并借助临时文件c.txt将综合成绩和实得学分也加到b.txt文件中。

其中第一个for循环语句主要实现计算综合成绩和实得学分的功能,通过fsanf()语句将文件 b.txt得数据一一读入,同时计算综合成绩和实得学分,并将这些数据通过fprintf语句写入临时文件c.txt。

rewind(fp)函数是将fp指示的文件位置指针置于文件开头位置,并清除文件结束标志和错误标志,以便将临时文件c.txt中的数据写入b.txt文件中。

getc与putc函数与文件指针将临时文件c.txt的信息写入b.txt文件中。

其流程图见图3.3。

其流程图见图3.3。

图3.3 mycreat()函数流程图3.4显示信息模块设计本模块主要设计mydisplay(……)函数。

将文件b.txt的数据通过fscanf()语句写入内存,然后通过printf()语句将读到的信息显示到屏幕上。

若文件中无记录,则显示文件中没有记录。

其流程图见图3.4。

图3.4 显示信息模块流程图3.5查询模块的设计本模块主要设计mysearch(……)函数、mysearchbase(……)函数、mysearchscore(……)函数、print()函数。

mysearchbase(……)函数的流程图见图3.5,sch_num ()函数的流程图见图3.6, sch_name()函数的流程图见图3.7, sch_dom()函数的流程图见图3.8。

mysearch (……)函数主要是查询菜单的显示、输出你要查询的信息。

查询菜单主要包括查询基本情况和查询成绩。

它首先在屏幕上显示查询显示菜单,然后利用getch()与if语句判断查询方式以确定需要调用的函数。

数据结构说明:学生结构体数组同3.3.c 选择的不同方式tempnum[10] 要查询的学号tempname[10] 要查询的姓名tempdom[10] 要查询的宿舍号码图图3.6 sch_num ()函数的流程图图3.7 sch_name()函数的流程图图3.8 sch_dom()函数的流程图3.5.2查询成绩信息模块设计本模块主要设计mysearchscore(……)函数。

mysearchscore(……)用绩信息。

其流程图见图3.9schscore_num ()询学生成绩。

其流程图见图3.10图3.9 mysearchscore()图3.10 schscore_num()函数的流程图3.6删除信息模块设计本模块主要设计mydelete(……)函数。

mydelete (……)函数按学号删除信息。

先以只读方式打开文件,进行读取。

如找到相应的信息,结束本次循环,并将a.txt 文件删除后的数据写入临时文件c.txt 中,同时释放文件a.txt 的空间。

再创建一个文件a.txt ,并将临时文件c.txt中的数据一次通过fpintf()语句写到文件a.txt上。

如没有找到则显示文件中无此信息。

文件b.txt的删除与文件a.txt类似。

mydelete()模块的流程图见图3.11。

del_num ()函数实现按学号删除学生成绩。

由于任务要求在文件a.txt中删除某学生的基本信息,在文件b.txt中该生的成绩信息也相应的被删除,所以需要通过学号对文件a.txt与b.txt均进行删除操作。

这是定义函数del_num ()的关键,其流程图见图3.12。

(其中对b.txt的操作与对文件a.txt的操作相似,在此仅画出对文件a.txt的操作)数据结构说明:学生结构体数组同3.3. c 选择的不同方式tempnum[10] 要删除学生的学号FILE *fp *fp1 文件指针图3.11 mydelete()模块的流程图图3.12 函数del_num ()的流程图3.7排序模块设计本模块主要设计mysort(……)函数、print()函数。

mysearchsort(……)函数主要是排序菜单的显示、输出排序后的信息。

排序菜单主要包括按综合成绩和实得学分两种方式实现升序与降序不同方式得排序。

它首先在屏幕上显示排序显示菜单,然后利用getch()与if语句判断排序方式以确定需要调用的函数,然后以只读方式打开文件,进行读取。

通过插入排序法分别实现不同的排序方式。

如找到相应的信息,则将该信息通过调用printf()函数输出到屏幕上。

所谓插入排序就是将无序序列中的各各元素依次插入到已经有序的线性表中。

mysort (……)函数的流程图见图3.13,sort_sumscore ()函数的流程图见图图3.13 mysort (……)函数的流程图四、源程序代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define N 100struct student{char num[10];char name[10];char tel[11];char sex[2];int dom; /*宿舍*/char cousenum[3]; /*课程编号*/float cousecount; /*课程学分*/char cousename[25]; /*课程名称*/float comscore; /*平时成绩*/signed int expscore; /*实验成绩*/float paperscore; /*卷面成绩*/float sumscore;/*综合成绩*/float count; /*实得学分*/}stu[12];/* 以下是函数原型说明,被调函数的定义在主调函数后面时,要加此部分*/ void myprint(); /*创建主菜单*/void mycreate(); /*创建管理系统*/void mydisplay(); /*显示*/void mysearchbase(); /*基本情况查询*//* schbase_num sch_dom与schbase_name函数被mysearchbase调用*/void sch_num(FILE *fp);void sch_name(FILE *fp);void sch_dom(FILE *fp);void mysearch(); /*查询*/void mysearchscore(); /*成绩查询*/void schscore_num(FILE *fp,FILE *f); /*成绩查询*/void mydelete(); /*删除*//* del_num函数被mydelete调用*/void del_num(FILE *fp,FILE *f);void mysort(); /*排序*/void sort_sumscore();void sort_count();/*主函数*/void main(){char choose,yes_no;/* system("color 8e");system("cls");*/do{myprint(); /* 显示主菜单*/printf(" ");choose=getch();switch(choose){case '1': mycreate(); break; /* 创建*/case '2': mydisplay(); break; /* 显示*/case '3': mysearch(); break; /*查询*/case '4': mydelete(); break; /* 删除*/case '5': mysort(); break; /* 排序*/case '0': break;default:printf("\n %c为非法选项!\n",choose);}if(choose=='0')break;printf("\n 要继续选择吗(Y/N)?\n");do{yes_no=getch();}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');}while(yes_no!='Y'||yes_no!='y');}void myprint() /* 显示菜单界面*/{/* clrscr(); */printf("\n\n\n\n\n\n\n\n");printf(" 学生管理系统\n ");printf("\n");printf(" |*************************************************************|\n");printf(" | 请输入选项编号(0-5): |\n");printf(" |-----------------------------------------|\n");printf(" | 1--创建学生信息|\n");printf(" | 3--查询学生信息|\n");printf(" | 4--删除学生信息|\n");printf(" | 5--排序学生信息|\n");printf(" | 0--退出|\n");printf(" |-----------------------------------------|\n");printf(" |*****************************************************************|\n");printf("\n");printf(" 欢迎进入学生管理系统——请选择要进行的操作!\n ");}/* 定义创建信息管理系统的函数*/void mycreate(){int i,n;FILE *fp;fp=fopen("e:\\源程序2\\b.txt","r+");if(fp==NULL){printf("\n 打开文件失败!\n");return;}rewind(fp);printf("\n\n");printf("\t\t\t\t请输入学生个数");scanf("%d",&n);for(i=0;i<n;i++){printf("请输入学生学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩\n");scanf("%s %s%s %f %f %d %f" ,&stu[i].num ,&stu[i].cousenum,&stu[i].cousename,&stu[i].cousecount, &stu[i].comscore,&stu[i].expscore,&stu[i].paperscore);}for(i=0;i<n;i++){if( stu[i].expscore==-1)stu[i].sumscore=stu[i].comscore*3/10+stu[i].paperscore*7/10;elsestu[i].sumscore= stu[i].comscore*15/100+ stu[i].expscore*15/100+ stu[i].paperscore*7/10;if(90<stu[i].sumscore&&stu[i].sumscore<=100)stu[i].count=stu[i].cousecount;if(80<stu[i].sumscore&&stu[i].sumscore<=90)if(70<stu[i].sumscore<=80)stu[i].count=stu[i].cousecount*3/4;if(60<=stu[i].sumscore&&stu[i].sumscore<=70)stu[i].count=stu[i].cousecount*3/5;if(stu[i].sumscore<60)stu[i].count=0;fprintf(fp,"%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",stu[i].num ,stu[i].cousenum,stu[i] .cousename,stu[i].cousecount,stu[i].comscore,stu[i].expscore,stu[i].paperscore,stu[i].sumscore,stu[i].count);}fclose(fp);printf("创建成功!!\n\n");}/* 定义显示信息管理系统的函数*/void mydisplay(){ int i=0;int n=0;struct student temp;FILE *fp;fp=fopen("e:\\源程序2\\b.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;}printf("\n学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分\n");while(feof(fp)==0){fscanf(fp,"%s%s%s%f%f%d%f%f%f\n",&stu[i].num ,&stu[i].cousenum,&stu[i].cousename,&stu[i].cous ecount,&stu[i].comscore,&stu[i].expscore,&stu[i].paperscore,&stu[i].sumscore,&stu[i].count);printf("%-4s %-7s %-12s%-5.0f %-8.2f %-5d %-8.2f %-8.2f %-8.2f\n",stu[i].num ,stu[i].co usenum,stu[i].cousename,stu[i].cousecount,stu[i].comscore,stu[i].expscore,stu[i].paperscore,stu[i].sumscore,st u[i].count);n++;}printf("\n 文件中无记录!\n");elseprintf("\n 文件中共有%d个记录!\n",n);fclose(fp);}/* 定义查询信息的函数*/void mysearch(){char c;FILE *fp;fp=fopen("e:\\源程序2\\a.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;}printf("\n 查询基本信息(b),还是查询成绩(r)?");c=getch();if(c=='b'||c=='B')mysearchbase(); /* 查询基本信息*/ if(c=='r'||c=='R')mysearchscore(); /* 查询成绩*/ if(c!='b'&&c!='B'&&c!='r'&&c!='R')printf("\n 非法字符!\n");fclose(fp);}/* 定义查询信息管理系统的函数(基本情况)*/void mysearchbase(){char c;FILE *fp;fp=fopen("e:\\源程序2\\a.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;printf("\n 按学号查询(h),按姓名查询(m),还是按宿舍查询(d)?");c=getch();if(c=='h'||c=='H')sch_num(fp); /* 按学号查询*/else if(c=='m'||c=='M')sch_name(fp); /* 按姓名查询*/else{if(c=='d'||c=='D')sch_dom(fp); /* 按宿舍查询*/elseprintf("\n 非法字符!\n");}fclose(fp);}/* 定义按学号查询信息管理系统的函数(基本情况)*/void sch_num(FILE *fp){int flag=0,n=0;char tempnum[10];struct student temp;FILE *fp1;fp1=fopen("e:\\源程序2\\a.txt","r");printf("\n 请输入要查询的学号:");gets(tempnum);while(feof(fp)==0){fscanf(fp,"%10s%25s%5s%8d%15s\n",&temp.num,&,&temp.sex,&temp.dom,&temp.tel);if(strcmp(tempnum,temp.num)==0){if(flag==0)printf(" 学号姓名性别宿舍电话号码\n");printf("%10s,%18s,%8s,%12d,%13s\n",temp.num,,temp.sex,temp.dom,temp.tel);flag=1;n++;}if(n==0)printf("\n 文件中无记录!\n");else{if(flag==0)printf("\n 文件中无此人!\n");}fclose(fp1);}/* 定义按姓名查询信息管理系统的函数(基本情况)*/void sch_name(FILE *fp){int flag=0,n=0;char tempname[10];struct student temp;FILE *fp1;fp1=fopen("e:\\源程序2\\a.txt","r");printf("\n 请输入要查询记录的姓名:");gets(tempname);while(feof(fp)==0){fscanf(fp,"%10s%25s%5s%8d%15s\n",&temp.num,&,&temp.sex,&temp.dom,&temp.tel);if(strcmp(tempname,)==0){if(flag==0)printf(" 学号姓名性别宿舍电话号码\n");printf("%10s,%18s,%8s,%12d,%13s\n",temp.num,,temp.sex,temp.dom,temp.tel);flag=1;}n++;}if(n==0)printf("\n 文件中无记录!\n");else{if(flag==0)printf("\n 文件中无此人!\n");}fclose(fp1);}/* 定义按宿舍查询信息管理系统的函数(基本情况)*/void sch_dom(FILE *fp){int flag=0,n=0;int i;int tempdom;FILE *fp1;fp1=fopen("e:\\源程序2\\a.txt","r");printf("\n 请输入要查询记录的宿舍:");scanf("%d",&tempdom);printf("\n");for(i=0;i<4;i++){ while(feof(fp)==0){ fscanf(fp,"%10s%25s%5s%8d%15s\n",stu[i].num,stu[i].name,stu[i].sex,&stu[i].dom,stu[i].tel);if(tempdom==stu[i].dom){if(flag==0)printf(" 学号姓名性别宿舍电话号码\n");printf("%10s,%18s,%8s,%12d,%13s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].dom,stu[i].tel);flag=1;n++;}}}if(n==0)printf("\n 文件中无记录!\n");elseprintf("\n 此宿舍有%d人!\n",n);fclose(fp1);}/*定义查询信息管理系统的函数(成绩查询)*/void mysearchscore()FILE *fp,*f;f=fopen("e:\\源程序2\\a.txt","r");fp=fopen("e:\\源程序2\\b.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;}schscore_num(fp,f);/* printf("\n 请输入要查询的学号");c=getch();*/fclose(f);fclose(fp);}/* 定义按学号查询信息管理系统的函数(成绩查询)*/void schscore_num(FILE *fp,FILE *f){int n=0;float flag=0;char tempnum[10];struct student temp;printf("\n 请输入要查询的学号:");gets(tempnum);while(feof(f)==0){fscanf(f,"%10s%25s%5s%8d%15s\n",&temp.num,&,&temp.sex,&temp.dom,&temp.tel);if(strcmp(tempnum,temp.num)==0){printf(" 学号姓名\n");printf(" %10s %25s\n",temp.num,);}}printf("课程编号课程名称综合成绩实得学分\n");while(feof(fp)==0){fscanf(fp,"%s%s%s%f%f%d%f%f%f\n",&temp.num,&temp.cousenum,&temp.cousename,&temp.cousec ount,&score,&temp.expscore,&temp.paperscore,&temp.sumscore,&temp.count);if(strcmp(tempnum,temp.num)==0){printf("%s%30s%20.2f%17.2f\n",temp.cousenum,temp.cousename,temp.sumscore,temp.count);flag+=temp.count;n++;}}if(n==0)printf("\n 文件中无记录!\n");else{if(flag==0)printf("\n 文件中无此人!\n");else{printf("共修学科:");printf("%d",n);printf("\n实得总学分为:");printf("%7.2f",flag);printf("\n");}}}/* 定义删除信息管理系统的函数*/void mydelete(){FILE *fp,*f;f=fopen("e:\\源程序2\\b.txt","r");fp=fopen("e:\\源程序2\\a.txt","r+");if(fp==NULL||f==NULL){printf("\n 打开文件失败!\n");return;}del_num(fp,f);}/* 定义按学号删除信息管理系统的函数*/void del_num(FILE *fp,FILE *f){ int t;FILE *fp1;char tempnum[10];struct student temp;printf("\n 请输入要删除记录的学号:");gets(tempnum);fp1=fopen("e:\\源程序2\\c.txt","w+");//保存a.TXT删除后的数据while(feof(fp)==0){fscanf(fp,"%s%25s%5s%8d%15s\n",&temp.num,&,&temp.sex,&temp.dom,&temp.tel);if(strcmp(tempnum,temp.num)==0) continue;fprintf(fp1,"%5s %20s %5s %8d%15s\n",&temp.num,&,&temp.sex,&temp.dom,&temp.tel);}//重新删除后的数据写回a.TXTremove("e:\\源程序2\\a.txt");fp=fopen("e:\\源程序2\\a.txt","w+");rewind(fp1);t=getc(fp1);while(!feof(fp1)){putc(t,fp);t=getc(fp1);}fclose(fp);//保存b.TXT删除后的数据fp1=fopen("e:\\源程序2\\c.txt","w+");while(feof(f)==0){fscanf(f,"%s%s%s%f%f%d%f%f%f\n",&temp.num,&temp.cousenum,&temp.cousename,&temp.cousecount, &score,&temp.expscore,&temp.paperscore,&temp.sumscore,&temp.count);if(strcmp(tempnum,temp.num)==0) continue;fprintf(fp1,"%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",temp.num ,temp.cousenum,temp.cou sename,temp.cousecount,score,temp.expscore,temp.paperscore,temp.sumscore,temp.count);}//重新删除后的数据写回b.TXTf=fopen("e:\\源程序2\\b.txt","w+");rewind(fp1);t=getc(fp1);while(!feof(fp1)){putc(t,f);t=getc(fp1);}fclose(f);fclose(fp1);remove("e:\\源程序2\\c.txt");}/* 定义排序信息管理系统的函数*/void mysort(){char c;FILE *fp;fp=fopen("e:\\源程序2\\b.txt","a+");if(fp==NULL){printf("\n 打开文件失败!\n");return;}fclose(fp);printf("\n 按实得学分排序(c),还是按综合成绩排序(s)?");c=getch();if(c=='s'||c=='S')sort_sumscore(); /* 按综合成绩排序*/ else if(c=='c'||c=='C')sort_count(); /* 按实得学分排序*/elseprintf("\n 非法字符!\n");}/* 定义按综合成绩排序学生管理系统的函数*/void sort_sumscore(){ char c;int n=0;int j,k;FILE *fp;float a[12];fp=fopen("e:\\源程序2\\b.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;}while(feof(fp)==0){ fscanf(fp,"%s%s%s%f%f%d%f%f%f\n",&stu[i].num ,&stu[i].cousenum,&stu[i].cousename,&stu[i ].cousecount,&stu[i].comscore,&stu[i].expscore,&stu[i].paperscore,&stu[i].sumscore,&stu[i].count);a[i]=stu[i].sumscore;i++;}//插入排序for( k=1;k<12;k++)for( j=k;(j>0)&&(a[j]<a[j-1]);j--){float d=a[j];a[j]=a[j-1];a[j-1]=d;}printf("\n 按升序(u),还是按降序(d)?\n\n");c=getch();if(c=='u'||c=='U') /* 按综合成绩的升序排列*/for(j=0;j<12;j++){for(k=0;k<12;k++)if(a[j]==stu[k].sumscore){printf("%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",stu[k].num ,stu[k].cousenum,stu[k].couse name,stu[k].cousecount,stu[k].comscore,stu[k].expscore,stu[k].paperscore,stu[k].sumscore,stu[k].count);break;}}else if(c=='d'||c=='d')for( j=11;j>=0;j--){for(k=0;k<12;k++)if(a[j]==stu[k].sumscore)printf("%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",stu[k].num ,stu[k].cousenum,stu[k].c ousename,stu[k].cousecount,stu[k].comscore,stu[k].expscore,stu[k].paperscore,stu[k].sumscore,stu[k].count);break;}}elseprintf("\n 错误字符!\n");fclose(fp);}/* 定义按实得学分排序学生管理系统的函数*/void sort_count(){char c;int i=0;int n=0;int j,k;FILE *fp;float a[12];float b[12];fp=fopen("e:\\源程序2\\b.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;}while(feof(fp)==0){ fscanf(fp,"%s%s%s%f%f%d%f%f%f\n",&stu[i].num ,&stu[i].cousenum,&stu[i].cousename,&stu[i ].cousecount,&stu[i].comscore,&stu[i].expscore,&stu[i].paperscore,&stu[i].sumscore,&stu[i].count);a[i]=stu[i].count;i++;}//插入排序for( k=1;k<12;k++)for( j=k;(j>0)&&(a[j]<a[j-1]);j--){float d=a[j];a[j]=a[j-1];a[j-1]=d;}for(k=0;k<12;k++)b[k]=stu[k].count;printf("\n 按升序(u),还是按降序(d)?\n\n");c=getch();if(c=='u'||c=='U') /* 按综合成绩的升序排列*/{for(j=0;j<12;j++){for(k=0;k<12;k++)if(a[j]==stu[k].count){printf("%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",stu[k].num ,stu[k].cousenum,stu[k].couse name,stu[k].cousecount,stu[k].comscore,stu[k].expscore,stu[k].paperscore,stu[k].sumscore,stu[k].count);stu[k].count=0;break;}}for(k=0;k<12;k++)stu[k].count=b[k];}else if(c=='d'||c=='d'){for( j=11;j>=0;j--){for(k=0;k<12;k++)if(a[j]==stu[k].count){printf("%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",stu[k].num ,stu[k].cousenum,stu[k].c ousename,stu[k].cousecount,stu[k].comscore,stu[k].expscore,stu[k].paperscore,stu[k].sumscore,stu[k].count);stu[k].count=0;break;}}for(k=0;k<12;k++)stu[k].count=b[k];}else{printf("\n 错误字符!\n");}fclose(fp);}五、测试数据及其结果分析测试截图请自行完成结果分析如下。

相关主题