2023年嵌入式课程设计 学生信息管理系统.docx

上传人:1398****507 文档编号:70141639 上传时间:2023-01-16 格式:DOCX 页数:63 大小:40.46KB
返回 下载 相关 举报
2023年嵌入式课程设计 学生信息管理系统.docx_第1页
第1页 / 共63页
2023年嵌入式课程设计 学生信息管理系统.docx_第2页
第2页 / 共63页
点击查看更多>>
资源描述

《2023年嵌入式课程设计 学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《2023年嵌入式课程设计 学生信息管理系统.docx(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

20、(“%d,&class); p = 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 = score1; p-score = score2; p-score = score3; p = p-next; void TotalGrade(struct list Class,int n) i

21、nt sum = 0;int average;int k;int class;printf(“输入班级号%d-%dn,1,n);scanf(“%d,&class);struct student *p;p = Class.head;while(p!= NULL) sum = p-score + p-score + p-score; 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

22、key;int t;struct student *p;printf(“请输入学号:);scanf(“%d,&key);while(i num = key) printf(“学号为%d的学生移动%d班,p-num,i); printf(“%dt%dt%dn,p-score,p-score,p-score); t = 0; break; p = p-next; if(t!= 0) printf(“该学生不存在于%d班n,i); i+; void NotPass(struct list Class,int n) int class; printf(“请输入班级号%d-%d:,1,n);scanf(

23、“%d,&class);struct student *p;p = Class.head;printf(“%d班不及格名单n,class);while(p!= NULL) if(p-score score score num,p-name); if(p-score score); if(p-score score); if(p-scorescore); printf(“n); p = p-next; void Transcript(struct list Class,int n) int class;printf(“请输入班级号:);scanf(“%d,&class);struct stude

24、nt *p;p = Class.head;while(p!= NULL) printf(“%dt%st%dt%dt%dn,p-num,p-name,p-score,p-score,p-score); 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);printf(“ 7、依据班级统计学生的总成果n

25、);printf(“ 8、依据学号查询学生成果n);printf(“ 9、依据班级输出不及格学生名单及科目n);printf(“ 10、依据班级输出学生成果单n); int main() int n;int i;int operation; struct list Class;Class.head = NULL;Class.class =-1; printf(“输入班级数量:n);scanf(“%d,&n);while(1) menu(); printf(“请选择操作:); scanf(“%d,&operation); switch(operation) case 1:CreatClassSt

26、udent(Class,n); break; case 2:print(Class,n); break; case 3:StudentId(Class,n); break; case 4:ClassId(Class,n); break; case 5:StudentNumberChange(Class,n); break; case 6:ClassNumChange(Class,n); break; case 7:TotalGrade(Class,n); break; case 8: QueryResults(Class,n); break; case 9:NotPass(Class,n);

27、break; case 10:Transcript(Class,n); break; case 0:exit(-1); return 0; 六、参考文献 1、嵌入式linux上的C语言编程实践 北京亚嵌教化探讨中心、韩超 电子工业出版社 2、linux 下C语言应用编程 杨铸 北京航空航天高校出版社 3、linux 高级程序设计 杨宗德 邓玉春 人民邮电出版社 七、开发环境 开发环境linux操作系统 GNU Compiler Collection程序生成工具软件 其次篇:嵌入式系统课程设计 嵌入式系统概论综合设计报告书 设计题目:用键盘限制LED显示不同图形 中心民族高校 二零零八年十月三十

28、一日 一、设计目的 了解LED点阵和矩阵键盘的工作原理。 二、设计内容 编写程序限制用矩阵键盘限制LED点亮,产生不同的图形。 三、设计方案 功能概述: 本设计要实现的功能是通过键盘限制LED点阵图形显示,假如键盘输入0-9十个数字时显示相应的数字,假如输入其他的键,则显示“+号。 1、程序设计思路 本设计要实现键盘限制LED点阵图形显示,就必需要编写键盘和LED点阵的程序。先通过扫描矩阵键盘,得到键盘值,然后再调用点阵显示子函数,根据扫描的键盘值,在LED点阵上显示不同的图形。 2、主程序设计 主程序要实现的功能是矩阵键盘扫描,得到键盘值,然后把值传给LED显示函数。 程序流程图如下: 3、

29、LED点阵显示函数设计 本函数要实现的功能是根据键盘的值,在LED点阵上显示不同的图形。假如键盘的输入值为0-9则显示相应的数字,假如输入的是其他值,则显示“+。本程序接受二维数组存放要显示的图形的字模,然后再通过逐行扫描LED点阵,把要显示的图形分8次显示,一次显示一行,利用人眼的视觉暂留效应,是人看到的是一个图形一次显示出来,通过一个循环限制图形显示的时间。程序流程图如下: 4、点阵图形设计 根据8*8 LED点阵的原理,8X8 点阵共需要64 个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1 电平,某一行置0 电平,则相应的二极管就亮; 先绘制出要显示的

30、图形如下: 根据图形中点亮的LED灯的位置,得到相应图形的16进制数,存放在二维数组Buf1中。 所以要显示的图形的字模如下: buf1= 0x3c,0x24,0x24,0x24,0x24,0x24,0x3c,0x00,/0 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,/1 0x3c,0x20,0x20,0x3c,0x04,0x04,0x3c,0x00,/2 0x3c,0x20,0x20,0x3c,0x20,0x20,0x3c,0x00,/3 0x24,0x24,0x24,0x3c,0x20,0x20,0x20,0x00,/4 0x3c,0x04,0x04,

