嵌入式程序课程设计报告_学生成绩管理系统.docVIP

嵌入式程序课程设计报告_学生成绩管理系统.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式程序课程设计报告_学生成绩管理系统

嵌入式程序课程设计报告 2010年 12 月 28 日 目 录 湖北经济学院课程设计任务书 I 目 录 II 1.设计目的 1 1.1 概述 1 1.2 功能描述 1 2.总体设计 2 2.1 主控main()函数执行流程 2 2.2 输入记录模块 3 2.3 查询记录模块 3 2.4 更新记录模块 4 2.5 统计记录模块 5 2.6 输出记录模块 5 3.详细设计 5 3.1数据结构设计 5 3.2 函数功能描述 6 4.调试与测试 8 5.源程序清单和执行结果 9 5.1 源程序清单 9 5.2 执行结果 27 课程设计体会 32 参考文献 33 1.设计目的 1.1 概述 图1 学生成绩管理系统功能模块图 2.1 主控main()函数执行流程 图2 主控函数执行流程图 2.2 输入记录模块 输入记录模块主要实现将数据存入单链表中。这部分的操作较为简单。当从数据文件中读出记录时,它调用了fread(p,sizeof(Node),1,fp)文件读取函数,执行一次从文件中读取一条学生成绩记录信息存入指针变量p所指的节点中的操作,并且这个操作在main()函数中执行,即当成绩管理系统进入显示菜单界面时,该操作已经执行了。若该文件中没有数据,系统会提示单链表为空,没有任何学生记录可操作,此时,用户应选择1,调用Add(l)函数,进行学生记录的输入,即完成在单链表1中添加节点的操作。值得一提的是,这里的字符串和数值的输入分别采用了函数来实现,在函数中完成输入数据任务,并对数据进行条件判断,直到满足条件为止,这样大大减少了代码的重复和冗余,符合模块化程序设计的特点。 2.3 查询记录模块 查询记录模块主要实现了在单链表中按学号或姓名查找满足相关条件的学生记录。在查询函数Qur(l)中,l为指向保存了学生成绩信息的单链表的首地址的指针变量。为了遵循模块化编程的原则,我们将在单链表中进行的指针定位操作设计成了一个单独的函数Node* Locate(Link l ,char findmess[] ,char nameornum[ ]),参数findmess[]保存要查找的具体内容,nameornum[]保存要查找的字段(值为字符串类型的num或者name),若找到该记录,则返回指向该节点的指针;否则 ,返回一个空指针。 2.4 更新记录模块 此模块主要实现了对学生记录的修改、删除、插入和排序操作。因为学生记录是以单链表的结构形式储存的,所以这些操作都在单链表中完成。下面分别介绍这4个功能模块。 (1)修改记录 修改记录操作需要对单链表中目标节点的数据域中的值进行修改,它分两步完成。第一步,输入要修改的学号,输入后调用定位函数Locate()在单链表中逐个对节点数据域中的学号字段的值进行比较,直到找到该学生的学生记录;第二步,若找到该学生记录,修改除学号之外的各字段的值,并将存盘标记变量saveflag置1,表示已经对记录进行了修改,但还未执行存盘操作。 (2)删除记录 删除记录操作完成删除指定学号或姓名的学生记录,它也分两步完成。第一步,输入要删除的学号或姓名,输入后调用定位函数Locate()在单链表中逐个对节点数据域中学号或姓名字段的值进行比较,直到找到该学生学号或姓名的学生记录,返回指向该学生记录的节点指针;第二步,若找到该学生记录,将该学生记录所在节点的前驱结点的指针域指向目标节点的后继结点。 (3)插入记录 插入记录完成在指定学号的随后位置插入新的学生记录。首先,它要求用户输入某个学生的学号,新的记录将插入在该学生记录之后;然后,提示用户输入一条新的学生记录的信息,这些信息保存在新节点的数据域中;最后,将该节点插入在指定位置学号之后。它的具体插入执行过程如图3所示,图中q为位置学号所在节点的指针变量,其中,p为q所指节点的后继结点的指针变量,q-next=p,指针变量i指向新纪录所在的节点,为插入节点i,依次执行的操作为:i-next=q-next;q-next=i。 图3 单链表中插入学生记录节点示意图 (4)排序记录 有关排序的算法有很多,如冒泡排序、排入排序等。针对单链表结构的特点,我们采用插入排序算法实现按总分的从从高到低对学生成绩进行排序,排序完成之后,即可按顺序给名次字段赋值。 在单链表中,实现插入排序的基本步骤如下。 ①新建一个单链表l,用来保存排序结果,其初值为待排序单链表中的头结点。 ②从待排序链表中取下一个节点,将其总分字段值与单链表l中的各节点中总分字段的值进行比较,直到在链表l中找到总分小于它的节点。若找到此节点,系统将待排序链表中取出的节点插入此节点之前,作为其前驱。否则,将取出的节点放在单链表l的尾部。 ③重复第②步,直到从待排序链表取出的节点的指针域为NULL,即此节点为单链表

文档评论(0)

yaoyaoba + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档