VC++学生信息管理系统课程设计报告_第1页
VC++学生信息管理系统课程设计报告_第2页
VC++学生信息管理系统课程设计报告_第3页
VC++学生信息管理系统课程设计报告_第4页
VC++学生信息管理系统课程设计报告_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

项目名称设计开始日期2023-08-20项目完毕日期2023-08-24文档评审重要考核内容评审项目评审内容项目名称课题是否从实际出发,是否满足工作量需求,是否具有创意等文档格式文档格式是否规范;文字是否规范;图表是否规范;术语是否准确等文档质量程序设计思想与整体框架是否清楚等程序功能完备性评审重要内容评审项目评审内容程序运营状况程序是否能正常运营;是否出现死锁;是否碰到错误而中止运营程序对的性对于给定的输入数据,是否能得到对的的输出结果程序与文档的一致性程序与各种文档的内容是否一致程序的代码量程序代码量的大小实现方法图形界面或命令行界面,美观限度程序功能程序的功能是否完备答辩评审内容评审项目评审内容答辩思绪答辩思绪是否清楚回答问题回答问题是否对的考勤评定成绩考勤成绩课程设计是否按照规定在机房完毕课程设计总成绩课程设计题目:学生信息管理系统问题阐述与分析:1.设计背景:随着学校的发展,需要对越来越多的学生信息进行解决,依靠传统的解决方式已经满足不了规定,所以可以通过编一个学生信息管理系统,使学生的信息可以集中管理,由于这个数据量比较大,而对于大量数据的解决,采用数据库更为安全简便。在此,可以通过学生信息管理系统这个项目来学习数据库的使用和注意事项。对于学生信息管理系统这个项目,需要解决学生的基本信息,姓名,学号,年龄,性别,宿舍,联系方式等。2.设计实现意义有助于学生的管理便利3.所要解决的重要问题帮助老师、同学们更方便快捷的查询学生的信息4.应用范围本系统合用于理论研究。即用来对平台功能的增减,修改及相关算法优化等做研究。工作量:我在学习VC++的MFC编程,数据库的相关知识,同时进行下面的工作,1.拟定课程设计的重要方向——学生信息管理系统;2.明确所做系统的重要需要解决的问题,根据问题分析系统所要实现的重要功能,根据功能设计出不同的模块——登陆模块,注册模块,维护模块。3.设计系统的登录及各个重要功能的界面外观;4.以各个界面所要实现的功能为以依据,为各个部分编写代码并匹配数据库;登陆模块,能进行登录,并且输入错误时,有提醒信息注册模块,可进行用户的注册维护模块,能进增长,删除,修改等动作5.调试程序,修改程序中出现的错误,并在功能,外观方面对程序进行完善,使程序实用性更强;6.完毕工程。工作计划安排:2023年8月20日8月20日:进行系统分析,拟定各模块及具体实现方案。2023年8月20日8月21日:进行系统的分析,拟定各部分需要完毕的重要功能,拟定具体实现方案,并学习相关知识,拟定使用VC++6.0。2023年8月21日8月22日:根据分析和设计,开始系统的实现,进行代码的编写。2023年8月22日~8月23日各模块合并,调试运营。2023年9月23日8月24日:系统完善,撰写报告目录1绪论 11.1项目简介 11.2设计目的 11.3设计内容 12需求分析 12.1数据需求 12.2事务需求 23概要设计 23.1系统的大体流程图 24具体设计 24.1系统的流程图 24.2整体逻辑数据库结构 34.3涉及算法的思想 35用户使用说明 45.1开发运营环境 45.2数据库的名称及内容 46关键源程序 56.1建立工程 56.2模块1 56.3模块2 96.5模块4 127测试结果及运营界面 198总结 238.1系统实现限度 238.2问题及难点 238.3收获与体会 23参考文献 241绪论1.1项目简介本系统重要实现学生信息管理功能,为老师与同学提供一个可以快速查找信息的平台。1.2设计目的方便老师与同学查看学生信息,提高学生信息管理的效率,节省时间,从而实现学校工作的边界管理。1.3设计内容重要涉及:用户的登陆于注册,对学生信息的增长删除修改。2需求分析2.1数据需求系统需要解决哪些数据总体分为用户输入的数据和从数据库中获得的数据。重要数据类型涉及:CString类型数据、double类型数据、int类型数据和CTime类型数据。2.2事务需求用户:登陆、注册,对数据的增删改3概要设计3.1系统的大体流程图注册模块注册模块登录模块维护模块录入学生信息删除学生信息修改学生信息通讯录管理系统4具体设计4.1系统的流程图注册注册结束开始结束开始添加添加显示信息登录流程切换显示信息登录流程切换具体信息修改退出具体信息修改退出删除删除4.2整体逻辑数据库结构数据库用户登陆数据库用户登陆操作score表修改信息添加信息删除信息4.3涉及算法的思想4.3.1建立数据库通过ADO建立两个数据库(新建MicrosoftOfficeAccess应用程序)存放登陆信息和学生信息。4.3.2数据录入在新建学生信息数据库中录入学生信息。4.3.3登录框的设计建立变量Sname,Spsw,通过格式变幻,将CString格式转换成数据库规定的格式通过compare函数将输入的用户名与密码与数据库比较4.3.4注册框的设计先鉴定输入框里的名字在数据库里不存在,然后将输入的信息替换入数据库4.3.5添加记录建立一个新的窗口,包含姓名,学号,年龄等基本信息录入框用户录入要添加记录信息,假如要添加记录和已有记录不冲突就会把录入信息添加到新建MicrosoftOfficeAccess应用程序记录集中。4.3.6修改记录对已经录入的学生信息进行修改4.3.7删除记录将已选中的记录从记录集中去除。5用户使用说明5.1开发运营环境5.1.1设备:本系统对设备的规定很低,一般的电脑主机都能运营。运营前安装VisualC++6.0。5.1.2支持软件:系统支持:Windows7等。开发工具:VisualC++6.0、Access2023。5.2数据库的名称及内容本系统包含两个数据库,Data和Database数据库,Database数据库中储存的是用户名与密码,Data数据库中储存的是学生的学号、姓名、年龄、联系方式、宿舍。Data(学生通讯表)字段名称中文含义数据类型宽度Num学号文本20Name姓名文本20Age年龄数字3Home宿舍文本20Phone联系电话文本20Database(管理登录表)字段名称中文含义数据类型宽度Logname用户名文本20Logpsw用户密码文本206关键源程序6.1建立工程6.2模块1先在学生信息管理系统.cpp中添加代码,通过ADO创建登陆数据库//学生信息管理系统.cpp:Definestheclassbehaviorsfortheapplication.#include"stdafx.h"#include"学生信息管理系统.h"#include"学生信息管理系统Dlg.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//CMyAppBEGIN_MESSAGE_MAP(CMyApp,CWinApp) //{{AFX_MSG_MAP(CMyApp) //NOTE-theClassWizardwilladdandremovemappingmacroshere. //DONOTEDITwhatyouseeintheseblocksofgeneratedcode! //}}AFX_MSG ON_COMMAND(ID_HELP,CWinApp::OnHelp)END_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CMyAppconstructionCMyApp::CMyApp(){ //TODO:addconstructioncodehere, //PlaceallsignificantinitializationinInitInstance}//TheoneandonlyCMyAppobjectCMyApptheApp;CDaoDatabasedb;//建立全局变量,在其他地方调用时要加extern//CMyAppinitializationBOOLCMyApp::InitInstance(){ AfxEnableControlContainer(); //Standardinitialization //Ifyouarenotusingthesefeaturesandwishtoreducethesize //ofyourfinalexecutable,youshouldremovefromthefollowing //thespecificinitializationroutinesyoudonotneed.#ifdef_AFXDLL Enable3dControls(); //CallthiswhenusingMFCinasharedDLL#else Enable3dControlsStatic(); //CallthiswhenlinkingtoMFCstatically#endif //这里就是程序入口,在这里添加数据库检查代码 CStringFilepath="Database.mdb"; CDaoRecordsetDbset(&db);CFileFindFfind;//先看看存不存在数据库文献BOOLflag=Ffind.FindFile(Filepath);Ffind.Close();if(!flag)//假如没有就创建 { CStringsqlcmd="CREATETABLEDataTable(NameVARCHAR(20),PswVARCHAR(20))"; db.Create(Filepath); db.Execute(sqlcmd); Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMDataTable",0); Dbset.AddNew(); Dbset.SetFieldValue("Name",_variant_t("wzh")); Dbset.SetFieldValue("Psw",_variant_t("123456")); Dbset.Update(); Dbset.Close(); db.Close(); }//建立数据库文献,设立初始化账号 CMyDlgdlg; m_pMainWnd=&dlg; intnResponse=dlg.DoModal(); if(nResponse==IDOK) { //TODO:Placecodeheretohandlewhenthedialogis //dismissedwithOK } elseif(nResponse==IDCANCEL) { //TODO:Placecodeheretohandlewhenthedialogis //dismissedwithCancel } //Sincethedialoghasbeenclosed,returnFALSEsothatweexitthe //application,ratherthanstarttheapplication'smessagepump. returnFALSE;}voidCMyDlg::OnPaint(){ if(IsIconic()) { CPaintDCdc(this);//devicecontextforpainting SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0); //Centericoninclientrectangle intcxIcon=GetSystemMetrics(SM_CXICON); intcyIcon=GetSystemMetrics(SM_CYICON); CRectrect; GetClientRect(&rect); intx=(rect.Width()-cxIcon+1)/2; inty=(rect.Height()-cyIcon+1)/2; //Drawtheicon dc.DrawIcon(x,y,m_hIcon); } else { //给窗体添加背景CPaintDCdc(this);CRectrc;GetClientRect(&rc);CDCdcMem;dcMem.CreateCompatibleDC(&dc);CBitmapbmpBackground;bmpBackground.LoadBitmap(IDB_BITMAP1);BITMAPbitmap;bmpBackground.GetBitmap(&bitmap);//取得bmpBackground中图片的信息,放在bitmap所指的指针中CBitmap*pbmpPri=dcMem.SelectObject(&bmpBackground);dc.StretchBlt(0,0,rc.Width(),rc.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); //CDialog::OnPaint(); }}进入系统voidCMyDlg::OnButton1(){ DIALOGLOGtec; tec.DoModal();}退出系统voidCMyDlg::OnButton2(){ if(IDYES==MessageBox("拟定退出?","退出程序",MB_ICONQUESTION|MB_YESNO)) DestroyWindow();}6.3模块2登陆externCDaoDatabasedb;//调用那个全局变量voidDIALOGLOG::Onlogbt(){ //判断输入筐里的内容和数据库里的内容是否吻合 UpdateData(true); CDaoRecordsetDbset(&db); CStringFilepath="Database.mdb"; CStringSname,Spsw; _variant_tvarname,varpsw; db.Open(Filepath); Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMDataTable",0); varname=Dbset.GetFieldValue("Name"); varpsw=Dbset.GetFieldValue("Psw"); Sname=(LPCSTR)_bstr_t(varname); Spsw=(LPCSTR)_bstr_t(varpsw); Dbset.Close(); db.Close(); if(m_logname.IsEmpty()||m_logpsw.IsEmpty())//假如输入框中存在空输入 { MessageBox("信息不能为空!"); return; } if(Sname.Compare(m_logname)==0&&Spsw.Compare(m_logpsw)==0)//假如密码和用户与数据库一致 { MessageBox("登入成功!","温情提醒"); DIALOG3dlg; dlg.DoModal(); } else { MessageBox("用户名或密码错误!","温情提醒"); return; }}注册voidDIALOGLOG::Onlogreg(){ DIALOGREGdlg; dlg.DoModal();}6.4模块3取消voidDIALOGREG::OnRegcancle(){ CDialog::OnCancel(); }注册voidDIALOGREG::OnRegbt(){ //让数据库里一直只有一个用户 UpdateData(true);//及时更新数据 CStringFilepath="Database.mdb"; CStringSname; _variant_tvarname; CDaoRecordsetDbset(&db); db.Open(Filepath); Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMDataTable",0); varname=Dbset.GetFieldValue("Name"); Sname=(LPCSTR)_bstr_t(varname); if(m_regname.IsEmpty()||m_regpsw.IsEmpty()) { MessageBox("信息不能为空!","温情提醒"); return; } if(m_regpsw!=m_regpsw1) { AfxMessageBox("密码不一致"); return; } if(Sname.Compare(m_regname)!=0)//假如输入框里的名字在数据库里不存在 { Dbset.Edit();//将新数据代替旧数据 Dbset.SetFieldValue("Name",_variant_t(m_regname)); Dbset.SetFieldValue("Psw",_variant_t(m_regpsw)); Dbset.Update(); MessageBox("用户注册成功!","温情提醒"); CDialog::OnOK(); } else//假如输入的名字和数据库里的一致,这提醒存在该用户 { MessageBox("该用户已存在!","温情提醒"); } Dbset.Close(); db.Close();}6.5模块4初始化窗口BOOLDIALOG3::OnInitDialog(){ CDialog::OnInitDialog(); //TODO:Addextrainitializationhere m_list.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);//设立扩展样式 m_list.InsertColumn(0,"学号",LVCFMT_LEFT,100,0);//添加学号项 m_list.InsertColumn(1,"姓名",LVCFMT_LEFT,100,1);//添加姓名项 m_list.InsertColumn(2,"年龄",LVCFMT_LEFT,100,2);//添加年龄项 m_list.InsertColumn(3,"联系方式",LVCFMT_LEFT,200,3);//添加联系方式项 m_list.InsertColumn(4,"宿舍",LVCFMT_LEFT,100,4);//添加宿舍项 readDb();//在初始化函数中,假如没有找到数据库文献就创建,并且在列表中显示出来 returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}通过ADO创建学生信息数据库voidDIALOG3::readDb(){ CStringFilepath="Data.mdb";//将数据库文献Data.mdb在程序的同一目录下CFileFindFfind;//先看看存不存在数据库文献BOOLflag=Ffind.FindFile(Filepath);Ffind.Close();if(!flag)//假如没有,就创建 { aa.Create(Filepath); CStringsqlcmd="CREATETABLEDataTable(NumVARCHAR(20),NameVARCHAR(20),AgeVARCHAR(3),PhoneVARCHAR(20),HomeVARCHAR(20))";//创建内部表,并设立两个属性(姓名,年龄) aa.Execute(sqlcmd);//执行sql指令 aa.Close();//创建完毕一定要关闭,否则犯错 MessageBox("数据库已建立成功!","温情提醒"); }_variant_tvarnum,varname;COleVariantvarage,varphone,varhome;CStringSname,Sage,Snum,Sphone,Shome;inti=0;aa.Open(Filepath);Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMDataTable",0);while(!Dbset.IsEOF()){ varnum=Dbset.GetFieldValue("Num"); varname=Dbset.GetFieldValue("Name"); varage=Dbset.GetFieldValue("Age"); varphone=Dbset.GetFieldValue("Phone"); varhome=Dbset.GetFieldValue("Home"); Snum=(LPCSTR)_bstr_t(varnum); Sname=(LPCSTR)_bstr_t(varname); Sage=(LPCSTR)varage.pbstrVal; Sphone=(LPCSTR)varphone.pbstrVal; Shome=(LPCSTR)varhome.pbstrVal;//分别将数据库里面读出来的文献转换成CString m_list.InsertItem(i,""); m_list.SetItemText(i,0,Snum); m_list.SetItemText(i,1,Sname); m_list.SetItemText(i,2,Sage); m_list.SetItemText(i,3,Sphone); m_list.SetItemText(i,4,Shome); Dbset.MoveNext();//没有就不能循环 i++;}Dbset.Close();aa.Close();}与表格相关联voidDIALOG3::OnClickList(NMHDR*pNMHDR,LRESULT*pResult){ intpos=m_list.GetSelectionMark(); m_num=m_list.GetItemText(pos,0); m_name=m_list.GetItemText(pos,1); m_age=m_list.GetItemText(pos,2); m_phone=m_list.GetItemText(pos,3); m_home=m_list.GetItemText(pos,4); UpdateData(false); *pResult=0;}新建voidDIALOG3::Onadd(){ UpdateData(true); if(m_name.IsEmpty()||m_age.IsEmpty()||m_num.IsEmpty()||m_phone.IsEmpty()||m_home.IsEmpty())//假如输入框为空,则提醒信息 { MessageBox("信息不能为空!","温情提醒"); } else { CStringFilepath="Data.mdb"; inti=m_list.GetItemCount();//在列表的队尾添加,所以先获取行数 aa.Open(Filepath); Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMDataTable",0); Dbset.AddNew();//在记录集的队尾添加 Dbset.SetFieldValue("Num",_variant_t(m_num)); Dbset.SetFieldValue("Age",atol(m_age)); Dbset.SetFieldValue("Name",_variant_t(m_name)); Dbset.SetFieldValue("Home",atol(m_home)); Dbset.SetFieldValue("Phone",atol(m_phone));//将CString格式转换成数据库规定的格式 Dbset.Update();//及时更新 Dbset.Close(); aa.Close();//并关闭 m_list.InsertItem(i,""); m_list.SetItemText(i,0,m_num); m_list.SetItemText(i,1,m_name);//在列表里显示 m_list.SetItemText(i,2,m_age); m_list.SetItemText(i,3,m_phone); m_list.SetItemText(i,4,m_home); } }删除voidDIALOG3::Ondel(){ intpos=m_list.GetSelectionMark();//所选中行的索引号 if(!(pos+1))//假如没有选中从第一行到最后一行,则提醒选中先 { MessageBox("请先选择需要删除的一行!","温情提醒"); } else { CStringFilepath="Data.mdb"; aa.Open(Filepath); Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMDataTable",0); Dbset.Move(pos);//将记录集的指针移动到当前数据的索引处 Dbset.Delete();//删除数据 Dbset.Close(); aa.Close(); m_list.DeleteAllItems(); readDb();//最后两句的作用是刷新列表 }}修改voidDIALOG3::Onmodify(){UpdateData(true);intpos=m_list.GetSelectionMark();if(!(pos+1)){ MessageBox("请先选择需要修改的行!","温情提醒");} else{ CStringFilepath="Data.mdb"; aa.Open(Filepath); Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMDataTable",0); Dbset.Move(pos); Dbset.Edit();//将指针移动到所选项后,将数据置于编辑状态 Dbset.SetFieldValue("Num",_variant_t(m_num)); Dbset.SetFieldValue("Name",_variant_t(m_name)); Dbset.SetFieldValue("Age",atol(m_age));Dbset.SetFieldValue("Phone",atol(m_phone)); Dbset.SetFieldValue("Home",atol(m_home)); Dbset.Update();//修改完以后更新,否则会犯错 Dbset.Close(); aa.Close(); m_list.DeleteAllItems(); readDb();}}成员变量信息://stdafx.h:includefileforstandardsystemincludefiles,//orprojectspecificincludefilesthatareusedfrequently,but//arechangedinfrequently#if!defined(AFX_STDAFX_H__B7A04679_274E_49A4_BE2C_DE7F27AD1443__INCLUDED_)#defineAFX_STDAFX_H__B7A04679_274E_49A4_BE2C_DE7F27AD1443__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000#defineVC_EXTRALEAN //Excluderarely-usedstufffromWindowsheaders#include<afxwin.h>//MFCcoreandstandardcomponents#include<afxext.h>//MFCextensions#include<afxdisp.h>//MFCAutomationclasses#include<afxdtctl.h> //MFCsupportforInternetExplorer4CommonControls#ifndef_AFX_NO_AFXCMN_SUPPORT#include<afxcmn.h> //MFCsupportforWindowsCommonControls#endif//_AFX_NO_AFXCMN_SUPPORT#include<afxdao.h>#include<comdef.h>//{{AFX_INSERT_LOCATION}}//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.#endif//!def

温馨提示

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

评论

0/150

提交评论