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条)