2023年嵌入式课程设计 学生信息管理系统.docx
《2023年嵌入式课程设计 学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《2023年嵌入式课程设计 学生信息管理系统.docx(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023年嵌入式课程设计 学生信息管理系统 第一篇:嵌入式课程设计 学生信息管理系统 嵌入式课程设计报告册 题目:学生信息管理系统 班级:移动三班 辅导老师:邱雅 一、软件需求分析 1、可行性分析 1经济可行性 :目前中国有越来越多的中小型企业在蓬勃进展,而现代化员工信息管理系统已经慢慢取代了传统的人工信息管理,智能化的管理系统更具有高效性可行性,所以自能管理系统将会成为或正在成为现代化公司员工信息管理的有效方式; :这款学生信息管理系统的价格适合全部学校消费群体,将会有很大的应用空间,满意各种学校学生管理的要求; :学生系信息管理系统的价格比相对于同类公司员工管理系统产品较低,同时本软件的本
2、钱低于同类产品的平均水平,具有很大的利润空间; :本系统的开发环境和软件环境都是当前流行的产品,本系统的软件需求都是基本的功能和应用,在现实中很简洁实现。 2法律可行性 本软件的开发接受C语言作为软件的开发语言,没有接受同类产的代码,完全是自主开发,并依据国际上软件开发的相关规定来实现开发的; 3技术可行性 本软件开发系统接受linux开发平台,具有很强的兼容性和扩展性,本软件的占用的内存较小大部分的硬件处理系统都可以兼容,开发语言接受国际通用的C高级编程语言具有很高的维护可行性,经过综合分析我认为现阶段我方所拥有的资源和技术人员,在技术上完全可以实现这款软件的开发,并且能高质量,快速的完成这
3、项工作。 2、用户需求概述 用户需要一个可以简洁的实现通讯录功能的简洁通讯录系统,分别完成查询,增加,修改,删除的一些简洁的功能要求在完成所要求功能的前提下增加与用户的互动,使软件的可操作性增加,此外还可以志愿加入一些新的功能来进行对软件的优化在优化的同时要留意软件基本功能的保障。 二、软件分析与设计 一功能 1、创建班级 2、输出学生信息 3、依据学号录入学生成果 4、依据班级录入学生成果 5、依据学号修改学生成果 6、依据班级修改学生成果 7、依据班级统计学生的总成果 8、依据学号查询学生成果 9、依据班级输出不及格学生名单及科目 10、依据班级输出学生成果单 0、退出系统 二功能模块图:
4、 学生信息管理系统依据创建班级输出学生信息依据学号录入学生成果依据班级录入学生成果依据学号修改学生成果依据班级修改学生成果依据班级统计学生的总成果依据学号查询学生成果班级输出不及格学生名单及科目依据班级输出学生成果单依据班级输出学生成果单 图1 系统功能模块图 三、主要功能的实现 程序设计一般由两部分组成 些数据结构具有同样的重要性 保存等外更多的状况是查询 1、学生信息管理 算法和数据结构,合理地选择和实现一个数据结构和处理这,在学生信息管理程序中由于意料记录数比较大能够、删除、。所以选用动态链表保存数据。 由于信息输入量比较大,需要的存储空间大,所以需要接受树的双亲表示法进行信息存储,为了
5、便利接受以下定义。struct student int num;char name;char sex;char class;int semester;char course;int score;struct student *next; struct list int class;struct student *head;2.main()主函数 程序接受模块化设计,主函数是程序的入口各模块独立。可分块调 试均由主函数限制调用限制功能的实现通过循环执行一个开关语句,该语句的条件值是通过 调用主菜单函数得到的返回值,根据该值 调用相应的各功能函数。同时设置一个断点。即当返回值为确定条件时运行bre
6、ak 0;函数结束程序,以免造成死循环。根据菜单的提示进 行需要的操作。 图2 主函数输出界面 起先输入数据否选择是功能选择退出系统结束 图3 程序总体流程图1主菜单 干脆利用输出函数 printf 输出字符串在屏幕上显示一个菜单并显示一个提示输入 选项输 入数字,将此数字作为菜单函数的返回值返回主函数,主函数根据 这个数字调用相应的功 10-2 所示: 能函数,制作简便,操作简洁界面如图 图 4 主菜单界面 由于程序中很多地方用到了字符串输入语句会造成下一个字符不能正确读入为了 在程序调 依据所见即所得的方式干脆 用执行了各个函数后能够清晰地看到菜单 并输入新的选项。设计输出函数输出字符串到
7、达菜单效果将精力主要放在程序功能的实现上利用 while循环 语句始终执行 scanf(“%d,t)语句。让用户输入 数依据整形数据形式输入然后字符串转化 为数字返回主函数。既然是数字选项为什么不用整数格式输入而要按字符串输入。再将其 a 和 b 等 由于类转换呢,假如依据整数格式输入,当用户输入了非数字字 符。例如 外表上看是数字也应将其设为字符 型不同将导致程序出错。所以对于不参与运算的数据 处理。例如电话号码,千万不要设为整数类型,程序设计技巧很多。所以读者在编程调试中应留意并细致体会。 2创建班级 输入记录时依据一条一行的格式输入,每个数据之间用空格分隔,较为清晰且能干脆 反映数据之间
8、的关系,但由于 scanf 函数的特性,在输入时数据用回车分隔也是可以的,但与 界面设计不吻合界面.由于记录并不是一次性全部输入而是随时填加和删除的,而预先开拓 n,然后用的空间数往往大于实际的记录数。所以程序设计为首先输入准备输入的记录数 while循环语句循环输信息。 图5 创建列表页面 输出学生信息 该功能的实现主要是 是通过结构体数组中的链表指针进行输出 图6输出全部信息 依据学号录入学生成果 通过头指针查找到需要录入成果的节点,录入成果。 依据班级录入学生成果 依据学 号 修 改 学 生 成果 依据班级修改学生成果 依据班 级 统 计 学 生的总 成果 依据学 号 查 询 学 生 成
9、果 依据班级输 出 不 及 格 学 生 名 单 及 科 目11依据班级输出学生成果单 四、程序设计 一)先进行人工检查,即静态检查。 在写好一个程序以后,不要匆忙忙忙上机,而应对程序进行人工检查。这一步特别重要,它能觉察程序设计人员由于疏忽而造成的多数错误。这一步往往简洁被人忽视,总盼望把一切都推给计算机去做,但这样会多占用机器时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序。 为了更有效地进行人工检查,所编的程序应力求做到以下几点: 应当接受结构化程序方法编程,以增加可读性; 尽可能多加注释,以关心理解每段程序的作用; 在编写困难的程序时不要将全部语句都写
10、在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。 (二)在人工检查无误后,再上机调试。 通过上机觉察错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应当留意的是有时提示出错的地方并不是真正出错的位置,假如在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非确定精确,由于出错的状况繁多且各种错误互有关联,因此要擅长分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。 假如系统提示的出错信息很多,应当从上到下逐一改正。有时显示出
11、一大片出错信息往往使人感到问题严峻,无从下手。其实可能只有一二个错误。例如,对运用的变量未定义,编译时就会对全部含该变量的语句发出出错信息。这时只要加上一个变量定义,就全部错误都消退了。 (三)在改正语法错误包括“错误error和“警告(warning)后,程序经过连接link就得到可执行的目标程序。运行程序,输入程序所需数据,就可得到运行结果。应当对运行结果作分析,看它是否符合要求。有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。 有时,数据比较困难,难以马上推断结果是否正确。可以事先考虑好一批“试验数据,输入这些数据可以很简洁推断结果正确与否。例如解方程。事实上,当程序困难
12、时很难把全部的可能状况全部都试到,选择典型的临界数据作试验即可。 (四)运行结果不对,大多属于规律错误。对这类错误往往需要细致检查和分析才能觉察。可以接受以下方法: 1.将程序与流程图细致比照,假如流程图是正确的,程序写错了,是很简洁觉察的。例如,复合语句遗忘写花括弧,只要一比照流程图就能很快觉察。 2.假照实在找不到错误,可以接受“分段检查的方法。在程序不同的位置设几个printf函数语句,输出有关变量的值,逐段往下检查。直到找到在某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区,就能觉察错误所在。 3.也可以用“条件编译叮嘱进行程序调试在程序调试阶段,若干print
13、f函数语句就要进行编译并执行。当调试完毕,这些语句不用再编译了,也不再被执行了。这种方法可以不必一一去掉printf函数语句,以提高效率。 4.假如在程序中没有觉察问题,就要检查流程图有无错误,即算法有无问题。如有则改正之,接着修改程序。 5.有的系统还供应debug调试工具,跟踪程序并给出相应信息,运用更为便利,请查阅有关手册。 总之,程序调试是一项细致深化的工作,需要下功夫,动脑子,擅长积累阅历。在程序调试过程中往往反映出一个人的水平,阅历和看法。盼望大家给以足够的重视。上机调试程序的目的决不是为了“验证程序的正确,而是“驾驭调试的方法和技术,要学会自己找问题,这样慢慢自己就会写出错误较少
14、的好用程序。 五、代码的实现 #include #include #define MAXSIZE 100 struct student int num;char name;char sex;char class;int semester;char course;int score;struct student *next; struct list int class;struct student *head; void CreatClassStudent(struct list Class,int n)/创建班级 char ch;int i;i = 1;struct student *head
15、,*p,*q;head =(struct student *)malloc(sizeof(struct student);q = p = head;while(i num); printf(“输入姓名:n); scanf(“%s,head-name); head-score = 0; head-score = 0; head-score = 0; getchar(); printf(“是否接着?n); scanf(“%c,&ch); if(ch = n) break; p =(struct student *)malloc(sizeof(struct student); head-next =
16、 p; head = p; head-next = NULL; i+; void print(struct list Class,int n)/输出学生信息 依据班级输出 struct student *p;int i=1; while(i num); printf(“%st,p-name); printf(“%dt%dt%d,p-score,p-score,p-score); p = p-next; printf(“n); printf(“n); i+; void StudentId(struct list Class,int n)/依据学号输入成果 int score1,score2,sc
17、ore3;int t;int key;printf(“输入学号:); scanf(“%d,&key); int i;i = 1;struct student *p; while(i num = key) printf(“输入3门成果:); scanf(“%d%d%d,&score1,&score2,&score3); p-score = score1; p-score = score2; p-score = score3; t = 0; p = p-next; i+; if(t!= 0) printf(“该学号不存在!n); void ClassId(struct list Class,int
18、 n) int i = 1;struct student *p;while(i num); scanf(“%d%d%d,&p-score,&p-score,&p-score); p = p-next; printf(“成果录入结束n); i+; void StudentNumberChange(struct list Class,int n) int i = 1;int key;int score1,score2,score3;int t; printf(“请输入学号:);scanf(“%d,&key);struct student *p;while(i num = key) printf(“
19、请输入新的成果:); scanf(“%d%d%d,&score1,&score2,&score3); p-score = score1; p-score = score2; p-score = score3; t = 0; p = p-next; i+; if(t!= 0) printf(“该学号不存在!n); void ClassNumChange(struct list Class,int n) int class;int score1,score2,score3;char ch;struct student *p;printf(“输入需要修改信息的班级号%d-%d:,1,n);scanf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023年嵌入式课程设计 学生信息管理系统 2023 嵌入式 课程设计 学生 信息管理 系统
限制150内