c语言写学生成绩排序系统,C语言编写学生成绩管理系统.doc

难易程度中等开发语言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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值