嵌入式Linux C程序设计课程设计学生成绩系统.doc

上传人:仙人指路1688 文档编号:2385380 上传时间:2023-02-17 格式:DOC 页数:24 大小:396.50KB
返回 下载 相关 举报
嵌入式Linux C程序设计课程设计学生成绩系统.doc_第1页
第1页 / 共24页
嵌入式Linux C程序设计课程设计学生成绩系统.doc_第2页
第2页 / 共24页
嵌入式Linux C程序设计课程设计学生成绩系统.doc_第3页
第3页 / 共24页
嵌入式Linux C程序设计课程设计学生成绩系统.doc_第4页
第4页 / 共24页
嵌入式Linux C程序设计课程设计学生成绩系统.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《嵌入式Linux C程序设计课程设计学生成绩系统.doc》由会员分享,可在线阅读,更多相关《嵌入式Linux C程序设计课程设计学生成绩系统.doc(24页珍藏版)》请在三一办公上搜索。

1、苏 州 市 职 业 大 学课程设计任务书 课程名称: 嵌入式Linux C程序设计 起讫时间: 2011-12-26至2011-12-30 院 系: 电子信息工程系 班级: 10电子信息技术(1) 指导教师: 系 主 任: 苏 州 市 职 业 大 学课程设计说明书 名称 嵌入式Linux C程序设计 2011年12月26日至2011年12月30日共1周院 系 电子信息工程系 班 级 10电子信息技术1 姓 名 系主任 教研室主任 崔志磊 指导教师 一、课程设计课题利用嵌入式LinuxC程序设计课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助掌握编程、调试的基本技能

2、。参考题目:课题推荐:如学生另选课题,须经指导教师同意。1、建立一个链表,每个结点包含:学号、姓名、3门考试成绩1) 按学号排序;2) 输入一个学生学号,输出其成绩。3) 输入一个学生的信息将它插入链表中(假定链表按学号有序)。4) 统计该链表中学生总成绩和平均成绩。 5) 找出成绩最高的学生序号和课程.6) 找出不及格课程的学生序号及其各门课的全部成绩.7) 求全部学生各门课程的平均分数,并输出.2、投骰子游戏:游戏者投两枚骰子,每个骰子有六面,这些面包含1,2,3,4,5,6个点。投两枚骰子之后,计算点数之和。如果第一次投时的和为7或11,则游戏者获胜。如果第一次投时的和为2,3或12,则

3、游戏者输,庄家赢。如果第一次投时的和为4,5,6,8,9,10,则这个和成为游戏者下次投骰子获胜的点数。要想赢,就要继续投骰子,直到投到点数。如果投七次之后还没有赚到点数,则游戏者输。3、教材P239 “动手练练” 34、用递归方法建立一颗二叉树,至少有10个节点,每个节点都存放整数值。要求所有的左孩子都小于根节点,而所有的右孩子都大于根节点。最后以中序序列输出此树。5、一个简单计算器 ,从屏幕输入算式,要求能够完成一般四则运算。提示:用链表或数组6、万年历,见运行效果7、校际运动会管理系统,见运行效果问题描述:1.初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数; 各项目

4、名次取法有如下几种: 取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1; 取前3名:第1名得分 5,第2名得分 3,第3名得分2; 用户自定义:各名次权值由用户指定。2.由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。3.所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,查看参赛学校信息和比赛项目信息等。提示:程序中可能用到以下定义信息,可以写在一个 .h 文件里: #ifndef _MAINFILE_H_#define _MAINFILE_H_/*/#include stdio.h#include stdlib.h#define

5、 MAXLENGTH 20 /*字符串最大长度*/#define MAX_N 20 /*最大参赛学校数目*/#define MAX_M 30 /*男子项目最大数目*/#define MAX_W 20 /*女子项目最大数目*/#define LEN sizeof(Position)#ifndef NULL#define NULL (void*)0#endif /*NULL*/typedef enum _Bool _TRUE=1,_FALSE=0Bool;typedef enum _SportType _MAN,_WOMAN SportType; /*sport type*/typedef enu

6、m _ScoreType _FIVE,_THREE,_CUSTOM ScoreType; /*score type*/*单个学校信息描述*/typedef struct _SchoolInfoint SchoolNum;/*学校编号*/char schoolNameMAXLENGTH;/*学校名称*/SchoolInfo,*pSchoolInfo;/*全部参赛学校描述*/typedef struct _SchoolSchoolInfo schInfoArrayMAX_N;int nTotalNmOfSch;/*参赛学校总数*/School,*pSchool;/*某一竞赛项目名次取法*/type

