学生成绩信息管理系统《C语言程序设计》项目设计报告项目名称:学生成绩信息管理系统2016年1月13日学生成绩信息管理系统目录1项目分析...............................................11.1问题描述.........................................................................................................11.2功能需求分析.................................................................................................12系统设计...............................................22.1数据结构设计.................................................................................................22.3部分功能设计..................................................................................................23系统实现源程序.........................................43.1主函数设计.....................................................................................................43.2添加学生信息.................................................................................................53.3姓名学号查询...............................................................................................103.4成绩查询.......................................................................................................123.5删除学生成绩信息.......................................................................................133.6修改学生成绩信息.......................................................................................144功能测试..............................................164.1菜单测试.......................................................................................................164.2系统功能测试...............................................................................................165系统设计遇到的问题及解决方法..........................216项目设计总结..........................................22学生成绩信息管理系统11项目分析1.1问题描述信息储存与查询是计算机处理数据的优势之一,目前,学生信息的管理系统已经完全走进了校园,其中成绩信息的储存是主要部分,本课题使用C语言实现学生成绩的储存,查询,修改,以及删除等操作。程序中涉及到数据块和文件指针的操作,包括结构体数据定义,使用及文件的读写,定位,修改等。1.2功能需求分析学生成绩信息管理系统的主要功能如下:①添加学生信息:录入学生的基本信息,如姓名,学号,成绩。②显示所有学生成绩信息:直接显示已经全部录入学生的成绩信息。③学号或姓名查询:可以根据学生的姓名和学号直接查询该名学生的成绩。④成绩查询:可以根据一个特定的分数来查询学生的信息。⑤删除学生成绩信息:可以直接根据学号确定是否删除对应学生的成绩信息。⑥修改学生成绩信息:直接根据学生学号来修改学生的姓名,学号,成绩。图1-1系统功能模块图学生成绩信息管理系统添加学生信息显示所有学生成绩信息学号或姓名查询成绩查询删除学生成绩信息修改学生成绩信息重新添加信息继续添加信息学生成绩信息管理系统22系统设计2.1数据结构设计2.2函数设计表1函数列表序号函数原型功能说明1voidaddnew()新增学生姓名,学号,成绩信息2voidaddold()在原有基础上继续增加其他同学的信息3voidprintall()显示所有已经存入学生的成绩等信息4voidsearch()根据姓名或者学号查询学生分数5voidjgsearch()根据成绩查询对应的同学6voiddel()删除学生信息7voidmodify()修改学生信息8system(“cls”);清屏2.3部分功能设计1.删除学生的信息,输入学生的学号进行删除操作,如果没有此人,系统将会提示无此人,如果找到,系统将会确认你是否需要删除,流程图如1-2所示。structstu//定义结构体类型{charname[10];//姓名charnum[10];//学号charscore[10];//成绩}if((fp1=fopen(Ca1.txt,w))==NULL)//文件名,使用文件方式{printf(信息写入失败);exit(0);charwjm[20];//文件名学生成绩信息管理系统3图1-2删除学生信息流程图2.输入学号进行查询对应同学的成绩,流程图如图1-3所示。Yes输出删除成功结束开始输入学号在文件里查找输出文件无此人确认删除输入1输入0是否找到NoYes学生成绩信息管理系统4图1-3查询功能流程图3系统实现源程序3.1主函数设计voidmain(){intx;system(cls);/*清屏*/do{printf(\n欢迎使用学生成绩信息管理系统\n\n\n\n\n);printf(1---------添加学生信息\n\n);printf(2---------显示所有学生成绩信息\n\n);printf(3---------学号或姓名查询\n\n);YesNo开始输入学号或姓名在文件中查找是否找到输出姓名,学号,成绩结束输出文件无此人记录学生成绩信息管理系统5printf(4---------成绩查询\n\n);printf(5---------删除学生成绩信息\n\n);printf(6---------修改学生成绩信息\n\n);printf(0---------退出);printf(请您选择:);choice:scanf(%d,&x);switch(x){case1:add();break;case2:printall();break;case3:search();break;case4:jgsearch();break;case5:del();break;case6:modify();break;case0:break;default:printf(\n错误的选择,请重新选择:);gotochoice;}}while(x!=0);system(cls);printf(\n\n欢迎再次使用学生成绩管理系统\n);}3.2添加学生信息/*学生成绩信息管理系统*/#includestdio.h#includestdlib.h#includestring.hintc,j,t;structstu/*定义结构体类型*/{charname[10];charnum[10];charscore[10];}student[100],newstudent[100];/*添加学生个人信息*/voidaddnew(){inta,b,k;学生成绩信息管理系统6FILE*fp,*fp1,*fp2;/*FILE类型指针变量的定义形式*/for(a=0;a200;a++){system(cls);printf(欢迎使用学生成绩管理系统\n\n\n);printf(录入学生信息\n\n);printf(输入学生姓名:);scanf(%s,&student[a].name);printf(输入学生学号:);scanf(%s,&student[a].num);printf(输入学生成绩:);scanf(%s,&student[a].score);printf(输入‘1’继续,‘0’结束\n);/*判断输入是否结束*/scanf(%d,&b);if(b==0){c=a;system(cls);break;}}if((fp1=fopen(Ca1.txt,w))==NULL)/*文件名,使用文件方式*/{printf(信息写入失败);exit(0);}if((fp2=fopen(Ca2.txt,w))==NULL){printf(信息写入失败);exit(0);}if((fp=fopen(Ca3.txt,w))==NULL){printf(信息写入失败);exit(0);}j=sizeof(structstu);for(a=0;a=c;a++){if(fwrite(&student[a],j,1,fp)!=1)printf(存入失败!);}for(a=0;a=c;a++){if(strcmp(student[a].score,80)==0){fwrite(&student[a],j,1,fp1);}else{fwrite(&student[a],j,1,fp2);学生成绩信息管理系统7}}printf(添加成功!\n\n);printf(请输入'0'返回\n);scanf(%d,&k);fclose(fp1);fclose(fp2);fclose(fp);if(k==0)system(cls);}/*继续添加成员*/voidaddold(){inta,b,k,p,q;charwjm[20];FILE*fp;j=sizeof(structstu);system(cls);printf(欢迎使用学生成绩信息管理系统\n\n\n);printf(录入学生信息\n\n);printf(\n\n存储文件名有Ca1.txtCa2.txtCa3.txt\n\n);printf(请输入想继续添加的文件名:);scanf(%s,wjm);for(a=0;a200;a++){printf(输入学生姓名:);scanf(%s,&newstudent[a].name);printf(输入学生学号:);scanf(%s,&newstudent[a].num);printf(输入学生成绩:);scanf(%s,&newstudent[a].score);printf(输入‘1’继续,‘0’结束\n);//判断输入是否结束scanf(%d,&b);if(b==0){c=a;system(cls);break;}}学生成绩信息管理系统8if((fp=fopen(wjm,r))==NULL){printf(文件打开失败!);exit(0);}a=0;while(!feof(fp)){fread(&student[a],j,1,fp);a++;}fclose(fp);t=a-1;for(q=0,p=t;q=c,p=t+c;q++,p++){strcpy(stud