学生综合测评系统_第1页
学生综合测评系统_第2页
学生综合测评系统_第3页
学生综合测评系统_第4页
学生综合测评系统_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VC+课程设计报告课题:综合测评系统目录1、需求分析12、系统分析23、系统结构设计33.1、系统目标23.2、系统模块结构24、数据库设计44.1、数据库分析24.2、E-R图24.3、数据库表的设计24.4、数据库表关系图25、运行结果66、开发环境与运行环境57、总结68、参考文献79、全部代码实现81. 需求分析 作为计算机的一部分,使用综合测评系统对学生信息与成绩管理及成绩测评,院系的信息管理,有着手工管理所无法比拟的优点,如查找方便,可靠性高,储存量大,寿命长,成本低等。这些优点能够极大地提高学校对学生成绩管理和测评的效率。因此,开发一套学生综合测评管理系统是有必要的。它能对学生素

2、质发展水平进行全面,规范,科学的评价,提高测评分的管理效率,简化评分流程,减轻评分者的负担。 本系统采用Windows图形界面,是大家熟悉的操作系统,用户只需要具有一般计算机知识就可以轻松上手,而且整个测评系统采用友好的交互界面,简洁明了,不需要对数据库非常了解也可以熟练操作。 2. 系统分析 该系统面向相关学生管理部门,是实现对学生成绩情况,考勤情况,奖学金,违纪,和处分等情况进行管理的计算机管理系统。使学校教师及管理员方便测试学生每学期,每学年的文化成绩和综合评分情况,以及为了解各学期之间的进步或后退情况提供了方便。通过设计综合测评系统可以增强综合测评的公正性,准确性和执行效率。3. 系统

3、结构设计3.1:系统目标 本系统主要实现了综合测评方面的先关功能,对学院,班级,班级成员及各门专业课程的信息进行添加,删除,修改等操作,增强了软件的延伸性和使用寿命,极大程度的方便一个测评者对各院系信息的统筹管理,进而能够更准确地获得各个班的综合测评结果。3.2:系统模块结构数据库自动备份退出软件系统主界面Tree控件List控件Tab控件右键菜单显示课程成绩显示学生名单学生成绩修改学生成绩排序学科学分修改学生综合测评学生成绩查询删除功能添加功能学生成绩修改学生课程班级院系打印预览总程序排序计算总成绩删除成绩修改成绩4.数据库设计4.1:数据库分析打印预览本系统数据库采用了SQL Server

4、2012作为系统开发的数据库管理系统,SQL Server2012能提供超大型系统所需的数据库服务,支持事务操作,对数据的完整性有很好的保障。4.2:E-R图学生学号院系班级姓名学生E-R图班级成绩课程名学分课程学号成绩课程班级E-R图 成绩E-R图编号姓名体育智育德育附加分总成绩测评成绩 测评成绩E-R图分数成绩班级课程名课程号学号院系姓名学分学生课程 n m 部分实体E-R图4.3:数据库表的设计4.4:数据库表关系图5. 运行结果6. 开发环境与运行环境1:操作系统:Win72:数据库:Sql Server20123:编译工具:Visual Studio 20137. 总结首先,用MFC

5、实现,本次课程设计让我基本懂得了MFC内部的运行原理,能给独立的制作一个较为简单的系统,算是MFC的入门。同时然我学会了sql server数据库在VC中的使用,能够使用数据库大大提高程序运行的效率,其操作的复杂程度也远远低于文件操作。能够实现预先设计好的程序的功能,非常有自豪感。其次我体会到了任何一门新的东西并非想象中的那么困难,学习一门技术首先要搞清楚其最底层,最基本,最原始的东西,了解了原理之后再学习它的应用就十分轻松。但是如果一开始就急于去运用,没有把原理性的东西搞清楚,则很难做出好的程序。同时,我还认识到实践的重要性,代码是写出来的。看别人的程序只能在非常有限的程度上提高自己的编程水

