学生考勤管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、设计内容与设计要求
1.设计内容:学生考勤管理系统
1、问题描述
学生信息包括:学号、姓名、性别、年龄、班级等信息。
考勤信息包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假和旷课)。
2、功能要求
(1)添加功能:程序能够添加学生的记录和缺课记录,提供选择界面供用户选择所要添加的类别。添加学生记录时,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。还可以按课程名、学生姓名对缺课记录进行查询。
(3)显示功能:可显示当前系统中所有学生的记录和缺课记录,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。
(5)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。
(6)统计功能:能根据多种参数进行统计。能按课程名统计出学生旷课的信息、还可以按姓名统计出任一学生的旷课情况。需要排序。
(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。
(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。
目录
一、需求分析
1.系统功能流程图
3.输入输出的要求
1.输入的要求:
通过主函数体调用其他函数应用系统主控界面包括学生信息录入,查找等功能模块。学生信息录入功能完成学生信息和缺课信息的输入。记录查询功能可以对数据各分类的记录进行查询。
2.输出的要求:
1)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
2)可以统计全部学生缺课类型,及其缺课次数。
3)如果检索不到相应的信息应提示用户。
二、总体分析
系统功能分析
能够从屏幕上读取一个学生的信息和缺课信息并将信息存入到数据文件中。能够将指定的信息从文件中删除。能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。可以统计全部学生缺课次数,及其缺课类型。要求有错误提示功能。如果检索不到相应的信息应提示用户。
三、详细设计
1.类设计:
类:Person
数据成员
学号,姓名,性别,年龄,班级缺课类型,缺课次数,指针域
double num; 面设计
程序运行后会出现一个简捷的窗口,便于用户查询数据。
2.功能模块实现设计
通过主窗体调用其他窗体。应用系统主控界面包括学生信息录入,查找等功能模块。学生信息录入功能完成学生信息和成绩的输入。记录查询功能可以对数据各分类的记录进行查询。
具体举例如下:
1)输入函数:
void Input()
{
cout<<"\n学号:"; cin>>num;
cout<<"\n姓名:"; cin>>Name;
cout<<"\n性别:"; cin>>sex;
cout<<"\n年龄:"; cin>>old;
cout<<"\n班级:"; cin>>G;
cout<<"\n第几节课:"; cin>>Hours;
Salary=Incoming(); } 2)删除函数
void school::del()
{student *p,*p2;
int num;
cout<<"请输入编号: ";
cin>>num;
if( !find(&p,num,"^") )
1.
四、系统调试
1.首页进入学生考勤管理系统主菜单
2录入学生信息界面:
3.显示学生信息界面:
4.修改学生信息
五、使用说明及心得体会
此次c++课程设计,在指导教师的精心教导下,我学会了如何用C++编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
七、附件
源文件代码:
#include <> 文件操作头文件
#include <> 字符串流
class Person 点指针由p1返回,p2为前看指针)
int College::Cfind(int ID,Person **p1,Person **p2)
{
*p2=PL;
while(*p1)
{
if((*p1)->num==ID)
break; n";
}
void College::Build() //出勤信息
{
char buf[81]; //临时空间
int Duty; //人员类型
Person *p2; //新建结点的指针
long t; //读写位置
Clear();
ifstream f("",ios::in);
Person *p=PL; //尾结点指针
while(1)
{
t=();
f>>buf>>buf>>Duty;
if(f)
{ switch(Duty) {
case 1: p2=new Teacher; break;
case 2: p2=new Assistant; break;
case 3: p2=new Manager; break;
case 4: p2=new Teacher_Assistant; break; default: (); return;
}
p->next=p2;
p=p->next;
(t);
p->Input(f);
}
else
break;
();
}
void College::Load() //出勤信息录入
{
char ah;
int c;
cout<<"\n** 出勤信息录入 **\n";
do
{
cout<<"输入要录入的出勤人员个数:\n";
cin>>c;