学生成绩管理系统数据结构课程设计

  • 格式:doc
  • 大小:226.00 KB
  • 文档页数:30

《算法与数据结构课程设计》综合实验课程设计名称:学生成绩管理系统专业:计算机科学与技术学生成绩管理系统一、问题的描述和分析1.1问题的描述随着社会的发展和经济时代的到来,管理信息系统在各行各业都越来越重要,特别是教育事业。

在经济发达的国家,许多教育机构(如公办、私立、培训机构等),都投入了大量的资金开发MIS系统,以求在将来激烈的竞争中立于不败之地。

在我国,民办教育是新兴的一个行业,是随着改革开放和市场经济的发展根据中国特有的国情发展起来的,特别是中国民办教育促进法的出台,从一定的程度上规范和促进了中国民办教育的发展,这是一个很有发展前途的新兴产业,但是同发达国家相比,我国的民办教育行业的信息技术的应用程度还很低,只有在大城市中发展较早、规模较大的民办院校中才使用计算机进行大规模操作,从各方面提高工作效率,取得良好的社会和经济效益,而一些新兴的、规模较小的民办机构还没有全部具备这种功能。

因此可见,随着我国民办教育的迅速发展,信息技术在其上的应用会更加地广泛和深入。

1.2现有系统存在问题的分析有的学校根本就没有系统,还是手工操作计算机日新月异的发展,但是有的领导只见眼前利益,不关心,甚至不敢尝试新兴的事物。

手工操作还十分落后,效率极低,成本很大,以后的社会是信息的社会,信息只有快,准,精才能发挥其价值。

所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。

人工操作必将被计算机代替。

有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。

还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统能有保障吗?所以制作一个完善的学生管理系统是必不可少的。

二、数据结构的设计struct person{char name[20];long num;float math;float English;float chinese;float average;float sum;}student;三、模块:学生成绩管理系统模块四、算法的设计1.在此成绩管理系统中,要求用户输入的只是有字符型和数值型数据,所以我设计了下面函数来处理并对输出的数据进行检验。

int N=0;Enter(){FILE *fp;char ch;char ch2;char numstr[20];struct person student2;clrscr();fp=fopen("jie.txt","ab");if(fp==NULL){printf("can't open thisfile.\n");printf("wait for a second with patience.\nthe system is exiting.\n");getch();exit(0);}else{do{printf("your name:");gets();printf("\nyour num:");gets(numstr);student.num=atol(numstr);printf("\nyour math:");gets(numstr);student.math=atof(numstr);printf("\nyour English:"); gets(numstr);student.English=atof(numstr);printf("\nyour chinese:");gets(numstr);student.chinese=atof(numstr);student.sum=student.chinese+student.mat h+student.English;student.average=student.sum/3;fwrite(&student,sizeof(struct person),1,fp);N++;printf("Do you continue adding other students(Y/N)?\n");ch=getchar();getchar();}while(ch=='y'||ch=='Y');}printf("Show all(Y/N)?\n");ch2=getchar();getchar();if(ch2=='y'||ch2=='Y')Listall();fclose(fp);return_confirm();clrscr();}2.查询学生记录当用户执行此查询任务时,系统会提示用户进行查询字段的选择,即按学号或按姓名进行查询。

若此学生记录存在,则会打印输出此学生记录的信息。

