云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C语言学生成绩管理系统课程设计报告

C语言学生成绩管理系统课程设计报告

  • 62 次阅读
  • 3 次下载
  • 2025/6/1 4:03:08

2.3 功能模块设计

2.3.1主函数main()执行流程

本成绩管理系统可以先以可读写的方式打开数据文件,若该文件不存在,则提醒用户新建此文件。当打开文件操作成功后,从文件中一次读出一条记录,添加到新建的单链表中,然后执行显示主菜单和进入主循环操作,进行按键判断。

选择1,则调用Create()函数,执行创建学生信息操作; 选择2,则调用Insert()函数,执行插入学生信息操作; 选择3,则调用Del()函数,执行删除学生信息操作; 选择4,则调用Modify()函数,执行修改学生信息操作; 选择5,则调用Sortnum()函数,执行按学号排序操作; 选择6,则调用Find()函数,执行查找学生信息操作; 选择7,则调用Sortscore()函数,执行按总分排序操作; 选择8,则调用Tongji()函数,执行学生信息整理操作; 选择9,则调用Save()函数,执行保存学生信息操作;

输入0—9之外的值,则调用Wrong()函数,给出按键错误的提示。

2.3.2输入学生信息模块

输入学生信息模块主要实现将数据存入单链表中。当从数据文件中读出信息时,它调用了fread(p,sizeof(Node),1,fp)文件读取函数,执行一次从文件中读取一条学生成绩信息存入指针变量p所指的节点中的操作,并且这个操作在main()中执行,即当成绩管理系统进入显示菜单界面时,该操作已经执行了。若该文件中没有数据,系统会提示单链表为空,没有任何学生信息可操作,此时,用户应选择1,调用Create()函数,进行学生信息的输入,即完成在单链表l中添加节点的操作。

2.3.3查询学生信息模块

查询学生信息模块在单链表中按学号或姓名或学院或班级查找满足条件的学生信息。在查询函数Find()中,l为指向保存了学生成绩信息的单链表的首地址的指针变量。对于在单链表中进行的指针定位操作,我设计成了两个单独的函数Node* Locate(Link l,char findmess[],char nameornum[])和int Locate2(Link l,char findmess[],char nameornum[]),参数findmess[]保存要查找的具体内容,nameornum[]

4

保存要查找的字段,若找到该记录,则返回指向该节点的指针;否则,返回一个空指针。

2.3.4更新学生信息模块

此模块主要实现了对学生信息的修改、删除、插入和排序操作。因为学生信息是以单链表的结构形式存储的,所以这些操作都在单链表中完成。

(1)修改学生信息

修改学生信息需要对单链表中目标节点的数据域中的只进行修改,它分两步完成。第一步,输入要修改的学号,输入后调用Locate()或Locate2()在单链表中逐个对节点数据域中学号字段的值进行比较,直到找到该学号的学生信息;第二部,若未找到该学生信息,修改除学号之外的各字段的值,并将存盘标记变量saveflag置1,表示已经对信息进行了修改,但还未执行存盘操作。

(2)删除学生信息

删除学生信息操作完成删除指定学号或姓名,它也分两步完成。第一步,输入要删除的学号或姓名,输入后调用定位函数Locate()在单链表中逐个对节点数据域中学号或姓名字段的值进行比较,直到找到该学号或姓名的学生信息,返回指向该学生信息的节点指针;第二步,若找到该学生信息,将该学生信息所在节点的前驱节点的指针域指向目标节点的后继结点。

(3)插入学生信息

插入学生信息操作完成在指定学号的随后位置插入新的学生信息。首先,它要求用户输入某个学生的学号,新的学生信息将插入在该学生信息之后;然后,提示用户输入一条新的学生信息,这些信息保存在新节点的数据域中;最后,将该节点插入在指定位置学号之后。

(4)学生信息排序

针对单链表结构的特点,我采用了插入排序算法实现按平均分降序、按学号升序进行排序。

