学生成绩管理系统课程设计报告.doc_第1页
学生成绩管理系统课程设计报告.doc_第2页
学生成绩管理系统课程设计报告.doc_第3页
学生成绩管理系统课程设计报告.doc_第4页
学生成绩管理系统课程设计报告.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告书学生成绩管理系统1.选择题目题目:学生成绩管理系统2.内容摘要摘要:对于学校而言,学生成绩体现了学生综合素质的某一方面。而学生成绩管理又是体现学校的综合管理能力的一个重要标准。实行电子化的学生成绩管理,可以让学生成绩管理人员从繁重琐碎的案头工作解脱出来,去完成更重要的工作。本文介绍课程设计课题的选题意义,说明了本系统提供的主要功能,并画出功能框图,对设计思路、数据库设计、研究开发的过程、实现细节、开发工作进行了比较完整的综述,最后给出了作者在小学期设计过程的体会。 3.索引关键字关键词:数据库,学生成绩管理,功能框图4.目录1. 题目要求-42. 设计思想-53. 系统完成功能及框图-64. 界面设计-65. 核心算法及说明-86. 结论-107. 后记-158. 参考资料-179. 附录-185正文(1) 题目要求能够实现输入记录,查询记录,更新记录,统计记录,输出记录等功能。(2) 设计思想在设计时考虑以下几个方面:1. 操作简单。因为使用者多为非计算机专业人员,所以该系统要求设计的界面美观,操作方便。要充分考软件界面友好和操作方便,便愈使用人员快速上手。易于维护。一个软件的好坏,关键在于产品的可靠,稳定,便于维护。易于升级。随着社会的发展,对系统的要求会越来越高。要求系统具有更高的安全性;更丰富的功能以及更快的操作速度。所以在设计时要考虑到到以后的升级问题。2开发语言的选择 运用高级语言编程技巧,visualc+中提供的标准库函数,特殊的编程软件工具及数组,指针,结构体,文件等相关操作实现对程序的优化,使编程语言简单易懂且便于操作。(3) 系统完成功能及框图学生成绩管理系统主要利用数组来实现,其数组元素是结构体类型。整个系统由五项功能1 输入记录模块主要完成将数据存入结构体数组中,从键盘逐个输入记录。记录由学生的基本信息和成绩信息字段组成。当从数据文件中读入记录时,它就是在以记录为单位存储在数据文件中将记录逐条复制到数组元素中。void input() file *fp; stu xs; /*定义一个结构体变量来装从文件中读出来的数据*/ if(fp=fopen(student.dat,ab)=null) printf(cant open file!n);exit(0); printf(n 姓名 学号 计算机 数学 英语 当输入姓名为ps结束录入n); while(1) /*中间加入break,可使循环中断*/ scanf(%s,); if(strcmp(,ps)=0) break;/*判断姓名是否为ps,用字符串判断*/ scanf(%d%f%f%f,&xs.num,&puter,&xs.math,&xs.english); fwrite(&xs,sizeof(stu),1,fp); /将成绩信息写入文件 fclose(fp);2 更新记录模块主要完成对记录的维护。实现对记录的修改,删除,插入和统计操作1.对记录的修改void modi() stu xs; file *fp; char name21; system(cls); printf(n输入要修改学生的姓名: );scanf(%s,name); if(fp=fopen(student.dat,rb+)=null) printf(cant open file!n);exit(0); while(!feof(fp) fread(&xs,sizeof(stu),1,fp); if(strcmp(,name)=0)/*判断输入要修改的姓名是否存在*/ printf( 修改前学生的信息如下:n); printf(n%10s %6d %6.2f %6.2f %6.2f n,姓名,学号,计算机,数学, 英语); printf(%10s %6d %6.2f %6.2f %6.2f n,,xs.num,puter,xs.math,xs.english); printf(n请输入该生的计算机成绩:);scanf(%f,&puter); printf(n数学成绩:);scanf(%f,&xs.math); printf(n英语成绩:);scanf(%f,&xs.english); break; if(!feof(fp) system(cls); printf( n 修改后的学生的信息如下:n); printf(n 姓名 学号 计算机 数学 英语n); printf(%10s %6d %6.2f %6.2f %6.2f n,,xs.num,puter,xs.math,xs.english); getchar(); fseek(fp,sizeof(stu),1);/*,1表示文件当前位置*/ fwrite(&xs,sizeof(stu),1,fp);/*再写入,同时把要修改的那个覆盖掉*/ fread(&xs,sizeof(stu),1,fp);/*把数据读入到结构体数组中*/ getchar(); else printf(n学生不存在,修改失败!); fclose(fp); getchar();/添加:输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。2添加记录void insert() int i=0,j,k,lenth; file *fp; stu s,xsn; system(cls); printf(n请输入添加的学生的姓名:);scanf(%s,&); printf(n学生的学号:);scanf(%d,&s.num); printf(n学生的计算机成绩:);scanf(%f,&puter); printf(n数学成绩:);scanf(%f,&s.math); printf(n英语成绩:);scanf(%f,&s.english); printf(n插入位置:);scanf(%d,&k);/ i=0; if(fp=fopen(student.dat,rb)=null) printf(cant open file!n);exit(0); while(!feof(fp) fread(&xsi,sizeof(stu),1,fp);/*把数据读入到结构体数组中*/ if(feof(fp) break; i+; fclose(fp); lenth=i; if(k=0)/*k的位置要位于数组范围之内*/ /插入 for(j=lenth-1;j=k;j-) xsj+1=xsj;/*一开始j是最大的,往后移一个这样移动避免数据被覆盖*/ /*循环是只循环这一句的*/ xsk=s;/*将输入的学生信息加入这个k位置*/ lenth+;/*长度+1*/ /写回 if(fp=fopen(student.dat,wb)=null) printf(不能建立文件!n);exit(0); for(i=0;ilenth;i+) fwrite(&xsi,sizeof(stu),1,fp); else/*不再数组范围之内*/ if(fp=fopen(student.dat,ab)=null) printf(不能建立文件!n);exit(0); fwrite(&s,sizeof(stu),1,fp); fclose(fp);/删除:输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息3输出记录void print() file *fp; stu s; system(cls); if(fp=fopen(student.dat,rb)=null) printf(cant open file!n);exit(0); printf(n%10s %s %6s %6s %6s n,姓名,学号,计算机,数学, 英语); while(!feof(fp) fread(&s,sizeof(stu),1,fp);/从文件中读取成绩信息 if(feof(fp) break;/判断是否文件尾 printf(%10s %6d %6.2f %6.2f %6.2f n,,s.num,puter,s.math,s.english); fclose(fp); getchar();4删除记录void dele() stu xsn; file *fp; char name10; int i=0,len,k=-1/*k=0)/*k0说明找到删除学生位置*/ if(fp=fopen(student.dat,wb+)=null) printf(cant open file!n);exit(0); for(i=0;ilen;i+) if(i=k) continue;/*从这个位置开始写入*/ fwrite(&xsi,sizeof(stu),1,fp); fclose(fp); else printf(删除失败!n);getch(); /*失败后重新返回菜单*/ print();3 查询记录模块主要完成在数组中查找满足相关条件的记录。在此系统中,用户可按学号或姓名查找若找到该记录则以表格形式打印出此记录的信息否则返回一个-1的值,并打印出未找到该记录的提示信息。/查询1按姓名void xingming() file *fp; stu xs; char name21; printf(n输入要查学生的姓名: );scanf(%s,name); if(fp=fopen(student.dat,rb)=null) printf(cant open file!n);exit(0); while(!feof(fp) fread(&xs,sizeof(stu),1,fp); if(strcmp(,name)=0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/ printf( 学生的信息如下:n); printf(n%10s %6s %6s %6s %6s n,姓名,学号,计算机,数学, 英语); printf(%10s %6d %6.2f %6.2f %6.2f n,,xs.num,puter,xs.math,xs.english); break; if(feof(fp) printf(查找失败!); /*学生不存在*/ fclose(fp);2按学号void xuehao() file *fp; stu xs; int num; printf(n输入要查学生的学号: );scanf(%d,&num); if(fp=fopen(student.dat,rb)=null) printf(cant open file!n);exit(0); while(!feof(fp) fread(&xs,sizeof(stu),1,fp); if(xs.num=num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/ printf( 学生的信息如下:n);printf(n%10s %6s %6s %6s %6s n,姓名,学号,c语言,高数, 英语); printf(%10s %6d %6.2f %6.2f %6.2f n,,xs.num,puter,xs.math,xs.english); break; if(feof(fp) printf(查找失败!); fclose(fp);3查询记录void search() int select; system(cls); printf(请输入按何种方式查询:n); printf(1-姓名,2-学号:n); scanf(%d,&select); if(select=1) xingming(); if(select=2) xuehao();getchar(); printf(press any key to continuen); getchar();/*让屏幕停留同时按任意键返回*/4 统计记录模块主要完成对学生最高分及不及格人数的统计1统计不及格void tongji() int i=0,j=0,k=0,l=0,m=0,n,p,q,t,u; file *fp; stu sn, *p1n,*p2n,*p3n;/*用指针数组*/ system(cls); if(fp=fopen(student.dat,rb)=null) printf(cantt open file!n);exit(0); while(!feof(fp) fread(&si+,sizeof(stu),1,fp);/*读入数据*/ if(feof(fp) break; t=i;i=0; for(u=0;ut;u+)/*以下每个指针数组用于指向每门不及格的学生信息*/ if(puter60) p1j=&si;j+; if(si.math60) p2k=&si;k+; if(si.english60) p3l=&si;l+; i+; printf(英语不及格:n); for(n=0;nname,p1n-num,p1n-english); printf(数学不及格:n); for(p=0;pname,p2p-num,p2p-math); printf(计算机不及格:n); for(q=0;qname,p3q-num,p3q-computer); getchar(); printf(press any key to continue:n); fclose(fp); getchar();2统计最高分 void higest() int i=0,n,max1i=0,max2i=0,max3i=0; float maxenglish,maxmath,maxcomputer; stu xsn; file *fp; if(fp=fopen(student.dat,rb+)=null) printf(cant open file!n);exit(0); while(!feof(fp)/*文件读入内存,读取指针未到文件尾时返回值为0,读到尾时返回值为1,加!取反后,结束即为0*/ fread(&xsi,sizeof(stu),1,fp);/*读入结构体变量*/ if(feof(fp) break;/*上面while循环那个会多读一次因为读到尾时那个0还没返回,这里判断如果以读到文件尾,则直接停止,避免重复输入*/ maxenglish=xs0.english; maxmath=xs0.math; maxcomputer=puter; for(i=0;imaxenglish) maxenglish=xsi.english; max1i=i; if(xsi.mathmaxmath) maxmath=xsi.math; max2i=i; if(putermaxcomputer) maxcomputer=puter; max3i=i; printf(英语最高分%f,数学最高分%f,计算机最高分%fn,maxenglish,maxmath,maxcomputer); getchar(); /*把i的末尾值给n,用于下面循环写入*/ i=0; n=i; fclose(fp); getchar(); if(fp=fopen(student.dat,wb)=null) printf(cant open file!n);exit(0); while(i学生成绩管理系统学生成绩管理系统=n); printf(=n); printf( 1.输入记录n); printf(*n); printf( 2.修改n); printf(*n); printf( 3.添加n); printf(*n); printf( 4.删除n); printf(*n); printf( 5.查询n); printf(*n); printf( 6.统计:n不及格人数:n英语: 数学: 计算机:n); printf(*n); printf( 7.各科最高分:n英语: 数学: 计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论