c语言课程设计报告--学生证系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《高级语言程序设计》课程设计
题目:学生证管理程序
班级:
学生学号:
学生姓名:
指导老师:
提交时间:
华南农业大学信息(软件)学院
学生证管理程序
1系统分析
1.1问题描述:设计一个学生证的管理程序。实现录入、修改、删除学生的学生证信息,并能根据输入的学生的学号,显示该学生的学生证信息或根据输入的班级的名称,显示该班所有学生的学生证信息,以及实现一些统计各类信息的功能。
1.2系统功能分析:
学生证管理程序是用来进行学生证管理的应用软件,不属于学生可使用的系统,个人认为进入该系统不需要进行相应的身份登录。所以进入系统者应当可以使用所有功能;
使用者可行使基本功能有:录入某位学生的学生证信息;根据给定学生的学号,修改、删除或显示该学生的学生证信息;根据输入的班级的编号,显示该班所有学生的学生证信息和一些统计功能。
另外,为了方便管理员操作,减少管理员重复工作的可能,另外加入额外功能:批量录入学生的学生证信息和班级删除。除此以外,亦另外添加操作台指令,方便管理员进行功能切换。
1.3 开发平台及工具介绍:
根据所学知识及所要用到的相关操作,采用C语言进行开发。
开发平台:CodeBlocks+ MinGW + wxWidgets
2系统设计
2.1 系统总体结构设计
在对学生证管理程序进行系统功能分析之后,我对整个系统进行总体设计。
首先,确定大致的开发和设计的思路,并在此基础上,用图表将系统总体的设计架构勾画出来,制定模块结构图,通过模块功能分析对每一个模块进行总体设计。值得一提,总体的设计架构中,shell和kernel的设计应注意彼此的联系,这一方面设计的好坏对后面的设计有很大的影响。
然后,根据总体设计的需求,确定要首先那些函数。
学生证管理程序可视作一个简易身份证管理系统,开发设计的方向是方便管理员的操作,节省管理员的操作时间。对于这个问题,可采用批量操作和指令操作的思路。
可以将所有的学生证信息存储在一个文件(txt格式)中,在对大量学生证数据的处理用到链表和文件处理等基本技术,并用两个函数实现文件读取和写入。
2.2 系统各个功能模块详细设计
及功能模块之间关系设计(包括功能结构图等)
(1)添加模块(录入模块):可以逐个录入学生信息,也可以设定录入人数,批量录入学生信息。在输入学生信息时,可输入return返回,可随意输入指令进行功能切换。其功能图如下图.
(2)搜索模块:根据给出信息,可以是学号,名字或班级,搜索符合条件的某位学生或某些学生,并返回地址。
(3)修改模块:通过地址找到该学生信息,然后进行修改。
修改模块修改信息
(4)统计模块,统计学生总男女生人数;某班男生人数,女生人数;统计指定日子出生的学生;统计与指定名字相同的学生;
(5)显示模块,显示学生证信息。分为针对单人的详细显示和针对集体的行显示两种模式。
(6)删除模块,本模块有2种删除方式,分别是按学号删除和按班级名删除。
(7)指令模块,本模块负责辨认输入的为指令还是操作序号,并根据输入选择操作。
2.3 数据结构的设计(文件等)
(1)学生证信息结构
描述学生证信息,并作为一整条记录存放在文件中。
typedef struct stud
{
char name[20];
char sex[8];
char snumber[14];
char time[12];
char id[20];
char college[24];
char major[20];
char classes[40];
struct stud *next;
}LNode,*LinkList;
LinkList p,q,m,n,c;
(2)链表
存储学生证信息,并作为一整条记录在程序中进行操作。
p=(LinkList)malloc(sizeof(LNode));//头指针
q=p;
(3)文件
在程序开始前和结束后存储学生证信息
void rewirte()//程序结束后将一切写进文件
void load()//文件内容装载至链表
2.4 界面设计
遵循简洁美观、方便使用的原则。
(1)首页:用printf语句构造简单的界面,注重界面的简洁性。
(2)、录入界面
(3)、修改界面:
(4)删除界面(5)学号查询(6)班级查询(7)其他
(8)指令
(9)统计班级男女人数(10)统计同名
(11)统计同年同日出生流程图如下:
3系统实现
基于系统需求分析与系统总体设计的结果,本系统采用开发平台:CodeBlocks+ MinGW + wxWidgets实现各模块的功能,下面将展现某些模块的录入操作的详细设计和实现过程。
录入模块:
(1)
(2)代码段片段
相关函数
char console()//控制台
录入:
void entry()//录入
{
system("cls");
char ,op,i=1;
LinkList std;
std=(LinkList)malloc(sizeof(LNode));
std->next=NULL;
printf("请分别输入学生的信息\n");
while(i<9)
{
switch(i)
{
case 1:printf("姓名(如:王小明):");break;
case 2:printf("性别(如:男):");break;