学生成绩信息管理系统_课程设计报告 精品
- 格式:doc
- 大小:375.54 KB
- 文档页数:29
滁州学院课程设计报告课程名称:数据结构设计题目:学生成绩信息管理系统系别:计算机科学与技术专业:计算机科学与技术组别:第四组起止日期:11年5 月20日~ 11年6 月20 日指导教师:杨斌总体要求:格式很不符合要求,请参照模板计算机科学与技术系二0一一年制目录一、引言 (1)1.1、课程简介 (1)1.2、课程设计的背景 (1)1.3、课程设计的内容: (1)1.3.1、题目 (1)1.3.2、要求 (1)1.3.3、该功能的描述 (3)二、需求分析 (3)2.1、课程设计的题目 (3)2.2、课程设计任务 (3)2.3、课程设计要求 (3)2.4、课程设计思想 (3)2.5、软硬件运行环境 (4)2.6、开发工具 (4)三、概要设计 (4)3.1、课程设计图 (4)3.2、课程设计中的数据结构 (5)3.3、完成本课程设计所用的方法及原理 (6)四、详细设计 (6)4.1、程序源代码 (6)五、调试及操作说明 (17)5.1、成绩的合并后输出 (17)图(二)、降序排列成绩 (17)5.1.1、成绩的降序输出 (17)5.1.2、成绩的升序输出 (18)5.1.3、不及格成绩学生的信息: (19)5.1.4、查找某个学生的成绩: (20)5.1.5、课件的价值 (20)5.1.6、参考文献 (20)六、课程设计总结与体会 (21)七、组员总结 (21)“图(二)、降序排列成绩图”不要放在目录里,整体字体不对,。
,请按第三组的格式认真修改和模板的格式认真修改!!!一、引言1.1、课程简介当今社会,计算机技术和通信技术已经不断发展,处理和传输的数据量越来越庞大。
文本文件存储的方式是普通人熟悉的数据管理的方式,我们要做的就是在文本中读取数据,在程序中处理数据,生成新的数据再保留在文本文档中,供其他人应用。
1.2、课程设计的背景课程设计是为了让同学们了解学习数据结构的作用和意义。
数据结构是计算机科学与技术专业的专业基础课。
所有的计算机系统软件和应用软件都要用到各种类型的数据结构。
因此,想要更好地运用计算机来解决实际问题,仅仅掌握几门计算机程序设计语言是远远难以应付当前众多复杂的课题,想要有效地使用计算机,充分发挥它的性能,还必须学习和掌握好数据结构的有关知识,打好数据结构这门课的基础,对于学习计算机专业其它的课程,如操作系统、软件工程、编译原理、数据库、人工智能等十分有益。
1.3、课程设计的内容:1.3.1、题目学生成绩管理系统1.3.2、要求现有学生成绩信息文件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…. .. .. .(文件内容可根据测试要求,自行制定)试编写一个管理系统,要求如下:1)、实现对两个文件数据进行合并,生成新文件3.txt2)、抽取出三科成绩中有补考的学生并保存在一个新文件4.txt 3)、对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)4)、输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5)、要求使用结构体,链或数组等实现上述要求.采用多种方法且算法正确者,可适当加分.1.3.3、该功能的描述1)、对学生的姓名、学号和各科成绩的录入;2)、基本信息的查询;3)、对每位同学的成绩进行分析,并对成绩进行降序排序;二、需求分析2.1、课程设计的题目对学生成绩的管理。
2.2、课程设计任务设计一个程序实现对学生成绩的分析并进行降序处理。
2.3、课程设计要求要求使用结构体,链表或数组等实现学生成绩的查询、分类和降序排序。
2.4、课程设计思想利用文件对学生成绩等基本信息进行保存,并将其中的两文件合并成一个,生成新的文件;学生成绩的分析,将应补考的同学的基本信息保存在另一个文件中;利用合并进行降序。
2.5、软硬件运行环境Microsoft Windows XP 版本2002 Service Pack 3或以上版本Microsoft Windows 7 旗舰版2.6、开发工具Microsoft Visual C++6.0三、概要设计3.1、课程设计图图(一)、分工图3.2、课程设计中的数据结构typedef struct data{char name[10];int Xhao;int china;int math;int english;int sum;}Data;3.3、完成本课程设计所用的方法及原理利用文件对学生成绩等基本信息进行保存,并将其中的两文件合并成一个,生成新的文件;对学生成绩的分析,将应补考的同学的基本信息保存在另一个文件中;利用合并进行降序。
四、详细设计4.1、程序源代码#include<stdio.h>#include<iostream.h>#include<string.h>//为了输入字符串#include<stdlib.h>typedef struct data【1】{char name[10];int Xhao;int china;int math;int english;int sum;}Data;int k;///////////////////////////////////////////////////////////////////////////////void create(Data stu[]){int i=0;【1】FILE *fp1,*fp2;if((fp1=fopen("E:\\c语言\\课程设计作业\\t1.txt","r"))==NULL){ printf("FILE not found!\n");exit(0);}if((fp2=fopen("E:\\c语言\\课程设计作业\\t2.txt","r"))==NULL){ printf("FILE not found!\n");exit(0);}while(!feof(fp1)){fscanf(fp1,"%s%d%d%d%d",stu[i].name,&stu[i].Xhao,&stu[i].china, &stu[i].math,&stu[i].english);stu[i].sum=stu[i].china+stu[i].math+stu[i].english;i++;};i--;while(!feof(fp2)){fscanf(fp2,"%s%d%d%d%d",stu[i].name,&stu[i].Xhao,&stu[i].china, &stu[i].math,&stu[i].english);stu[i].sum=stu[i].china+stu[i].math+stu[i].english;i++;};i--;k=i;printf("学号姓名语文数学英语总分\n");for(int j=0;j<i;j++){printf("%d %-5s %d %d %d %d \n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].su m);}cout<<endl;}///////////////////////////////////////////////////////////////////////////////1、选择排序void hebing(Data stu[]){int max,jj,i;Data t;FILE *fp3;if((fp3=fopen("E:\\c语言\\课程设计作业\\t3.txt","w"))==NULL) { printf("FILE not found!\n");exit(0);}for(jj=0;jj<k;jj++){max=jj;for(i=jj+1;i<k;i++)if(stu[max].sum<stu[i].sum){t=stu[max];stu[max]=stu[i];stu[i]=t;}}for(int j=0;j<k;j++){fprintf(fp3,"%d %-5s %d %d %d %d\n",stu[j] .Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);printf("%d %-5s %d %d %d %d\n",stu[j].Xha o,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);}}///////////////////////////////////////2、直接插入排序void hebing2(Data stu[]){int t,i;Data temp;FILE *fp5;if((fp5=fopen("E:\\c语言\\课程设计作业\\t5.txt","w"))==NULL) { printf("FILE not found!\n");exit(0);}for(i=2;i<=k;i++){stu[0]=stu[i];t=i-1;while(stu[t].sum > stu[0]){stu[t+1]=stu[t];t=t-1;}stu[t+1]= stu[0];}for(int j=1;j<=k;j++){fprintf(fp5,"%d %-5s %d %d %d %d\n",stu[j] .Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);printf("%d %-5s %d %d %d %d\n",stu[j].Xha o,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);}}///////////////////////////////////////////////////////////////////////////////void bukao(Data stu[]){FILE *fp4;if((fp4=fopen("E:\\c语言\\课程设计作业\\t4.txt","w"))==NULL) { printf("FILE not found!\n");exit(0);}for(int i=0;i<k;i++){if(stu[i].china<60){fprintf(fp4,"%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].china);printf("%d--%s---%d ",stu[i].Xhao,stu[i].name,stu[i].china);fprintf(fp4,"%s\n","语文不及格:");printf("%s\n","语文不及格:");}if(stu[i].math<60){fprintf(fp4,"%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].math);printf("%d--%s---%d ",stu[i].Xhao,stu[i].name,stu[i].math);fprintf(fp4,"%s\n","数学不及格:");printf("%s\n","数学不及格:");}if(stu[i].english<60){fprintf(fp4,"%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].english);printf("%d--%s---%d",stu[i].Xhao,stu[i].name,stu[i].english);fprintf(fp4,"%s\n","英语不及格:");printf("%s\n","英语不及格:");}}}/////////////////////////////////////////////////////////////////////////////// void search(Data stu[]){int j,flag=0;char name[10];printf("输入一个学生的姓名:\n");scanf("%s",name);fflush(stdin);for(int i=0;i<k;i++){j=strcmp(name,stu[i].name);if(j==0){flag=1;printf("%d--%s--%d--%d--%d--%d\n",stu[i].Xhao,stu[i].name,stu[i].c hina,stu[i].math,stu[i].english,stu[i].sum);}}if(flag==0)cout<<"not found"<<endl;}///////////////////////////////////////////////////////////////////////////////void prf(){cout<<"#************************************************ ************#"<<endl;cout<<" #******输入“1”,降序排列成绩******结果见文本文件t3******#"<<endl;cout<<" #******输入“2”,升序排列成绩*****结果见文本文件t5****#"<<endl;cout<<" #******输入“3”,补考信息********结果见文本文件t4**#"<<endl;cout<<" #******输入“4”,查找学生信息***************#"<<endl;cout<<" #******输入“0”,结束服务***************#"<<endl;}void main(){int j=1;char ch;Data stu[20];Data A[20];prf();cout<<"请输入要执行的步骤(以1,2,3,4,5,0 ):"<<endl;scanf("%c",&ch);fflush(stdin);create(stu);for(int i=0;i<k;i++,j++)//构建哨兵数组【2】,实现直接插入排序A[j]=stu[i];while(ch!='0'){switch(ch){case'1':{cout<<"降序排列"<<endl;hebing(stu);}break;case'2':{cout<<"升序排列"<<endl;hebing2(A);}break;case'3':{cout<<"补考信息"<<endl;bukao(stu);}break;case'4':{printf("查找信息");search(stu);}break;}cout<<"请输入要执行的步骤(以1,2,3,4,0 ):"<<endl;ch=getchar();fflush(stdin);}}五、调试及操作说明5.1、成绩的合并后输出图(二)、降序排列成绩5.1.1、成绩的降序输出学号姓名语文数学英语总分2 李成友78 91 88 25732 李华明88 90 68 2461 张明明67 78 82 22731 陈果57 68 82 2073 张辉灿68 82 56 20634 李明国50 45 87 18235 陈道亮47 58 77 1824 王露56 45 77 1785 陈东明67 38 47 15233 张明东48 42 56 146 5.1.2、成绩的升序输出学号姓名语文数学英语总分33 张明东48 42 56 146 5 陈东明67 38 47 1524 王露56 45 77 17834 李明国50 45 87 18235 陈道亮47 58 77 182 3 张辉灿68 82 56 206 31 陈果57 68 82 2071 张明明67 78 82 227 32 李华明88 90 68 246 2 李成友78 91 88 257图(三)、成绩的升序排列5.1.3、不及格成绩学生的信息:31--陈果---57 语文不及格:3--张辉灿---56 英语不及格:34--李明国---50 语文不及格:34--李明国---45 数学不及格:35--陈道亮---47 语文不及格:35--陈道亮---58 数学不及格:4--王露---56 语文不及格:4--王露---45 数学不及格:5--陈东明---38 数学不及格:5--陈东明---47 英语不及格:33--张明东---48 语文不及格:33--张明东---42 数学不及格:33--张明东---56 英语不及格:图(三)、不及格学生信息5.1.4、查找某个学生的成绩:图(五)、查找信息5.1.5、课件的价值通过对代码的调试,可以成功的实现要求的功能,可以对需求的信息生成文本文档,便于操作者直接对学生成绩进行管理。