数据库高级应用课外实践报告_第1页
数据库高级应用课外实践报告_第2页
数据库高级应用课外实践报告_第3页
数据库高级应用课外实践报告_第4页
数据库高级应用课外实践报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

数据库高级应用课外设计报告项目名称:学生信息管理系统所在班级:指导教师:小组成员:项目简介学生信息管理是高校的一项重要工作,传统的手工记录与查询相关信息既浪费时间又浪费人力和物力。采用计算机对学生信息进行电子化管理可提高学生信息管理的效率,实现学生信息管理工作的系统化、规范化和自动化。因此,制作一个学生信息管理系统有十分重要的意义。本章将按照软件工程的思想对学生信息管理系统进行分析与设计,并采用ADO技术开发实现。需求分析学生信息管理系统的基本功能是对学生信息进行处理,如数据的录入、增加、修改、删除以及信息查询等。作为一个完整的系统,还应该包括系统用户管理。所以学生信息管理系统应该实现以下几个方面的功能。(1)学生基本信息管理。对学生的基本信息进行录入、删除、修改以及条件查询,应能根据不同的查询条件对学生的基本信息进行查询操作。(2)课程信息管理。对课程信息进行录入、删除、修改以及条件查询,应能根据不同的查询条件对课程信息进行查询操作。(3)学生成绩管理。对学生成绩进行录入、删除、修改以及条件查询,应能根据不同的查询条件对成绩信息进行查询操作。并实现打印预览及打印成绩单功能。(4)系统用户管理。只有被授权的用户才可以对有关信息进行录入、删除、修改密码及条件查询。可行性分析学生信息管理系统主要涉及两项关键技术:一是对Access数据库的建立;二是在VisualC++中,使用ADO技术对数据库进行增删改查等各种操作。功能模块学生信息管理系统主要由基本信息管理、课程管理、成绩管理和系统用户管理4个功能模块构成。1.学生基本信息管理(1)添加学生基本信息,包括学生的学号、姓名、性别、生日、专业、班级、家庭住址、备注。(2)修改学生基本信息。(3)删除学生基本信息。(4)查询学生基本信息,可以按照学号、姓名、班级等进行查询。2.课程信息管理(1)课程信息的添加、删除、修改。(2)查询课程信息。3.成绩信息管理(1)添加成绩信息,包括学号、课程代号、学年、学期、平时成绩、期末成绩、总评成绩、备注。(2)成绩信息修改、删除和查询。(3)实现打印预览及打印成绩单功能。4.系统用户管理(1)添加系统用户信息,包括用户名、密码、用户类型(学生、教师、系统管理员)。(2)修改系统用户信息及密码。(3)删除系统用户信息。(4)查询系统用户信息。数据库逻辑结构设计本系统采用Access2003创建数据库,数据库名称为StudentDB。包含4个表:学生基本信息表、成绩表、课程信息表和系统用户表。基本信息表Studentlnfo字段名称字段类型字段大小说明StuID文本12学号StuName文本15姓名Sex文本2性别Specialty文本20专业Class文本10班级Birthday文本10出生日期Address文本50家庭住址Memo文本50备注(奖励和处分等)学生成绩表Scores字段名称字段类型字段大小说明StuID文本12学号StuName文本15姓名Class文本10班级CourseID文本10课程代号AcademicYear文本15学年Semester文本2学期UsualScore单精度平时成绩TestScore单精度期末成绩TotalScore单精度总评成绩Memo文本10备注(缺考/缓考/补考)课程信息表Courses字段名称字段类型字段大小说明CourseID文本10课程代号CourseName文本15课程名CreditHour整型学时CreditScore单精度型学分CourseKind文本10课程性质(必修/限选/校选)系统用户表Users字段名称字段类型字段大小说明UserName文本10用户名UserPsw文本12用户密码UserType整型用户类型(0:学生,1:教师,2:系统管理员)六、功能结构图系统使用说明书软件安装一、系统要求:、硬件要求:CPU主频:1.8GHz以及以上。硬盘空间:2G及以上。内存大小:512MB及以上。显示卡:无要求。、软件要求:WindowsXP/Windows2000/Windows2003操作系统。软件安装:无需安装,直接打开exe文件。系统使用详细说明软件使用首先,向软件开发者获取管理员或其他用户的用户名和密码,用初始密码登陆。1登陆界面按确定即可登陆如果用户名或密码错误,则弹出2如果用户名和密码身份级别均对应,则显示主界面。3点击学生基本信息管理,进入学生基本信息管理界面:可以选择按学号,姓名,班级来实现查找功能;在编辑区进行编辑;然后点击添加,修改,删除,分别实现对应功能。点击关闭按钮回到主界面。4点击课程信息管理,进入课程信息管理界面:此界面与学生基本信息管理界面相似,按代码,课程名或全部课程实现查找;在编辑区进行编辑;然后点击添加,修改,删除,分别实现对应功能。点击关闭按钮回到主界面。5点击学生成绩管理,进入学生成绩管理界面:按学期,学年,班级,课程,课程实现查询;在编辑区进行编辑,点击添加,修改,删除,分别实现对应功能;点击打印预览及打印成绩单实现打印功能;点击关闭按钮回到主界面。6点击系统用户管理,进入系统用户管理界面:选中一条记录,在编辑数据区进行编辑;在修改密码区修改密码,点击修改密码,实现密码修改功能;在条件查询区根据用户名,用户类型或全部,进行查询;在点击添加,删除,分别实现对应功能;点击关闭按钮回到主界面。最后点击退出按钮,退出程序。课外实践总结通过这次实践,我对于MFC类库的各种控件得到了熟练掌握,尤其是列表控件的使用得到了充分的练习,对于其中插入记录等步骤有了更好的掌握。对于数据库连接技术——ADO技术有了更为深刻的理解,将所学到的理论知识运用于实践。主要源代码ADO连接类:voidCADOConn::OnInitADOConn(){ ::CoInitialize(NULL);//初始化COM环境 try { m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象 //设置连接字符串 _bstr_tstrConnect="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=StudentDB.mdb"; m_pConnection->Open(strConnect,"","",adModeUnknown);//打开数据库 } catch(_com_errore) { AfxMessageBox("数据库连接失败,确认数据库路径是否正确!"); }}BOOLCADOConn::ExecuteSQL(_bstr_tbstrSQL){ try { if(m_pConnection==NULL) OnInitADOConn(); m_pConnection->Execute(bstrSQL,NULL,adCmdText);//执行SQL语句 returntrue; } catch(_com_errore) { AfxMessageBox("不能打开记录集!"); returnfalse; }}voidCADOConn::ExitConnect(){ //关闭记录集和连接 if(m_pRecordset!=NULL) m_pRecordset->Close(); m_pConnection->Close(); //释放环境 ::CoUninitialize();}_RecordsetPtr&CADOConn::GetRecordset(_bstr_tbstrSQL){try { if(m_pConnection==NULL) OnInitADOConn();m_pRecordset.CreateInstance(__uuidof(Recordset));//创建Recordset对象 //打开记录集 m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); } catch(_com_errore) { AfxMessageBox("不能打开记录集!"); } returnm_pRecordset;}学生基本信息管理BOOLCBaseInfoDlg::OnInitDialog(){ CDialog::OnInitDialog(); //TODO:Addextrainitializationhere /* m_BaseInfoList.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE);*/ DWORDdwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_FLATSB;m_BaseInfoList.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS); //设置列表框控件的颜色 m_BaseInfoList.SetExtendedStyle(dwExStyle);//设置列名m_BaseInfoList.InsertColumn(0,"学号"); m_BaseInfoList.InsertColumn(1,"姓名"); m_BaseInfoList.InsertColumn(2,"性别"); m_BaseInfoList.InsertColumn(3,"专业"); m_BaseInfoList.InsertColumn(4,"班级"); m_BaseInfoList.InsertColumn(5,"出生日期"); m_BaseInfoList.InsertColumn(6,"家庭住址"); m_BaseInfoList.InsertColumn(7,"备注"); RECTrectList; m_BaseInfoList.GetWindowRect(&rectList); intwidth=(rectList.right-rectList.left)/8;//设置列宽 for(inti=0;i<8;i++) m_BaseInfoList.SetColumnWidth(i,width); if(0==UserType)//对于学生,只能查询信息{GetDlgItem(IDC_BUTTON_ADD)->EnableWindow(false);GetDlgItem(IDC_BUTTON_DEL)->EnableWindow(false);GetDlgItem(IDC_BUTTON_MODIFY)->EnableWindow(false); } m_nSex=0;//缺省性别为男m_nSearchKey=1;//缺省为按姓名查询UpdateData(false); ListRecordset();//显示全部记录 returnTRUE;//returnTRUEunlessyousetthefocustoacontrol //EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCBaseInfoDlg::ListRecordset(_bstr_tbstrSQL){m_BaseInfoList.DeleteAllItems();//删除列表中原来的记录 CADOConnm_ADOConn; m_ADOConn.OnInitADOConn(); _RecordsetPtrBaseInfoSet;//记录集对象指针BaseInfoSet=m_ADOConn.GetRecordset(bstrSQL); inti=0;//记录序号 _variant_ttheValue; CStringstrTemp; //输出匹配的记录,直到记录集为空 while(!BaseInfoSet->adoEOF)//如果记录集不空 { //设置ListCtrl控件的Item值 strTemp=""; theValue=BaseInfoSet->GetCollect("StuID");//获取学号 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.InsertItem(i,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("StuName");//获取姓名 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,1,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("Sex");//获取性别 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,2,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("Specialty");//获取专业 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,3,strTemp); strTemp="";theValue=BaseInfoSet->GetCollect("Class");//获取班级 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,4,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("Birthday");//获取出生日期 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,5,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("Address");//获取家庭住址 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,6,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("Memo");//获取备注 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,7,strTemp); BaseInfoSet->MoveNext();//移到下一条记录 i++; } m_ADOConn.ExitConnect();}voidCBaseInfoDlg::OnButtonSearch(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); CStringstrFieldName[3]={"学号","姓名","班级"};//查询的中文条件 CStringstrField[3]={"StuID","StuName","Class"};//查询条件对应的数据库表中的字段名 CFindDlgfindDlg; findDlg.m_strField=strFieldName[m_nSearchKey]+":"; UpdateData(false); if(IDOK!=findDlg.DoModal())//如果点击取消按钮则结束查询 return; //如果点击了确定按钮则执行查询 _bstr_tvSQL="select*fromStudentInfowhere"+strField[m_nSearchKey]+"='"+findDlg.m_strFieldValue+"'"; ListRecordset(vSQL);//查询出记录并显示在列表控件中}voidCBaseInfoDlg::OnButtonAdd(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); if(m_StuID.IsEmpty()) { MessageBox("学号不能为空!"); return; } if(m_StuName.IsEmpty()) { MessageBox("姓名不能为空!"); return; } //查找是否有同一学号 _bstr_tvSQL; vSQL="select*fromStudentInfoWHEREStuID='"+m_StuID+"'";CADOConnm_ADOConn; m_ADOConn.OnInitADOConn(); _RecordsetPtrBaseInfoSet;//记录集对象指针BaseInfoSet=m_ADOConn.GetRecordset(vSQL); //判断数据库中是否有同一学号,如果有则退出 if(!BaseInfoSet->adoEOF) { MessageBox("同一学号学生已经存在!"); m_ADOConn.ExitConnect(); return; } //如果没有同一学生,则执行正常的添加操作 CStringstrSex,strBirthday; if(m_nSex==0) strSex="男"; else strSex="女";strBirthday=m_BirthYear+"-"+m_BirthMonth+"-"+m_BirthDay;//出生日期 vSQL="insertintoStudentInfovalues('"+m_StuID+"','"+m_StuName+"','"+strSex+"','"+m_Specialty+"','"+m_Class+"','"+strBirthday+"','"+m_Address+"','"+m_Memo+"')";m_ADOConn.ExecuteSQL(vSQL);//向数据库表中添加一条记录 m_ADOConn.ExitConnect(); ListRecordset();//显示记录集}voidCBaseInfoDlg::OnButtonDel(){ //TODO:AddyourcontrolnotificationhandlercodehereUpdateData();if(MessageBox("是否删除当前学生信息?","请确认",MB_YESNO|MB_ICONQUESTION)==IDYES){ _bstr_tvSQL; CADOConnm_ADOConn; m_ADOConn.OnInitADOConn();//删除所选学生的成绩信息 vSQL="deletefromScoreswhereStuID='"+m_StuID+"'";m_ADOConn.ExecuteSQL(vSQL); //删除所选学生的基本信息 vSQL="deletefromStudentInfowhereStuID='"+m_StuID+"'";m_ADOConn.ExecuteSQL(vSQL); m_ADOConn.ExitConnect(); ListRecordset();//显示记录集 MessageBox("删除成功!"); } }voidCBaseInfoDlg::OnButtonModify(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); CStringstrSex,strBirthday; if(m_nSex==0) strSex="男"; else strSex="女";strBirthday=m_BirthYear+"-"+m_BirthMonth+"-"+m_BirthDay;_bstr_tvSQL;_RecordsetPtrBaseInfoSet; vSQL="select*fromStudentInfowhereStuID='"+m_StuID+"'";CADOConnm_ADOConn; m_ADOConn.OnInitADOConn(); BaseInfoSet=m_ADOConn.GetRecordset(vSQL); _variant_ttheValue; CStringstrTemp; if(!BaseInfoSet->adoEOF)//如果记录集不空,修改该记录的值 { BaseInfoSet->Fields->GetItem("StuName")->Value=_bstr_t(m_StuName);BaseInfoSet->Fields->GetItem("Sex")->Value=_bstr_t(strSex);BaseInfoSet->Fields->GetItem("Specialty")->Value=_bstr_t(m_Specialty);BaseInfoSet->Fields->GetItem("Class")->Value=_bstr_t(m_Class);BaseInfoSet->Fields->GetItem("Birthday")->Value=_bstr_t(strBirthday);BaseInfoSet->F

温馨提示

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

评论

0/150

提交评论