7、def struct _ScrInfoint total;/*取前多少名*/int* power;/*每一名次对应分值*/ScrInfo,*pScrInfo;/*单个竞赛项目信息描述*/typedef struct _SportInfoint sportNum;/*项目编号*/char sportNameMAXLENGTH;/*项目名称*/SportType sprtTyp;/*项目类型(男子、女子)*/ScoreType scrTyp;/*取名次类型(前5、前3、用户自定义)*/ScrInfo scrInfo;/*名次取法纪录项*/SportInfo,*pSportInfo;/*全部竞赛项目

8、信息描述*/typedef struct _SportSportInfo sportInfoArrayMAX_M+MAX_W;int nTotalNmOfMSprt;/*男子项目总数*/int nTotalNmOfFSprt;/*女子项目总数*/Sport,*pSport;/*比赛成绩记录*/typedef struct _Positionint sportNum;/*竞赛项目编号*/char nameMAXLENGTH;/*获得名次的运动员姓名*/int score;/*得分*/int schoolNum;/*所属学校编号*/struct _Position *ptrNext;Positio

9、n,*pPosition;二、课程设计要求1要求1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;2)按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;3)利用课程中所学到知识,能够作到:进行功能需求分析,设计合理的数据结构和系统框架,程序功能齐全,界面友好,能正确运行;4)按时到机房上机,不得旷课、迟到、早退及做与课程设计内容无关的事,并接受指导老师的检查;5)课题完成后必须按要求提交课程设计报告,课程设计报告要求及内容见本课程设计任务书第四点。2成绩评定1)课程设计成绩按优、良、中、及格和不及格五级评定;2)能独立完成并有一定创新功能且正确者,成绩评为优

10、;3)凡有无故旷课或多次迟到、早退者不能评定优、良、中;4)凡未按要求或不能按时完成者,以不及格评定;5)未交课程设计报告者,以不及格评定;6)与他人雷同或抄写复制他人程序,以不及格评定;7)经课程设计答辩未达到设计要求者,以不及格评定。三、课程设计工作量课程设计共24学时,安排见下表。内容学时明确课程设计的目的、要求和任务(由指导老师布置)1查阅资料,分析、讨论,完成选题1进行系统需求分析,设计合理的数据结构和系统框架4编写代码,进行程序调试(功能齐全,能正确运行)12进行模块联调,完成测试2完成课程设计说明书2课程设计验收2课程设计可以由12名同学合作完成一个课题。全体成员应共同完成选题,

11、确定设计思想,进行功能模块划分,然后由组长为各成员分配任务。整个设计期间,组长负责协调工作。各小组成员明确自己的任务后,应独立完成设计、编码和调试。课题设计完成后,小组成员要理解同组其他成员设计的源程序,熟练操作本组设计,各自完成课程设计说明书。四、课程设计说明书内容为培养学生严谨的工作态度,锻炼学生编写文档的能力,要求学生完成设计任务后,应按要求提交课程设计报告。设计报告除了填写封面内容和正文部分的规定内容外,还包含如下几个方面的内容:1、需求分析:简述本课程设计要完成的任务;2、概要设计:应用程序功能详细说明;3、详细设计:主要功能模块的详细描述;4、调试报告:调试过程中出现的问题及解决方

12、法;5、测试结果;6、用户使用说明;7、附录:程序源代码(附上有针对性的注释),参考资料。目 录一、需求分析101.1、课程设计任务101.2、课程设计的意义及目标10二、概要设计112.1、流程图112.2、编译.调试工具说明112.21、vi编译器的介绍112.22、makefile介绍12三、详细设计13四、编译和调试144.1、用make编译144.2 makefile文件14五、运行结果155.1、 按学号排序;155.2、 输入一个学生学号,输出其成绩。155.3、 输入一个学生的信息将它插入链表中(假定链表按学号有序)。165.4、 统计该链表中学生总成绩和平均成绩。165.5、

