基于ODBC的学生选课与成绩管理实例

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1地球科学与环境工程学院实验报告书课程名:学号:姓名:指导老师:日期:1目录一、目的与要求........................................................................................................................1二、开发语言与访问方式........................................................................................................1三、程序功能演示....................................................................................................................3四、实验代码..........................................................................................................................11五、数据表..............................................................................................................................23六、实验体会..........................................................................................................................241一、目的与要求针对教材上的学生-课程-选课数据库,编写一个数据库应用程序,让用户可以通过该应用查看课程信息并进行选课。功能应包括:1.按学号查看某位同学已修和已选修的全部课程;2.可以查看选修某门课程的全部同学,并录入成绩。3.可以查看所有课程的信息,并可以让同学按课程编号进行选课。特征如下:(1)数据库中不存在学生不能选课;(2)不能选数据库中不存在的课程。二、开发语言与访问方式2.1、开发语言:C++C++是一种使用非常广泛的电脑程序设计语言。它是一种静态数据类型检查的,支持多范型的通用程序设计语言。C++支持过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计、基于原则设计等多种程序设计风格。贝尔实验室的比雅尼·斯特劳斯特鲁普博士在20世纪80年代发明并实现了C++。起初,这种语言被称作“CwithClasses”(“包含类的C语言”),作为C语言的增强版出现。随后,C++不断增加新特性。虚函数(virtualfunction)、操作符重载(operatoroverloading)、多重继承(multipleinheritance)、模板(template)、异常处理(exception)、RTTI(Runtimetypeinformation)、命名空间(namespace)逐渐纳入标准。1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC14882-1998。另外,就目前学习C++而言,可以认为它是一门独立的语言;它并不依赖C语言,我们可以完全不学C语言,而直接学习C++。根据《C++编程思想》(ThinkinginC++)一书所评述的,C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合中,C++完全可以取代C语言。22.2、MFC简介MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windowsAPI函数,VC++是微软公司开发的C/C++的集成开发环境,所谓集成开发环境,就是说利用它可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。vc也指它的内部编译器,集成开发环境必须有一个编译器内核,例如DevC++其中一个编译器内核就是gcc。MFC除了是一个类库以外,还是一个框架,在VC++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。xx是版本,它封装了MFC内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率。但是MFC的封装很浅,所以效率上损失不大。2.3、数据库访问方式:ODBC开放数据库互连(OpenDatabaseConnectivity,ODBC)是微软公司开放服务结构(WOSA,WindowsOpenServicesArchitecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。开放数据库互连(ODBC)是Microsoft提出的数据库访问接口标准。开放数据库互连定义了访问数据库API的一个规范,这些API独立于不同厂商的DBMS,也独立于具体的编程语言(但是Microsoft的ODBC文档是用C语言描述的,许多实际的ODBC驱动程序也是用C语言写的。)ODBC规范后来被X/OPEN和ISO/IEC采纳,作为SQL标准的一部分,具体内容可以参看《ISO/IEC9075-3:1995(E)Call-LevelInterface(SQL/CLI)》等相关的标准文件。3三、程序功能演示3.1、程序界面3.11、登录界面如图1所示图1登录界面3.12、学生界面如图2所示图2学生界面43.13、教务员界面如图3所示图3教务员界面3.2、学生选课界面3.21、学生可以通过按钮“查询全部课程信息”来查询数据库中的所有课程信息,如图4所示图4查询全部课程信息53.22、通过查询全部课程信息,学生可以选择指定课程到其选课记录中,学生也可以通过输入学号来查询已选择的课程,例如查询学号为201413279的学生的选课内容(图5)。图5查询学生已选课程此时该学生可以选择课程代码为1的数据库课程,选择时会弹框提示,再次查询时会显示更新后的内容,如图6、图7所示。由于是刚选的课程,所以成绩栏为空。图6提示信息6图7选课结果3.23、学生在查询所有成绩信息后可以输入行数来删除该行的信息。(这里感觉做的不是很好,但是实在做不出来更好的方法)。删除成功后会弹框提示,再次查询时会显示该成绩已被移除,如图8、图9所示。图8删除课程提示图9课程已被删除73.24、对于非法操作,由于数据库本身的外键约束,所以当学生选择不存在的课程或不存在的学生进行选课时都会提示操作失败,如图10、图11所示。图10选择不存在的课程会失败图11不存在的学生选课时会失败3.3、教务员界面3.31、教务员可以通过“查询所有课程信息”来了解课程代码、名称、先修课(在这个程序里没有作用)以及学分等信息。也可以输入课程代码来查询选择该课程的全部学生及成绩信息,查询不存在的课程时列表为空。如图12、图13以及图14所示。8图12查询所有课程信息图13查询某一门课程的所有学生及成绩9图14选择不存在的课程时列表为空3.32、教务员可以通过按钮来查询所有成绩信息,在总成绩表里通过输入行数与分数能够修改该行的成绩信息:若该行没有成绩,则会添加进去,若该行已有成绩,就会修改为指定值,两者都会有弹框提示。如果修改的行数超出列表信息,会提示操作失败。分别如图15-19所示。图15查询所有成绩信息10图16添加成绩成功后弹框提示图17对原来不存在成绩(第7行)的学生添加成绩图18对已有成绩的学生进行修改11图19对不存在的行添加成绩四、实验代码4.1、登录界面跳转按钮代码//进入教务员界面voidC尝试Dlg::OnBnClickedButton1(){Acdemicdlg;this-ShowWindow(SW_HIDE);dlg.DoModal();this-ShowWindow(SW_SHOW);//TODO:在此添加控件通知处理程序代码}//进入学生界面voidC尝试Dlg::OnBnClickedButton2(){Studentdlg;this-ShowWindow(SW_HIDE);dlg.DoModal();this-ShowWindow(SW_SHOW);}4.2、学生界代码BOOLStudent::OnInitDialog(){CDialogEx::OnInitDialog();ListS.SetExtendedStyle(ListS.GetExtendedStyle()|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP12|LVS_EX_TWOCLICKACTIVATE|LVS_EX_FULLROWSELECT);CRectrect;ListS.GetClientRect(rect);intlistWidth=rect.Width();ListS.InsertColumn(0,_T(课程代码),LVCFMT_LEFT,100);ListS.InsertColumn(1,_T(课程名称),LVCFMT_LEFT,100);ListS.InsertColumn(2,_T(先修课代码),LVCFMT_LEFT,100);ListS.InsertColumn(3,_T(学分),LVCFMT_LEFT,100);ListS.InsertColumn(4,_T(),LVCFMT_LEFT,100);ListS.InsertColumn(5,_T(列6),LVCFMT_LEFT,100);returnTRUE;}//查询所有课程信息voidStudent::OnBnClickedButton1(){try{CDatabasedb;BOOLbOpen=db.OpenEx(_T(DSN=111;),CDatabase::noOdbcDialog);if(!bOpen){MessageBox(_T(连接错误!));return;}CRecordsetrs(&db);rs.Open(CRecordset::forwardOnly,_T(select*fromdbo.Course));shorticnt=rs.GetODBCFieldCount();if(icnt0){ListS.DeleteAllItems();while(ListS.DeleteColumn(0));}//输出所有列的信息for(inti=0;irs.GetODBCFieldCount();i++){CODBCFieldInfofieldInfo;rs.GetODBCFieldInfo(i,fieldInfo);ListS.InsertColumn(i,fieldInfo.m_strName,LVCFMT_LEFT,100);}//依次读取每一行CDBVariantvar;inti=0;//依次读取每一行13while(!rs.IsEOF()){for(intindex=0;indexicnt;index++){CStringst;rs.GetFieldValue(index,st);if(index==0)ListS.InsertItem(i,st);elseListS.SetItemText(i,index,st);}rs.MoveNext();i++;}rs.Close();db.Close();}catch(CDBException*e){AfxMessageBox(e-m_strError);AfxMessageBox(e-m_strSt

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功