学生证管理系统—C语言课程设计

学生证管理系统—C语言课程设计


2024年4月30日发(作者:)

C语言课程设计报告

学生证管理系统

1.题目与要求

该系统应该具有下列功能:

1) 录入某位学生的学生证信息。

2) 给定学号,显示某位学生的学生证信息。

3) 给定某个班级的班号,显示该班所有学生的学生证信息。

4) 给定某位学生的学号,修改该学生的学生证信息。

5) 给定某位学生的学号,删除该学生的学生证信息。

6) 提供一些统计各类信息的功能。

【输入要求】

应用程序运行后,在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每

个操作后,根据应用程序的提示信息,从键盘输入相应的信息。

【输出要求】

1) 应用程序运行后,要在屏幕上显示一个菜单。

2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束

方式等。

2.功能实现设计

2.1总体设计:

根据题目要求,由于要设计学生证的管理系统,所以学生证信息中应该包含学号、姓名、性别、

班号等信息。除此之外,还要做到先录入,再输出,即如果使用者还没有录入任何学生证信息就不

能做任何输出。由于学生信息要不断更改,所以还要设定修改、增加、删除、查找功能。另外,学

生数量多而繁,故应设置不同类别的统计功能,供使用者方便使用。

综上所述,可将该程序分为:主函数、菜单显示模块、菜单提示模块、学生证信息生成模块、

添加学生证信息模块、学生证信息显示模块、学生证信息修改模块、学生证信息删除模块、计算所

有学生人数模块、计算各班人数模块。

2.2详细设计:

1) 主函数

主函数一般设计比较简洁,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单

方式选择。其流程图如下图所示:

1

C语言课程设计报告

开始

菜单显示函数显示一系列功能

进入main函

数体,选择n

Y

根据n的值调用个功能模块

函数

结束

【程序】

2

C语言课程设计报告

2) 各功能模块设计

1. 结构体

2. 输入模块

从主函数送进来的n=1,进入struct create,在struct create中通过链表开辟一个长度为

student结构体的连续动态空间。接着在此函数中通过*p1这个指针调用void

tips_create(struct student *p)函数来提示用户录入学生证各项信息。录入完毕后*p1再从

void tips_create(struct student *p)函数中跳回struct create中,将其值赋给*p2,这样

保存*p2到开辟的内存单元中即可。具体流程图如下图所示:

【程序】

n=1,调用struct student * create(void)

p1、p2在内存中开辟一段长度

提示输入学生证信息,调用void tips_create(struct

student *p)函数来完成引导用户的信息录入

void tips_create(struct student *p)返回*p1,*p1再

将值赋给*p2,保存在动态存储单元中

3

C语言课程设计报告

注意:如果输入完毕,要在各项输入时键入0以示。

3. 学生证信息添加模块

该模块的功能主要用于录入完学生证信息后,发现漏录入了信息或学生变动需要添加学生信息

用。

【程序】

4

C语言课程设计报告

4. 输出模块

输出模块主要功能有:输出出所有学生的学生证信息、给定学号后输出某位学生的学生证信息

和给定班号后输出该班所有学生的学生证信息三大功能。

首先,通过main函数得到选择结果(3、4或5),如果选择3则赋值给print函数一个num=0,

继而进入第一个分模块——输出所有学生的学生证信息;如果选择4则赋值给print函数一个num=1,

继而进入第二个分模块——给定学号后输出某位学生的学生证信息;如果选择5则赋值给print函

数一个num=2,继而进入第三个分模块——给定班号后输出该班所有学生的学生证信息。

【程序】

5

C语言课程设计报告

该程序流程图如下图所示:

开始

读入main传过来的int num

Num=?

0?1?2?

第一分模块 第二分模块 第三分模块

第一分模块流程图如下图所示:

6

C语言课程设计报告

开始

读取n的值,确定用户是否已录入任何学生证信息

n=0?

提示用户录

入学生证信

息,并返回

至菜单选择

P=head指向链表的头

通过p指针输出链表个项值

结束

其他各分模流程图与上图类似,这里不多述。

5. 修改模块

修改模块是用于给定某位学生的学号,修改该学生的学生证信息。