13、 找出成绩最高的学生序号和课程.175.6、 找出不及格课程的学生序号及其各门课的全部成绩175.7、 求全部学生各门课程的平均分数,并输出.17六、心得18七、参考文献19八、附录20一、需求分析1.1、课程设计任务建立一个链表,每个结点包含:学号、姓名、3门考试成绩1) 按学号排序2) 输入一个学生学号,输出其成绩。3) 输入一个学生的信息将它插入链表中(假定链表按学号有序)。4) 统计该链表中学生总成绩和平均成绩。 5) 找出成绩最高的学生序号和课程.6) 找出不及格课程的学生序号及其各门课的全部成绩.7) 求全部学生各门课程的平均分数,并输出.1.2、课程设计的意义及目标课程设计是培养

14、学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。要求在规定的时间内,完成老师布置的任务,最重要的是让学生学到东西。目的使这次课程设计,使学生巩固了上课学到的知识,进一步学习、掌握嵌入式Linux的运行环境、开发平台。二、概要设计2.1、流程图 2.2、编译.调试工具说明2.2.1、vi编译器的介绍 vi 编辑器是Visual interface的简称,通常称之为vi。它在Linux上的地位就像Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他

15、编辑程序所没有的。 vi 编辑器并不是一个排版程序,它不像Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。没有菜单,只有命令,且命令繁多。vi有3种基本工作模式:命令行模式、文本输入模式和末行模式2.2.2、makefile介绍(1)makefile文件介绍Makefile一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。(2)m

16、akefile主要功能Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器-包括 Windows NT 下的编译器-维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。三、详细设计(1)定义一个链表用链式存储结构存储学生信息, typedef struct student STUDENT;(2)定义节点,和各节点的内容stru

17、ct student /* 学生链表节点 */ int num; /* 学号 */char nameMAX_NAME_LEN; /* 姓名 */struct grade grade; /* 成绩 */(3)输入学号,输出成绩int print_list(STUDENT *head);(4)统计链表中学生总成绩和平均成绩/void search(STUDENT *head, int num);(5)输出出成绩最高的学生序号和课程*/void sum_ave(STUDENT *head);(6)输出不及格课程的学生序号及其各门课的全部成绩void max_grade(STUDENT *head);

18、(7)求全部学生各门课程的平均分数,并输出*void failde_stu(STUDENT *head);四、编译和调试4.1、用make编译4.2 makefile文件 编译调试程序是程序实现前的一项最重大的任务,不仅繁琐而且很有技术含量。如果只是单单的写程序是不会发现调试是多么幸苦的工作的。在整个程序的编译过程中遇到了不少错误。有的是因为不小心少写了一个括号,有的是语法错误。还有的情况就是编译器的使用不当,我们最常用的是用GCC编译。但是这次课程设计要求用make编译,于是我在这就犯了一些很低级的错误。 上图是我在makefile文件里出现了错误而导致的编译失败。在makefile文件里,

19、我只记得有空格,切忘记了那是TAB键,所以造成了这样的错误。 在编译的过程中还会有很多警告,不过幸好不影响程序的执行。有警告是因为程序不够完善才有的情况,程序有待完善。五、运行结果5.1、 按学号排序;5.2、 输入一个学生学号,输出其成绩。第一个学生输入第二个学生输入第三个学生输入5.3、 输入一个学生的信息将它插入链表中(假定链表按学号有序)。5.4、 统计该链表中学生总成绩和平均成绩。5.5、 找出成绩最高的学生序号和课程.5.6、 找出不及格课程的学生序号及其各门课的全部成绩 5.7、 求全部学生各门课程的平均分数,并输出.六、心得 课程设计是培养我们综合运用所学知识,发现,提出,分析

20、和解决实际问题过程,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。此次课程设计,我和小组成员在规定的时间内,圆满的完成了老师布置的任务,最重要的是我学到了很多东西。这次课程设计,使我们巩固了上课学到的知识,进一步学习、掌握嵌入式Linux的运行环境、开发平台,同时我的编程水平也有了一定的提高。回想起此次嵌入式 linux 程序开发,我感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,从自己编写到查资料、求助网络,烦的可以。感觉这好像使咱电子系最难得课程设计了,有过抱怨,抱怨老师不给提示让我读题就花了一天时间,抱怨自己一个学期下来都没有认真看书到最后才临时抱佛

21、脚还不行幸被佛踢一脚。但等自己真的觉得没有捷径可以走的时候就静下心来好好看书查资料了。虽说不用上课挺轻松的,但是纠结于那些程序的编译修改,真的有时候挺累的。不过总的来说得是苦多于甜,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的实实在在的掌握知识,从而提高自己的实际动手能力和独立思考的能力。重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的辛勤指导下,同学的帮助下终于迎

