


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实训报告题目:学生信息管理系统学院:信息工程学院专业:嵌入式1班项目组长:刘永强项目成员:刘强项强吴盛林瞿孟孟管豫冀徐兵指导教师:叶 雷二O四年十二月三十日项目小组任务分配表组员姓名学号组员任务刘永强课题研究的意义,需求分析 开发总结,整理相关文档刘强27各模块功能实现项强33编码实现吴盛林主函数设计,模块详细设计瞿孟孟系统功能和性能分析,可行性分析管豫冀系统设计,结构设计和模块设计徐兵35系统测试与维护、八、亠前言随着科学技术的不断提高 , 计算机科学日渐成熟 ,其强大的功能已为人们深 刻认识, 它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分 , 使用计算机对学生
2、信息进行管理 , 具有手工管理 所无法比拟的优点。例如 : 检索迅速、查找方便、可靠性高、存储量大、保密性 好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率, 也是进行科学化、正规化管理,与世界接轨的重要条件。随着国家对于教育的重视逐渐加大,学校正向着大型化、规模化发展,而对 于大中型学校, 跟学生信息管理有关的信息随之急剧增加。 在这种情况下单靠人 工来处理员工的工资不但显得力不从心, 而且极容易出错。 该系统就是设计一个 学生信息数据库管理系统, 由计算机代替人工执行一系列诸如增加新学生, 删除 旧学生,学生信息修改,查询,维护及打印等操作。这样就使学生部门管理人员 可以轻松
3、快捷地完成学生信息管理的任务。目录第 1 章 绪论§ 什么是学生信息管理系统学生信息管理系统是校园网络中一个重要的应用系统,它大大改善了学校教学、 科研与管理的基础环境,在一定程度上反映出学校管理现代化的水平。信息管理系统提 供了强大的学生档案管理管理功能,方便管理员对学生信息的添加、修改、删除、查询 等操作。本系统开发的总体任务是实现学生信息管理的系统化、规范化、自动化、达到 提高学生信息管理效率的目的。§ 课题研究的意义随着我国教育产业化的飞速发展,社会对教育水平和教学管理软硬件的要求日益提 高,尤其是对一个学校能够具有一整套完善的教学管理软件提出了更多的要求。为了适
4、应这种形式,教育系统尤其是大学不仅首先要有坚实的硬件基础,还要有一整套完善的 教学管理软件管理系统。而要实现这一功能,就要求学校管理者配备一套高效的教育管 理网络系统,以便在学校内实施良好的一整套完善的管理且以最快地速度响应教师和学 生的需求,及时为他们提供服务,为他们提供一个高效、便捷的环境。学生信息管理系 统是校园网络中一个重要的应用系统, 它大大改善了学校教学、 科研与管理的基础环境, 在一定程度上反映出学校管理现代化的水平。随着国家对于教育的重视逐渐加大,学校正向着大型化、规模化发展,而对于大中 型学校,跟学生信息管理有关的信息随之急剧增加。在这种情况下单靠人工来处理员工 的工资不但显
5、得力不从心,而且极容易出错。该系统就是设计一个学生信息数据库管理 系统,由计算机代替人工执行一系列诸如增加新学生,删除旧学生,学生信息修改,查 询,维护及打印等操作。这样就使学生部门管理人员可以轻松快捷地完成学生信息管理 的任务。第 2 章 系统分析§ 需求分析§学生管理系统的几个主要功能如下:(1) 提供学生录入信息功能 可以输入学生的姓名,学号,选修课,实验课,必修课和总分。(2) 查询学生信息功能 根据学生学号来查询学生信息。(3) 删除学生信息功能 提供学号,查找是否有此人信息,然后选择删除学生信息。(4) 插入学生信息功能 输入学生学号,插入该学生的学号的后面(5
6、) 学生成绩排名功能 根据学生的总分成绩,来进行排名,将排名后的成绩保存到磁盘文件§ 本软件系统各种特点决定了系统需要具有以下几个主要特性:(1) 多样性。现在,计算机语言越来越普及,用户面临的选择越来越多。想要保证 对用户的吸引力,就必须要在多样性上下功夫了。所以,系统的多样性、功能的多样性 一直都是软件系统开发的重点。(2) 安全性。 数据是软件的灵魂, 如何保证数据的安全性, 是系统开发时必须考虑的 一个重要问题。开发者应避免程序出现漏洞,防止黑客进行攻击,及时进行数据备份, 建立一个完善的多层次的安全保障体系,保障系统的安全。(3) 可扩展性。 需求变更一直是开发中难以避免的
7、问题。 系统在进行设计时应充分考 虑到需求变更的可能性,降低系统扩展功能时的复杂度。§ 可行性分析§ 技术可行性本系统主要采用Struts2框架开发。Struts2是一个成熟的MVC!架,它的功能非 常强大,包括请求转发、数据校验、文件上传下载等等,再加上 jsp 作为展示层,完全 可以满足本系统的开发需要,因此技术上是可行的。§ 经济可行性本系统为自主开发,耗时 1 周,经济成本低;开发完成后可以在网上找一些免费的 应用托管商;当系统部署成功后通过不断更新高质量,增加软件的知名度,通过广告获 得收益。综合来看在经济上是可行的。§ 社会可行性该系统为完全
8、独立开发。开发工具选的是及GCC开发技术多是用的开源的框架和工具,因此不存在侵权问题。第3章系统设计在对整个软件系统进行开发之前,要对整个系统进行必要的设计与规划。包括系统 的总体架构、系统的功能结构、系统的运行环境、开发技术与工具的选择等等。本章主 要对这些内容进行详细的介绍。§系统结构设计本系统是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及 不需要任何运行环境支持便能运行的编程语言。c语言也很适合搭配汇编来使用(往往 可以通过内联汇编语言或与汇编语言目标文件一起连接。对于任何一种操作系统环境, C 函 数 的c:ik no wdocsharedatacur_w
9、ork_bla nk(Applicati onBin aryl nteface)与汇编语言的子过程(rout in e/procedure )的ABI 一定是完全兼容的)。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一 个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU以及超级电脑等作业平台。图系统结构图§系统功能模块设计本软件系统主要可分为8大功能模块,包括了录入学生信息模块、查询学生信息模 块,、删除学生信息模块、修改学生信息模块、插入学生信息木块、学生成绩排名模块、 学生人数统计模块和显示学生信息模块功能结构
10、如图所示。学生信息管理系统录查删修插学学显入询除改入生生示学学学学学信人学生生生生生息数生§系统结构体定义对于一个应用程序而言,结构体的定义好坏尤为重要。一个设计结构体,可以使系统功能实现变得更加简单,也会使系统的执行速度更快,性能更高更稳定。studen结构体类型学实姓n生成绩结构体长度允许总分空必修修口int课成验否4n amechar15无是elec选修课成绩double8无是expe实验课成绩double8无是requ必修课成绩double8无是sum总分成绩double8无是§系统函数定义列含义类型in()录入学生成绩信息voidshow()显示学生信息voido
11、rder()按总分排序voiddel()删除学生成绩信息voidmodify。修改学生成绩信息voidmenu()主菜单voidin sert()插入学生信息voidtotal()计算总人数Voidsearch。查找学生信息voidmai n()主函数int第4章系统实现§学生信息管理系统界面展示模块及实现§主界面主界面列表显示的是各个功能的显示信息,包括退出系统、输入学生信息、查询学 生信息、删除学生信息、修改学生信息、插入学生信息、总成绩排名、统计学生人数、 显示学生信息。界面用户进入列表展示界面后,可以输入选项选择相应的功能展示功能模块界面代码实现:void men
12、u()/*自定义函数实现菜单功能*/system("cls");prin tf("nnnnn");printf("tt|STUDENT|n");prin tf("tt|t 0.退出|n");prin tf("tt|t 1.输入数据|n");prin tf("tt|t 2.搜索数据|n");prin tf("tt|t 3.删除数据|n");prin tf("tt|t 4.修改数据|n");prin tf("tt|t 5.插入数据
13、|n");prin tf("tt|t 6.总分排序|n");prin tf("tt|t 7.学生人数|n");prin tf("tt|t 8.查看|n");选择(0-8):");具有输入数字选择功能的代码是写在主函数中的void main()/*主函数 */ int n;menu();seanf("%d",&n);/*输入选择功能的编号*/while( n) switeh( n) ease 1: i n() ;break;ease 2: seareh();break;ease 3: de
14、l();break;ease 4: modify();break;ease 5: i nsert();break;ease 6: order();break;ease 7: total();break;ease 8: show();break;default:break;geteh();men u();/*执行完功能再次显示菜单界面*/sea nf("%d",&n);- 1n nz 0 s _b 0 ? 0 - 居yl IS oo 7 1- 呆#A -旨 飙入4嗔课课课車“嗔课课课 没请沁姓选实必能望IrtlA姓选冥必/ 2卯«(0-8 4 G-9671&
15、quot;I 芝冃!;: 自e§录入学生信息模块在主界面中输入数字1,即可进入到录入学生信息状 态。当磁盘文件有存储记录时,可以向文件中添加学生 信息,运行效果如图1当磁盘文件没有学生信息记录时,系统界面会提示没有记录,然后根据提示决定是否输入信息,运行效果如图2图1在录入学生信息模块中将学生的信息进行保留,当程序运彳图吉束,关闭程序,下此 运行程序时录入的信息任然保留。因此在该模块中应用文件读写操作,对录入的信息保 存到存到磁盘文件中,下次运行程序时,可以从磁盘文件中将存储读出并显示。代码实现void in( )/*录入学生信息*/ int i,m=0;/*m是记录的条数*/cha
16、r ch2;FILE *fp;/*定义文件指针*/if(fp二fopen("","a+")=NULL)/*打幵指定文件 */printf(”不能打幵 n");return;while(!feof(fp)if(fread(&stum ,LEN,1,fp)=1)m+;/*统计当前记录条数*/fclose(fp);if(m=0)printf(" 没有数据 n");elsesystem("cls");show();/*调用show函数,显示原有信息*/if(fp=fopen("",&q
17、uot;wb")=NULL)printf(" 不能打开 n");return;for(i=0;i<m;i+)fwrite(&stui ,LEN,1,fp);/* 向指定的磁盘文件写入信息 */printf(" 请输入 (y/n):");scanf("%s",ch);while(strcmp(ch,"Y")=0|strcmp(ch,"y")=0)/* 判断是否要录入新信息 */ printf("number:");scanf("%d"
18、,&stum.num);/* 输入学生学号 */for(i=0;i<m;i+)if(stui.num=stum.num)printf("the number 正在运行 , 按任意键继续 ");getch();fclose(fp);return;printf("姓名 :");输入学生姓名 */输入选修课成绩 */输入实验课成绩 */输入必修课成绩 */scanf("%s",);/* printf("选修课 :");scanf("%lf",&stum.elec
19、);/* printf("实验课 :");scanf("%lf",&stum.expe);/* printf("必修课 :");scanf("%lf",&stum.requ);/*stum.sum=stum.elec+stum.expe+stum.requ;/* 计算出总成绩 */ if(fwrite(&stum,LEN,1,fp)!=1)/* 将新录入的信息写入指定的磁盘文 件*/printf(" 不能保存 !");getch();elseprintf("%s
20、 保存 n",);m+;printf(" 是否继续 (y/n):");/* 询问是否继续 */scanf("%s",ch);fclose(fp);printf("OK!n");§ 查询学生信息模块查询学生信息模块的主要功能时根据输入的学生学号对学生信息进行搜索,若查找 到该学生学号对学生信息进行搜索,若查找到该学生,则选择是否显示该学生信息,输 入 2 时,进入查询状态,运行效果如图所示。由于学生信息都及时存储到磁盘文件中,因此想要查找学生的信息首先需要 对文件进行操作,打开文件,读取文件中的数据
21、,在关闭文件,根据输入的需要 查找学生的学号进行信息匹配,当查找到学生的信息时将其显示出来。代码实现 :void search()/* 自定义查找函数 */ FILE *fp;int snum,i,m=0;char ch2;if(fp=fopen("","rb")=NULL) printf("不能打幵 n");return;while(!feof(fp) if(fread(&stum,LEN,1,fp)=1) m+;fclose(fp);if(m=0) printf("没有数据!n");return;pri
22、ntf("请输入学号:");sca nf("%d",&sn um);for(i=0;i<m;i+)if(s num=stui. num)/*查找输入的学号是否在记录中*/ printf("找到学生,是否显示(y/n)");sca nf("%s",ch);if(strcmp(ch,' 'Y ")=0|strcmp(ch,"y")=0)prin tf("学号 姓名选修课 实验课必修课总分 tn");prin tf(FORMATQATA);/
23、*将查找出的结果按指定格式输出*/break;if(i=m) printf("不能找到学生n");/*未找到要查找的信息*/§删除学生信息模块删除学生信息模块的主要功能是从磁盘文件中将学生信息读取出来,从读出的信息中查找到将要删除的学生的信息,然后将该学生的信息节点与链表断开,即将其所有信 息删除,将更改后的信息再写入到磁盘文件。在主界面中输入3时,调用删除功能函数,运行效果如图 找到与该学号匹配的学生信息时,根据提示,输入是否对该学生进行删除操 作;功能实现:(1) 将磁盘文(2)根据输文件中的学生信息读怎功删除匹配查找。当查(3) 若进行删除操作,则使用如下代
24、码对学生信息进行删除,并将删除后的学生 信息重新写入磁盘文件中代码实现:void del()/* 自定义删除函数 */FILE *fp;int snum,i,j,m=0;char ch2; if(fp=fopen("","r+")=NULL) printf("不能打开 n");return;while(!feof(fp) if(fread(&stum,LEN,1,fp)=1) m+; fclose(fp);if(m=0)printf(" 没有数据 n");return;printf(" 请输入学号
25、 :"); scanf("%d",&snum);for(i=0;i<m;i+)if(snum=stui.num)break;printf(找到学生,是否删除 (y/n)");判断是否要进行删除 */scanf("%s",ch);if(strcmp(ch,"Y")=0|strcmp(ch,"y")=0)/*for(j=i;j<m;j+)将后一个记录移到前一个记录的位置 */stuj=stuj+1;/* 将 m-;/*记录的总个数减 1*/if(fp=fopen("&q
26、uot;,"wb")=NULL) printf("不能打开 n");return;for(j=0;j<m;j+)/* 将更改后的记录重新写入指定的磁盘文件中 */ if(fwrite(&stuj ,LEN,1,fp)!=1) printf(" 不能保存! n");getch();fclose(fp);printf(" 成功删除 n");§ 插入学生信息模块插入学生信息模块的主要功能是在需要的位置插入新的学生信息, 输入 5 时,进入 插入学生信息模块,效果如图:功能实现:( 1) 因为该系统
27、的学生信息都及时的存储在磁盘文件中, 所以每次操作都要先将 数据从文件中读取出来。(2) 输入需要插入信息的位置, 即可需要插入在哪个学生的学号后面, 然后查找 该学号,从最后一条信息开始均向后移动一位, 为新插入的信息提供位置。(3) 设置好可以要输入的位置后, 向该位置录入新学生的信息。 然后该学生的信 息写入到磁盘文件中。代码实现:void insert()/* 自定义插入函数 */ FILE *fp;int i,j,k,m=0,snum; if(fp=fopen("","r+")=NULL) printf("不能打开 n");
28、return;while(!feof(fp)if(fread(&stum,LEN,1,fp)=1) m+;if(m=0) printf(" 没有数据 !n");fclose(fp);return;printf(" 请输入你想插入的位置 (输入学号 )n"); scanf("%d",&snum);/* 输入要插入的位置 */ for(i=0;i<m;i+)if(snum=stui.num)break;for(j=m-1;j>i;j-)stuj+1=stuj;/*从最后一条记录开始均向后移一位 */输入名字 *
29、/输入选修课成绩 */输入实验课成绩 */输入必修课成绩 */printf(" 现在请输入新的信息 n"); printf(" 学号 :"); scanf("%d",&stui+1.num);for(k=0;k<m;k+)if(stuk.num=stum.num)printf(" 学生人数正在退出 , 按任意键继续 "); getch();fclose(fp);return;printf(" 姓名 :"); scanf("%s",);/* pr
30、intf("选修课 :");scanf("%lf",&stui.elec);/* printf("实验课 :");scanf("%lf",&stui.expe);/* printf("必修课 :");scanf("%lf",&stui.requ);/*printf(" 修改成功 ");stui.sum=stui.elec+stui.expe+stui.requ;if(fp=fopen("","wb&qu
31、ot;)=NULL) printf("can not openn");return;for(k=0;k<=m;k+)if(fwrite(&stuk ,LEN,1,fp)!=1)/* 将修改后的记录写入磁盘文件中 */ printf(" 不能保存 "); getch(); fclose(fp);§学生成绩排名模块 根据学生的总成绩将所有学生的信息按照从高到低进行排序,将排序后的信息写入 到磁盘文件中保存。如图所示为排序后现实出来的效果再在主界面中输入数字 8,就会把保存的排序输出出来如图: 这里应用比较稳定简单的交换发排序对学生的成
32、绩进行比较交换。 学生成 绩排名的实现过程是首先需要将录入的学生信息从磁盘文件中读取,然后将 读出的学生信息按照成绩进行比较交换,从高到低排序,为学生排名次,然 后再将拍好名次的学生信息保存写入到磁盘文件中。代码实现:void order()/* 自定义排序函数 */ FILE *fp;struct student t;int i=0,j=0,m=0;if(fp=fopen("","r+")=NULL)printf(" 不能打开 !n");return;while(!feof(fp)if(fread(&stum ,LEN,1,
33、fp)=1)m+;fclose(fp);if(m=0)printf(" 没有数据 !n");return;if(fp=fopen("","wb")=NULL)printf(" 不能打开 n");return;for(i=0;i<m-1;i+)for(j=i+1;j<m;j+)/* 双重循环实现成绩比较并交换 */if(stui.sum<stuj.sum) t=stui;stui=stuj;stuj=t;if(fp=fopen("","wb")=NULL) p
34、rintf(" 不能打开 n");return;for(i=0;i<m;i+)/* 将重新排好序的内容重新写入指定的磁盘文件中 */ if(fwrite(&stui ,LEN,1,fp)!=1)printf("%s 不能保存 !n");getch(); fclose(fp); printf(" 保存成功 n");当在主界面输入 7 时,可以对学生的人数进行统计,显示出统计的人数。运行效 果如图代码实现:void total() FILE *fp;int m=0;if(fp=fopen("","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(" 这个班级有 %d 个学生 n",m);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 多样化练习内容的2024年普通话考试试题及答案
- 如何擦玻璃课件
- 大学生心理健康教育2
- 班级卫生与安全管理行动计划
- 加强行业信息获取的手段计划
- 课外活动与学术社团规划计划
- 消防应急处理能力试题及答案
- 急诊病人家属沟通的技巧计划
- 高效沟通的技巧与实践计划
- 【A特种设备相关管理】考试题及答案
- 离婚协议民政局贵州安顺(2025年版)
- 高校讲师个人学术发展计划
- 2025届四川省成都市高三二诊生物试题(原卷版+解析版)
- 2025年度粤医云、国培卫健全科医学临床医学2月题目及答案
- 大学生舞蹈创新创业计划书
- 人教版六年级下学期数学第四单元《比例》典型题型专项练习(含答案)
- 河南省驻马店市2024-2025学年高一上学期1月期末英语试题【含答案解析】
- 发票红冲申请书
- DL5190.5-2019电力建设施工技术规范第5部分:管道及系统
- 压力容器制造检验验收制度14
- 《工程款结算单》
评论
0/150
提交评论