目录
需要项目源码的朋友请后台私信!!!或添加QQ3203499787
基于MFC的学籍管理系统
需要项目源码的朋友请后台私信!!!
选题
学籍管理系统(Windows版本)
前言
一款高效的学籍管理系统是教育单位必不可少的利器,随着互联网的普及,对于这样一款系统的需求也日益增长。这样的系统能够极大提升教育单位的运营效率。
以下是系统的主要功能:
用户管理:包括用户的添加、删除、修改以及退出系统功能;
成绩管理:涵盖学生成绩的录入、删除、修改和查询;
学生管理:管理学生的基本信息,包括添加、删除、修改和查询功能;
课程管理:课程的添加、删除、修改和查询;
打印:能够打印学生和课程的基本信息。
此系统具有自动增强功能,支持管理员和学生两种用户角色。管理员拥有添加、删除、修改学生用户的权限,同时可以更改自己的密码。学生登录后可以查看个人基本信息和成绩排名,也可以修改自己的密码。
设计要求包括:
数据存储在文件中。
支持DOS版或WINDOWS版(WINDOWS版难度较高)。
使用类和向量(可参考VC的STL)。
WINDOWS版采用VC MFC模式,核心技术涉及消息机制、窗口类、对话框与控件、菜单等。
软件环境要求为Windows 11操作系统,开发工具为VS2022 MFC工程。
-
系统的设计过程
- 首先设计一个文件类CinfoFile,用于所有文件的操作,在其它界面功
能需要用到文件操作时都调用这个类的函数完成文件读取与写入。CinfoFile的部分定义如下图所示:
首先看到这个头文件<list>,这次项目我采用list的这个容器来存放数据,<fstream>是文件读取与写入要用到的头文件,<string>是定义string类型所需要的头文件,接下来的几个宏定义是所需要用到的数据文件,administratorLogin.txt是管理员登录的数据文件,其内容如下(用户名和密码):
studentLogin.txt是学生登录的数据文件,其内容如下(包括学号和密码):
studentMessage.txt是学生基本信息的数据文件,其内容如下(包括学号,姓名,性别,学院,专业,年级):
course.txt是课程信息的数据文件,其内容如下(包括课程名称,授课教师,开课学院,课程代码,课程学分,课程学时):
score.txt是学生成绩信息的数据文件,其内容如下(包括学号,姓名,绩点,年级排名):
stu.txt这个文件是用于存放登录学生的学号,用于后面学生登录界面信息的显示,找到对应的信息文件并显示。
下面是学生登录,学生信息,课程信息,成绩信息结构体的定义以及对应的链表容器的定义,用于存放数据:
下面是对管理员登录,学生登录,学生基本信息,学生成绩,课程信息
的文件读取与写入操作实现:
接下里的读取学生个人信息,成绩信息,课程信息的操作与读取学生登录信息差不多,只是打开的数据文件和存储容器名字以及分割数量不同,所有方法一致,不在重复描述;还有学生个人信息写入文件,学生成绩信息写入文件,和课程信息写入文件与学生登录信息写入文件的操作大体上相同,不在描述,以上就是文件类的所有操作。
-
登录界面
登录界面采用了两个复选框用于选择学生登录还是管理员登录,两者只能选一个,否则警告。登录界面对应的对话框类名为LoginDlg,主要有两个功能,一是登录按钮功能,而是取消按钮功能。取消按钮是退出系统,其实现如下图:
登录按钮的功能实现如下图:
重写了WM_CLOSE,使其关闭时退出整个系统
在对话框的初始化函数增加了字体设置,其操作如下(其中m_Static是开头的全国高校学籍管理系统这个静态文本的变量名,m_editFont是Cfont类型的变量):
重写了OnOK函数,使其按回车不进入系统,其实现如下:
以上是登录界面类的所有实现。
-
学生界面
学生界面是用对话框实现的,它的对话框类是StudentDlg,其中主要有三个功能:确定按钮功能(确定修改密码),取消按钮功能(清空修改密码的编辑框内容),退出系统按钮(退出系统),取消按钮功能实现如下:
确定按钮的实现如下:
退出系统按钮功能实现如下:
初始化函数中对编辑框的数据进行初始化,其实现如下:
初始化函数中加载了对话框的图标显示以及字体的修改,其实现如下:
以上是学生界面的的主要操作的实现
-
管理员界面
管理员界面采用的是单文档,静态拆分窗口,自定义了了MFC视图类,自定义两个类CselectView继承与CtreeView和 CdisplayView继承与CformView.
其静态拆分窗口实现如下(在MainFrm类重写OnCreateClient函数):
将界面分成了两部分,一部分用于选择,另外一部分用于显示,接着自定消息,用于界面挂载,即实现点击左边窗口实现更新相应的右边界面,其自定义的消息如下(在MainFrm.h文件里定义):
界面挂载的实现如下(只描述一个,其他类似,在MainFrm的成员函数OnMyChange实现):
在CselectView中实现图标加载和添加视图节点
以上是界面拆分的一些实现。
以下是系统管理节点的相关界面
该界面的的类是CsystemDlg类,它的主要功能有修改管理员密码跟上面修改学生密码的操作类似,退出系统的按钮也与上面一致,不再重述。主要是介绍的是学生用户的操作,主要功能有三个:添加、删除、更改学生用户
添加学生用户的实现如下:
删除学生按钮的实现如下:
更改学生的按钮实现如下:
以上是系统界面类的所有主要实现。
接下来的是学生管理界面,成绩管理界面和课程管理界面,由于这三个界面的相关操作一致,就不一一描述,只描述一个界面,此处只描述学生管理界面,它的类名为CstuManger。
学生管理界面的主要操作有学生信息的操作和学生信息的显示,学生信息的显示使用List控件来显示数据。学生信息的操作主要有更改、添加、查询、删除、打印学生信息。
添加学生信息的功能实现如下(根据一个弹窗来添加数据):
删除学生信息的功能实现如下:
查询学生信息的功能实现如下:
查询结果显示在左边的编辑框里面,如:
更改学生信息的功能实现如下:
打印学生信息的功能实现如下:
打印过程以及结果如下:
以上就是整个系统的主要功能的实现,主要是登录界面,学生界面,管理员界面,系统界面,学生管理界面的介绍,其中还有静态拆分的操作以及界面挂载的实现,还有图标加载已经字体的调整的实现。
-
系统测试情况
运行后的界面如下:
测试错误警报如下:
学生界面如下:
测试错误警报如下:
管理员界面如下:
测试错误警报如下:
课程管理界面如下:
学生管理和成绩管理与课程管理一致,就不展示测试情况。
- 系统的优点与改进
优点:在原本的要求上增加了学生用户的操作,学生登录和管理员登录显示不同的界面,本次实验采用单文档和对话框相结合,是界面更加简洁美观,清晰明了,基本满足需求。
改进:学生成绩信息只给了绩点和年级排名,没有显示学生各个科目的成绩,学生成绩信息比较少,值得改进。还有就是数据文件太多,可以把学生操作的数据放在同一个文件去实现,这样看起来比较清晰明了,关联性更强。