22、刃而解。七、参考文献1唐洪良、张威 linux实用教程 北京希望电子出版社 2002.92赵清晨、李同芳 linux操作系统实用教程 北京机械工业出版社2008.23华清远见嵌入式培训中心 嵌入式linux C语言应用程序设计 人民邮电出版社 2007.8八、附录#include #define max2(a,b) (a)(b)?(a):(b) /* 两个数的最大值 */#define max3(a,b,c) max2(max2(a),(b),(c) /* 三个数的最大值 */#define min2(a,b) (a)next;while(current & (current-num num)

23、front = current;current = current-next;/* 插入结点 */front-next = tmp;tmp-next = current;/* 释放链表*/void free_chain(STUDENT *head)while(head = head-next)free(head);/* 打印菜单 * 返回选则的菜单项 */int print_menu()int i;printf(1. insert a studentt2. search a studentn);printf(3. sum and averaget4. max graden);printf(5.

24、 failed studentt6. lesson averagen);printf(7. print listttother to exitn);printf(choice_ _);printf(bb);scanf(%d,&i);return i;/* 打印所有学生信息 * 返回学生个数*/int print_list(STUDENT *head)int count = 0;STUDENT *tmp;if(!head |!(tmp = head-next)printf(empty chain tablen);return 0;printf(number name tonettwotthree

25、n);while(tmp)printf(%-9d %-10st,tmp-num,tmp-name);printf(%dt%dt%dn,tmp-grade.one,tmp-grade.two,tmp-grade.three);tmp = tmp-next;count+;return count;/* 输入学号,输出成绩*/void search(STUDENT *head, int num)STUDENT *tmp;if(!head |!(tmp = head-next)printf(empty chain tablen);return;printf(number name tonettwott

26、hreen);while(tmp)if(tmp-num = num)printf(%-9d %-10st,tmp-num,tmp-name);printf(%dt%dt%dn,tmp-grade.one,tmp-grade.two,tmp-grade.three);tmp = tmp-next;return;/*统计链表中学生总成绩和平均成绩*/void sum_ave(STUDENT *head)STUDENT *tmp;int sum;float ave;if(!head |!(tmp = head-next)printf(empty chain tablen);return;printf

27、(number name tsumtaveragen);while(tmp)printf(%-9d %-10st,tmp-num,tmp-name);sum = tmp-grade.one + tmp-grade.two + tmp-grade.three;ave = sum/3.0;printf(%dt%.1fn,sum,ave);tmp = tmp-next;/*输出出成绩最高的学生序号和课程 */void max_grade(STUDENT *head)STUDENT *tmp;STUDENT *tmp_max;int imax = 0;int itmp_max = 0;if(!head

28、 |!(tmp = head-next)printf(empty chain tablen);return;/* 查找最大值 */while(tmp)itmp_max = max3(tmp-grade.one,tmp-grade.two,tmp-grade.three);if(itmp_max imax)imax = itmp_max;tmp_max = tmp;tmp = tmp-next;printf(number name tonettwotthreen);printf(%-9d %-10st,tmp_max-num,tmp_max-name);printf(%dt%dt%dn,tmp_

29、max-grade.one,tmp_max-grade.two,tmp_max-grade.three);return;/*输出不及格课程的学生序号及其各门课的全部成绩*/void failde_stu(STUDENT *head)STUDENT *tmp;int itmp_min = 0;if(!head |!(tmp = head-next)printf(empty chain tablen);return ;printf(number name tonettwotthreen);/* 查找最大值 */while(tmp)itmp_min = min3(tmp-grade.one,tmp-

30、grade.two,tmp-grade.three);if(itmp_min num,tmp-name);printf(%dt%dt%dn,tmp-grade.one,tmp-grade.two,tmp-grade.three);tmp = tmp-next;return;/*求全部学生各门课程的平均分数,并输出 */void lesson_ave(STUDENT *head)STUDENT *tmp;int count = 0;float sum3 = 0,0,0;float ave3 = 0,0,0;if(!head |!(tmp = head-next)printf(empty chain tablen);return;printf(onettwotthreen);while(tmp)sum0 += tmp-grade.one;sum1 += tmp-grade.two;sum2 += tmp-grade.three;tmp = tmp-next;count+;ave0 = sum0/count;ave1 = sum1/count;ave2 = sum2/count;printf(%.1ft%.1ft%.1ftn,ave0,ave1,ave2);return;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号