31、0x3c,0x20,0x20,0x3c,0x00,/5 0x3c,0x04,0x04,0x3c,0x24,0x24,0x3c,0x00,/6 0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x00,/7 0x3c,0x24,0x24,0x3c,0x24,0x24,0x3c,0x00,/8 0x3c,0x24,0x24,0x3c,0x20,0x20,0x3c,0x00,/9 0x08,0x08,0x08,0x3e,0x08,0x08,0x08,0x00 /+ ; 四、程序源代码 /* #include #include #include #include / open()

32、close()#include / read()write()#include #define DEVICE_NAME “/dev/led_ary_ctl #define DEVICE_NAME1 “/dev/keypad void Key(unsigned char b); /-main-int main(void) int fd; int ret; unsigned char buf; double x; char pre_scancode = 0xff; printf(“n start keypad_driver test nn); fd = open(DEVICE_NAME1, O_R

33、DWR); printf(“fd = %dn,fd); if(fd =-1) printf(“open device %s errorn,DEVICE_NAME1); else buf=0x22; while(1) read(fd,buf,1); if(buf!= pre_scancode) if(buf!=0xff) printf(“key =%xn,buf); Key(buf); pre_scancode = buf; usleep(50000); / close ret = close(fd); printf(“ret=%dn,ret); printf(“close keypad_dri

34、ver testn); return 0;/ end main /* /-void Key(unsigned char b) int fd; int ret; int i,j,k; unsigned char buf; unsigned char buf2=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char buf1=0x3c,0x24,0x24,0x24,0x24,0x24,0x3c,0x00,/0 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,/1 0x3c,0x20,0x20,0x3c,0x04,0

35、x04,0x3c,0x00,/2 0x3c,0x20,0x20,0x3c,0x20,0x20,0x3c,0x00,/3 0x24,0x24,0x24,0x3c,0x20,0x20,0x20,0x00,/4 0x3c,0x04,0x04,0x3c,0x20,0x20,0x3c,0x00,/5 0x3c,0x04,0x04,0x3c,0x24,0x24,0x3c,0x00,/6 0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x00,/7 0x3c,0x24,0x24,0x3c,0x24,0x24,0x3c,0x00,/8 0x3c,0x24,0x24,0x3c,0x20,

36、0x20,0x3c,0x00,/9 0x08,0x08,0x08,0x3e,0x08,0x08,0x08,0x00 /+ ; / begin of led ary buf= 1; buf= 0; if(b=9)i=b;else i=10; fd = open(DEVICE_NAME, O_RDWR); printf(“fd = %dn,fd); if(fd =-1) printf(“open device %s errorn,DEVICE_NAME); else for(j=0;j=5;j+) for(k=0;k8;k+) buf=buf1;buf=buf2; write(fd,buf,2);

37、 usleep(1); / close ret = close(fd); printf(“ret=%dn,ret); printf(“close led_driver testn); /- 五、设计结果 实现键盘限制LED点阵显示,输入0-9十个数字时显示相应的数字,假如输入其他的键,则显示“+号。 六、心得体会 通过本次试验,我们对linux下的试验更加熟识了,对LED点阵显示和矩阵键盘的原理有了深化的了解,驾驭了点阵图形的设计方法和键盘的输入的读取,并把二者结合起来,实现了键盘限制点阵图形现实。 在试验过程中,我们也出现了问题,最起先时,由于不清楚点阵的C,R的凹凸位的对应状况,经过试验,

38、才确定。然后就是点阵的显示是一闪即过的,然后我们通过循环限制了点阵的显示时间。总之,通过这次设计,我们都学到了很多东西。 第三篇:C+课程设计学生信息管理系统 C+程序设计实践教学环节任务书 一、题目:学生信息管理系统 二、目的与要求 1.目的: (1)驾驭面对对象程序设计的基本思路和方法; (2)了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块 组装与整体调试的全过程; (3)进一步熟识C+中类的概念、类的封装、继承的实现方式;(4)学会分析简洁的实际问题,并能利用所学的学问建立系统的规律结构,学会简洁的调试技巧和方法。逐步熟识面对对象程序设计的方法,养成良好的编程习惯。 2.要

39、求基本要求: (1)要求利用C+面对对象的编程思想来完成系统的设计;(2)进行简洁界面设计,能够实现友好的交互;(3)具有清晰的程序流程图和数据结构的具体定义;(4)娴熟驾驭C+对文件的各种操作。 三、信息描述 有关该系统基本信息的描述如:学号、姓名、系别、班级和各科成果等。 四、功能描述 1.添加、删除 系统将提示用户输入新添加学生的信息;由用户输入要删除的学生的学号,然后调用删除函数,删除该名学生的资料。2.查找 首先由用户输入要查找的学生的学号,系统用查找函数查找,然后系统就调用输出函数。 3.修改 首先由用户输入要修改的学生的学号,然后系统用修改函数查找,显示该名学生的资料,然后系统提示用户输入需要修改的项目和新的资料。4.界面要求 起先登录管理界面、主要提示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