重 庆 交 通 大 学
学 生 实 验 报 告
实验课程名称
信息技术实训 I
开课实验室
信息学院通信与软件实验中心
学
院
年级
专业班 班
学 生 姓 名
学 号
开 课 时 间 2012 至 2013 学年第 1 学期
总 成 绩
教师签名
一、系统总体方案
设计选题为一个公司人员管理系统:
根据系统要求,将问题解决分为以下几个步骤:
(一)、分析系统功能,建立系统的功能模块框图及界面的组织设计;
(二)、分析系统中的各个对象及其关系;
(三)、根据功能要求,设计系统的类层次;
(四)、完成类层次中各个类的描述;
(五)、完成类中各个成员函数的定义;
(六)、完成系统中的各功能模块;
(七)、功能调试;
(八)、完成课程设计报告。
二、各功能模块
1、信息添加:
添加公司职员的基本信息。
2、信息输出:
输出公司职员的基本信息。
3、信息修改:
修改公司人员的信息。
4、信息删除:
删除公司人员信息。
功能模块示意图:
系统主界面
信息添加
信息添加
信息添加
信息添加
5、各控件及 ID:
主界面控件:
添加的控件
ID
号
按钮
按钮
按钮
按钮
IDC_BUTTON_ADD
IDC_BUTTON_CHANGE
IDC_BUTTON_DEL
IDC_BUTTON_QUIT
标题
添加
修改
删除
退出
人员信息对话框控件:
添加的控件
编辑框(编号)
ID
号
IDC_EDIT_ID
编辑框(姓名)
IDC_EDIT_NAME
单选按钮(男)
IDC_RADIO_MALE
单选按钮(女)
IDC_RADIO_FEMALE
编辑框(年)
IDC_EDIT_YEAR
编辑框(月)
IDC_EDIT_MONTH
组合框(职位)
IDC_COMBO_PLACE
编辑框(工资)
IDC_EDIT_SALARY
6、控件变量:
三、界面实现
欢迎界面:
主界面:
在主界面创建中选择的应用程序类型是单文档,考虑到在以后界面上天界按钮的便捷,
在选择基类时选择的是 CFormView ,创建完成后禁用了主界面的最大化按钮功能(方法是
从网络上查询得到的)。
代码如下:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
}
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.style&=~WS_MAXIMIZEBOX;
//禁用按动最大化按钮
cs.style&=~WS_THICKFRAME;
//禁止用户改变窗口大小
cs.cx = 900;
cs.cy = 700;
//窗口宽度
//窗口高度
cs.style&=~FWS_ADDTOTITLE;
//将 FWS_ADDTOTITLE 去掉
cs. lpszName = "人员信息管理系统"; //改变标题,替换自己的标题
// TODO: Modify the Window class or styles here by modifying
//
the CREATESTRUCT cs
return TRUE;
保存与打开:
各功能模块的执行有三种方式选择,分别是菜单、工具栏上的按钮以及主界面上的按钮。
人员信息界面:
1、信息添加实现:
添加成功后在列表控件中显示:
代码如下:
void CEmployeeView::OnButtonAdd()
{
CPersonDlg dlg;
if(IDOK != dlg.DoModal())
return;
//根据编号判断人员信息是否已经添加过
LVFINDINFO info;
info.flags = LVFI_PARTIAL|LVFI_STRING;
info.psz = dlg.m_id;
if (m_ListCtrl.FindItem(&info)!=-1)
//若找到
{
}
CString str;
str.Format("编号为%s 的人员信息已经添加过!",dlg.m_id);
MessageBox(str);
return;
//添加人员基本信息
int nItem = m_ListCtrl.GetItemCount();
m_ListCtrl.InsertItem(nItem, dlg.m_id);
m_ListCtrl.SetItemText(nItem, 1,dlg.m_name);
if (dlg.m_bMale)
m_ListCtrl.SetItemText(nItem,2,"男");
else
m_ListCtrl.SetItemText(nItem,2,"女");
m_ListCtrl.SetItemText(nItem, 3, dlg.m_year + "年"+ dlg.m_month + "
月");
m_ListCtrl.SetItemText(nItem, 4, dlg.m_place);
m_ListCtrl.SetItemText(nItem, 5, dlg.m_salary);
}
void CPersonDlg::OnOK()
{
UpdateData();
m_id.TrimLeft();
m_name.TrimLeft();
if (m_id.IsEmpty())
MessageBox("编号不能为空!",TEXT("提示"),MB_ICONWARNING);
else if (m_name.IsEmpty())
MessageBox("姓名不能为空!",TEXT("提示"),MB_ICONWARNING);
else if (m_year.IsEmpty() || m_month.IsEmpty())
MessageBox("出生日期不能为空!",TEXT("提示"),MB_ICONWARNING);
else if (m_salary.IsEmpty())
MessageBox("工资不能为空!",TEXT("提示"),MB_ICONWARNING);
else
CDialog::OnOK();
}
2、信息修改实现:
在未选中列表项时主界面中的修改按钮式灰色不可用的,但是工具栏处的按钮是
你可用的。
代码如下:
void CEmployeeView::OnButtonChange()
{
// 获取被选择的列表项索引号
POSITION pos;
pos = m_ListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
MessageBox("你还没有选中列表项!",TEXT("提示"),MB_ICONWARNING);