嵌入式课程设计报告学生信息管理系统_第1页
嵌入式课程设计报告学生信息管理系统_第2页
嵌入式课程设计报告学生信息管理系统_第3页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.嵌入式课程设计报告册 题目:学生信息管理系统 班级:移动三班 辅导教师:邱雅一、软件需求分析1、可行性分析1经济可行性:目前中国有越来越多的中小型企业在蓬勃开展,而现代化员工信息管理系统已经逐渐取代了传统的人工信息管理,智能化的管理系统更具有高效性可行性,所以自能管理系统将会成为或正在成为现代化公司员工信息管理的有效方式;:这款学生信息管理系统的价格适合所有学校消费群体,将会有很大的应用空间,满足各种学校学生管理的要求;:学生系信息管理系统的价格比相对于同类公司员工管理系统产品较低,同时本软件的本钱低于同类产品的平均水平,具有很大的利润空间;:本系统的开发环境和软件环境都是当前流行的产品,本

2、系统的软件需求都是根本的功能和应用,在现实中很容易实现。2法律可行性本软件的开发采用C语言作为软件的开发语言,没有采用同类产的代码,完全是自主开发,并按照国际上软件开发的相关规定来实现开发的;3技术可行性 本软件开发系统采用linux开发平台,具有很强的兼容性和扩展性,本软件的占用的内存较小大局部的硬件处理系统都可以兼容,开发语言采用国际通用的C高级编程语言具有很高的维护可行性,经过综合分析我认为现阶段我方所拥有的资源和技术人员,在技术上完全可以实现这款软件的开发,并且能高质量,快速的完成这项工作。2、用户需求概述用户需要一个可以简单的实现通讯录功能的简单通讯录系统,分别完成查询,增加,修改,

3、删除的一些简单的功能要求在完成所要求功能的前提下增强与用户的互动,使软件的可操作性增强,此外还可以自愿参加一些新的功能来进展对软件的优化在优化的同时要注意软件根本功能的保障。二、软件分析与设计一功能 1、创立班级2、输出学生信息3、按照学号录入学生成绩4、按照班级录入学生成绩5、按照学号修改学生成绩6、按照班级修改学生成绩7、按照班级统计学生的总成绩8、按照学号查询学生成绩9、按照班级输出不及格学生及科目10、按照班级输出学生成绩单0、退出系统二功能模块图:图1 系统功能模块图三、主要功能的实现程序设计一般由两局部组成算法和数据构造,合理地选择和实现一个数据构造和处理这些数据构造具有同样的重要

4、性,在学生信息管理程序中由于预计记录数比拟大能够、删除、保存等外更多的情况是查询。所以选用动态链表保存数据。1、学生信息管理 由于信息输入量比拟大,需要的存储空间大,所以需要采用树的双亲表示法进展信息存储,为了方便采用以下定义。struct studentint num;char name20;char sex5;char class30;int semester;char course30;int score3;struct student *next;struct listint class;struct student *head;2.main()主函数 程序采用模块化设计,主函数是程序

5、的入口各模块独立。可分块调 试均由主函数控制调用控制功能的实现通过循环执行一个开关语句,该语句的条件值是通过调用主菜单函数得到的返回值,根据该值调用相应的各功能函数。同时设置一个断点。即当返回值为一定条件时运行break 0;函数完毕程序,以免造成死循环。根据菜单的提示进展需要的操作。图2 主函数输出界面图3 程序总体流程图1主菜单直接利用输出函数 printf 输出字符串在屏幕上显示一个菜单并显示一个提示输入 选项输入数字,将此数字作为菜单函数的返回值返回主函数,主函数根据 这个数字调用相应的功能函数, 制作简便, 操作简单界面如图 10-2 所示:图 4 主菜单界面 由于程序中很多地方用到

6、了字符串输入语句会造成下一个字符不能正确读入为了 在程序调用执行了各个函数后能够清晰地看到菜单并输入新的选项。按照所见即所得的方式直接设计输出函数输出字符串到达菜单效果将精力主要放在程序功能的实现上利用 while循环语句一直执行 scanf("%d" ,t)语句。让用户输入 数按照整形数据形式输入然后字符串转化为数字返回主函数 。既然是数字选项为什么不用整数格式输入而要按字符串输入。再将其转换呢,如果按照整数格式输入,当用户输入了非数字字 符。例如 a 和 b 等由于类型不同将导致程序出错。所以对于不参与运算的数据外表上看是数字也应将其设为字符处理。例如,千万不要设为整数