Search(){char choice;char ch1;char ch2;char ch3;char ch4;char name[20];long num;char numstr[20];clrscr();printf("***WAYS OFSEARCHING***\n");printf("---------------------------\n");printf("** **\n");printf("** 2.num **\n");printf("----------------------------\n" );printf("give your choice:\n");choice=getchar();getchar();while(choice>'2'||choice<'1'){printf("Sorry.your choice is wrong.\nplease give a correct one:\n"); choice=getchar();getchar();}3.根据姓名或学号进行查找switch(choice){case '1':do{Loop1:printf("input the name of students you want to search:\n");gets(name);Search1(name);printf("GO ON SEARCHING BY NAEM(Y/N)?\n"); ch2=getchar();getchar();}while(ch2== 'y'||ch2=='Y');printf("Search by other ways(Y/N)?\n");ch3=getchar(); getchar();if(ch3=='y'||ch3=='Y')goto Loop2; break;case '2':do{Loop2:printf("input the num of students you want to search:\n");gets(numstr);num=atol(numstr);Search2(num); printf("GO ON SEARCHING BY NUM(Y/N)?\n");ch1=getchar();getchar();}while(ch1=='y'|| ch1=='Y');}}Search2(long num){FILE *fp;char ch;int flag=0;int t;clrscr();fp=fopen("jie.txt","rb");if(fp==NULL){printf("can't open thisfile.\n");printf("wait for a second withpatience.\nthe system is exiting.\n"); getch();exit(0);}else{flag=0;t=0;while(fread(&student,sizeof(struct person),1,fp))if(num==student.num){printf("name\t\tnum\tchinese\tEnglish\t math\sum\taverage\n");printf("%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8 .2f%-8.2f\n",,student.num,s tudent.chinese,student.English,student. math,student.sum,student.average);t=1;break;}if(t==0)printf("Sorry.the student you are searching notexisted.\n");rewind(fp);}fclose(fp);}Search1(char *name){FILE *fp;char ch;int flag=0;int t;clrscr();fp=fopen("jie.txt","rb");if(fp==NULL){printf("can't open thisfile.\n");printf("wait for a second with patience.\nthe system is exiting.\n"); getch(); exit(0);}else{flag=0;t=0;while(fread(&student,sizeof(struct person),1,fp))if((strcmp(name,))==0){printf("name\t\tnum\tchinese\tEnglish\t math\sum\taverage\n");printf("%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8 .2f%-8.2f\n",,student.num,s tudent.chinese,student.English,student. math,student.sum,student.average);t=1;break;}if(t==0)printf("Sorry.the student you are searching not existed.\n");rewind(fp);}fclose(fp);}Delete(){FILE *fp;struct personstudent1[30],student2[30];int i;int k;int j;int flag;char ch1;char name[20];char ch;char ch2;clrscr();fp=fopen("jie.txt","rb+");if(fp==NULL){printf("can't open thisfile.\n");printf("wait for a second with patience.\nthe system is exiting.\n"); getch();exit(0);}else{do{i=0;j=0;flag=0;printf("input the name of students you are going to delete.\n"); scanf("%s",name);while(fread(&student,sizeof(struct person),1,fp)==1){if((strcmp(name,))!=0){student2[j]=student;j++;}else{flag=1;printf("name\t\t\tnum\tchinese\t\tEngli sh\t\tmath\tsum\taverage\n");printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f% 8.2f\n",,student.num,studen t.chinese,student.English,student.math, student.sum,student.average);printf("Delete(Y/N)?\n");ch1=getchar(); getchar();toupper(ch);if(ch=='N')goto Loop; } }printf("j=%d\n",j);k=j;i=0;fclose(fp);if(flag==0)printf("Sorry.the student you are searching not existed.\n");if(flag==1)printf("Congratulation!yousucceed!!!\n");fp=fopen("jie.txt","wb+"); if(fp==NULL){printf("can't open this file.\n");printf("wait for a second with patience.\nthe system is exiting.\n");getch();exit(0);}else{i=0;do{fwrite(&student2[i],sizeof(struct person),1,fp);i++;}while(i<k);}Loop:getchar();printf("Go on(Y/N)?\n"); ch=getchar();getchar();}while(ch=='y'||ch=='Y');printf("Show all(Y/N)?\n");ch2=getchar();getchar();if(ch2=='y'||ch2=='Y'){rewind(fp);printf("name\t\t\tnum\tchinese\t\tEnglish\t\tmath\tsum\taverage\n");while(fread(&student,sizeof(struct person),1,fp)){printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f% 8.2f\n",,student.num,studen t.chinese,student.English,student.math, student.sum,student.average);}}}fclose(fp);return_confirm();}4.修改学生记录在修改学生记录操作中,系统会先按输入的学号或姓名查找该记录,然后提示用户修改学号或姓名之外的值,但学号或姓名不能修改。