




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
翁南蜴nj孝徵lEanyangInstil:nteoVTechnology嵌入式课程设计报告册题目:学生信息管理系统班级:移动三班辅导老师:邱雅一、软件需求分析1、可行性分析(1)经济可行性①:目前中国有越来越多的中小型企业在蓬勃发展,而现代化员工信息管理系统已经逐渐取代了传统的人工信息管理,智能化的管理系统更具有高效性可行性,所以自能管理系统将会成为或正在成为现代化公司员工信息管理的有效方式;②:这款学生信息管理系统的价格适合所有学校消费群体,将会有很大的应用空间,满足各种学校学生管理的要求;③:学生系信息管理系统的价格比相对于同类公司员工管理系统产品较低,同时本软件的成本低于同类产品的平均水平,具有很大的利润空间;④:本系统的开发环境和软件环境都是当前流行的产品,本系统的软件需求都是基本的功能和应用,在现实中很容易实现。(2)法律可行性本软件的开发采用C语言作为软件的开发语言,没有采用同类产的代码,完全是自主开发,并按照国际上软件开发的相关规定来实现开发的;(3)技术可行性本软件开发系统采用linux开发平台,具有很强的兼容性和扩展性,本软件的占用的内存较小大部分的硬件处理系统都可以兼容,开发语言采用国际通用的C高级编程语言具有很高的维护可行性,经过综合分析我认为现阶段我方所拥有的资源和技术人员,在技术上完全可以实现这款软件的开发,并且能高质量,快速的完成这项工作。2、用户需求概述用户需要一个可以简单的实现通讯录功能的简单通讯录系统,分别完成查询,增加,修改,删除的一些简单的功能要求在完成所要求功能的前提下增强与用户的互动,使软件的可操作性增强,此外还可以自愿加入一些新的功能来进行对软件的优化在优化的同时要注意软件基本功能的保障。二、软件分析与设计一・功能1、创建班级2、输出学生信息3、按照学号录入学生成绩4、按照班级录入学生成绩
5、按照学号修改学生成绩6、按照班级修改学生成绩7、按照班级统计学生的总成绩8、按照学号查询学生成绩9、按照班级输出不及格学生名单及科目10、按照班级输出学生成绩单0、退出系统二.功能模块图:学生信息管理系统创建班级输出学生信息按照学号录入学生成绩1i按照创建班级输出学生信息按照学号录入学生成绩1i按照3按照1按'照班级学号班级1录入修改修改学生学生学生成绩成绩成绩按照按照!班级2按照班级按照输H;班级统计学号1不及1输出学生查询格学2学生的总学生生名】成绩成绩成-绩单及1单科目1按照班级1输出学生成绩单图1系统功能模块图三、主要功能的实现程序设计一般由两部分组成些数据结构具有同样的重要性保存等外更多的情况是查询1、学生信息管理算法和数据结构,合理地选择和实现一个数据结构和处理这,在学生信息管理程序中由于预计记录数比较大能够、删除、。所以选用动态链表保存数据。程序设计一般由两部分组成些数据结构具有同样的重要性保存等外更多的情况是查询1、学生信息管理由于信息输入量比较大,需要的存储空间大,所以需要采用树的双亲表示法进行信息存储,为了方便采用以下定义。structstudent{intnum;charname[20];charsex[5];charclass[30];intsemester;charcourse[30];intscore[3];structstudent*next;);structlist{intclass;structstudent*head;);2.main()主函数程序采用模块化设计,主函数是程序的人口各模块独立。可分块调试均由主函数控制调用控制功能的实现通过循环执行一个开关语句,该语句的条件值是通过调用主菜单函数得到的返回值,根据该值调用相应的各功能函数。同时设置一个断点。即当返回值为一定条件时运行break0;函数结束程序,以免造成死循环。根据菜单的提示进行需要的操作。「 root@!ocalhost:~ -nx文件(E编瑁(日查看①)然端(工)标签(且)帮助出)[root®localhost-]#gccc.c-oc[raot@localhost-]#./c输入.班级数里:2粕用#######学生信息管理系统############1、创建班级2、输出学生信息3,按照学号录入.学生成绩4、按照班缎录A学生成绩5、按照学号修改学生成绩6、按照班缎修改学生成绩九按照班级统计学生的总成绩8、按照学号查询学生成绩9、按照班级输出不及格学生名单及科目10.按照班缎输出学生成绩单退出系统图2主函数输出界面
图3程序总体流程图(1)主菜单直接利用输出函数printf输出字符串在屏幕上显示一个菜单并显示一个提示输入选项输入数字,将此数字作为菜单函数的返回值返回主函数,主函数根据这个数字调用相应的功能函数,制作简便,操作简单界面如图10-2所示:IFroot@localhost:~IF文件编辑(日查看(V)终端(工)标签(旦)帮助出)[root(atocal.ho5t-]#gccc.c-oc[root@lacaihost-]#./c输入班级数里:2退出系统.创建班级2、输出学生信息3.按照字号录入学生成绩4、按照班级录入学生成绩5、按照学号修改学生成绩6、按照班级修改学生成绩7、按照班级统计学生的总成绩8.按照字号查询学生成绩9、按照班级输出不及格学生名单及科目10.按照班级输出学生成绩单请选择操作涓图4主菜单界面由于程序中很多地方用到了字符串输入语句会造成下一个字符不能正确读入为了在程序调用执行了各个函数后能够清晰地看到菜单 并输入新的选项。按照所见即所得的方式直接设计输出函数输出字符串达到菜单效果将精力主要放在程序功能的实现上利用while循环语句一直执行scanf(〃%d〃,t)语句。让用户输入数按照整形数据形式输入然后字符串转化为数字返回主函数。既然是数字选项为什么不用整数格式输入而要按字符串输入。再将其转换呢,如果按照整数格式输入,当用户输入了非数字字符。例如a和b等由于类型不同将导致程序出错。所以对于不参与运算的数据表面上看是数字也应将其设为字符处理。例如电话号码,千万不要设为整数类型,程序设计技巧很多。所以读者在编程调试中应注意并仔细体会。(2)创建班级输入记录时按照一条一行的格式输入,每个数据之间用空格分隔,较为清晰且能直接反映数据之间的关系,但由于scanf函数的特性,在输入时数据用回车分隔也是可以的,但与界面设计不吻合界面.由于记录并不是一次性全部输入而是随时填加和删除的,而预先开辟的空间数往往大于实际的记录数。所以程序设计为首先输入准备输入的记录数n,然后用while循环语句循环输信息。root@localhost:~文件(日编辑(日查看(V)终端(工)标签(良)帮助出)8.按照学号查询学生成绩9、按照班缎输出不及格学生名单及科目10.按照班级输出学生成绩单请选择操作:1输入第1个班级的信息:输入字号:101输入姓名:a是否鞋续?y输入字号:1B2输入姓名:f是否缝统?n输入第2个班级的信息:输入字号:201输入姓名:sd是否缝统?图5创建列表页面输出学生信息该功能的实现主要是 是通过结构体数组中的链表指针进行输出请选择操作:2移动1班学生信息TOC\o"1-5"\h\z101 a 0 & &102 f 0 & &移动2班学生信息201 sd 0 & &图6输出全部信息按照学号录入学生成绩通过头指针查找到需要录入成绩的节点,录入成绩。FOOocalhos文件(E编辑(日查看(史终端(工)标签(旦)帮助出)6、退出系统FOOocalhos文件(E编辑(日查看(史终端(工)标签(旦)帮助出)6、退出系统1,创建班缎2、输出学生信息3,按照学号录入学生成绩4、按照班缎录入学生成绩5、按照学号修改学生成绩6、按照班级修改学生成绩7、按照班缎统计学生的总成绩8、按照学号查询学生成绩9、按照班缎输出不及格学生名单及科目10.按照班级输出学生成绩单请选择操作与输入学号:1。1输入3门成绩:1223340、退出系统1,创建班缎2、输出学生信息3、按照字号录入学生成绩4、按照班级录入学生成绩5、按照学号修改学生成绩6、按照班级修改学生成绩7、按照班级统计学生的总成绩按照班级录入学生成绩按照学号修改学生成绩root@focalhostr-文件(E编辑匡)查看(V)终端(工)标签(良)帮助出)2、输出学生信息3.按照学号录入学生成绩4、按照班级录入学生成绩5、按照学号修改学生成绩6、按照班级修改学生成绩7、按照班级统计学生的总成绩.按照学号查询学生成绩9、按照班级输出不及格学生名单及科目.按照班级输出学生成绩单请选择操作:5请输入学号:由工请输入.新的成绩:567B990c'■aill-r一按照班级修改学生成绩
IFroot@localhost:~IF文件任)编辑1曰查看(V)蟀端(工)标签(国帮助出)2、输出学生信息3.按照学号录入学生成绩4、按照班级录入学生成绩5、按照学号修改学生成绩6、按照班级修改学生成绩7、按照班级统计学生的总成绩8、按照学号查询学生成绩9、按照班级输出不及格学生名单及科目.按照班级输出学生成绩单请选择操作:6输入,需要修改信息的班级号是否要修改加1的成绩:1眄10099按照班级统计学生的总成绩W.及照班甄捌H子土成须平请选择操作:了输入班级号1 22201的总虑绩是190平均成绩是66队退出系统.创建班级.输出学生信息3,按照字号录入学生成绩4、按照班级录入学生成绩5、按照学号修改学生成绩6、按照班级修改学生成绩九按照班级统计学生的总成绩8、按照学号查询学生成绩9、按照班级输出不及格学生名单及科目10.按照班级输出学生成绩单;由#+品±品柞,按照学号查询学生root@focafhost:~ _□X文件(E编辑(日查看(V)终端(工)标签(良)帮助出)3.按照学号录入学生成绩4、按照班级录入学生成绩5、按照学号修改学生成绩6、按照班级修改学生成绩7、按照班级统计学生的总成绩8、按照学号查询学生成绩9、按照班级输出不及格学生名单及科目10.按照班级输出学生成绩单请选择操作:8请输入学号:加1该学生不存在于1班学号为2。1的学生[移动2班]0 1B0 99按照班级输出不及格学生名单及科目按照班级输出不及格学生名单及科目( 11 )按照班级输出学生成绩单( 11 )按照班级输出学生成绩单四、程序设计(一)先进行人工检查,即静态检查。在写好一个程序以后,不要匆匆忙忙上机,而应对程序进行人工检查。这一步十分重要,它能发现程序设计人员由于疏忽而造成的多数错误。这一步往往容易被人忽视,总希望把一切都推给计算机去做,但这样会多占用机器时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序。为了更有效地进行人工检查,所编的程序应力求做到以下几点:①应当采用结构化程序方法编程,以增加可读性;②尽可能多加注释,以帮助理解每段程序的作用;③在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。(二)在人工检查无误后,再上机调试。通过上机发现错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应当注意的是有时提示出错的地方并不是真正出错的位置,如果在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。如果系统提示的出错信息很多,应当从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息。这时只要加上一个变量定义,就所有错误都消除了。(三)在改正语法错误(包括“错误(error)”和“警告(warning)”)后,程序经过连接(link)就得到可执行的目标程序。运行程序,输入程序所需数据,就可得到运行结果。应当对运行结果作分析,看它是否符合要求。有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。有时,数据比较复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据”输入这些数据可以很容易判断结果正确与否。例如解方程。事实上,当程序复杂时很难把所有的可能情况全部都试到,选择典型的临界数据作试验即可。(四)运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下办法:.将程序与流程图仔细对照,如果流程图是正确的,程序写错了,是很容易发现的。例如,复合语句忘记写花括弧,只要一对照流程图就能很快发现。.如果实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个printf函数语句,输出有关变量的值,逐段往下检查。直到找到在某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”,就能发现错误所在。.也可以用“条件编译”命令进行程序调试(在程序调试阶段,若干printf函数语句就要进行编译并执行。当调试完毕,这些语句不用再编译了,也不再被执行了)。这种方法可以不必一一去掉printf函数语句,以提高效率。.如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题。如有则改正之,接着修改程序。.有的系统还提供debug(调试)工具,踉踪程序并给出相应信息,使用更为方便,请查阅有关手册。总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于积累经验。在程序调试过程中往往反映出一个人的水平,经验和态度。希望大家给以足够的重视。上机调试程序的目的决不是为了“验证程序的正确”,而是“掌握调试的方法和技术”,要学会自己找问题,这样慢慢自己就会写出错误较少的实用程序。五、代码的实现#include<stdio.h>#include<stdlib.h>#defineMAXSIZE100structstudent{intnum;charname[20];charsex[5];charclass[30];intsemester;charcourse[30];intscore[3];structstudent*next;);structlist{intclass;structstudent*head;);voidCreatClassStudent(structlistClass[],intn)//创建班级{charch;inti;i=1;structstudent*head,*p,*q;head=(structstudent*)malloc(sizeof(structstudent));q=p=head;while(i<=n){printf("输入第1%^个班级的信息:\n",i);structstudent*head,*p,*q;head=(structstudent*)malloc(sizeof(structstudent));Class[i].head=p=head;while(1){printf("输入学号:\n");scanf("%d”,&head->num);printf("输入姓名:\n");scanf("%s”,head->name);head->score[0]=0;head->score[1]=0;head->score[2]=0;getchar();printf(〃是否继续?\n〃);scanf("%c”,&ch);if(ch==,n,)break;p=(structstudent*)malloc(sizeof(structstudent));head->next=p;head=p;)head->next=NULL;i++;voidprint(structlistClass[],intn)//输出学生信息 按照班级输出{structstudent*p;inti=1;while(i<=n)p=Class[i].head;printf("移动%d班学生信息\n”,i);while(p!=NULL)printf("%d\t”,p->num);printf("%s\t”,p->name);printf("%d\t%d\t%d”,p->score[0],p->score[1],p->score[2]);p=p->next;printf(〃\n〃);printf(〃\n〃);i++;voidStudentId(structlistClass[],int#//按照学号输入成绩intscore1,score2,score3;intt;intkey;printf("输入学号:");scanf("%d”,&key);inti;i=1;structstudent*p;while(i<=n){p=Class[i].head;while(p!=NULL){if(p->num==key){printf(〃输入3门成绩:〃);scanf("%d%d%d”,&score1,&score2,&score3);p->score[0]=score1;p->score[1]=score2;p->score[2]=score3;t=0;)p=p->next;)i++;)if(t!=0)printf("该学号不存在!\n");)voidClassId(structlistClass[],intn){inti=1;structstudent*p;while(i<=n){printf("录入%d班级的成绩\n”,i);p=Class[i].head;while(p!=NULL){printf("输入学号为%d的学生成绩:",p->num);scanf("%d%d%d”,&p->score[0],&p->score[1],&p->score[2]);p=p->next;)printf(〃成绩录入结束\n〃);i++;))voidStudentNumberChange(structlistClass口,intn){inti=1;intkey;intscore1,score2,score3;intt;printf("请输入学号:");scanf("%d”,&key);structstudent*p;while(i<=n){p=Class[i].head;while(p!=NULL){if(p->num==key){printf("请输入新的成绩:“);scanf("%d%d%d”,&score1,&score2,&score3);p->score[0]=score1;p->score[1]=score2;p->score[2]=score3;t=0;)p=p->next;)i++;)if(t!=0){printf("该学号不存在!\n");))voidClassNumChange(structlistClass口,intn)intclass;intscore1,score2,score3;charch;structstudent*p;printf(〃输入需要修改信息的班级号1^----%d:-,1,n);scanf("%d”,&class);p=Class[class].head;while(p!=NULL){printf("是否要修改%d的成绩:",p->num);getchar();scanf("%c”,&ch);if(ch==,n,){p=p->next;continue;)printf(〃输入新的成绩:〃);scanf("%d%d%d”,&score1,&score2,&score3);p->score[0]=score1;p->score[1]=score2;p->score[2]=score3;p=p->next;))voidTotalGrade(structlistClass[],intn){intsum=0;intaverage;intk;intclass;printf("输入班级号%d %d\n”,1,n);scanf("%d”,&class);structstudent*p;p=Class[class].head;while(p!=NULL){sum=p->score[0]+p->score[1]+p->score[2];average=sum/3;printf("%d的总成绩是%d平均成绩是%d\n”,p->num,sum,average);p=p->next;voidQueryResults(structlistClass[],intn){inti=1;intkey;intt;structstudent*p;printf("请输入学号:");scanf("%d”,&key);while(i<=n){p=Class[i].head;while(p!=NULL){if(p->num==key){printf("学号为%d的学生[移动%d班]”,p->num,i);printf("%d\t%d\t%d\n”,p->score[0],p->score[1],p->score[2]);t=0;break;)p=p->next;)if(t!=0){printf("该学生不存在于%d班\n",i);)i++;))voidNotPass(structlistClass[],intn){intclass;printf(〃请输入班级号%d %d:",1,n);scanf("%d”,&class);structstudent*p;p=Class[class].head;printf("%d班不及格名单\n”,class);while(p!=NULL){if(p->score[0]<60||p->score[1]<60||p->score[2]<60){printf("%d\t%s\t”,p->num,p->name);if(p->score[0]<60)printf("语文\t%d\t不及格\t”,p->score[0]);if(p->score[1]<60)printf("线性代数\t%d\t不及格\t”,p->score[1]);if(p->score[2]<60)printf("英语\t%d\t不及格\t”,p->score[2]);printf(〃\n〃);)p=p->next;))voidTranscript(structlistClass口,intn){intclass;printf("请输入班级号:“);scanf("%d”,&class);structstudent*p;p=Class[class].head;while(p!=NULL){printf("%d\t%s\t%d\t%d\t%d\
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生产产能及设备利用情况统计表
- 2025年内蒙古普通高中学业水平选择性考试适应性演练地理试题(八省联考)
- 高级商务顾问聘用协议
- 土方工程建筑垃圾清运合同
- 新员工入职引导及企业文化说明文书
- Ritipenem-生命科学试剂-MCE
- NMDA-agonist-1-生命科学试剂-MCE
- 常州手房购买合同
- 人转多人股权转让协议书
- 艺术史与设计理论考试题集合
- 环境和职业健康安全类法律法规、标准规范清单(2023年7月)
- 美丽的春天课件
- 2025年山东青岛自贸发展有限公司招聘笔试参考题库含答案解析
- 液化气罐的使用和安全防范
- 2025年中考物理总复习《内能》专项测试卷含有答案
- 会计法律法规答题答案
- 2024年无锡工艺职业技术学院高职单招语文历年参考题库含答案解析
- 兽医检验测试题(附参考答案)
- 剧本杀范本完整版
- 北师大版一年级语文下册第一单元元宵节《1元宵节》
- 蜜柚种植基地新建项目可行性研究报告
评论
0/150
提交评论