6、平,但是如果能够自己动手去写代码则不同,要按照自己的思路去写,遇到什么问题再解决什么问题,这样就可以基本把一个程序设计中所有设计的难点和重点都学懂,比起照葫芦画瓢这样的程序编写方法事半功倍。8. 参考文献1:Visual C+实用教程2:亮剑Visual C+项目开发9. 全部代码实现系统框架界面实现:BOOL CHCCPDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(I

7、DM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconS

8、etIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herem_text=欢迎使用综合测评系统; m_textctrl.SetFontSize(27); /设置静态控件中显示字体大小m_textctrl.SetTextColor(RGB(0,255,0); /设置静态控件字体颜色m_textctrl.SetBkColor(RGB(0,0,0); /设置静态控件背景颜色m_textctrl.SetFontBold(TRUE); /设置字体为黑体m_textctrl.SetText(m_text); /设置

9、静态控件文本内容m_list1.SetExtendedStyle(LVS_EX_FULLROWSELECT); /设置list列表风格m_list1.InsertColumn(0,学号,LVCFMT_CENTER,164); /设置列标题m_list1.InsertColumn(1,姓名,LVCFMT_CENTER,164);m_list1.InsertColumn(2,分数,LVCFMT_CENTER,164);m_TreeBootImage.Create ( IDB_BITMAP1,20,1,ILC_COLOR8); /设置树形控件的图标m_tree.SetImageList ( &m_T

10、reeBootImage,TVSIL_NORMAL ); /设置树形控件风格m_tree.SetTextColor (RGB(7,145,13); /设置树形控件字体颜色InitTab();ShowDlg();CreateTree();SetTimer(1,250,NULL); /打开定时器,时间间隔为250msreturn TRUE; / return TRUE unless you set the focus to a control/*-初始化tab控件-*/void CHCCPDlg:InitTab()showdlgnum=0;m_tab.InsertItem(0,学生成绩修改); /

11、添加tab控件内容m_tab.InsertItem(1,学生成绩查询);m_tab.InsertItem(2,学生成绩排序);m_tab.InsertItem(3,学科学分修改);m_tab.InsertItem(4,学生综合测评);modifydlg.Create(IDD_XSCJXG,&m_tab); /创建tab控件child对话框对象finddlg.Create(IDD_XSCJCX,&m_tab);sortdlg.Create(IDD_XSCJPX,&m_tab);zhcpdlg.Create(IDD_XSZHPC,&m_tab);xkxgdlg.Create(IDD_XKXFXG,

12、&m_tab);CRect rc;m_tab.GetClientRect(rc); /获取客户区大小rc.top += 20;rc.bottom -= 8;rc.left += 8;rc.right -= 8;modifydlg.MoveWindow(&rc); /设置tab控件child对话框显示区域finddlg.MoveWindow(&rc);sortdlg.MoveWindow(&rc);zhcpdlg.MoveWindow(&rc);xkxgdlg.MoveWindow(&rc);pdlg0=&modifydlg; /获取child对话框指针pdlg1=&finddlg;pdlg2=

13、&sortdlg;pdlg3=&xkxgdlg;pdlg4=&zhcpdlg;/*-tab控件响应函数-*/void CHCCPDlg:ShowDlg()switch(showdlgnum)case 0:pdlg0-ShowWindow(SW_SHOW); /激活窗口,显示当前的大小和位置。pdlg1-ShowWindow(SW_HIDE); /隐藏窗口激活另一个窗口pdlg2-ShowWindow(SW_HIDE);pdlg3-ShowWindow(SW_HIDE);pdlg4-ShowWindow(SW_HIDE);break;case 1:pdlg0-ShowWindow(SW_HIDE

14、);pdlg1-ShowWindow(SW_SHOW);pdlg2-ShowWindow(SW_HIDE);pdlg3-ShowWindow(SW_HIDE);pdlg4-ShowWindow(SW_HIDE);break;case 2:pdlg0-ShowWindow(SW_HIDE);pdlg1-ShowWindow(SW_HIDE);pdlg2-ShowWindow(SW_SHOW);pdlg3-ShowWindow(SW_HIDE);pdlg4-ShowWindow(SW_HIDE);break;case 3:pdlg0-ShowWindow(SW_HIDE);pdlg1-ShowWi

15、ndow(SW_HIDE);pdlg2-ShowWindow(SW_HIDE);pdlg3-ShowWindow(SW_SHOW);pdlg4-ShowWindow(SW_HIDE);break;case 4:pdlg0-ShowWindow(SW_HIDE);pdlg1-ShowWindow(SW_HIDE);pdlg2-ShowWindow(SW_HIDE);pdlg3-ShowWindow(SW_HIDE);pdlg4-ShowWindow(SW_SHOW);break;/*-刷新显示list列表-*/void CHCCPDlg:ShowList(CString cnamedd)ADOC

16、onn m_AdoConn;m_AdoConn.OnInitDBConnect();_bstr_t vSQL;CString str00;if(flag121=false&sortdlg.temp!=sno)str00.Format(select student.sno,sname,sgrade from student ,grade where student.sno=grade.sno and cno=%s order by %s DESC,cnamedd,sortdlg.temp); /依据组合框内容排序flag121=true;elsestr00.Format(select stude

17、nt.sno,sname,sgrade from student ,grade where student.sno=grade.sno and cno=%s,cnamedd); /依据课程名读取数据库成绩vSQL=(_bstr_t)str00;_RecordsetPtr m_pRs;m_pRs=m_AdoConn.GetRecordSet(vSQL); /获取成绩记录集int k=0;_variant_t cno,cname,cgrade;while(!m_pRs-adoEOF) /判断记录集结束标志cno=m_pRs-GetCollect(sno); /读取记录集中学号cname=m_pRs

18、-GetCollect(sname); /读取记录集中姓名cgrade=m_pRs-GetCollect(sgrade); /读取记录集中成绩CString str1=(LPCTSTR)(_bstr_t)cname;CString str2=(LPCTSTR)(_bstr_t)cgrade;m_list1.InsertItem(k,(_bstr_t)cno); /将学号添加到第一列m_list1.SetItemText(k,1,str1); /将姓名添加到第二列m_list1.SetItemText(k,2,str2); /将成绩添加到第三列m_pRs-MoveNext(); /指针指向下一条

19、记录k+;/*-创建tree树形控件-*/void CHCCPDlg:CreateTree()m_tree.DeleteAllItems();m_AdoConn.OnInitDBConnect();TVINSERTSTRUCT tvInsert; HTREEITEM hParent;tvInsert.hParent = NULL;tvInsert.hInsertAfter = NULL;tvInsert.item.mask = TVIF_TEXT;tvInsert.item.pszText = _T(南阳理工学院); /创建根结点hParent = m_tree.InsertItem(&tvI

20、nsert);vSQL=SELECT * FROM tree where root=南阳理工学院; /通过根节点选取2级结点m_pRs1=m_AdoConn.GetRecordSet(vSQL);CString yezi=leaf; while(!m_pRs1-adoEOF) /通过递归调用select方法创建树Select(yezi,hParent,m_pRs1); /调用select方法创建叶子结点CString str1;str1.Format(SELECT * FROM tree where root=%s,str); /通过父节点选取子结点vSQL1=(_bstr_t)str1;m_

21、pRs2=m_AdoConn.GetRecordSet(vSQL1); /获取记录集leaf1=leaf;while(!m_pRs2-adoEOF)Select(yezi,leaf1,m_pRs2);CString str2;str2.Format(SELECT * FROM tree where root=%s,str);vSQL2=(_bstr_t)str2;m_pRs3=m_AdoConn.GetRecordSet(vSQL2);leaf2=leaf;while(!m_pRs3-adoEOF)Select(yezi,leaf2,m_pRs3);m_tree.Expand(hParent,

22、TVE_EXPAND); /展开一级结点m_tree.Expand(m_tree.GetChildItem(hParent),TVE_EXPAND); /展开2级结点m_tree.Expand(m_tree.GetChildItem(m_tree.GetChildItem(hParent),TVE_EXPAND); /展开3级结点void CHCCPDlg:Select(CString ming,HTREEITEM root,_RecordsetPtr m_pRs) /创建叶子结点name=m_pRs-GetCollect(_bstr_t)ming); /获取子结点记录集str=(LPCTST

23、R)(_bstr_t)name;leaf=m_tree.InsertItem(str,0,1,root,TVI_LAST);/添加子结点m_pRs-MoveNext(); /指针指向下一条记录通过tree派生类创建右键菜单:void MyTree:OnRButtonDown(UINT nFlags, CPoint point) if(!flag)CMenu menu;menu.CreatePopupMenu();menu.AppendMenu(MF_SEPARATOR);switch(nCount) /通过当前结点级别创建菜单case 1:menu.AppendMenu(0,ID_POPUP_

24、MEMU1,添加新院系&A); /添加菜单选项menu.AppendMenu(MF_GRAYED,ID_POPUP_MEMU2,删除该学校&D);break;case 2:menu.AppendMenu(0,ID_POPUP_MEMU1,添加新班级&A);menu.AppendMenu(0,ID_POPUP_MEMU2,删除该院系&D);break;case 3:menu.AppendMenu(0,ID_POPUP_MEMU1,添加新课程或学生&A);menu.AppendMenu(0,ID_POPUP_MEMU2,删除该班级&D);break;case 4:menu.AppendMenu(0

25、,ID_POPUP_MEMU1,添加新成绩&A);menu.AppendMenu(0,ID_POPUP_MEMU2,删除该课程&D);break;menu.CheckMenuRadioItem(ID_POPUP_MEMU1,ID_POPUP_MEMU2,ID_POPUP_MEMU1,MF_BYCOMMAND);:GetCursorPos(&point);menu.TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);menu.DestroyMenu();return;else return;flag=true;CTreeCtrl:OnRBut

26、tonDown(nFlags, point);void MyTree:OnLButtonDown(UINT nFlags, CPoint point) flag=false;CTreeCtrl:OnLButtonDown(nFlags, point);添加删除操作:void MyTree:add()ADDDLG dlg;CHCCPDlg* pdlg=(CHCCPDlg*)GetParent();if(nCount=1|nCount=2)if(dlg.DoModal()=IDOK) CString str;str.Format(insert into tree values(%s,%s),dlg

27、.m_name,leaf111);_bstr_t vSQL0;vSQL0=(_bstr_t)str;m_AdoConn.GetRecordSet(vSQL0);pdlg-CreateTree();MessageBox(添加成功!);else if(nCount=3)if(dlg.DoModal()=IDOK) if(flag001)CString str,str1,str2,jieg,str3,jieg1,qi,jieg2;qi=leaf111;qi.TrimRight();str.Format(insert into tree values(%s,%s),dlg.m_name,leaf111

28、);str1.Format(insert into class values(%s,%s,%f),dlg.m_cno,dlg.m_name,dlg.m_cgrade);str2.Format(select * from class where cno=%s,dlg.m_cno);str3.Format(select root from tree where leaf=%s,dlg.m_name);_bstr_t vSQL0,vSQL1,vSQL2,vSQL3;_RecordsetPtr m_pR,m_pR1;vSQL0=(_bstr_t)str;vSQL1=(_bstr_t)str1;vSQL

29、2=(_bstr_t)str2;vSQL3=(_bstr_t)str3;trym_pR=m_AdoConn.GetRecordSet(vSQL2);jieg=(LPCTSTR)(_bstr_t)(m_pR-GetCollect(cno);jieg2=(LPCTSTR)(_bstr_t)(m_pR-GetCollect(cname);jieg.TrimRight();jieg2.TrimRight();catch(.)if(jieg=)m_AdoConn.GetRecordSet(vSQL0);m_AdoConn.GetRecordSet(vSQL1);MessageBox(添加成功!);els

30、etrym_pR1=m_AdoConn.GetRecordSet(vSQL3);jieg1=(LPCTSTR)(_bstr_t)(m_pR1-GetCollect(root);jieg1.TrimRight();catch(.)if(jieg2!=dlg.m_name)MessageBox(添加失败!);elsem_AdoConn.GetRecordSet(vSQL0);MessageBox(添加成功!);pdlg-CreateTree();elseCString str1,str5,str6;str5=leaf11;str5.TrimRight();str6=leaf111;str6.Tri

31、mRight();str1.Format(insert into student values(%s,%s,%s,%s),dlg.m_cno,dlg.m_name,str5,str6);_bstr_t vSQL1;vSQL1=(_bstr_t)str1;m_AdoConn.GetRecordSet(vSQL1);flag123=false;MessageBox(添加成功!);else if(nCount=4)if(dlg.DoModal()=IDOK) CString str,str2,str3,str4,jieg1;_variant_t qiguai;str2=leaf111;str2.Tr

32、imRight();str3.Format(select cno from class where cname=%s,str2);_bstr_t vSQL12,vSQL3;vSQL12=(_bstr_t)str3;_RecordsetPtr m_pre,m_pR1;m_pre=m_AdoConn.GetRecordSet(vSQL12);qiguai=m_pre-GetCollect(cno);str4=(LPCTSTR)(_bstr_t)qiguai;str.Format(insert into grade values(%s,%s,%f),dlg.zhao,str4,dlg.m_cgrad

33、e);_bstr_t vSQL0;vSQL0=(_bstr_t)str;trystr3.Format(select * from grade where sno=%s and cno=%s,dlg.zhao,str4);vSQL3=(_bstr_t)str3;m_pR1=m_AdoConn.GetRecordSet(vSQL3);jieg1=(LPCTSTR)(_bstr_t)(m_pR1-GetCollect(sgrade);jieg1.TrimRight();catch(.)if(jieg1=)m_AdoConn.GetRecordSet(vSQL0);flag123=false;Mess

34、ageBox(添加成功!);elseMessageBox(该学生成绩已存在!);/*-删除操作-*/void MyTree:del()CHCCPDlg* pdlg=(CHCCPDlg*)GetParent();try_RecordsetPtr m_pR1;if(nCount=1|nCount=2|nCount=3)if(MessageBox(要删除吗?,注意!,MB_YESNO|MB_ICONINFORMATION)=IDYES)CString str;str.Format(delete from tree where leaf=%s,leaf111);_bstr_t vSQL0;vSQL0=

35、(_bstr_t)str;m_AdoConn.GetRecordSet(vSQL0);pdlg-CreateTree();MessageBox(刪除成功!);else if(nCount=4)if(MessageBox(要删除吗?,注意,MB_YESNO|MB_ICONINFORMATION)=IDYES)CString str,str1,str2,str3,jieg;CHCCPDlg* pdlg=(CHCCPDlg*)GetParent();str.Format(delete from tree where leaf=%s,leaf111);str1=leaf111;str1.TrimRig

36、ht();str2.Format(select * from grade where cno=%s,str1);_bstr_t vSQL0,vSQL1;vSQL0=(_bstr_t)str;vSQL1=(_bstr_t)str2;m_AdoConn.GetRecordSet(vSQL0);m_pR1=m_AdoConn.GetRecordSet(vSQL1);jieg=(LPCTSTR)(_bstr_t)(m_pR1-GetCollect(cno);jieg.TrimRight();str3.Format(delete from grade where cno=%s,jieg);vSQL1=(

37、_bstr_t)str3;m_AdoConn.GetRecordSet(vSQL1);pdlg-CreateTree();MessageBox(刪除成功!);catch(.)pdlg-CreateTree();学生成绩修改删除:void XSCJXG:OnXiu() UpdateData();CHCCPDlg* pdlg=(CHCCPDlg*)GetParent(); /获取父窗口对话框指针CString sqlstr,sqlstr1;m_sno.TrimRight();str1112.TrimRight();if(nCount=4)trysqlstr.Format(update grade

38、set sgrade=%f where sno=%sand cno=%s,m_sgrade,m_sno,str1112); /修改学生成绩sqlstr1.Format(update student set sname=%s where sno=%s,m_sname,m_sno); /修改学生成绩vSQL112=(_bstr_t)sqlstr;m_ado.ExecuteSQL(vSQL112);vSQL112=(_bstr_t)sqlstr1;m_ado.ExecuteSQL(vSQL112);AfxMessageBox(修改成功!);catch(.) /捕获异常状态AfxMessageBox(

39、修改失败!);flag123=false;void XSCJXG:OnDelcy() if(m_sno!=)if(MessageBox(要删除吗?,注意,MB_YESNO|MB_ICONINFORMATION)=IDYES)if(nCount=3)CString str,str1;str.Format(delete from student where sno=%s,m_sno);str1.Format(delete from grade where sno=%s,m_sno);_bstr_t vSQL0,vSQL1;vSQL0=(_bstr_t)str;vSQL1=(_bstr_t)str1

40、;m_ado.ExecuteSQL(vSQL0);m_ado.ExecuteSQL(vSQL1);flag123=false;MessageBox(删除成功!);else if(nCount=4)CString str1,str2,str3,str4;_variant_t qiguai;str2=leaf111;str2.TrimRight();str3.Format(select cno from class where cname=%s,str2);_bstr_t vSQL12;vSQL12=(_bstr_t)str3;_RecordsetPtr m_pre;m_pre=m_ado.Get

41、RecordSet(vSQL12);qiguai=m_pre-GetCollect(cno);str4=(LPCTSTR)(_bstr_t)qiguai;str1.Format(delete from grade where sno=%s and cno=%s,m_sno,str4);_bstr_t vSQL1;vSQL1=(_bstr_t)str1;m_ado.ExecuteSQL(vSQL1);flag123=false;MessageBox(删除成功!);m_sno=;m_sgrade=0;UpdateData(false);elseMessageBox(请选择要删除的成员!);学生成绩

42、查询:void XSCJCX:OnFind() if(nCount=4)UpdateData();int k=m_fanwei.GetCurSel();m_fanwei.GetLBText(k,temp); /选择查找范围if(temp=学号)temp=sno;else if(temp=姓名)temp=sname;else if(temp=成绩)temp=sgrade;str1212=temp;str1213=m_guanjian;JIEGUO jgdlg; jgdlg.DoModal(); /调用JIEGUO对话框显示查询结果elseAfxMessageBox(请选择学生成绩表!);学科学分

43、修改:void XKXFXG:OnXfxg() UpdateData();ADOConn ado;_bstr_t vSQL;CString sqlstr;if(nCount=4)trysqlstr.Format(update class set cgrade=%f where cname=%s,m_xuekf,m_xkm); /通过update语句更新数据库内容vSQL=(_bstr_t)sqlstr;ado.ExecuteSQL(vSQL); /执行sql语句AfxMessageBox(修改成功!);catch(.)AfxMessageBox(修改失败!);学生成绩排序:void XSCJPX:OnSort() UpdateData();if(nCount=4)flag121=false;int k=m_yiju.GetCurSel();m_yiju.GetLBText(k,temp); /设置排序依据if(temp=学号)temp=sno;else if(temp=姓名)temp=sname;else if(temp=成绩)temp=sgrade;elseAfxMessageBox(请选择学生成绩表!);学生综合评测:/*-选择综合测评班级-*/void XSZHPC:OnZhpcbt() int k=m_xuey

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论