具体过程:读取学号,在链表中找到相对应的结构单元,用新输入的学生信息替换原有信息。

【程序】

7

C语言课程设计报告

6. 删除模块

删除模块用于给定某位学生的学号,删除该学生的学生证信息。具体过程与修改模块相似。

【程序】

8

C语言课程设计报告

7. 统计模块

1) 总人数统计模块

【程序】

2)各班人数统计模块

【程序】

9

C语言课程设计报告

该程序具体操作操作如下:

1) 判断n的值,若n=0,表明用户还未录入任何学生证信息,提示用户录入学生证信息,并跳

至菜单处供用户重新选择。若n不为0,则进入下面的程序。

2) 将指针*p指向链表的头(head),验证head是否为空(NULL)。

3) 先将*p读到student结构体里的class赋值给二维数组的[0][0]位置,进入for循环,如

果*p读到的class值和二维数组[0][0]位置的值相同,则学生人数(该二维数组所对应的

第二列)自加一次;若不同,则跳出if语句,进行二维数组i++(行加1),再进入if语句

来比较。当for循环完毕跳出时指针p指向next单元,由此再回到此段开头进行do…while

循环。直至指针p指向的next为空结束。

4) 输出记录着班级和各班人数的二维[20][2]的数组,得到统计结果。

具体流程图如下图所示:

10

C语言课程设计报告

开始

读取n的值,确定用户是否已录入任何学生证信息

提示用户录

n=0?

入学生证信

息,并返回

至菜单选择

P=head指向链表的头(head)

head!=

NULL?

当p!=NULL时*p指向的class赋值给二维数组的第

一个单元[0][0],再如for循环

比较=

Class?

二维数组所对应行的第二列计数+1,如此循环直至退出for循环

For循环输出该数组

结束

11

C语言课程设计报告

3)公共函数

1.学生总人数:int n;

2.学生信息录入提示函数:void tips_create(struct student *p

[说明]

该函数用于录入学生证信息和修改学生证信息时的输入提示作用,从而引导使用者完成录入工

作。

【程序】

4)声明

程序运行前,应对用到的头文件、全局变量和函数进行声明,声明如下:

3.上机操作

下面是各模块的界面图:

(1)主菜单函数:如图一所示。

12

C语言课程设计报告

图一 主菜单

(2)输入模块:在主界面出现后输入1并按【Enter】键,结果如图二所示。

13

C语言课程设计报告

图二 输入模块

输入某位学生的学生证后10位数字后,按【Enter】键。输入该学生的姓名,按【Enter】键。

再输入该学生的性别F(女)M(男),按【Enter】键。最后输入该学生所在班级的班号,按【Enter】

键。此过程为录入信息提示模块,如图三所示。

14

C语言课程设计报告

图三 学生信息录入提示模块

当输入完毕后,在各项中输入0,以跳出提示模块。

15

C语言课程设计报告

(3) 在菜单中选择2进入学生证信息添加模块:如图四所示。

图四 学生证信息添加模块

(4)在菜单中选择3,则进入显示出所有学生的学生证信息功能,即输出模块。如图五所示。

16

C语言课程设计报告

图五 输出模块

(5)

给定学号,显示某位学生的学生证信息,即输出模块中第二分模块。如图六所示。

图六 显示某位学生的学生证信息

(6)

给定班号,显示该班所有学生的学生证信息,即第三分模块。如图七所示。

17

C语言课程设计报告

图七 显示该班所有学生的学生证信息

(7)菜单中选择6,进入到了修改模块,具体功能是:给定某位学生的学号,修改该学生的学生

证信息。如图八至十三所示。

18

C语言课程设计报告

图八

图九

19

C语言课程设计报告

图十

图十一

20

C语言课程设计报告

图十二

图十三

21

C语言课程设计报告

(8)在菜单中选择7,则进入学生证信息删除模块。如图十四所示。

图十四 学生证信息删除模块

(9)在菜单中选择8,则进入统计各班人数模块,如图十五所示。

22

C语言课程设计报告

(10)统计总人数模块

(11)退出

23


发布者:admin,转转请注明出处:http://www.yc00.com/news/1714434736a2445829.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信