程序设计课程设计报告.docx
《程序设计课程设计报告.docx》由会员分享,可在线阅读,更多相关《程序设计课程设计报告.docx(18页珍藏版)》请在冰豆网上搜索。
![程序设计课程设计报告.docx](https://file1.bdocx.com/fileroot1/2022-11/16/5c5f9eed-5d6d-4311-afd0-d314fcc03df6/5c5f9eed-5d6d-4311-afd0-d314fcc03df61.gif)
程序设计课程设计报告
程序设计课程设计报告
设计题目:
人事管理信息系统
姓名:
唐家维
学号:
200810312098
班级:
信息083
同组人员:
顾婵媛(72)
报告日期:
年月日
目录
1引言1
1.1选题背景1
1.2需求分析1
1.3开发环境2
2.功能设计2
2.1功能结构图2
2.2模块设计3
3.数据结构设计3
4.详细设计5
4.1程序结构图5
4.2各模块功能7
5.调试分析18
6.小结19
参考文献19
1引言
1.1选题背景
管理信息系统在强调管理,强调信息的现代社会中已变得越来越普及。
它涉及了管理科学、信息技术和计算机技术。
人事信息的管理是企事业单位的必要管理内容。
企业的规模越大,所要管理的人员越多,人事管理就越复杂。
随着信息技术的发展,传统的人事信息管理模式已经落伍,人们需要从繁琐的手工操作中解放出来。
由于人事信息比较复杂,手工操作可能导致错误较多、工作效率不高。
因此应用计算机技术实现人事信息的管理是可行而必要的工作,利用人事管理信息系统既能够提高工作效率,又可以提高工作水平。
……
1.2需求分析
本人事管理信息系统将用户分为两大类-管理者和普通员工,普通员工可以查看、修改自己的信息并完成考勤和请假的操作。
管理者除了这些基本的功能还能对数据库进行统计和账户管理。
人事管理信息系统应该实现以下主要功能:
1.建立和维护
员工基本信息、考勤信息、调动信息的增、删、修改;
2.查询
(1)根据编号或姓名查询员工基本信息
(2)根据员工的编号以及时间(年、月)查询考勤信息
(3)根据员工的编号查询调动信息。
3.统计
(1)统计某个职工的出勤情况信息;
(2)按某年某月某日统计查询某部门的迟到人数;
1.3开发环境
操作系统:
WindowsXP;
开发语言:
C++;
IDE:
VC6.0。
2.功能设计
2.1功能结构图
根据系统的功能分析,系统针的功能结构图如图1所示:
图1系统的功能结构图
2.2模块设计
1.基本信息管理
输入:
员工的编号、姓名、性别、进入本单位时间
输出:
员工基本信息文件
修改:
修改员工信息的各项字段
处理:
将员工的基本信息添加到员工基本信息文件中。
2.基本考勤信息管理
输入:
添加员工上下班及请假的时间。
输出:
员工基本考勤信息查询结果视图。
处理:
将考勤时间记录到数据库中。
3.基本员工账户信息管理
输入:
员工ID、登录密码、管理权限、上次登录时间
4、数据库管理
将内存中的信息备份到磁盘中或将磁盘中的信息写入内存
3.数据结构设计
根据系统的需求分析,员工基本信息、考勤信息、调动信息、账户信息应该分别保存各自的类体中,每个类的具体数据及结构有:
数据结构概况:
1、员工基本信息类
编号:
intId
姓名:
CStringName
性别:
CStringSex
进入本单位时间:
time_t_In
所在部门:
CStringOri_Depart
2、员工考勤信息类
上下班时间:
time_t_In
time_t_Out
迟到次数:
intLate_Num
早退次数:
intEarly_Num
请假天数:
intLeave_Num
假期开始时间:
vectorLeave_Date
3、 员工调动信息类
原部门:
CStringOri_Depart
新部门:
CStringNew_Depart
调入时间:
time_t_In
4、员工账户类
员工ID:
intId
登录密码:
CStringPassword
管理权限:
boolType
上次登录时间:
time_tPre
4.详细设计
4.1程序结构
1、本人负责了欢迎模块、用户具体操作界面(参数修改模块、考勤信息显示模块、考勤请假操作模块、统计信息显示模块)、退出模块。
下面主要介绍这几个模块的详细设计。
数据结构:
(1)classStaff_Manage//总数据库
数据成员:
vectoremp//员工链表
成员函数:
intStaff_Search();//搜索员工
voidStaff_Emp_Register();//员工注册
Emp&Get_Emp();//返回员工链表
intGet_Emp_Num();//返回员工总数
(2)classEmp//单个员工信息
数据成员:
Emp_Infoemp_Info;//基本信息
Emp_CheckInemp_CheckIn;//考勤信息
Accountaccount;//账户信息
成员函数:
Emp_Info&Get_Emp_Info();//返回基本信息
Emp_CheckIn&Get_Emp_CheckIn();//返回考勤信息
Account&Get_Account();//返回账户信息
(3)classEmp_Info//员工基本信息类
数据成员:
intId;
CStringName;
CStringSex;
vectordepart_Change;
成员函数:
boolEmp_Info_Change();//员工信息修改
voidEmp_Info_Depart_Change();//员工部门调动
intGet_Id();//返回
CString&Get_Name();
CString&Get_Sex();
CString&Get_ComeDay();
int&Get_Change_Times();
Depart_Change*Get_Depart_Change();//返回部门调动信息
voidPush_Depart_Change();//为链表增加节点
(4)classEmp_CheckIn//签到请假等操作
数据成员:
vectorcheck_In_Out;//签到信息链表
intLate_Num;//迟到次数
intEarly_Num;//早退次数
intLeave_Num;//请假次数
vectorLeave_Date;//迟到时间
成员函数:
boolCheckIn();//上班签到
boolCheckOut();//上班签到
boolLeave();//请假
Check_In_Out*Get_Check_In_Out();
voidPush_Check_In_Out();//增加签到信息链表节点
int&Get_Late_Num();
int&Get_Early_Num();
int&Get_Leave_Num();
time_t*Get_Leave_Date();
voidPush_Leave_Date();//增加请假时间链表节点
int&Get_Emp_CheckIn_j();
intGet_Check_In_Out_Num();
intGet_Leave_Date_Num();
(5)classAccount//账户类
数据成员:
intId;
CStringPassword;
boolType;//权限
time_tPre;//上次登录时间
成员函数:
boolRenew_Password();//修改密码
voidRenew_Id();//修改ID
boolCheck();//密码验证
int&Get_Id();
bool&Get_Type();
CString&Get_Password();
time_t&Get_pre();
4.2各模块功能
2、欢迎模块
欢迎界面实现了信息从磁盘到内存的转换
关键步骤及其解释:
(1)pf=fopen("d:
//Staff_Manage.txt","at+");
在D盘上打开或新建一个文本文档
(2)char*readuntill(FILE*pf,charp)
从文件指针pf向后顺序抽取字符知道遇到字符p并返回该字符串
(3)charnextchar(FILE*pf,intp)
返回文件指针pf后第p个字符
(4)Staff_Emp_Register(Id,Name,Sex,ComeDay,"00",0);
将文件上的信息作为链表的一个节点保存
2、注册模块
该模块完成新增员工信息的收集
关键步骤及其解释:
(1)UpdateData(TURE);
将编辑框内的数据赋值给相关联变量
(2)if(m_ID==0)
MessageBox("ID不得为0!
");
elseif(m_R==-1)
MessageBox("请选择您的权限!
");
elseif(m_Sex==-1)
MessageBox("请选择您的性别!
");
elseif(m_Name=="")
MessageBox("请输入您的姓名!
");
elseif(m_PassWord=="")
MessageBox("请输入您的密码!
");
elseif(m_Depart=="")
MessageBox("请输入您的部门!
");
检测到数据未填写完整并给予警告
(3)m_ID=0;
m_Name=_T("");
m_PassWord=_T("");
//m_Comeday=_T("");
m_Depart=_T("");
m_R=-1;
m_Sex=-1;
UpdateData(FALSE);
如果注册通过则清除编辑框上信息,防止信息泄露
(4)elseif((Dlgs->Staff_Search(m_ID)!
=10000))
MessageBox("该账号已被注册!
");
防止注册两个相同的ID
3、登录模块
登录模块完成ID权限的识别和密码校验
关键步骤及其解释:
(1)if(Dlgs->Staff_Search(m_ID)==10000)
MessageBox("没有此ID");
检验输入的ID是否存在
(2)Staff_Emp_Check()
检验口令是否匹配
(3)Right0_Dlg.ID=My_ID;
Right0_Dlg.DoModal();
将ID号赋值给对话框下的变量,并弹出对话框
4、用户具体操作界面
*由于管理者用户界面是普通员工用户界面的超集,所以这里只介绍管理者用户界面。
*管理者用户界面分为以下六大模块,并一一介绍
(1)参数修改模块
(2)考勤信息显示模块
(3)考勤请假操作模块
(4)基本信息显示模块
(5)统计信息显示模块
(6)账号注销模块
(1)参数修改模块
主要完成对更新后的信息的保存
关键步骤及其解释:
(1)SetDlgItemTex