学生考勤管理系统设计.docx
《学生考勤管理系统设计.docx》由会员分享,可在线阅读,更多相关《学生考勤管理系统设计.docx(45页珍藏版)》请在冰点文库上搜索。
北华航天工业学院课程设计报告
1
北华航天工业学院
《程序设计基本技能综合训练》
实践报告
报告题目:
学生考勤管理系统设计作者所在系部:
计算机于工程系作者所在专业:
软件工程作者所在班级:
B12531 作者学号:
20124053134 作者姓名:
任昱垚 指导教师姓名:
斯庆巴拉完成时间:
2013.6.20
北华航天工业学院教务处制
北华航天工业学院课程设计报告
9
摘 要
当今社会已进入信息社会时代。
信息已经受到社会的广泛关注,被看作社会和科学技术发展的三大支柱(材料、能源、信息)。
信息是管理的基础,是进行决策的基本依据。
在一个组织里,信息已作为人力、物力、财力之外的第四种能源,占有重要的地位。
然而,信息是一种非物质的,有别于基本资源的新形式的资源。
信息也是管理的对象,必须进行管理和控制。
本系统主要针对目前高校学生在线请假以及学生上课出勤管理而设计的信息系统。
本系统总体上由三大功能模块:
添加学生信息、添加学生考勤系统、后查询、删除、修改、统计、保存、显示学生信息和考勤信息。
该学生考勤管理系统用本文利用 VisualC++6.0环境下,利用C++语言编写程序编写,可以方便考勤管理需要。
本系统易于操作,使用方便,交互性强,具有很高的可靠性。
关键词:
类 继承 函数调用
目 录
第一章 绪论 4
1.1课程设计的目的 4
1.2课程设计的背景和意义 4
1.2.1课程设计的背景 4
1.2.2课程设计的意义 5
1.3课程设计环境 5
第二章 需求分析 6
2.1、问题描述 6
2.2、功能要求 6
2.3、问题的解决方案 7
第三章 系统设计 8
3.1数据设计 8
3.1.1类设计 8
3.1.2类之间的关系 9
3.1.3函数设计 10
3.2结构设计 11
3.2.1系统流程图(如图3-2) 11
3.2.2界面设计 12
第四章 系统实现 13
4.1类实现 13
4.2函数实现 14
4.3主函数实现 39
第五章 系统测试 40
5.1模块测试 40
5.2课程设计过程中遇到的问题 43
总 结 44
致 谢 44
参考文献 44
第一章 绪论
1.1课程设计的目的
此次课程设计的目的是以《c++程序设计基础》为基础,针对具有一定难度的综合性题目,进行分析、编程、调试和运行,进一步掌握面向对象和面向过程程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实践相结合,提高分析问题、解决问题的能力。
要求学生达到熟练掌握c++语言的基本知识和技能。
1.2课程设计的背景和意义
1.2.1课程设计的背景
1.理论研究基础
《c++面向对象程序设计》是计算机专业的基础课程,本课程按照软件程序设计所需能力进行教学设计,提出以项目模块方式带动相关知识点、实践项目和理论并行的思路,将案例贯穿于课程始终,对原有的教学体系、教学内容进行重新编排,按照从易到难的原则,将其巧妙地融入到项目开发过程中,降低学习难度,提高学生学习的信心,有效培养学生的应用能力和学习能力。
2.技术层面的支持
本系统运用到:
类与对象在c++中的实现、静态数据成员、运算符重载、有缘函数继承与派生的基本知识、单继承和多继承、虚基类的作用与使用、虚函数的定义和使用、纯虚函数和抽象类的定义和使用、输入输出流的概念、输入输出流操作、文件的创建、打开、读写、关闭等操作。
1.2.2课程设计的意义
本课程按照软件程序设计所需能力进行教学设计,提出以项目模块方式带动相关知识点、实践项目和理论并行的思路,将案例贯穿于课程始终,对原有的教学体系、教学内容进行重新编排,按照从易到难的原则,将其巧妙地融入到项目开发过程中,降低学习难度,提高学生学习的信心,有效培养学生的应用能力和学习能力。
1.3课程设计环境
硬件平台:
CPU:
15。
2.67GHz。
RAM:
512MB以上。
软件平台:
操作系统:
Windowsxp/Windows7
编辑环境:
Visualc++6.0
第二章 需求分析
2.1、问题描述
学生信息包括:
学号、姓名、性别、年龄、班级等信息。
考勤信息包括:
缺课日期、第几节课、课程名称、学生姓名、缺课类型
(迟到、早退、请假和旷课)。
2.2、功能要求
(1)添加功能:
程序能够添加学生的记录和缺课记录,提供选择界面供用户选择所要添加的类别。
添加学生记录时,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:
可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
还可以按课程名、学生姓名对缺课记录进行查询。
(3)显示功能:
可显示当前系统中所有学生的记录和缺课记录,每条记录占据一行。
(4)编辑功能:
可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。
(5)删除功能:
主要实现对已添加的学生记录进行删除。
如果当前系统中没有相应的记录,则提示“记录为空!
”并返回操作。
(6)统计功能:
能根据多种参数进行统计。
能按课程名统计出学生旷课的信息、还可以按姓名统计出任一学生的旷课情况。
需要排序。
(7)保存功能:
可将当前系统中各类记录存入文件中,存入方式任意。
(8)读取功能:
可将保存在文件中的信息读入到当前系统中,供用户进行使用。
2.3、问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
第三章 系统设计
3.1数据设计
3.1.1类设计
学生类:
数据成员:
Number-学号,Name1-姓名,Sex-性别,Class-班级成员函数:
voidSetstu()-输入学生信息
voidDisplaystu()-输出学生信息
voidInquiryS1(Student*)-以学号的形式查询学生信息voidInquiryS2(Student*)-以姓名的形式查询学生信息voidShuchuS(Student*)-显示所有信息
voidFileS(Student*)-保存学生信息voidDuquS(Student*)-读取学生信息voidShuruS()-间接输出学生信息
缺课日期类:
数据成员:
year-年,month-月,day-日
成员函数:
voidSetDa()-输入日期,voidDisplayDa()-输出日期
缺课类型类:
数据成员:
AT-缺课类型
成员函数:
voidSetAT()-输入缺课类型,voidDisplayAT()-输出缺课类型
考勤管理类:
数据成员:
intNumClass-第几节课,CName-课程名称成员函数:
voidSetAM(Student*-输入考勤信息
voidDisplayAM()-输出考勤信息
voidInquiryAM(Att_Man*)-查询学生考勤信息voidShuchuAM(Att_Man*)-显示学生考勤信息
voidTongjiAM1(Att_Man*)-以课程名统计学生考勤信息voidTongjiAM2(Att_Man*)-以姓名统计学生考勤信息voidFileAM(Att_Man*)-保存学生考勤信息
voidDuquAM(Att_Man*)-读取学生考勤信息期
3.1.2类之间的关系
基类:
Date-缺课日期类 Student-学生信息类 AFCT-缺课类型类三个基类。
派生类:
Att_Man-考勤管理类 Guanli管理信息类
考勤管理类:
包含上述3个基类的信息
管理信息类:
包括类3个基类和一个考勤管理类定义成这种关系,便于考勤信息的管理。
一个Att_Man派生
AFCT:
SetAT()
DisplayAT();
Student:
Setstu()Displaystu()FileS() DuquS()
Date:
SetDa()DisplayDa()
(如图3-1)
Guanli:
voidInquiryS1(Student*)voidInquiryS2(Student*)voidShuchuS(Student*)voidInquiryAM(Att_Man*)voidShuchuAM(Att_Man*)voidTongjiAM1(Att_Man*)voidTongjiAM2(Att_Man*)voidMain();
voidDuquAM(Att_Man*)
voidFileAM(Att_Man*)
voidDisplayAM()
Att_Man
voidSetAM(Student*)
Att_Man(){}
Public
北华航天工业学院课程设计报告
19
图3-1
3.1.3函数设计
voidSetstu()-输入学生信息voidDisplaystu()-输出学生信息
voidInquiryS1(Student*)-以学号的形式查询学生信息voidInquiryS2(Student*)-以姓名的形式查询学生信息voidShuchuS(Student*)-显示所有信息
voidFileS(Student*)-保存学生信息voidDuquS(Student*)-读取学生信息voidShuruS()-间接输出学生信息voidSetDa()-输入日期
voidDisplayDa()-输出日期voidSetAT()-输入缺课类型voidDisplayAT()-输出缺课类型
voidSetAM(Student*-输入考勤信息voidDisplayAM()-输出考勤信息
voidInquiryAM(Att_Man*)-查询学生考勤信息voidShuchuAM(Att_Man*)-显示学生考勤信息
voidTongjiAM1(Att_Man*)-以课程名统计学生考勤信息voidTongjiAM2(Att_Man*)-以姓名统计学生考勤信息voidFileAM(Att_Man*)-保存学生考勤信息
voidDuquAM(Att_Man*)-读取学生考勤信息期
*************************************************
3.2结构设计
3.2.1系统流程图(如图3-2)
开始
添加
查看
显示
统计学生信息
统计学生考勤信息
保存学生考勤信息
保存学生信息
删除查询信息
修改查询信息
显示查询信息
读取学生信息
读取学生考勤信息
添加考勤信息
添加学生信息
读取
保存
统计
结束
显示学生考勤信息
显示学生信息
如图3-2
3.2.2界面设计
程序主菜单 (如图3-2)
图3-2主界面
子菜单 (如图3-3)
图3-3子菜单
第四章 系统实现
4.1类实现
1.学生类的实现classStudent
{
public:
Student(){}
Student(intNu,stringNa,charSe,intAg,stringCl)
{
Number=Nu;Name1=Na;Sex=Se;Age=Ag;Class=Cl;
}
staticintT;staticintW;
intNumber;//学号
stringName1;//名字charSex;//性别
intAge;//年龄stringClass;//班级
voidSetstu();//输入学生信息voidDisplaystu();//输出学生信息
voidFileS(Student*);//保存学生信息voidDuquS(Student*);//读取学生信息
};
classDate
{
public:
intyear;intmonth;intday;
Date(inty=0,intm=0,intd=0){year=y;month=m;day=d;}voidSetDa();//输入日期
voidDisplayDa();//输出日期
};
classAFCT
{
public:
AFCT(){}
stringAT;//缺课类型
voidSetAT();//输入缺课类型voidDisplayAT();//输出缺课类型
};
classAtt_Man:
publicDate,publicStudent,publicAFCT
{
public:
Att_Man(){};
intNumClass;//第几节课stringCName;//课程名称staticintT1;
staticintW1;
voidSetAM(Student*);//输入考勤信息voidDisplayAM();//输出考勤信息
voidFileAM(Att_Man*);//保存学生考勤信息voidDuquAM(Att_Man*);//读取学生考勤信息
};
4.2函数实现
voidStudent:
:
Setstu()
{
for(h=0;h<100;h++)
{
cout<<"学号:
";cin>>Number;a[j]=Number;if(Number==0)
{
cout<<"学号不能为0!
请重新输入"<}
else
{
break;
}
}
T++;
for(i=0;i{
if(a[i]==a[j])
{
cout<<"输入学号重复,已取消此次输入,请重新输入!
"<{
cout<<"学号:
";cin>>Number;a[j]=Number;
if(Number==0)
{
cout<<"学号不能为0!
请重新输入"<}
else
{
break;
}
}
i=0;
}
}
cout<<"姓名:
";cin>>Name1;f[j]=Name1;for(h=0;h<100;h++)
{
cout<<"性别(morf):
";cin>>Sex;if(Sex=='m'||Sex=='f')
{
break;
}
else
{
cout<<"性别输入不正确,请重新输入!
"<}
}
for(h=0;h<100;h++)
{
cout<<"年龄(10-30):
";cin>>Age;if(Age>30||Age<10)
{
cout<<"年龄输入不正确,请重新输入!
"<}
else
{
break;
}
}
cout<<"班级:
";cin>>Class;j++;i--;
}
voidStudent:
:
Displaystu()
{
cout<<"**************************"<cout<<"显示此学生的信息:
"<cout<<"学号:
"<cout<<"姓名:
"<cout<<"性别:
"<cout<<"年龄:
"<cout<<"班级:
"<}
voidStudent:
:
InquiryS1(Student*s)
{
intI=0;
intNumber1;
cout<<"请输入学生的学号进行查询:
";cin>>Number1;
for(j=0;j{
if(Number1==s[j].Number)
{
I++;
s[j].Displaystu();break;
}
}
if(I==0)
{
cout<<"没有相同的学号!
"<}
cout<<"①.进行修改!
"<<" ②.进行删除!
"<<" ③.继续查询或返回!
"<for(i=0;i<100;i++)
{
cout<<"请输入编号:
";cin>>x;
if(x>3||x==0)
{
cout<<"编号输入错误,请重新输入!
"<}
else
{
break;
}
}
if(x==1)
{
"<cout<<"①.学号 ②.名字 ③.性别 ④.年龄 ⑤.班级
for(i=0;i<100;i++)
{
cout<<"请输入编号进行修改:
";cin>>h;
if(h>5||h==0)
{
cout<<"编号输入错误,请重新输入!
"<}
else
{
break;
}
}
if(h==1)
{
intNumber2;for(w=0;w<100;w++)
{
cout<<"输入修改的学号:
";cin>>Number2;s[j].Number=Number2;
if(Number2==0)
{
cout<<"学号不能为0!
请重新输入"<}
else
{
cout<<"修改成功!
"<}
}
}
elseif(h==2)
{
stringName3;
cout<<"输入修改的姓名:
";cin>>Name3;
s[j].Name1=Name3;
}
elseif(h==3)
{
charSex2;for(h=0;h<100;h++)
{
北华航天工业学院课程设计报告
23
cout<<"输入修改的性别(morf):
";cin>>Sex2;
s[j].Sex=Sex2;if(Sex2=='m'||Sex2=='f')
{
break;
}
else
{
cout<<"性别输入不正确,请重新输入!
"<}
}
}
elseif(h==4)
{
intAge1;for(h=0;h<100;h++)
{
cout<<"输入修改的年龄(10-30):
";cin>>Age1;
s[j].Age=Age1;if(Age1>30||Age1<10)
{
cout<<"年龄输入不正确,请重新输入!
"<}
else
{
break;
}
}
}
elseif(h==5)
{
stringClass1;
cout<<"输入修改的班级:
";cin>>Class1;
s[j].Class=Class1;
}
}
elseif(x==2)//删除信息
{
W++;
for(w=0;w<10;w++)
{
if((j+w+1){
s[j+w]=s[j+w+1];
}
elseif((j+w+1)==T)
{
break;
}
}
cout<<"删除成功!
"<}
elseif(x==3)
{
cout<<"*************************"<}
}
voidStudent:
:
InquiryS2(Student*s)
{
intU=0;stringName2;
cout<<"请输入学生的姓名进行查询:
";cin>>Name2;
cout<for(j=0;j{
if(Name2==s[j].Name1)
{
U++;
s[j].Displaystu();break;
}
}
if(U==0)
{
cout<<"没有相同姓名!
"<}
cout<<"①.进行修改!
"<<" ②.进行删除!
"<<" ③.继续查询或返回!
"<for(i=0;i<100;i++)
{
cout<<"请输入编号:
";cin>>x;
if(x>3||x==0)
{
cout<<"编号输入错误,请重新输入!
"<}
else
{
break;
}
}
if(x==1)
{
cout<<"①.学号 ②.名字 ③.性别 ④.年龄 ⑤.班级
"<for(i=0;i<100;i++)
{
cout<<"请输入编号进行修改:
";cin>>h;
if(h>5||h==0)
{
cout<<"编号输入错误,请重新输入!
"<}
else
{
break;
}
}
if(h==1)
{
intNumber2;for(w=0;w<100;w++)
{
cout<<"输入修改的学号:
";cin>>Number2;s[j].Number=Number2;
if(Number2==0)
{
cout<<"学号不能为0!
请重新输入"<}
else
{
cout<<"修改成功!
"<}
}
}
北华航天工业学院课程设计报告
29
elseif(h==2)
{
stringName3;
cout<<"输入修改的姓名:
";cin>>Name3;
s[j].Name1=Name3;
}
elseif(h==3)
{
charSex1;for(h=0;h<100;h++)
{
cout<<"输入修改的性别(morf):
";cin>>Sex1;
s[j].Sex=Sex1;if(Sex1=='m'||Sex1=='f')
{
break;
}
else
{
cout<<"性别输入不正确,请重新输入!
"<}
}
}
elseif(h==4)
{
int