VC课程设计论文

270801196

贡献于2013-05-02

字数:15440 关键词: C/C++开发

武汉理工大学VC课程设计 学 号: 课 程 设 计 课程名称 可视化编程(VC) 学 院 计算机科学与技术学院 专 业 软件工程专业 班 级 软件sy1001班 姓 名 指导教师 2011——2012学年 第2学期 第 页 武汉理工大学VC课程设计 目录 1. 课程设计要求...................................3 2. 系统的简单操作及功能说明.......................4 3. 设计系统实现的各模块进行介绍...................5 4. 模块源程序以及对源程序主要部分的相应注释说明...6 5. 适当的运行结果界面的截图.......................19 6. 系统设计过程中自己所遇到的问题及相应的解决方法和 解决过程.........................................25 7. 参考文献.......................................29 第 页 武汉理工大学VC课程设计 一、课程设计要求 课设题目:学生信息管理系统实现 1.能实现学生信息的增加与删除; 2.能实现学生信息的查询与显示; 3.实现其它附加功能; 4.界面良好,功能完善。 第 页 武汉理工大学VC课程设计 二、系统的简单操作及功能说明 1. 简单操作 1.输入信息按钮: 从学生信息中输入学生信息的各项内容,然后单击输入信息即可把学生信 息存入系统,同时清除学生的各项信息,以备下一个学生信息的输入。若输入的学生信息不完整,则弹出对话框提醒;若系统中已存在该学生,则弹出对话框提醒。 2.显示信息按钮: 单击此按钮可以显示系统中所有的学生信息。若系统中没有学生信息,则弹出对话框提醒;若存在,则弹出对话框提醒共有几条信息。 3.查询信息按钮: 在处理消息框中输入查询方式后,单击此按钮可以在学生信息中显示符合条件的学生信息。可选择其中一种方式查询,其他方式不输入信息;或选择二、三、四种方式查询。若系统中不存在与查询条件相符的学生,则弹出对话框提醒;若存在,则弹出对话框提示有几条信息,并在学生信息一栏中显示出来。 4.删除信息按钮: 在处理消息框中输入要删除的学生信息类型的资料,然后单击此按钮,可以删除符合条件的学生信息。可选择其中一种处理方式删除,其他方式不输入信息;或选择二、三、四种方式删除。若不存在与删除条件相符的学生,则弹出对话框提醒;否则,弹出对话框显示有几条学生信息被删除。 5.添加信息按钮: 在学生信息框中输入要添加的学生信息,然后单击此按钮可以添加学生信息,同时清除学生的各项信息,以备下一个学生信息的添加。若输入的学生信息不完整,则弹出对话框提醒;若系统中已存在该学生,则弹出对话框提醒。 6.退出按钮: 当要退出学生信息管理系统时,单击此按钮后弹出一个对话框,单击确定可退出系统,否则单击取消。 7.上一条按钮: 当要显示的学生信息不止一条时,此按钮有效,单击可以显示当前信息的上一条信息。若已显示完,则弹出对话框提醒。 8.下一条按钮: 当要显示的学生信息不止一条时,此按钮有效,单击可以显示当前信息的上一条信息。若已显示完,则弹出对话框提醒。 9.清屏按钮: 当要清除界面上的各种信息时可以单击此按钮,则界面上所有信息都被清除。 2. 功能说明 此学生信息管理系统可以实现学生信息的输入、添加、显示、查询和删除功能。当处理时需要显示的学生信息不止一条时可以逐条显示;当需要清除界面的信息时可以单击清屏按钮。其中显示是指显示系统中已有的全部学生信息;查询和删除均可以按照多种方式进行。退出系统时单击退出按钮,这时,会提示是否退出,单击确定即可退出系统;否则单击取消。注意:一旦退出系统,下次再运行时需要重新输入学生信息。 三、 设计系统实现的各模块进行介绍 第 页 武汉理工大学VC课程设计 本学生信息管理系统从界面上看共有三部分:学生信息、处理信息和操作。 1. 学生信息:学生信息显示系统中具体包含哪些学生信息以及作为信息输入通道。 2. 处理信息:指按照何种方式来处理系统中得信息,可以选择处理消息框中一种方式或多种方式处理学生信息。如按照学号来查询学生信息或删除某个学院某个专业的学生。 3. 操作:指触发各种处理的按钮。有输入信息、显示信息、查询信息、删除信息、添加信息、退出、上一条、下一条和清屏。 系统背景图是通过添加位图来实现的,图图片是武汉理工大学的校徽。 四、 模块源程序以及对源程序主要部分的相应注释说明 第 页 武汉理工大学VC课程设计 注:(1)在头文件中加入:struct student{ CString editnumber; CString editname; CString editsex; CString editage; CString editacademy; CString editmajor; CString editclass; CString editdomain; int next; };//包含学生信息的结构体 (2) #define Max 100//结构体中包含的最多的学生数 student stu[Max];//学生 int i=0;//当前系统中学生个数 int Itag[Max];//查询函数中符合条件的记录的个数 int count=0;//记录符合条件的记录数 static int ncount;//记录当前显示的信息前已显示的记录数,在OnBUTTONdown()函数中使用 static int nncount;//记录当前显示的信息前已显示的记录数在OnBUTTONup()函数中使用 1.输入学生信息 void CMyDlg::OnBUTTONinput() { / // TODO: Add your control notification handler code here UpdateData(TRUE);//从编辑框中读入数据 if(m_academy==""||m_age==""||m_class==""||m_domain==""||m_major==""||m_name==""||m_number==""||m_sex=="") MessageBox("学生信息输入不完整!","Warning",MB_OK|MB_ICONINFORMATION); else { int itag=0;//用来标识系统中是否已存在新加入的学生信息 int j=0; while(jEnableWindow(0);//使下一条按钮不可用 GetDlgItem(IDC_BUTTONup)->EnableWindow(0);//使上一条按钮不可用 //把学生信息中各编辑框清零 m_academy = _T(""); m_age = _T(""); m_class = _T(""); m_domain = _T(""); m_major = _T(""); m_name = _T(""); m_number = _T(""); m_sex = _T(""); UpdateData(FALSE); } 2.添加信息函数,实质和输入信息函数一样 void CMyDlg::OnBUTTONadd() { // TODO: Add your control notification handler code here UpdateData(TRUE);//从编辑框读入数据 if(m_academy==""||m_age==""||m_class==""||m_domain==""||m_major==""||m_name==""||m_number==""||m_sex=="") MessageBox("学生信息输入不完整!","Warning",MB_OK|MB_ICONINFORMATION); else{ int itag=0;//用来标识系统中是否已存在新加入的学生信息 int j=0; while(jEnableWindow(0);//使下一条按钮不可用 GetDlgItem(IDC_BUTTONup)->EnableWindow(0);//使上一条按钮不可用 //把学生信息中各编辑框清零 m_academy = _T(""); m_age = _T(""); m_class = _T(""); m_domain = _T(""); m_major = _T(""); m_name = _T(""); m_number = _T(""); m_sex = _T(""); UpdateData(FALSE); } //把学生信息中各编辑框清零 m_academy = _T(""); m_age = _T(""); m_class = _T(""); m_domain = _T(""); m_major = _T(""); m_name = _T(""); m_number = _T(""); m_sex = _T(""); UpdateData(FALSE); } 3.查询符合条件的学生信息 void CMyDlg::OnBUTTONsearch() { // TODO: Add your control notification handler code here 第 页 武汉理工大学VC课程设计 int j; int k=0; count=0;//记录符合条件的学生数 UpdateData(TRUE);//读入数据 //如果处理信息中没有输入查询条件,则弹出对话框“请输入查询条件!” if(m_num==""&&m_acad==""&&m_maj==""&&m_cla=="") { MessageBox("请输入查询条件!","Warning",MB_OK|MB_ICONINFORMATION); } else { //判断是否是按照四种方式(学号、学院、专业、班级)查询 for(j=0;jEnableWindow(0); GetDlgItem(IDC_BUTTONup)->EnableWindow(0); } else if(count>1){ //如果符合条件的记录不止一条,使“下一条”按钮可用 GetDlgItem(IDC_BUTTONdown)->EnableWindow(1); ncount=1;//记录当前显示的信息前已显示的记录数,在OnBUTTONdown()函数中使用。定义ncount的初值 } } 4.查看下一条信息按钮函数 void CMyDlg::OnBUTTONdown() { // TODO: Add your control notification handler code here if(count>=2&&ncountEnableWindow(0); //ncount=1;错误每当BUTTONdown按钮不可用时,导致BUTTONup同时不可用,该为在OnBUTTONsearch()函数中定义ncount的初值 } //判断当前记录前是否还存在记录,若存在则使“上一条”按钮可用 if(ncount>=2){ GetDlgItem(IDC_BUTTONup)->EnableWindow(1); nncount=ncount-1;//(应减1,否则up按钮显示时,将还是显示原状态) 第 页 武汉理工大学VC课程设计 //记录当前显示的信息前已显示的记录数在OnBUTTONup()函数中使用,且给nncount赋初值 } } 5.查看上一条消息按钮函数 void CMyDlg::OnBUTTONup() { // TODO: Add your control notification handler code here if(ncount>=2&&nncount>0)//判断当前记录前是否还存在记录,若存在,则输出 { m_academy = stu[Itag[nncount-1]].editacademy; m_age = stu[Itag[nncount-1]].editage; m_class = stu[Itag[nncount-1]].editclass; m_domain = stu[Itag[nncount-1]].editdomain; m_major = stu[Itag[nncount-1]].editmajor; m_number = stu[Itag[nncount-1]].editnumber; m_sex = stu[Itag[nncount-1]].editsex; m_name = stu[Itag[nncount-1]].editname; UpdateData(FALSE); nncount--; } //若不存在则使“上一条”按钮不可用 else{ MessageBox("There are no according items or the according items have been all displayed","Warning",MB_ICONWARNING);//弹出提醒对话框 GetDlgItem(IDC_BUTTONup)->EnableWindow(0);//使“上一条”按钮不可用 } //判断当前记录后是否还存在记录,若存在则使“下一条”按钮可用 if(nncountEnableWindow(1); ncount=nncount+1;//给标志赋初值 } } 6.删除符合条件的学生后,并把后面的学生信息向前移 void deletemove(int j) { for(int k=j;kEnableWindow(0);//使下一条按钮不可用 GetDlgItem(IDC_BUTTONup)->EnableWindow(0);//使上一条按钮不可用 /*} else{ MessageBox("共有0条学生信息被删除!","Attention",MB_OK|MB_ICONINFORMATION); }*/ //把学生信息中各编辑框清零 // m_cla=_T(""); // m_acad = _T(""); m_academy = _T(""); m_age = _T(""); m_class = _T(""); m_domain = _T(""); // m_maj = _T(""); m_major = _T(""); m_name = _T(""); // m_num = _T(""); m_number = _T(""); m_sex = _T(""); UpdateData(FALSE); } 8.显示当前系统中得全部学生信息 void CMyDlg::OnBUTTONshow() { // TODO: Add your control notification handler code here //把各编辑框清零 m_cla=_T(""); m_acad = _T(""); m_academy = _T(""); m_age = _T(""); m_class = _T(""); m_domain = _T(""); m_maj = _T(""); m_major = _T(""); m_name = _T(""); m_num = _T(""); 第 页 武汉理工大学VC课程设计 m_number = _T(""); m_sex = _T(""); UpdateData(FALSE); if(i==0){ //系统中没有学生信息 MessageBox("系统中共有0条学生信息!","Warning",MB_OK|MB_ICONINFORMATION); } else{ //系统中存在学生信息 CString m_i; m_i.Format("系统中共有%d条学生信息!",i); MessageBox(m_i,"Attention",MB_OK|MB_ICONINFORMATION); int k; count=i; for(k=0;kEnableWindow(0); GetDlgItem(IDC_BUTTONup)->EnableWindow(0); } else if(kEnableWindow(1); ncount=1;//记录当前显示的信息前已显示的记录数,在OnBUTTONdown()函数中使用。定义ncount的初值 } } 第 页 武汉理工大学VC课程设计 } 9.退出系统 void CMyDlg::OnBUTTONexit() { // TODO: Add your control notification handler code here int m=MessageBox("你确定要退出吗?","Warning",MB_YESNO); if(m==IDYES) OnOK(); } 10.清屏 void CMyDlg::OnBUTTONclear() { // TODO: Add your control notification handler code here GetDlgItem(IDC_BUTTONdown)->EnableWindow(0);//使下一条按钮不可用 GetDlgItem(IDC_BUTTONup)->EnableWindow(0);//使上一条按钮不可用 //清屏 m_cla = _T(""); m_acad = _T(""); m_academy = _T(""); m_age = _T(""); m_class = _T(""); m_domain = _T(""); m_maj = _T(""); m_major = _T(""); m_name = _T(""); m_num = _T(""); m_number = _T(""); m_sex = _T(""); UpdateData(FALSE); } 11. 为添加背景图,在void CMyDlg::OnPaint()中得else中修改如下: else { //CDialog::OnPaint();//使原来的函数不可用 CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP是你自己的图对应的ID ,由于我刚刚加入的位图资源 第 页 武汉理工大学VC课程设计 //被我命名成了IDB_Bg,因而我这句就是bmpBackground.LoadBitmap(IDB_Bg); BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); } } 五、 适当的运行结果界面的截图 第 页 武汉理工大学VC课程设计 1. 程序运行时的界面: (后来加了最小化功能) 2. 输入和添加学生信息时: 第 页 武汉理工大学VC课程设计 3.显示系统中所有的学生信息: 第 页 武汉理工大学VC课程设计 4. 删除系统中的学生信息: 第 页 武汉理工大学VC课程设计 5. 查询系统中的学生信息: 第 页 武汉理工大学VC课程设计 6. 退出时: 第 页 武汉理工大学VC课程设计 第 页 武汉理工大学VC课程设计 六、 系统设计过程中自己所遇到的问题及相应的解决方法和解决过程 1. 调试错误: (1) 原因:忘记在头文件中包含DLG1文件;不小心把m_cla写成了m_cls; 程序中if else if的使用有误,else if 使用中竟没有了条件判断句,此类错误实在在荒谬之极,但在程序较多时竟没有注意到,实乃是知识点掌握不牢固。 (2) 原因:int Itag[Max];int count=0;应定义为全局变量 (3) 第 页 武汉理工大学VC课程设计 原因:按钮的ID在程序中书写错误,应为IDC_BUTTONup或者IDC_BUTTONdown错写为IDC_Buttonup和IDC_Buttondown, Ncount 也应定义为全局变量 (4) 原因:程序正在运行,上次运行的结果未及时关闭 (5)//if(m_num==""&&m_acad==""&&m_maj==""&&m_cla==""){ // dlg1.DoModal(); //} 当把这些代码加在OnBUTTONsearch函数中for语句前时当未输入查询条件时会连续出现两个对话框(此对话框时刚开始调试时加入的,后来发现用MessageBox()弹出的对话框比这个美观,所以程序中全部改用MessageBox()函数)。故,这些代码应去掉,后面if(count==0)dlg1.DoModal();代码已包含这种情况。 有时上一条、下一条信息按钮会造成循环现象,如显示完第一条后按上一条按钮会显示第二条信息(假设有两条信息),但是有时又是正确的,不知道是什么原因。 注:部分运行的错误已在程序中注明。其他调试错误做题过程中未记录,故以下主要写下做题过程中主要碰到的问题、解决办法及心得体会。 2. 体会: (1) 在写输入信息函数时,开始时没注意如果学生信息输入不完整的情况,所以导致后来查询后显示信息时,上一条、下一条信息按钮老出问题,后来考虑了这个情况后,问题也就解决了。对于此情况,我也不知道是什么原因。开始时也没有考虑到如果系统中已存在某学号(这里记每个学生的学号唯一)时的情况,导致在还没有清屏时就按了输入信息键或添加信息键时系统中就出现了重复学号的学生,后来在系统中else中的代码改为: else { int itag=0;//用来标识系统中是否已存在新加入的学生信息 第 页 武汉理工大学VC课程设计 int j=0; while(j

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ]
1 人已下载

下载文档

相关文档