7、类型,程序设计技巧很多。所以读者在编程调试中应注意并仔细体会。2创立班级 输入记录时按照一条一行的格式输入,每个数据之间用空格分隔,较为清晰且能直接反映数据之间的关系,但由于 scanf 函数的特性,在输入时数据用回车分隔也是可以的,但与界面设计不吻合界面.由于记录并不是一次性全部输入而是随时填加和删除的,而预先开辟的空间数往往大于实际的记录数。所以程序设计为首先输入准备输入的记录数 n, 然后用while循环语句循环输信息。图5 创立列表页面输出学生信息该功能的实现主要是 是通过构造体数组中的链表指针进展输出图6输出全部信息按照学号录入学生成绩通过头指针查找到需要录入成绩的节点,录入成绩。按

8、照班级录入学生成绩按照学号修改学生成绩按照班级修改学生成绩按照班级统计学生的总成绩按照学号查询学生成绩按照班级输出不及格学生及科目11按照班级输出学生成绩单四、程序设计一)先进展人工检查,即静态检查。在写好一个程序以后,不要匆匆忙忙上机,而应对程序进展人工检查。这一步十分重要,它能发现程序设计人员由于疏忽而造成的多数错误。这一步往往容易被人无视,总希望把一切都推给计算机去做,但这样会多占用机器时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序。为了更有效地进展人工检查,所编的程序应力求做到以下几点:应当采用构造化程序方法编程,以增加可读性;尽可能多加注释,以帮

9、助理解每段程序的作用;在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。(二)在人工检查无误后,再上机调试。通过上机发现错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应当注意的是有时提示出错的地方并不是真正出错的位置,如果在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。如果系统

10、提示的出错信息很多,应当从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息。这时只要加上一个变量定义,就所有错误都消除了。(三)在改正语法错误包括“错误error和“警告(warning)后,程序经过连接link就得到可执行的目标程序。运行程序,输入程序所需数据,就可得到运行结果。应当对运行结果作分析,看它是否符合要求。有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。有时,数据比拟复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据,输入这些数据可以很容易

11、判断结果正确与否。例如解方程。事实上,当程序复杂时很难把所有的可能情况全部都试到,选择典型的临界数据作试验即可。(四)运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下方法:1.将程序与流程图仔细对照,如果流程图是正确的,程序写错了,是很容易发现的。例如,复合语句忘记写花括弧,只要一对照流程图就能很快发现。2.如果实在找不到错误,可以采用“分段检查的方法。在程序不同的位置设几个printf函数语句,输出有关变量的值,逐段往下检查。直到找到在某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区,就能发现错误所在。3.也可以用“条件编译命令进

12、展程序调试在程序调试阶段,假设干printf函数语句就要进展编译并执行。当调试完毕,这些语句不用再编译了,也不再被执行了。这种方法可以不必一一去掉printf函数语句,以提高效率。4.如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题。如有那么改正之,接着修改程序。5.有的系统还提供debug调试工具,跟踪程序并给出相应信息,使用更为方便,请查阅有关手册。总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于积累经历。在程序调试过程中往往反映出一个人的水平,经历和态度。希望大家给以足够的重视。上机调试程序的目的决不是为了“验证程序的正确,而是“掌握调试的方法和技术,要学会自

