C语言编写方案-学生成绩管理系统讲义.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
难易程度 中等 开发语言 C 《课程案例 ——案例管理系统 3.1.1 系统系统硬件环境 处理器:Intel Pentium 166 MX或更高 内存:32MB 硬盘空间:1GB 显卡:SVGA显示适配器 软件环境 操作系统:Windows 98/ME/2000/XP设计 设计思路 3.2.3数据结构设计 { char no[10]; //学号 char name[20]; //姓名 float score[N]; //各门课成绩 float sum; //总分 float ave;//平均分 int order;//名次 struct student *next;//指向后继结点的指针 }STU;//结构体类型名 3.2.4功能模块设计 、main()主函数 程序采用模块化设计,主函数是程序的入口,主函数不宜复杂,功能尽量在各模块中实现。main()函数执行流程图如图3-2所示。 首先声明一些必要的变量,然后作一无限循环程序,循环体为一个开关语句,该语句的条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的各功能函数,同时设置一个断点,即当返回值为一定条件时运行exit()函数结束程序,以免造成死循环。 二、menu_select()主菜单 直接利用输出函数printf输出字符串,在屏幕上显示一个菜单,并显示一个提示输入选项,输入0-1之间的数字,将此数字作为菜单函数的返回值返回主函数,主函数根据这个数字调用相应的功能函数。制作简便,操作简单,界面如图所示。 图 主菜单界面 、输入模块 。按照文件的读写要求,先定义一个指向文件的指针, 四、模块 4.插入⑴ 指针p为空,如果p等于头指针h,说明链表为空,则新结点即为头结点,修改指针h=info。否则,说明表中没有指定结点,则新结点插入在表尾部,此时q所指结点是最后一个结点,所以修改指针q-next=info,如图3-6所示。 ⑵ 指针p不为空,如果p等于h,说明新结点插入在当前第一个结点之前,为新的头结点,修改指针info-next=p,h=info,如图3-7所示。否则,说明新结点的位置应在p和q两个结点之间,修改指针info-next=p,q-next=info,如图3-8所示。 五、⑴ 先将原表头结点作为新排好序表的头结点h,原表下一个结点作为原表头结点h1,设原表如图3-9所示,表中只列出总分数据。 ⑵ 原表头结点为待排序结点,将其总分与新表结点的总分进行比较,如果待排序结点总分大,则插在新表的头,否则插入在其后,原表头结点后移一位,如图3-10所示。 ⑶ 重复第二步,则将原表头结点的总分和新表结点的总分进行比较,如果待排序结点总分小,则移动新表指针,直到找到合适的位置将其插入,直到原表为空,所有结点排序完毕,如图3-11所示。 六、模块 为了保存数据,防止意外发生,为数据做备份是很有必要的。 本是将文件读写功能结合到一起的应用。输入目标文件名,然后利用文件读写函数将源文件中的信息写到目标文件中。按照文件的读写要求,先定义一个指向文件的指针,建立好后,更频繁的操作是显示和查找记录,本实现显示所有功能。输出界面如图所示。 图 输出界面 程序预处理 包括加载头文件,定义结构体、常量和变量,并对它们进行初始化。 #include stdio.h //I/O函数 #include stdlib.h //标准库函数 #include string.h //字符串函数 #include ctype.h //字符操作函数 #include conio.h//控制台输入输出函数malloc.h //动态地址分配函数 #include memory.h //内存操作函数 #define N 3 //定义课程门数,可以根据情况设定 typedef struct student//定义数据结构 { char no[10]; //学号 char name[20]; //姓名 float score[N]; //各门课成绩 float sum; //总分 float ave;//平均分 int order;//名次 struct student *next;//指向后继结点的指针 }STU;//结构体类型名 /**********以下是函数原型***********/ ; //初始化函数 STU *create(); //创建链表 void print(STU *h); //显示记录;//查找记录(STU *h); //插入记录 (STU *h); //修改记录 delete(STU *h); //删除记录 void save(); //记录保存为文件 load(); /

您可能关注的文档

文档评论(0)

w447750 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档