




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可视化程序设计课程设计专 业: 班 级: 指导老师: 姓 名: 目录一、需求分析31.1任务需求31.2功能需求31.3界面需求3二、概要设计42.1流程图42.2数据库E-R图4三、详细设计43.1模块分析53.2实现方法(相关代码及界面)5四、调试分析154.1稳定性测试154.2界面分析15五、课设总结16一、 需求分析任务需求题目要求完成一个学生成绩的信息管理系统,要求能进行对学生成绩的录入、修改和删除,能查询学生的成绩,同时可以对学生的成绩进行排序。在Visual C+环境下,使用MFC和DBCS进行开发。系统必须是基于单文档的程序框架或者是基于对话框的应用程序,包含菜单控件,使用数据库进行数据的存储操作,可用Access数据库。系统的使用,必须有权限的现在,即只有管理员才能登陆系统。功能需求系统有以下几个功能性要求:1. 学生成绩的录入:能够将学生的成绩信息进行录入,考虑到学生的添加问题,加入新学生的添加功能。2. 学生成绩的修改:满足老师对学生成绩的修改,包括对数学、英语、语文成绩的修改。3. 学生成绩的删除:能够删除指定学生的指定课程成绩信息的删除,将要删除的成绩的信息进行清零。4. 学生成绩的查询:输入学号,查询对应学生的全部信息。5. 学生成绩的排序:为了更好的了解学生的学习情况,要求可以对学生的成绩进行排序查询,直观了解班级学生的学习状态。包含四种排序:根据数学成绩的排序,根据英语成绩的排序,根据语文成绩的排序,根据总分的排序。6. 权限验证:用户使用该系统,首先进行验证,使用管理员账号和密码,才能登入系统。界面需求1. 登陆界面:有登陆账号和密码的输入框,如果输入账号或密码,提醒用户输入相应的信息。登陆失败,提醒用户登陆失败。2. 主界面:包含菜单、工具栏以及状态栏。通过登陆,主界面可以直接显示学生信息,同时,通过使用工具栏的向后按钮,显示数据库后一个同学的信息。3. 修改界面:一个输入框,通过输入学号,然后查询该学号的信息,并在界面显示该学生的信息,学生学号及姓名显示框,不可编辑。相应成绩的编辑框可用,用于修改成绩。如果,未先进行查询,点击修改按钮,提示先查询。4. 增加界面:输入信息,然后点击添加按钮,进行信息的提示,如果已存在该学号,提示存在该学号的学生,请更正。5. 删除界面:先通过查询,显示该学号的学生的信息,然后通过点击复选框,选择要删除的学生的成绩,点击删除,删除对应的成绩记录。6. 查询界面:输入学号,查询相应的学生信息,如果不存在,提示不存在该学号的学生。显示学生信息的编辑框,全都不可编辑。7. 排序界面:使用List Control空间,显示排序情况,通过下拉列表来选择排序的条件,点击排序,将排序好的信息输出在List Control。二、 概要设计流程图数据库E-R图三、 详细设计模块分析1. 登录模块输入用户名和密码,然后跟数据库比较是否存在该管理员账户密码,不存在提示账户密码错误,存在直接登入系统,显示主页面。2. 增加模块输入学生的信息,点击添加按钮,首先查询数据库是否已存在该学号,如果存在,提示修改学号,否则,将数据加入到数据库里面。3. 修改模块首先查询,如果存在该同学,显示该同学的所有信息。如果不存在该同学,提示信息。在没查询或者不存在该同学的情况下,点击修改按钮,提示先查询。如果存在该同学且查询了,可以修改成绩,然后点击修改,将数据更新到数据库里面。4. 删除模块首先查询,如果存在该同学,显示该同学的所有信息。如果不存在该同学,提示信息。在没查询或者不存在该同学的情况下,点击删除按钮,提示先查询。如果存在该同学且查询了,勾选想删除的成绩,通过点击删除按钮,将数据更新到数据库里面。5. 查询模块输入学号,然后连接数据库,查询是否存在,如果不存在,提示没有该学生。否则,将该学生的信息显示出来。6. 排序模块首先,选择排序的依据,然后点击排序按钮,连接数据库,将数据库取出来存到一个临时的数组里,通过冒泡排序,将里面的数据从大到小进行排序,然后输出到界面。实现方法(相关代码及界面)1. 登录模块的实现方法:登录界面展示:输入信息不足:代码的实现:信息输入不足的提示:if(m_login_username=)MessageBox(L请输入用户名!);return;if(m_login_pwd=)MessageBox(L请输入密码!);return;判断用户是否存在:CString test;CDatabase r1;if(!r1.Open(_T(student),FALSE,FALSE,_T(ODBC;),FALSE)MessageBox(LNo dsn);elseCRecordset r2(&r1);if(!r2.Open(CRecordset:dynaset,LSelect * from Account where Username = + m_login_username + L)MessageBox(LNo open);elseif(r2.GetRecordCount()=0)MessageBox(L不存在此管理员);elser2.GetFieldValue(_T(Password),test);if(m_login_pwd=test)CDialog:OnOK();elseMessageBox(L密码错误,请重新输入,L密码错误,MB_OK|MB_ICONWARNING);/提示密码错误退出按钮的OnCancel()方法:void CLogin:OnCancel(void)exit(0);2. 增加模块的实现方法:增加界面展示:已存在学号的情况:增加部分的代码:UpdateData(true);CDatabase db;CRecordset rd(&db);db.Open(_T(student),FALSE,FALSE,_T(ODBC;),FALSE);rd.Open(CRecordset:dynaset,LSelect * from Score where Sno = + m_sno + L);if(rd.GetRecordCount()=0)CDatabase db;db.Open(_T(student),FALSE,FALSE,_T(ODBC;),FALSE);CString strSql;strSql.Format(LInsert into Score values(%s,%s,%s,%s,%s),m_sno,m_sname,m_math,m_english,m_chinese); db.ExecuteSQL(strSql);db.Close();MessageBox(L增加成功);elseMessageBox(L已存在该学号的学生,请更换学号!);return;m_sno=;m_sname=;m_math=;m_english=;m_chinese=;UpdateData(false);信息输入不足提示的代码实现:if(m_sno=)MessageBox(L请先输入学号!);return;if(m_sname=)MessageBox(L请先输入姓名!);return;3. 修改模块的实现方法:界面展示:未先查询:修改代码:UpdateData(true);if(m_sno=)MessageBox(L请先输入学生学号查询信息!);return;CDatabase db;db.Open(_T(student),FALSE,FALSE,_T(ODBC;),FALSE);CString strSql;strSql.Format(LUpdate Score set Math=%s,English=%s,Chinese=%s where Sno=+m_sno+L,m_math,m_english,m_chinese); db.ExecuteSQL(strSql);MessageBox(L修改成功);db.Close();4. 删除模块的实现方法:界面展示:查询后,某个成绩删除选中:代码:if(m_sno=)MessageBox(L请先查询!);return;if(m_math_check.GetCheck()=1|m_english_check.GetCheck()=1|m_chinese_check.GetCheck()=1)CDatabase db;db.Open(_T(student),FALSE,FALSE,_T(ODBC;),FALSE);CString strSql;strSql.Format(LUpdate Score set Math=%s,English=%s,Chinese=%s where Sno=+m_sno+L,m_math,m_english,m_chinese); db.ExecuteSQL(strSql);MessageBox(L删除成绩成功);db.Close();elseMessageBox(L因没选中科目分数,故未作任何删除!);5. 查询模块的实现方法:界面展示:代码实现:UpdateData(true);CDatabase r1;if(!r1.Open(_T(student),FALSE,FALSE,_T(ODBC;),FALSE)MessageBox(L数据库打开失败);elseCRecordset r2(&r1);if(!r2.Open(CRecordset:dynaset,LSelect * from Score where Sno = + m_sno_search + L)MessageBox(L表打开失败);elseif(r2.GetRecordCount()=0)MessageBox(L不存在该学号的学生!);elser2.GetFieldValue(_T(Sno),m_sno);r2.GetFieldValue(_T(Sname),m_sname);r2.GetFieldValue(_T(Math),m_math);r2.GetFieldValue(_T(English),m_english);r2.GetFieldValue(_T(Chinese),m_chinese);UpdateData(FALSE);6. 排序模块的实现方法:界面展示:代码:界面初始化重写:m_list_result.SetExtendedStyle(LVS_EX_GRIDLINES);m_list_result.InsertColumn(0,L序号,LVCFMT_LEFT,60);m_list_result.InsertColumn(1,L学号,LVCFMT_LEFT,60);m_list_result.InsertColumn(2,L姓名,LVCFMT_LEFT,60);m_list_result.InsertColumn(3,L数学,LVCFMT_LEFT,60);m_list_result.InsertColumn(4,L英语,LVCFMT_LEFT,60);m_list_result.InsertColumn(5,L语文,LVCFMT_LEFT,60);m_list_result.InsertColumn(6,L总分,LVCFMT_LEFT,60);排序实现:UpdateData(true);/清空Listm_list_result.DeleteAllItems();/定义变量int i=0,j=0,k=0,score_all;CString stu505,temp5;CString ID;/数据库连接CDatabase r1;CRecordset r2(&r1);r1.Open(_T(student),FALSE,FALSE,_T(ODBC;),FALSE);/获取表中的记录数目r2.Open(CRecordset:dynaset,LSelect count(*) from Score);CString temp1;int count=0;temp1=L0;r2.GetFieldValue(short(0),temp1);count=_wtoi(temp1);r2.Close();/从表中取值r2.Open(CRecordset:dynaset,LSelect * from Score);r2.MoveFirst();for(i=0;icount;i+)r2.GetFieldValue(_T(Sno),stui0);r2.GetFieldValue(_T(Sname),stui1);r2.GetFieldValue(_T(Math),stui2);r2.GetFieldValue(_T(English),stui3);r2.GetFieldValue(_T(Chinese),stui4);r2.MoveNext();/根据排序条件进行冒泡排序if(m_sort=数学)for(i=0;icount;i+)for(j=0;jcount-i;j+)if(_wtoi(stuj2)_wtoi(stuj+12)for(k=0;k5;k+)tempk=stujk;stujk=stuj+1k;stuj+1k=tempk;if(m_sort=英语)for(i=0;icount;i+)for(j=0;jcount-i;j+)if(_wtoi(stuj3)_wtoi(stuj+13)for(k=0;k5;k+)tempk=stujk;stujk=stuj+1k;stuj+1k=tempk;if(m_sort=语文)for(i=0;icount;i+)for(j=0;jcount-i;j+)if(_wtoi(stuj4)_wtoi(stuj+14)for(k=0;k5;k+)tempk=stujk;stujk=stuj+1k;stuj+1k=tempk;if(m_sort=总分)for(i=0;icount;i+)for(j=0;jcount-i;j+)if(_wtoi(stuj2)+_wtoi(stuj3)+_wtoi(stuj4)_wtoi(stuj+12)+_wtoi(stuj+13)+_wtoi(stuj+14)for(k=0;k5;k+)tempk=stujk;stujk=stuj+1k;stuj+1k=tempk;/在List Control控件显示CString temp3;for(i=0;icount;i+)score_all=_wtoi(stui2)+_wtoi(stui3)+_wtoi(stui4);temp3.Format(L%d,score_all);/类型转换ID.Format(L%d,i+1);m_list_result.InsertItem(i,L);m_list_result.SetItemText(i,0,ID);m_list_result.SetItemText(i,1,s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工程经济实务指导原则试题及答案
- 2025年环境监测智能化技术与数据质量控制案例分析报告
- 行政管理经济法与职业发展试题及答案
- 经济法概论重难点解析试题及答案
- 医药中间体项目可行性研究报告
- 行政管理与公共关系的影响因素试题及答案
- 2024水利水电工程考点整合试题及答案
- 重要考试信息卫生资格试题及答案
- 预测2025年行政法学考试的试题及答案
- 项目管理成果评估试题及答案
- GB/T 22581-2024混流式水泵水轮机基本技术条件
- 房地产销售客户购房动机调研
- 第03讲三步解决一次函数的行程问题(原卷版+解析)
- DZ∕T 0211-2020 矿产地质勘查规范 重晶石、毒重石、萤石、硼(正式版)
- 监狱监管安全隐患分析
- 中国纺织文化智慧树知到期末考试答案章节答案2024年武汉纺织大学
- 鼓乐铿锵 课件-2023-2024学年高一音乐人音版(2019)必修音乐鉴赏
- 短视频运营实战:抖音短视频运营
- 无人机系统结构与设计 课件 第五课时 固定翼无人机的结构
- 工作场所有害因素职业接触限值-第2部分-物理因素
- 普通家庭装修预算表(全面细致)
评论
0/150
提交评论