13、己找问题,这样慢慢自己就会写出错误较少的实用程序。五、代码的实现*include <stdio.h>*include <stdlib.h>*define MAXSIZE 100struct studentint num;char name20;char sex5;char class30;int semester;char course30;int score3;struct student *next;struct listint class;struct student *head;void CreatClassStudent(struct list Class,i

14、nt n)/创立班级char ch;int i;i = 1;struct student *head,*p,*q;head = (struct student *)malloc(sizeof(struct student);q = p = head;while(i <= n)printf("输入第%d个班级的信息:n",i);struct student *head,*p,*q;head = (struct student *)malloc(sizeof(struct student);Classi.head = p = head;while(1)printf(&qu

15、ot;输入学号:n");scanf("%d",&head->num);printf("输入XX:n");scanf("%s",head->name);head->score0 = 0;head->score1 = 0;head->score2 = 0;getchar();printf("是否继续"n");scanf("%c",&ch);if(ch = 'n')break;p = (struct student *)

16、malloc(sizeof(struct student);head->next = p;head = p;head ->next = NULL;i+;void print(struct list Class,int n)/输出学生信息 按照班级输出struct student *p;int i=1;while(i <= n )p = Classi.head;printf("移动%d班学生信息n",i);while(p != NULL)printf("%dt",p->num);printf("%st",p-&g

17、t;name);printf("%dt%dt%d",p->score0,p->score1,p->score2);p = p->next;printf("n");printf("n");i+;void StudentId(struct list Class,int n)/按照学号输入成绩int score1,score2,score3;int t;int key;printf("输入学号:"); scanf("%d",&key);int i;i = 1;struc

18、t student *p;while(i <= n)p = Classi.head;while(p != NULL)if(p->num = key)printf("输入3门成绩:");scanf("%d%d%d",&score1,&score2,&score3);p->score0 = score1;p->score1 = score2;p->score2 = score3;t = 0;p = p->next;i+;if(t != 0)printf("该学号不存在!n");v

19、oid ClassId(struct list Class,int n)int i = 1;struct student *p;while(i <= n)printf("录入%d班级的成绩n",i);p = Classi.head;while(p != NULL)printf("输入学号为%d的学生成绩:",p->num);scanf("%d%d%d",&p->score0,&p->score1,&p->score2);p = p->next;printf("成绩录

20、入完毕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 <= n)p = Classi.head;while(p != NULL)if(p->num = key)printf("请输入新的成绩:");scanf("%d%

21、d%d",&score1,&score2,&score3);p->score0 = score1;p->score1 = score2;p->score2 = 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("输入需要修改

22、信息的班级号%d-%d:",1,n);scanf("%d",&class);p = Classclass.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,&

23、;score3);p->score0 = score1;p->score1 = score2;p->score2 = score3;p = p->next;void TotalGrade(struct list Class,int n)int sum = 0;int average;int k;int class;printf("输入班级号%d-%dn",1,n);scanf("%d",&class);struct student *p;p = Classclass.head;while(p != NULL)sum = p

24、->score0 + p->score1 + p->score2;average = sum / 3;printf("%d的总成绩是%d平均成绩是%dn",p->num,sum,average);p = p->next;void QueryResults(struct list Class,int n)int i = 1;int key;int t;struct student *p;printf("请输入学号:");scanf("%d",&key);while(i <= n)p = Cla

25、ssi.head;while(p != NULL)if(p->num = key)printf("学号为%d的学生移动%d班",p->num,i);printf("%dt%dt%dn",p->score0,p->score1,p->score2);t = 0;break;p = p->next;if(t != 0)printf("该学生不存在于%d班n",i);i+;void NotPass(struct list Class,int n)int class;printf("请输入班级号%

26、d-%d:",1,n);scanf("%d",&class);struct student *p;p = Classclass.head;printf("%d班不及格n",class);while(p != NULL)if(p->score0 < 60 | p->score1 < 60 | p->score2 < 60)printf("%dt%st",p->num,p->name);if(p->score0 < 60)printf("语文t%dt不

27、及格t",p->score0);if(p->score1 < 60)printf("线性代数t%dt不及格t",p->score1);if(p->score2<60)printf("英语t%dt不及格t",p->score2);printf("n");p = p->next;void Transcript(struct list Class,int n)int class;printf("请输入班级号:");scanf("%d",&

28、;class);struct student *p;p = Classclass.head;while(p != NULL)printf("%dt%st%dt%dt%dn",p->num,p->name,p->score0,p->score1,p->score2);p = p->next;void menu()printf("0、退出系统n");printf("1、创立班级n");printf("2、输出学生信息n");printf("3、按照学号录入学生成绩n");printf("4、按照班级录入学生成绩n");printf("5、按照学号修改学生成绩n");printf("6、按照班级修改学生成绩n")

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论