资源描述
《数据库原理及应用》课程设计报告
《数据库原理及应用》课程设计报告
设计题目
员工信息管理系统系统
专业: 计算机科学与技术
班级: 10计算机科学与技术(2)班
姓名: 曹 锋 100312202
程 昞 100312206
刘 劝 100312223
孙志强 100312232
王海川 100312233
谢 凯 100312241
指导老师: 黄孝
年 月 日
学号
100312202
06
23
32
33
41
姓名
曹 锋
程 昞
刘 劝
孙志强
王海川
谢 凯
评价
C
C
A
B
B
C
开发背景
• 对于一个只有十个以下员工的企业来说,老板可以凭借自己的记忆力记住员工的基本信息、简历、工资信息等资料。
• 但是对于一个几十人、上百人、甚至上千人的企业来说,光凭管理者的记忆力肯定是不够的,采用手工记账的方式会非常不方便。如果有一款管理软件能够完成公司员工信息的管理,这样会大大减轻管理者的负担。
需求分析
• 一个典型的员工信息管理系统需要有下面的功能:
• 需要有一个记录员工的员工编号、姓名、性别、籍贯、出生日期、住址等基本信息的员工基本信息管理模块;
• 需要有一个能够管理员工的学历、毕业院校、毕业时间、工作经历等信息的员工简历信息管理模块;
• 需要有一个能够管理员工的基本工资、奖金、个税、实发工资、发工资时间等信息的员工工资信息管理模块。
绘制用例图设计系统功能
绘制用例图设计系统功能
系统开发环境
• 系统开发平台:Visual C++ 6.0。
• 数据库管理系统软件:Access 2003。
• 运行平台:win7
数据库分析
数据库概念设计
1,员工基本信息
2.员工简历信息
3. 员工工资信息
数据库逻辑结构设计
1.“basicInfo”表的逻辑结构
字段名
数据类型
是否主键
描述
id
文本(varchar)
是
员工编号
name
文本(varchar
否
员工姓名
sex
文本(varchar)
否
性别
home
文本(varchar)
否
籍贯
birthday
文本(varchar)
否
出生日期
phone_number
文本(varchar)
否
电话号码
status
文本(varchar)
否
现任职务
address
文本(varchar)
否
家庭住址
2.“work_resume”表的逻辑结构
字段名
数据类型
是否主键
描述
id
文本(varchar)
是
员工编号
name
文本(varchar
否
员工姓名
highest_degree
文本(varchar)
否
最高学位
highest_degree_time
整数(int)
否
毕业时间
college_school_name
文本(varchar)
否
大学学校名称
work_experience1
文本(varchar)
否
工作经历1
work_experience2
文本(varchar)
否
工作经历2
work_experience3
文本(varchar)
否
工作经历3
3.“salary”表的逻辑结构
字段名
数据类型
是否主键
描述
id
文本(varchar)
是
员工编号
name
文本(varchar
否
员工姓名
basic
整数(int)
否
基本工资
bonus
整数(int)
否
奖金
tax
整数(int)
否
个人税
total
整数(int)
否
实发工资
year_month
文本(varchar)
否
发工资年月
应用系统界面的设计
登陆口令
登陆界面
主界面
员工基本信息
添加信息
修改性别
删除该信息刘劝
密码修改
程序及代码
登陆口令
void CDlgLogin::OnOK()
{
// TODO: Add extra validation here
CString username,password;//定义两个字符串变量
m_edit_UserName.GetWindowText(username);//将文本框中的值赋给username
m_edit_password.GetWindowText(password);//将文本框中的值赋给帕password
m_logined_user = username;
if(!m_database.IsOpen())
{
//如果数据没有打开,则打开数据库
if(m_database.Open(_T("StaffManageSystem")))//如果正确打开数据库
{
m_recordSet.m_pDatabase=&m_database;//将m_database对象赋给m_pDatabase
CString strSQL;
strSQL.Format("select * from UserInfo where name='%s' and password='%s'",username, password);
m_recordSet.Open(CRecordset::forwardOnly,strSQL);//打开记录集
if(m_recordSet.GetRecordCount()==0)//如果找不到记录
{
MessageBox("密码错误,请重新输入","密码错误",MB_OK|MB_ICONWARNING);//提示密码错误
m_edit_password.SetWindowText("");//清空密码文本框
m_edit_password.SetFocus();//设置用户名文本框为当前的焦点
}
else//如果找到记录
{
CDialog::OnOK();//进入到主窗口
}
m_recordSet.Close();//关闭记录集
m_database.Close();//关闭数据库
}
else//如果没有正确打开数据库
{
MessageBox("不能打开数据库");
}}}
修改密码按键
void CDlgAddUser::OnOK()
{
// TODO: Add extra validation here
UpdateData();
//判断新密码是是为空
if(m_add_user_password.IsEmpty()||m_add_confirm_password.IsEmpty())
{
MessageBox("密码不为空");
}
else
{
if (m_add_confirm_password != m_add_user_password)
{
MessageBox("两次输入密码不一致,请重新输入新密码");
m_add_confirm_password.Empty();
m_add_user_password.Empty();
UpdateData(FALSE);
}
else
{
CDialog::OnOK();
}}}
添加员工基本信息
void CCase1View::OnAddBasicinfo()
{
// TODO: Add your command handler code here
m_dlgBasicInfo.m_addFlag = true;
m_dlgBasicInfo.m_editFlag = false;
//----------// 调用“员工基本信息管理”对话框
if (IDCANCEL == m_dlgBasicInfo.DoModal())
{
return;
}
//-------// 新的员工基本信息写入数据库
CString strSexInfo;
if (m_dlgBasicInfo.m_sex == 0)
{
strSexInfo = "男";
}
else if (m_dlgBasicInfo.m_sex == 1)
{
strSexInfo = "女";
}
else
{
MessageBox("请选择员工性别");
}
if((m_dlgBasicInfo.m_str_id.IsEmpty()) || (m_dlgBasicInfo.m_str_name.IsEmpty()))
{
MessageBox("员工编号和姓名不能为空");
}
else
{
CString strSQL;
strSQL.Format("INSERT INTO basicInfo (id, name, sex, home, birthday, phone_number, status, address) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
m_dlgBasicInfo.m_str_id, m_dlgBasicInfo.m_str_name, strSexInfo,
m_dlgBasicInfo.m_str_home, m_dlgBasicInfo.m_str_birth_day,
m_dlgBasicInfo.m_str_phone, m_dlgBasicInfo.m_str_status,
m_dlgBasicInfo.m_str_address);
m_Db.ExecuteSQL(strSQL);
AfxMessageBox("员工基本信息添加完毕!");
strSQL = "select * from basicInfo";
DrawBasicInfoList(strSQL);
}}
员工简历信息按键
void CCase1View::OnAddResume()
{
// TODO: Add your command handler code here
m_dlgResume.m_addFlag = true;
m_dlgResume.m_editFlag = false;
//----------------------------------------------------------------------------------
//打开“员工简历管理”对话框
if (IDCANCEL == m_dlgResume.DoModal())
{
return;
}
//----------------------------------------------------------------------------------
// 新的简历信息写入数据库
if((m_dlgResume.m_str_id.IsEmpty()) || (m_dlgResume.m_str_name.IsEmpty()))
{
MessageBox("员工编号和姓名不能为空");
}
else
{
CString strSQL;
strSQL.Format("INSERT INTO work_resume (id, name, highest_degree, highest_degree_time, college_school_name, work_experience1, work_experience2, work_experience3) VALUES ('%s', '%s', '%s', %d, '%s', '%s', '%s', '%s')",
m_dlgResume.m_str_id,
m_dlgResume.m_str_name,
m_dlgResume.m_str_degree,
atoi(m_dlgResume.m_str_grad_year),
m_dlgResume.m_str_school,
m_dlgResume.m_str_work_exp1,
m_dlgResume.m_str_work_exp2,
m_dlgResume.m_str_work_exp3);
m_Db.ExecuteSQL(strSQL);
AfxMessageBox("员工简历信息添加完毕!");
strSQL = "select * from work_resume";
DrawResumeList(strSQL);
}//----------------------------------------------------------------------------------
}
员工工资信息按键
void CCase1View::OnAddSalary()
{
// TODO: Add your command handler code here
m_dlgSalary.m_addFlag = true;
m_dlgSalary.m_editFlag = false;
//----------------------------------------------------------------------------------
//打开“员工工资管理”对话框
if (IDCANCEL == m_dlgSalary.DoModal())
{
return;
}
//----------------------------------------------------------------------------------
// 新的工资信息写入数据库
if((m_dlgSalary.m_str_id.IsEmpty()) || (m_dlgSalary.m_str_name.IsEmpty()))
{
MessageBox("员工编号和姓名不能为空");
}
else
{
int i_total = atoi(m_dlgSalary.m_str_basic_salary) + atoi(m_dlgSalary.m_str_bonus) - atoi(m_dlgSalary.m_str_tax);
CString strSQL;
strSQL.Format("INSERT INTO salary (id, name, basic, bonus, tax, total, year_month) VALUES ('%s', '%s', %d, %d, %d, %d, '%s')",
m_dlgSalary.m_str_id,
m_dlgSalary.m_str_name,
atoi(m_dlgSalary.m_str_basic_salary),
atoi(m_dlgSalary.m_str_bonus),
atoi(m_dlgSalary.m_str_tax),
i_total,
m_dlgSalary.m_str_date);
m_Db.ExecuteSQL(strSQL);
AfxMessageBox("员工工资信息添加完毕!");
strSQL = "select * from salary";
DrawSalaryList(strSQL);
}
//----------------------------------------------------------------------------------
}
员工基本信息表修改按键
void CCase1View::OnEditBasicinfo()
{
// TODO: Add your command handler code here
m_dlgBasicInfo.m_addFlag = false;
m_dlgBasicInfo.m_editFlag = true;
//-----------------------------------------------------------
// 获取用户要编辑的记录的行号
int row = -1;
row = m_list_basicinfo.GetSelectionMark();
if (-1 == row)
{
AfxMessageBox("请在列表框中选择要修改的用户记录!");
}
//-----------------------------------------------------------
// 将显示员工基本信息的列表框中的第row行记录赋值到“员工基本信息管理”对话框中相应的控件变量中
CString strTemp;
strTemp = m_list_basicinfo.GetItemText(row, 0);
m_dlgBasicInfo.m_str_id = strTemp;
strTemp = m_list_basicinfo.GetItemText(row, 1);
m_dlgBasicInfo.m_str_name = strTemp;
strTemp = m_list_basicinfo.GetItemText(row, 2);
if ("男" == strTemp)
{
m_dlgBasicInfo.m_sex = 0;
}
else
{
m_dlgBasicInfo.m_sex = 1;
}
strTemp = m_list_basicinfo.GetItemText(row, 3);
m_dlgBasicInfo.m_str_home = strTemp;
strTemp = m_list_basicinfo.GetItemText(row, 4);
m_dlgBasicInfo.m_str_birth_day = strTemp;
strTemp = m_list_basicinfo.GetItemText(row, 5);
m_dlgBasicInfo.m_str_phone = strTemp;
strTemp = m_list_basicinfo.GetItemText(row, 6);
m_dlgBasicInfo.m_str_status = strTemp;
strTemp = m_list_basicinfo.GetItemText(row, 7);
m_dlgBasicInfo.m_str_address = strTemp;
//-----------------------------------------------------------
// 调用“员工基本信息管理”对话框
if (IDCANCEL == m_dlgBasicInfo.DoModal())
{
return;
}
//-----------------------------------------------------------
// 将“员工基本信息管理”对话框中更改后的数据写入数据库
CString strSexInfo;
if (m_dlgBasicInfo.m_sex ==0)
{
strSexInfo = "男";
}
else if (m_dlgBasicInfo.m_sex == 1)
{
strSexInfo = "女";
}
else
{
MessageBox("请选择员工性别");
}
if((m_dlgBasicInfo.m_str_id.IsEmpty()) || (m_dlgBasicInfo.m_str_name.IsEmpty()))
{
MessageBox("员工编号和姓名不能为空");
}
else
{
CString strSQL;
strSQL.Format("UPDATE basicInfo SET name='%s', sex='%s', home='%s', birthday='%s', phone_number='%s', status='%s', address='%s' WHERE id = '%s'",
m_dlgBasicInfo.m_str_name, strSexInfo,
m_dlgBasicInfo.m_str_home, m_dlgBasicInfo.m_str_birth_day, m_dlgBasicInfo.m_str_phone,
m_dlgBasicInfo.m_str_status, m_dlgBasicInfo.m_str_address, m_dlgBasicInfo.m_str_id);
m_Db.ExecuteSQL(strSQL);
AfxMessageBox("员工基本信息修改完毕!");
strSQL = "select * from basicInfo";
DrawBasicInfoList(strSQL);
}
//-----------------------------------------------------------
}
员工基本信息表删除按键
void CCase1View::OnDeleteBasicinfo()
{
// TODO: Add your command handler code here
//-----------------------------------------------------------
// 获取用户要删除的记录的行号
int row = -1;
row = m_list_basicinfo.GetSelectionMark();
if (-1 == row)
{
AfxMessageBox("请在列表框中选择要修改的用户记录!");
}
//-----------------------------------------------------------
// 获取用户要删除的员工的员工编号
CString strTemp;
strTemp = m_list_basicinfo.GetItemText(row, 0);
//-----------------------------------------------------------
// 删除所选记录
CString strSql;
if(IDYES == AfxMessageBox("确定要删除该记录吗?", MB_YESNO))
{
strSql.Format("DELETE FROM basicInfo WHERE id = '%s'", strTemp);
m_Db.ExecuteSQL(strSql);
AfxMessageBox("该记录已删除!");
strSql = "select * from basicInfo";
DrawBasicInfoList(strSql);
}
//-----------------------------------------------------------
}
void CCase1View::OnDeleteResume()
{
// TODO: Add your command handler code here
//-----------------------------------------------------------
// 获取用户要删除的记录的行号
int row = -1;
row = m_list_resume.GetSelectionMark();
if (-1 == row)
{
AfxMessageBox("请在列表框中选择要修改的用户记录!");
}
//-----------------------------------------------------------
// 获取用户要删除的员工的员工编号
CString strTemp;
strTemp = m_list_resume.GetItemText(row, 0);
//-----------------------------------------------------------
// 删除所选记录
CString strSql;
if(IDYES == AfxMessageBox("确定要删除该记录吗?", MB_YESNO))
{
strSql.Format("DELETE FROM work_resume WHERE id = '%s'", strTemp);
m_Db.ExecuteSQL(strSql);
AfxMessageBox("该记录已删除!");
strSql = "select * from work_resume";
DrawResumeList(strSql);
}
//-----------------------------------------------------------
}
void CCase1View::OnDeleteSalary()
{
// TODO: Add your command handler code here
//-----------------------------------------------------------
// 获取用户要删除的记录的行号
int row = -1;
row = m_list_salary.GetSelectionMark();
if (-1 == row)
{
AfxMessageBox("请在列表框中选择要修改的用户记录!");
}
//-----------------------------------------------------------
// 获取用户要删除的员工的员工编号
CString strTemp;
strTemp = m_list_salary.GetItemText(row, 0);
//-----------------------------------------------------------
// 删除所选记录
CString strSql;
if(IDYES == AfxMessageBox("确定要删除该记录吗?", MB_YESNO))
{
strSql.Format("DELETE FROM salary WHERE id = '%s'", strTemp);
m_Db.ExecuteSQL(strSql);
AfxMessageBox("该记录已删除!");
strSql = "select * from salary";
DrawSalaryList(strSql);
}//-----------------------------------------------------------
}
员工简历信息表修改按键
void CCase1View::OnEditResume()
{
// TODO: Add your command handler code here
m_dlgResume.m_addFlag = false;
m_dlgResume.m_editFlag = true;
//-----------------------------------------------------------
// 获取用户要编辑的记录的行号
int row = -1;
row = m_list_resume.GetSelectionMark();
if (-1 == row)
{
AfxMessageBox("请在列表框中选择要修改的用户记录!");
return;
}
//-----------------------------------------------------------
// 将显示员工基本信息的列表框中的第row行记录赋值到“员工简历管理”对话框中相应的控件变量中
CString strTemp;
strTemp = m_list_resume.GetItemText(row, 0);
m_dlgResume.m_str_id = strTemp;
strTemp = m_list_resume.GetItemText(row, 1);
m_dlgResume.m_str_name = strTemp;
strTemp = m_list_resume.GetItemText(row, 2);
m_dlgResume.m_str_degree = strTemp;
strTemp = m_list_resume.GetItemText(row, 3);
m_dlgResume.m_str_grad_year = strTemp;
strTemp = m_list_resume.GetItemText(row, 4);
m_dlgResume.m_str_school = strTemp;
strTemp = m_list_resume.GetItemText(row, 5);
m_dlgResume.m_str_work_exp1 = strTemp;
strTemp = m_list_resume.GetItemText(row, 6);
m_dlgResume.m_str_work_exp2 = strTemp;
strTemp = m_list_resume.GetItemText(row, 7);
m_dlgResume.m_str_work_exp3 = strTemp;
//----------------------------------------------------------------------------------
//打开“员工简历管理”对话框
if (IDCANCEL == m_dlgResume.DoModal())
{
return;
}
//----------------------------------------------------------------------------------
// 新的简历信息写入数据库
if((m_dlgResume.m_str_id.IsEmpty()) || (m_dlgResume.m_str_name.IsEmpty()))
{
MessageBox("员工编号和姓名不能为空");
}
else
{
CString strSQL;
strSQL.Format("UPDATE work_resume SET name='%s', highest_degree='%s', highest_degree_time=%d, college_school_name='%s', work_experience1='%s', work_experience2='%s', work_experience3='%s' WHERE id = '%s'",
m_dlgResume.m_str_name,
m_dlgResume.m_str_degree,
atoi(m_dlgResume.m_str_grad_year),
m_dlgResume.m_str_school,
m_dlgResume.m_str_work_exp1,
m_dlgResume.m_str_work_exp2,
m_dlgResume.m_str_work_exp3,
m_dlgResume.m_str_id);
m_Db.ExecuteSQL(strSQL);
AfxMessageBox("员工简历信息修改完毕!");
strSQL = "select * from work_resume";
DrawResumeList(strSQL);
}
//----------------------------------------------------------------------------------
}
员工工资信息表修改按键
void CCase1View::OnEditSalary()
{
// TODO: Add your command handler code here
m_dlgSalary.m_addFlag = false;
m_dlgSalary.m_editFlag = true;
//-----------------------------------------------------------
// 获取用户要编辑的记录的行号
int row = -1;
row = m_list_salary.GetSelectionMark();
if (-1 == row)
{
AfxMessageBox("请在列表框中选择要修改的用户记录!");
return;}//-----------------------------------------------------------
// 将显示员工基本信息
展开阅读全文