中北大学
VC + + 实验周
课程设计说明书
2011 年 12月5日
1.设计要求
1)创建单文档,以姓名+学号命名;
2)在主菜单增加菜单项:姓名;
3)点击菜单“姓名”产生对话框,对话框标题为学号;
4)对话框中要有一个List Control控件用于显示,要有三个Edit Control
控件用于输入学号、性别、班级,有三个Button控件实现添加、删除、
保存功能,保存在一个txt格式的文件中;
5)建立以姓名的拼音命名的Access数据库;
6)在主菜单增加菜单项:学号;
7)点击菜单“学号”将数据库中所有信息显示到View中;
8)文档。
2.2.内容设计
2.1运行环境
编译工具:Microsoft Visual Studio 2010;
数据库:Microsoft Access2003
2.2 功能设计
建立过程:
新建——项目——MFC应用程序——单文档——数据库支持(ODBC数据源)——完成;
实现功能:
功能一:
1,功能描述
将输入进Edit Control的姓名、性别、学号等信息通过按钮【添加】、【删除】、【保存】进行实现。并将数据保存到本地的Data.txt文档中。
2,详细建立步骤
在菜单栏添加”姓名”菜单,单击”姓名”弹出对话框,对话框标题是”学号:0806054213”。在资源视图中Dialog中添加新的Dialog资源,对新的Dialog添加类showitem;在窗体上增加一个ListControl控件,其view属性改为Report;增加三个Static Text控件分别为姓名、性别、班级;增加三个Edit Control控件用于输入;增加三个Button控件实现相应功能:添加,删除和保存。对ListControl添加变量t_list,对三个Edit Control分别添加变量t_name、t_sex、t_class;
功能二:
1,功能描述
显示数据库中的信息到VIEW中。
2、详细建立步骤
在菜单栏添加菜单项“0806054213”,单击“0806054213”,弹出对话框,对话框标题是“显示数据”。通过代码将数据库的信息显示到VIEW中。
2.3 界面设计及相关代码
图1设计页面
图2添加信息
图3 添加信息
图4添加信息
图5添加数据成功
实现代码:
void showitem::OnBnClickedAdd()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if (t_Name.IsEmpty()||t_Sex.IsEmpty()||t_Class.IsEmpty())
{
MessageBox(_T("信息不完整,请填写完整后再添加条目^_^"),_T("提示"),MB_OK|MB_ICONWARNING);
return;
}
int n=t_List.InsertItem(t_List.GetItemCount(),t_Name);
t_List.SetItemText(n,1,t_Sex);
t_List.SetItemText(n,2,t_Class);
t_Name="";
t_Sex="";
t_Class="";
UpdateData(FALSE);
}
图6删除信息
图7删除信息
实现代码:
void showitem::OnBnClickedDelete()
{
// TODO: 在此添加控件通知处理程序代码
if(t_Index==-1)
{
MessageBox(_T("请选择一项再删除!"),_T("提示"),MB_OK|MB_ICONINFORMATION);
return;
}
t_List.DeleteItem(t_Index);
t_Index=-1;
}
图8保存数据
图9保存文档至TXT文档
实现代码:
void showitem::OnBnClickedSave()
{
// TODO: 在此添加控件通知处理程序代码
CFile file;
if (file.Open("Data.txt",CFile::modeCreate|CFile::modeWrite))
{
CString strText;
strText = "学号\t\t性别\t\t班级\r\n";
file.Write(strText,strText.GetLength());
for(int i=0;i { strText=t_List.GetItemText(i,0) + "\t\t"+t_List.GetItemText(i,1)+"\t\t"+t_List.GetItemText(i,2) +"\r\n"; file.Write(strText,strText.GetLength()); } file.Close(); MessageBox(_T("数据保存成功"),_T("提示"),MB_OK|MB_ICONINFORMATION); } else { MessageBox(_T("文件打开失败"),_T("提示"),MB_OK|MB_ICONERROR); } } 图10显示数据 图11显示数据实现代码: void CjiayuliangView::OnDraw(CDC* pDC) { // TODO: 在此添加专用代码和/或调用基类; CjiayuliangDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!isNO) { CPoint pText(10,0); if(m_pSet->IsBOF()) return; m_pSet->MoveFirst(); pDC->TextOut(pText.x+20,pText.y,_T("学号")); pDC->TextOut(pText.x+98,pText.y,_T("性别")); pDC->TextOut(pText.x+190,pText.y,_T("姓名")); pText.y += 30; while (!m_pSet->IsEOF()) { pDC->TextOut(pText.x,pText.y,CString(m_pSet->column1)); pDC->TextOut(pText.x+100,pText.y,CString(m_pSet->column2)); pDC->TextOut(pText.x+180,pText.y,CString(m_pSet->column3)); m_pSet->MoveNext(); pText.y=pText.y+30; } } } void CjiayuliangView::On080605421332775() { // TODO: 在此添加命令处理程序代码 if (!isNO) { isNO=TRUE; } else { isNO=FALSE; } Invalidate(); } 3. 参考资料 [1]杜茂康、李昌兵、曹慧英、王永. Visual C++ .电子工业出版社.2007 4. 课程心得 在VC++这学期开课之前,我对C++语言其实没有什么了解,因为以前学过C、C#所以在做C++课程设计的时候,还是有一定帮助的。虽然以前做C#课程设计的时候也是用的Visual studio 2010,但是本次VC++主要做的是运用MFC框架来做,这是我以前没有接触过的。在上这门课之前我就通过网络信息和下载一些关于C++的相关知识。虽然网上所讲的信息很多,但却讲的非常不详细。但是听了秦老师讲的课之后,发现以前在视频里面不解的问题都迎刃而解了。秦老师开学就通过自身的实践来授课,我觉得这是非常好的,不仅可以让我们了解到了Visual studio的使用还掌握相应的代码实现。 在本次VC++课程设计之前还参加了秦老师在周六开设C++补充学习,使我受益菲浅,虽然秦老师只用了大约一大节的的时间来讲授C++,但是这一大节把编程中最重要的指针、数据、相关函数讲的条理清晰。所以在做本次课程设计的时候,所用的时间并不很多而且运用的相关函数都能够很轻易的找出来。 这学期的VC++课中,记忆最深的就是秦老师第一次开课的时候出的一道题,让1到100个数相加,当时我写的是一个for循环,觉得出的题太简单了,可是当秦老师把他的答案说出来时,我才豁然开朗。在大学这4年里,我才感悟到编程最重要的并不是单纯的编程而是要注重编程的思想。