已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计 学号:学 院 计算机与信息技术学院 专 业 信息管理与信息系统 年 级 2013级 姓 名 吴世雷 论文(设计)题目 学生成绩信息管理系统 指导教师 柳春华 职称 高级讲师 2014 年12月20日目录一、需求分析1二、概要设计4三、详细设计5四、调试分析及测试14五、个人工作及创新17六、小结18参考文献18附录19一、需求分析 目前,各类学校的在校生人数都在不断增加,而且不同专业的学生的选修课、实验课、专业课分别占的比重不同,依靠传统的方式去管理学生成绩信息给日常的管理工作带来诸多不便,而计算机信息技术的发展位学生成绩管理注入了新的生机。通对学生信息的深入了解,一款优秀的学生成绩管理系统必须具备以下的特点:1.1能够对学生的成绩信息进行集中高效的管理。1.2能够大大提高用户的工作查询效率。1.3能够对学生成绩信息进行增、删、改。1.4能够按实际需求对学生成绩信息进行排序。 一个学生成绩信息管理系统最重要的功能包括:学生成绩信息的添加、删除、查询、修改、指定位置插入及排名,其中学生信息的查询、删除、修改、指定位置的插入等都要依靠输入的学生学号来实现,学生成绩是根据学生成绩的高低进行排序的。二、系统设计根据上面的需求分析,得到该学生信息管理系统要实现的功能,有一下几方面:2.1录入学生成绩信息。2.2实现删除功能,即输入学号,删除相应的记录。2.3实现查找功能,即输入学号,查询该学生成绩的相关信息。2.4实现修改功能,即输入学号,修改相应信息。2.5指定位置插入学生信息,即输入要插入的位置,将新的信息插入到指定位置。2.6学生成绩排名,即按照总成绩的高低排名。2.7统计保存的学生成绩信息数。该学生的信息管理系统结构设计如图2.8所示。学生成绩管理系统退出系统清空页面删除学生成绩修改学生成绩查询学生成绩显示学生成绩添加学生成绩录入学生成绩三、功能设计针对系统分析提出的功能,及学生成绩信息的添加、删除、查询、修改、指定位置插入及排序,给出具体的实现方法。下面是具体实现过程介绍。3.1运行界面3.1.1功能选择运行界面:具体实现代码如下:#include#include#includevoid frist_print() printf(tt*nn); /欢迎信息 printf(ttt欢迎进入学生成绩系统n);void menu() printf(ntt*n); /管理菜单 printf(tt=t1.录入学生成绩ntt+n); printf(tt=t2.显示学生成绩ntt+n); printf(tt=t3.查询学生成绩ntt+n); printf(tt=t4.添加学生成绩ntt+n); printf(tt=t5.修改学生成绩ntt+n); printf(tt=t6.删除学生成绩ntt+n); printf(tt=t7.清空页面ntt+n); printf(tt=t8.退出系统n); printf(tt*n); printf(please choise 1-8:t); putchar(10); 3.1.2录入与显示成绩运行界面:其实现的代码如下:struct MM / 结构体定义变量 char num20; char name10; float pay; int many; mm;void scanf_1() /第一次输入信息并保存在文件中 char ch; FILE *fp; if(fp=fopen(dd.dat,wb+)=NULL) printf(cannot open filen); exit(0); do printf(请输入成绩的-编号:t); getchar(); gets(mm.num); printf(姓名:t); gets(); printf(成绩:t); scanf(%f,&mm.pay); printf(学号:t); scanf(%d,&mm.many); if(fwrite(&mm,sizeof(struct MM),1,fp)!=1) printf(file write errorn); exit(0); printf(是否继续输入y or n ?t); getchar(); ch=getchar(); while(ch=y|ch=Y); fclose(fp); 3.1.2查询学生成绩运行界面:其具体实现代码如下:void find() /查询成绩的信息 int a,b=0; char ch20; FILE *fp; if(fp=fopen(dd.dat,rb)=NULL) printf(cannot open filen); exit(0); printf(请输入要查询的成绩的方式nt1.编号 2.姓名:nt请选择 1 or 2 t); scanf(%d,&a); if(a=1) getchar(); printf(请输入成绩的编号:t); gets(ch); while(fread(&mm,sizeof(struct MM),1,fp)=1) if(strcmp(mm.num,ch)=0) b+; printf(编号t姓名t成绩tt学号n); printf(%st%st%.3ftt%dn,mm.num,,mm.pay,mm.many); if(b=0) printf(对不起!没有找到相关信息:n); else if(a=2) printf(请输入成绩的姓名:t); getchar(); gets(ch); while(fread(&mm,sizeof(struct MM),1,fp)=1) if(strcmp(,ch)=0) b+; printf(编号t姓名t成绩tt学号n); printf(%st%st%.3ftt%dn,mm.num,,mm.pay,mm.many); if(b=0) printf(input error!n); fclose(fp); void scanf_2() /第二次输入信息并保存在文件中 char ch; FILE *fp; if(fp=fopen(dd.dat,ab)=NULL) printf(cannot open filen); exit(0); do printf(请输入要添加成绩的-编号:t); getchar(); gets(mm.num); printf(姓名:t); gets(); printf(成绩:t); scanf(%f,&mm.pay); printf(学号:t); scanf(%d,&mm.many); if(fwrite(&mm,sizeof(struct MM),1,fp)!=1) printf(file write errorn); exit(0); printf(是否继续输入y or n ?t); getchar(); ch=getchar(); while(ch=y|ch=Y); fclose(fp); 3.1.3修改学生成绩运行界面: void print() /输出文档中的信息 FILE *fp; if(fp=fopen(dd.dat,rb)=NULL) printf(cannot open filen); return ; printf(编号t姓名t成绩tt学号n); while(fread(&mm,sizeof(struct MM),1,fp)=1) printf(%st%st%.3ftt%dn,mm.num,,mm.pay,mm.many); fclose(fp); void change() /修改信息的函数,定义另一个文件,把要修改的信息放到该文件中 struct XX /然后把其余的信息复制到该文件中;并把该文件从新命名为原来的名 /把原来的文件移除; char num20; char name10; float pay; int many; xx; FILE *fp2; int a,b=0,c=0,n=0; char ch20,ck; FILE *fp; do if(fp=fopen(dd.dat,rb)=NULL) printf(cannot open filen); exit(0); if(fp2=fopen(temp.dat,wb)=NULL) printf(cannot open filen); exit(0); printf(请输入要修改成绩的编号:t); scanf(%s,ch); n+; while(fread(&mm,sizeof(struct MM),1,fp)=1) if(strcmp(mm.num,ch)=0) b+; /b的值如果一直没有改变说明,没有找到相关的信息; printf(编号t姓名t成绩tt学号n); printf(%st%st%.3ftt%dn,mm.num,,mm.pay,mm.many); getchar(); printf(请输入成绩的新编号:t); gets(xx.num); printf(请输入成绩的新姓名:t); gets(); printf(请输入成绩的新成绩:t); scanf(%f,&xx.pay); printf(请输入成绩新学号:t); scanf(%d,&xx.many); getchar(); fwrite(&xx,sizeof(struct XX),1,fp2); if(strcmp(mm.num,ch)!=0) fwrite(&mm,sizeof(struct MM),1,fp2); if(b=0) printf(t没有找到相关信息!n); getchar(); rewind(fp); /如果要继续修改的话,要把标记返回到文件的开头; printf(是否继续修改?enter y or n t); ck=getchar(); fclose(fp); fclose(fp2); remove(dd.dat); rename(temp.dat,dd.dat); while(ck=y|ck=Y); if(b!=0) /如果没有找到相关信息就不能输出 printf(t修改成功:n); 3.1.4删除学生成绩信息运行界面:void del() /删除函数和修改很相似 FILE *fp2; int a,b=0,c=0,n=0; char ch20,ck; FILE *fp; do if(fp=fopen(dd.dat,rb)=NULL) printf(cannot open filen); exit(0); if(fp2=fopen(temp.dat,wb)=NULL) printf(cannot open filen); exit(0); printf(请输入要删除成绩的编号:t); scanf(%s,ch); n+; while(fread(&mm,sizeof(struct MM),1,fp)=1) if(strcmp(mm.num,ch)=0) b+; /b的值如果一直没有改变说明,没有找到相关的信息; printf(编号t姓名t成绩tt学号n); printf(%st%st%.3ftt%dn,mm.num,,mm.pay,mm.many); else if(strcmp(mm.num,ch)!=0) fwrite(&mm,sizeof(struct MM),1,fp2); if(b=0) printf(t没有找到相关信息!n); getchar(); rewind(fp); getchar(); getchar(); printf(删除成功!); getchar(); /如果要继续修改的话,要把标记返回到文件的开头; printf(是否继续删除?enter y or n t); ck=getchar(); fclose(fp); fclose(fp2); remove(dd.dat); rename(temp.dat,dd.dat); while(ck=y|ck=Y); if(b!=0) /如果没有找到相关信息就不能输出 printf(t保存成功:n); void myexit() int a; char ch; printf(t是否确定退出?请选择 y or n: ); getchar(); ch=getchar(); if(ch=y|ch=Y) exit(0); else menu(); int main() int a; frist_print(); menu(); while(1) scanf(%d,&a); if(a=1) scanf_1(); else if(a=2) print(); else if(a=3) find(); else if(a=4) scanf_2(); else if(a=5) change(); else if(a=6) del(); else if(a=7) system(cls); else if(a=8) myexit(); else printf(输入错误!请重新输入:t); printf(t按任意键继续!n); getch(); menu(); getch(); 四、调试分析及测试4.1 遇到的问题及解决方法(1)由于学生成绩信息管理系统的复杂性致使查询与删除学生成绩信息是出现偏差,使程序调试时要花费不少时间。(2)本程序有些代码重复出现,显得程序的有些代码看起来很杂乱。但其中最主要的问题是逻辑错误导致程序死循环或不循环或循环一小部分,但是编译时却没有错误,就是没有正确的输出答案。类似的还有出现死循环的问题,后在同学和老师的帮助下,经细心改正后才把调试工作做完。(3). 这里在编写回溯算法时候需要特别注意以下几点:当把学生成绩系统的分析完成后要一步步完成每一个小功能的实现。 当实现显示与查询学生成绩信息后,要及时调试程序,以免影响其他功能程序的设计。4.2 算法的时空分析该算法的运行时间和和皇后的放置方法成正比,在最好情况下的时间和空间复杂度均为O(1),在最差情况下均为O(n*n),平均情况在它们之间。4.3 程序模块构架本程序模块划分比较合理,且利用指数组存储棋盘,操作方便。至于整体的系统架构,为了简单起见,这样的系统可以分成两个模块,第一个模块是负责模拟问题、提供算法,而另外一个模块则致力于窗口演示,是一个窗体应用程序4.程序使用说明(1) 本程序的运行环境为DOS操作系统(2) 进入演示程序后即显示文本方式的用户界面(3) 进入界面后,就会提示输入字符串的输入形式,在八皇后求解程序中,只要你选择输出解的格式,选择1则显示为录入学生成绩,显示2是显示学生成绩,选择3查询学生成绩。4.6 测试结果初步运行界面录入学生成绩界面显示学生成绩界面 查询学生成绩界面 修改学生成绩界面五、 个人工作及创新在本次课程设计的学习过程中,我在其中的最大的收获,就是得到了许多的经验以及软件设计的一些新的思路. 迈着时间的步伐,这次的课程设计也即将结束,但这个学期数据结构的学习还是具有相当大的意义,特别是这次的课程设计,它从一个程度上改变了我们的编程思想,如何将一个程序快速而又准备的进行编写,进行编译,都成为了我思考的重点,也通过这一个学期的学习,我们将数据结构的思想带入到了我们以后的编程学习中去。在这个阶段,我也明白了,好的思想,不能提留于字面上的认知,还需要的是平时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《呼兰河传》考试题(含答案)
- 关于父母感恩演讲稿资料15篇
- 2026年北京市高职单招职业技能测试真题及参考答案
- 2026年湖南湘潭市高职单招数学考试真题及答案
- 2026年保密教育测试题及参考答案(考试直接用)
- 2026年安徽省池州中小学教师招聘考试试题题库(答案+解析)
- Unit 9 I like sunny days but Idon't like rainy days.教学设计-2025-2026学年小学英语二级下剑桥少儿英语
- 红领巾在行动教学设计小学综合实践活动一年级下册浙科技版
- 第一节 生命的基础能源-糖类教学设计高中化学人教版选修1化学与生活-人教版2004
- 第4课 我的课桌最结实教学设计小学劳动一年级下册湘教版《劳动教育》
- 四年级语文 铁杵成针 优质课比赛一等奖
- 油气集输概论天然气处理与轻烃回收课件
- 社会责任培训精
- 新视野大学英语(第四版)读写教程2(思政智慧版) 课件 Unit3 The young generation making a difference Section A
- (完整word版)中医病证诊断疗效标准
- 部编版语文二年级下册第2单元核心素养教案
- 初中语文八年级下册第二单元作业设计 科技之光《大自然的语言》 《阿西莫夫短文两篇》《大雁归来》 《时间的脚印》 单元作业设计
- 人教版道德与法治五年级下册全册课件【完整版】
- 城镇污水处理工艺比选及运行效果分析
- 《卢氏字辈总汇》
- 建筑工程施工BIM技术应用指南
评论
0/150
提交评论