2.3.5学生信息整理模块

它主要通过循环读取指针变量p所指的当前节点的数据域中各字段的值,并对各个成绩字段进行逐个判断的形式,完成单科最高分、总分最高分学生的查找和各科不及格人数的统计。

5

2.3.6输出信息模块

当把信息输出至文件时,调用fwrite(p,sizeof(Node),1,fp)函数,将p指针所指节点中的各字段值写入文件指针fp所指的文件。当把信息输出至屏幕时,调用Disp(Link l)函数,将单链表l中存储的学生信息以表格的形式在屏幕上打印出来。

2.4 相关函数说明

printheader()

用于在以表格形式显示学生记录时,打印输出表头信息。 printdata(Node *pp)

用于在以表格形式显示学生记录时,打印输出单链表pp中的学生信息。 stringinput(char *t,int lens,char *notice)

用于输入字符串,并进行字符串长度验证(长度

numberinput(char *notice)

用于输入数值型数据,notice用于保存printf()中输出的提示信息,该函数返回用户输入的整型数据。

Disp(Link l)

用于显示单链表l中存储的学生记录,内容为student结构中定义的内容。 Locate(Link l,char findmess[],char nameornum[])

用于定位链表中符合要求的节点,并返回指向该节点的指针。 Create(Link l)

用于在单链表中创建学生信息节点。 Find(Link l)

用于在单链表l中按学号、姓名、学院、班级查找满足条件的学生信息,并显示出来。

Del(Link l)

用于先在单链表l中找到满足条件的学生信息的节点,然后删除该节点。 Modify(Link l)

用于在单链表中修改学生信息。

6

Insert(Link l)

用于在单链表中插入学生信息。 Tongji(Link l)

用于在单链表l中完成学生信息的整理工作,统计出该班的总分第一名、单科第一名、各分数段人数、不及格率。

Sortscore(Link l)

用于在单链表l中完成利用插入排序法实现单链表的按总分降序排序。 Sortnum(Link l)

用于在单链表l中完成利用插入排序法实现单链表的按学号降序排序。 Save(Link l,char file[20])

用于将单链表l中的数据写入磁盘中的数据文件。 main()

整个学生成绩管理系统的控制部分。

3程序源代码

3.1程序预处理文件

#include \#include \#include \#include \

/*屏幕操作函数库*/

#define HEADER1 \学生信息表--------------------------------\\n\#define HEADER2 \ |学号|学期| 姓名 | 学院 | 班级|英语|数学|C语言| 总分 | 平均分 |\\n\

#define HEADER3 \ |----|----|-------|--------|-----|-----|----|----|--------|--------|\\n\#define FORMAT \ |%-4s|%-4s|%-7s|%-8s|%-5s|]|M|M|?|%8.1f|\\n\#define

DATA

p->data.num,p->data.xueqi,p->data.name,p->data.xueyuan,p->data.banji,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.total,p->data.ave

#define END \ --------------------------------------------------------------------\\n\int saveflag=0;

/*是否需要存盘的标志变量*/

7

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

2.3 功能模块设计 2.3.1主函数main()执行流程 本成绩管理系统可以先以可读写的方式打开数据文件,若该文件不存在,则提醒用户新建此文件。当打开文件操作成功后,从文件中一次读出一条记录,添加到新建的单链表中,然后执行显示主菜单和进入主循环操作,进行按键判断。 选择1,则调用Create()函数,执行创建学生信息操作; 选择2,则调用Insert()函数,执行插入学生信息操作; 选择3,则调用Del()函数,执行删除学生信息操作; 选择4,则调用Modify()函数,执行修改学生信息操作; 选择5,则调用Sortnum()函数,执行按学号排序操作; 选择6,则调用Find()函数,执行查找学生信息操作; 选择7,则调用Sortscore()函数,执行按总分排序操作; 选择8,则调用Tongji()函数,执行学生信息整理操

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com