《学生信息管理系统实训报告.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统实训报告.docx(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实训报告实训设计题目:信息管理系统杨怡信息工程系计算机1502班董学枢学生学号: 学生姓名: 所在系(部): 专业及班级: 指导教师: 完成日期: 3.3系统结构体定义对于一个应用程序而言,结构体的定义好坏尤其重要。一个设计结构体,可以使系 统功能实现变得更加简单,也会使系统的执行速度更快,性能更高更稳定。studen结构体定义表列含义类型长度缺省值允许空num学号int4无否name姓名char15无是elec选修课成绩double8无是expe实验课成绩double8无是requ必修课成绩double8无是sum总分成绩double8无是 3.3系统函数定义列含义类型in()录入学生成绩信
2、息voidshow ()显示学生信息voidorder ()按总分排序voiddel ()删除学生成绩信息voidmodify ()修改学生成绩信息voidmenu()主菜单voidinsert ()插入学生信息voidtotal ()计算总人数Voidsearch ()查找学生信息voidmain()主函数int第4章系统实现 4.1 生信息管理系统界面展示模块及实现4.1.1 主界面主界面列表显示的是各个功能的显示信息,包括退出系统、输入学生信息、查询学 生信息、删除学生信息、修改学生信息、插入学生信息、总成绩排名、统计学生人数、 显示学生信息。SIUDENT序资 数数 出入索 退总差一
3、012345678界面用户进入列表展示界面后,可以输入选项选择相应的功能展示功能模块界面代码实现:void menu。/*自定义函数实现菜单功能*/system(cls);printf(nnnnn);printf (tt |STUDENT| n);printf | t0.退出ln);printf (,ztt | t1.输入数据ln);printf (,ztt | t2.搜索数据ln);printf (tt | t3.删除数据I n);printf (z,tt I t 4.修改数据ln);printf (,ztt|t 5.插入数据ln);printf (,ztt | t 6.总分排序I n);p
4、rintf (z,tt | t 7.学生人数ln);printf (z,tt | t 8.查看ln);printf (,ztt |nn);printf (zzttt 选择(0-8):);)具有输入数字选择功能的代码是写在主函数中的void main。/*主函数*/ int n;menu();scanf (zz%d/z, &n) ;/*输入选择功能的编号*/while(n) switch(n) case 1: in() ;break;case 2: search();break;case 3: del();break;case 4: modify();break;case 5: insert()
5、;break;case 6: order();break;case 7: total();break;case 8: show();break;default:break;getchO ;menu() ;/*执行完功能再次显示菜单界面*/scanf(d,&n);4.1.2 录入学生信息模块在主界面中输入数字1,即可进入到录入学生信息状态。当磁盘文件有存储记录时,可以向文件中添加学生信息,运行效果如图1当磁盘文件没有学生信息记录时,系统界面会提示没有记录,然后根据提示决定是否输入信息,运行效果如图2纳imnz 请输入姓声:张三 二验律:68 酚小 :内姓名:李四二的条:HX 心杼阳9y选修课rx
6、.h必修评76. W显力、243. H23R.M遂爵 请轴nunbei* : 10001 电翁熊大 选像第88实验课:75是否继续?nunber:10002:熊二 lft:98 律:64 谍:760K?图2在录入学生信息模块中将学生的信息进行保留,当程序运行结束,关闭程序,下此运行程序时录入的信息任然保留。因此在该模块中应用文件读写操作,对录入的信息保存到存到磁盘文件中,下次运行程序时,可以从磁盘文件中将存储读出并显示。代码实现void in()/*录入学生信息*/ int i,m=0;Am是记录的条数*/char ch2;FILE *fp;/*定义文件指针*/if (fp=fopen (z,
7、data. txt,a+)=二NULL)/*打开指定文件*/printf (不能打开n);return;wh i1e(!feof(fp)(if(fread(&stum , LEN, 1, fp)=1)m+;/*统计当前记录条数*/fclose(fp);if (m=0)printf (没有数据n);else(system(cls);show。;/*调用show函数,显示原有信息*/)if(fp=fopen(data, txt, wb)二二NULL)printf (不能打开n);return;)for(i=0;im;i+)fwrite(&stui , LEN, 1, fp) ;/*向指定的磁盘文件
8、写入信息*/printf (请输入(y/n):);scanf(%s,ch);while(strcmp(ch, Y)=0| | strcmp(ch, y)=0)/*判断是否要录入新信息*/(printf(number:);scanf (d, &stum. num) ;/*输入学生学号*/for(i=0;im;i+)if(stui. num=二stum. num)printf (/zthe number正在运行,按任意键继续);getchO ;fclose(fp);return;printf (姓名:);scanf (s,stum. name) ;/*输入学生姓名*/printf (选修课:);s
9、canf (机f, &stum. elec) ;/*输入选修课成绩*/printf (实验课:);scanf (lf,&stum. expe) ;/*输入实验课成绩*/printf (必修课:);scanfrequ) ;/*输入必修课成绩*/stum. sum=stu m. elec+stu m. expe+stum. requ ;/*计算出,总成绩*/if (fwrite(&stum, LEN, 1, fp) !=1)/*将新录入的信息写入指定的磁盘文件*/printf (不能保存!);getchO ;else printf (s 保存n,stu m. name);m+;printf (是否
10、继续?(y/n) :);/*问询是否继续*/scanf(s,ch);fclose(fp);printf(0K!n);4.1.3 查询学生信息模块查询学生信息模块的主要功能时根据输入的学生学号对学生信息进行搜索,若查找 到该学生学号对学生信息进行搜索,若查找到该学生,则选择是否显示该学生信息,输 入2时,进入查询状态,运行效果如图所示。选择反切尊E是否显示? 3roy呈号 姓起选修课 实险课 必修课 总分LO003 张三87.06879.0234.0图(413) - 1由于学生信息都及时存储到磁盘文件中,因此想要查找学生的信息首先需要对文件进行操作, 打开文件,读取文件中的数据,在关闭文件,根据
11、输入的需要查找学生的学号进行信息匹配,当查 找到学生的信息时将其显示出来。代码实现:void search。/*自定义查找函数*/ FILE *fp;int snum, i, m=0;char ch 2;if (fp=fopen (z,data. txt,rb)=二NULL) printf (不能打开n); return;while (! feof (fp) if (fread(&stum, LEN, 1, fp) =1) m+;fclose(fp);if (m=0) printf (没有数据! n); return;printf (请输入学号:);scanf(%d, &snum);for(i
12、=0;im;i+)if (snum=stui. num)/*查找输入的学号是否在记录中*/ printf (找到学生,是否显示? (y/n);scanf(s,ch);if (strcmp(ch, Y)=01 |strcmp (ch, y)=0)(printf (学号姓名选修课 实验课 必修课总分tn);printf (FORMAT, DATA) ;/*将查找出的结果按指定格式输出*/break;)if (i=m) printf (不能找到学生n) ;/*未找到要查找的信息*/4.1.4 删除学生信息模块删除学生信息模块的主要功能是从磁盘文件中将学生信息读取出来,从读出的信息中查找到将要删除的学
13、生的信息,然后将该学生的信息节点与链表断开,即将其所有信 息删除,将更改后的信息再写入到磁盘文件。在主界面中输入3时,调用删除功能函数,运行效果如图空除拿删胤动10003是否删除?选择(y/n)y图(414)功能实现:(1)将磁盘文件中的学生信息读取出来,以便对其进行查找删除等操作;(2)根据输入的想要删除的学生学号与读取出来的学生信息进行匹配查找。当查 找到与该学号匹配的学生信息时,根据提示,输入是否对该学生进行删除操 作;(3)若进行删除操作,则使用如下代码对学生信息进行删除,并将删除后的学生 信息重新写入磁盘文件中代码实现:void del。/*自定义删除函数*/FILE *fp;int
14、 snum, i, j, m=0;char ch 2;if(fp=fopen(data. txt,r+)=二NULL) printf (不能打开n);return;while(!feof(fp)if (fread(&stum, LEN, l,fp)=l) m+;fclose(fp);if (m=0)(printf (没有数据n);return;printf (请输入学号:”);scanf(d,&snum);for(i=0;im;i+)if(snum=stui. num)break;printf(找到学生,是否删除? (y/n);scanf(%s,ch);if (strcmp (ch, Y) =
15、01 | strcmp (ch, y) =0) /*判断是否要进行删除*/ for(j=i;jm;j+)stuj=stuj+1 ;/*将后一个记录移到前一个记录的位置*/nr- ;/*记录的总个数减1*/if(fp=fopen(data. txt,wb)二二NULL) printf (不能打开n);return;for (j=0;j+)/*将更改后的记录重新写入指定的磁盘文件中*/if(fwrite(&stuj , LEN, 1, fp)!=1) printf (不能保存! n);随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深 刻认识,它已进入人类社会的各个领域并发挥着越来
16、越重要的作用。作为计算机应用的一部份,使用计算机对学生信息进行管理,具有手工管理 所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性 好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是进 行科学化、正规化管理,与世界接轨的重要条件。随着国家对于教育的重视逐渐加大,学校正向着大型化、规模化发展,而对 于大中型学校,跟学生信息管理有关的信息随之急剧增加。在这种情况下单靠人 工来处理员工的工资非但显得力不从心,而且极容易出错。该系统就是设计一个 学生信息数据库管理系统,由计算机代替人工执行一系列诸如增加新学生,删除 旧学生,学生信息修改,查询,维护及打印等操作。
17、这样就使学生部门管理人员 可以轻松快捷地完成学生信息管理的任务。getchO ;fclose(fp);printf (成功删除n);4.1.5 插入学生信息模块插入学生信息模块的主要功能是在需要的位置插入新的学生信息,输入5时,进入插入学生信息模块,效果如图:选择0-8:5青输入你想插入的位置输入学号0002织在请输入新的信息尹号:10003露籥实验南66必修串83修改成功.图(415)功能实现:(1) 因为该系统的学生信息都及时的存储在磁盘文件中,所以每次操作都要先将数据从文件中读取出来。(2) 输入需要插入信息的位置,即可需要插入在哪个学生的学号后面,然后查找该学号,从最后一条信息开始均向
18、后挪移一位,为新插入的信息提供位置。(3) 设置好可以要输入的位置后,向该位置录入新学生的信息。然后该学生的信息写入到磁盘文件中。代码实现:void insert()/*自定义插入函数*/ FILE *fp;int i, j, k, m=0, snum;if(fp=fopen(data, txt”, r+)=二NULL) printf (不能打开n); return;while(!feof(fp)if(fread(&stum, LEN, 1, fp)=1) m+;if (m=0) printf (没有数据!n);fclose(fp);return;printf (请输入你想插入的位置(输入学号
19、)n);scanf (%d,&snum) ;/*输入要插入的位置*/for(i=0;ii; j)stuj+l=stuj ;/*从最后一条记录开始均向后移一位*/printf (现在请输入新的信息n);printf (学号:);scanf (d,&stui+1. num);for(k=0;km;k+)if(stuk. num=二stum. num)printf (学生人数正在退出,按任意键继续);getchO ;fclose(fp);return;)printf (姓名:);scanf stui. name) ;/*输入名字*/printf (选修课:);scanf &stui. elec) ;
20、/*输入选修课成绩*/printf (实验课:);scanf (lf,&stui. expe) ;/*输入实验课成绩*/printf (必修课:);scanf (lf,&stui. requ) ;/*输入必修课成绩*/printf (修改成功);stu i. sum=stui. elec+stui. expe+stui. requ;if (fp=fopen(,zdata. txt, wb)二二NULL) printf (can not opennz,) ;return;for(k=0;k=m;k+)if (fwrite(&stuk ,LEN, 1, fp) !=1)/*将修改后的记录写入磁盘文
21、件中*/ printf (不能保存);getchO; fclose(fp);)4.1.6 学生成绩排名模块根据学生的总成绩将所有学生的信息按照从高到低进行排序,将排序后的信息写入 到磁盘文件中保存。如图所示为排序后现实出来的效果选择 (8-8):6 保存成功图(416) - 1再在主界面中输入数字8,就会把保存的排序输出出来如图:羊号0003000408010662名四四大三选择C0-8X8选修课 实验课77.088.077.088.088.075.08?.066.0必修课99.099.080.883.6总分264.0264.0243.0236.0图(4.1.6) -2这里应用比较稳定简单的交
22、换发排序对学生的成绩进行比较交换。学生成绩排名的实现过 程是首先需要将录入的学生信息从磁盘文件中读取,然后将读出的学生信息按照成绩进行比较 交换,从高到低排序,为学生排名次,然后再将拍好名次的学生信息保存写入到磁盘文件中。代码实现:void order()/*自定义排序函数*/ FILE *fp;struct student t;int i=0, j=0, m=0;if(fp=fopen(data. txt,r+)二二NULL)(printf (不能打开打n);return;)while(!feof(fp)if (fread(&stum , LEN, 1, fp)=1)m+;fclose(fp
23、);if (m=0)(printf (没有数据! n);return;if(fp=fopen(data. txt,wb)=NULL)(printf (不能打开n);return;for(i=0;im-l;i+)for (j=i + l; jm; j+)/*双重循环实现成绩比较并交换*/if (stui. sumstuj. sum) t=stui ; stui=stuj ; stuj=t;if (fp=fopen (z,data. txt,wb)二二NULL) printf (不能打开n); return;for (i=0; im; i+)/*将重新排好序的内容重新写入指定的磁盘文件中*/if(
24、fwrite(&stui , LEN, 1, fp)!=1)(printf (z/%s 不能保存! n);getchO ;)fclose(fp);printf (保存成功n);学生人数统计模块当在主界面输入7时,可以对学生的人数进行统计,显示出统计的人数。运行效果如图选择日-8;7这个班级有4个学生图(4.1.6) - 1代码实现:void total() FILE *fp;int m=0;if (fp=fopen (data, txt”, r+)=NULL) printf (不能打开n); return;while(!feof(fp)if (fread(&stum, LEN, 1, fp)=
25、l)m+ ;/*统计记录个数即学生个数*/if (m=0) printf (没有记录! n); fclose (fp) ; return;printf (这个班级有%d个学生n, m) ;/*将统计的个数输出*/ fclose(fp);第5章软件测试 5.1 5.1软件测试办法5.1.1 主题内容为保证软件的可靠性和安全性,从技术角度对工程软件测试办法作出规定5.1.2 测试目的提供系统化、规范化、实用化的测试技术规范,及早发现故障,减少交付系统联试 前软件中的残留差错。5.1.3 测试方法本软件测试将通过单元测试和系统测试,黑盒测试以及白盒测试,几种测试方法相结合更能方 便的找出系统中浮现的
26、bug5.1.4 合用范围主要合用于系统中各组成部份的软件测试工作,其它软件开辟工程中的软件测试工作也可以参照。本办法可用于新开辟的或者修改、更新的软件测试。本办法的使用对象可以是开辟人员、测试人员、交办单位委托的第三方测试人员。 5.2 单元/系统测试5. 2.1单元定义void in() void show() void order() void del() void modify()录入学生信息显示学生信息按总分排序删除学生信息修改学生成绩信息void menu() void insert() void total() void search()主菜单插入学生信息计算总人数查找学生信息5
27、. 2.2测试每一个单元都运行正常,没有浮现BUGo5. 2.3系统测试在进行单元性和模块性的测试之后,我们需要对整个系统进行测试,测试整个系统 运行的流畅度,并积极发现问题。不能因为到测试的最后一步而掉以轻心,避免有错误 的程序交到客户或者用户手中。5.3黑盒测试与白盒测试白盒测试:已知产品的内部工作过程,可以通过测试验证每种内部操作是否符合设 计规格要求,所有内部成份是否已经经过检查。黑盒测试:已知产品的功能设计规格和用户手册,可以进行测试验证每一个功能是 否实现,每一个实现了的功能是否符合要求,以及产品的性能是否满足用户的要求。针对以上对两种测试方法的介绍,结合本系统的情况,只采用黑盒测
28、试就能够满足 要求。5.3.1 测试过程为了测试的有效性和高效性,应该制定严格的测试计划,并按照计划实施。首先要 按模块来设计各个模块的测试用例,测试用例是测试执行的最小实体,是为特定的目的 而设计的一组测试输入、执行条件和预期的结果。然后执行测试用例,当测试结果和预 期不符时,就要标示问题,并建立bug跟踪记录,直到bug被修复为止。最后对已修复 的bug进行回归测试,避免浮现新的bug。总结作为一个完整的学生信息管理系统,本系统的主要实现的功能包括用户登录、列表 展示、文章管理、评论管理、相册管理等,基本上可以满足大部份用户的需求。本系统的亮点之处在于系统的扩展性很强。当需要为博客系统添加
29、新的功能时,只 需要改动极少的代码甚至无需改动就可以实现。各模块独立性很高,模块之间的耦合性 很低,使得修改代码、添加功能变得简单可行。本系统的不足之处在于功能稍显简单。 由于作者的时间和精力有限,系统的功能总体来看比较少,只能在以后根据需求慢慢增 加了。在开辟本系统的过程中遇到了一些问题,主要是一些技术不太了解。最终通过查阅 相关资料还是一一解决了这些问题。此外有些功能还没有彻底的实现,比如用户登录的 功能,目前没有此项功能,如果要实现此功能,在后期会相继的慢慢完善。通过这次的设项目实训,我学到了不少知识。深刻体味到了前期的设计对后期实现 时的影响,如果在项目前期不能进行很好的设计,在后期开
30、辟时就会造成不少麻烦。另 外,这次的项目也让我明白了数据结构知识的重要性,今后要加强数据结构相关知识的 学习。目录前言 I第1章绪论11.1什么是学生信息管理系统112课题研究的意义1第2章系统分析22.1需求分析221.1 功能需求221.2 性解求22.2可行性分析32.2.1 技术可行性3222经济可彳亍性 32.2.3 社会可行性3第3章系统设计43.1 系统结构设计43.2 系统功能模块设计 53.3 系维吉构体定义63.4 系统函数定义73.5 统实现84.1 学生信息管理系统界面展示模块及实现84.1.1 主界面84.1.2 录入学生信息模块 104.1.3 1.3蛾学生信息好1
31、34.1.4 删除学生信息模块144.1.5 插入学生信息儆164.1.6 1.6学生成绩排名模块184.1.7 学生人数统计模块20第5章软件测试21 5.1 件测试办法215.1.1 主题内容215.1.2 试目的21提供系统化、规范化、实用化的测试技术规范,及早发现故障,减少交付系统联试前软件中的残留差错。 215.1.3 冽武方法215.1.4 合用范围2152单元/系统测试215.1.5 元定义21522 球22试 225.3黑盒测试与白盒测试225. 3.1测试过程22总结23致谢 错误!未定义书签。第1章绪论1.1 什么是学生信息管理系统学生信息管理系统是校园网络中一个重要的应用
32、系统,它大大改善了学校教学、 科研与管理的基础环境,在一定程度上反映出学校管理现代化的水平。信息管理系统提 供了强大的学生档案管理管理功能,方便管理员对学生信息的添加、修改、删除、查询 等操作。本系统开辟的总体任务是实现学生信息管理的系统化、规范化、自动化、达到 提高学生信息管理效率的目的。1.2 课题研究的意义随着我国教育产业化的飞速发展,社会对教育水平和教学管理软硬件的要求日益提 高,特别是对一个学校能够具有一整套完善的教学管理软件提出了更多的要求。为了适 应这种形式,教育系统特别是大学不仅首先要有坚实的硬件基础,还要有一整套完善的 教学管理软件管理系统。而要实现这一功能,就要求学校管理者
33、配备一套高效的教育管 理网络系统,以便在学校内实施良好的一整套完善的管理且以最快地速度响应教师和学 生的需求,及时为他们提供服务,为他们提供一个高效、便捷的环境。学生信息管理系 统是校园网络中一个重要的应用系统,它大大改善了学校教学、科研与管理的基础环境, 在一定程度上反映出学校管理现代化的水平。随着国家对于教育的重视逐渐加大,学校正向着大型化、规模化发展,而对于大中 型学校,跟学生信息管理有关的信息随之急剧增加。在这种情况下单靠人工来处理员工 的工资非但显得力不从心,而且极容易出错。该系统就是设计一个学生信息数据库管理 系统,由计算机代替人工执行一系列诸如增加新学生,删除旧学生,学生信息修改
34、,查 询,维护及打印等操作。这样就使学生部门管理人员可以轻松快捷地完成学生信息管理 的任务。第2章系统分析 2.1 需求分析2.1.1 功能需求学生管理系统的几个主要功能如下:提供学生录入信息功能可以输入学生的姓名,学号,选修课,实验课,必修课和总分。查询学生信息功能根据学生学号来查询学生信息。删除学生信息功能提供学号,查找是否有这人信息,然后选择删除学生信息。插入学生信息功能输入学生学号,插入该学生的学号的后面学生成绩排名功能根据学生的总分成绩,来进行排名,将排名后的成绩保存到磁盘文件2.1.2 性能需求本软件系统各种特点决定了系统需要具有以下几个主要特性:(1)多样性。现在,计算机语言越来
35、越普及,用户面临的选择越来越多。想要保证 对用户的吸引力,就必须要在多样性上下功夫了。所以,系统的多样性、功能的多样性 向来都是软件系统开辟的重点。安全性。数据是软件的灵魂,如何保证数据的安全性,是系统开辟时必须考虑的 一个重要问题。开辟者应避免程序浮现漏洞,防止黑客进行攻击,及时进行数据备份, 建立一个完善的多层次的安全保障体系,保障系统的安全。可扩展性。需求变更向来是开辟中难以避免的问题。系统在进行设计时应充分考 虑到需求变更的可能性,降低系统扩展功能时的复杂度。 2.2 2.2可行性分析2. 2.1技术可行性本系统主要采用Struts2框架开辟。Struts2是一个成熟的MVC框架,它的
36、功能非 常强大,包括请求转发、数据校验、文件上传下载等等,再加之jsp作为展示层,彻底 可以满足本系统的开辟需要,因此技术上是可行的。2. 2.2经济可行性本系统为自主开辟,耗时1周,经济成本低;开辟完成后可以在网上找一些免费的 应用托管商;当系统部署成功后通过不断更新高质量,增加软件的知名度,通过广告获 得收益。综合来看在经济上是可行的。2. 2.3社会可行性该系统为彻底独立开辟。开辟工具选的是VC6.0及GCC,开辟技术多是用的开源的 框架和工具,因此不存在侵权问题。第3章系统设计在对整个软件系统进行开辟之前,要对整个系统进行必要的设计与规划。包括系统 的总体架构、系统的功能结构、系统的运
37、行环境、开辟技术与工具的选择等等。本章主 要对这些内容进行详细的介绍。 3.1 系统结构设计本系统是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及 不需要任何运行环境支持便能运行的编程语言。c语言也很适合搭配汇编来使用(往往 可以通过内联汇编语言或者与汇编语言目标文件一起连接。对于任何一种操作系统环境, C 函数的 ABI(Application BinaryInterface)与汇编语言的子过程 (routine/procedure)的ABI 一定是彻底兼容的)。尽管C语言提供了许多低级处理的 功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电 脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或者称MCU)以及超级电脑等 作业平台。图3.1系统结构图 3.2 3.2系统功能模块设计本软件系统主要可分为8大功能模块,包括了录入学生信息模块、查询学生信息模 块,、删除学生信息模块、修改学生信息模块、插入学生信息木块、学生成绩排名模块、 学生人数统计模块和显示学生信息模块功能结构如图3. 2所示。
限制150内