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

下载本文档

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

文档简介

1、项目 名称设计开始日期2012 0820项目完成日期2012-08-24文档评审主要考核内容评审项目评审内容项目名称课题是否从实际出发,是否满足工作量需求,是否具有创意等文档格式文档格式是否规范;文字是否规范;图表是否规范;术语是否准确等文档质量程序设计思想与整体框架是否清晰等程序功能完备性评审主要内容评审项目评审内容程序运行 状况程序是否能正常运行;是否出现死锁;是否遇到错误而中止运行程序正确性对于给定的输入数据,是否能得到正确的输出结果程序与文 档的一致 性程序与各种文档的内容是否一致程序的代 码量程序代码量的大小实现方法图形界面或命令行界面,美观程度程序功能程序的功能是否完备答辩评审内容

2、评审项目评审内容答辩思路答辩思路是否清晰回答问题回答问题是否正确考勤评定成绩考勤成绩课程设计是否按照要求在机房完成课程设计总成绩课程设计题目:学生信息管理系统问题阐述与分析:设计背景:随着学校的发展,需要对越来越多的学生信息进行处理,依靠传统的处理 方式已经满足不了要求,所以可以通过编一个学生信息管理系统,使学生的信 息能够集中管理,由于这个数据量比较大,而对于大量数据的处理,采用数据 库更为安全简便。在此,可以通过学生信息管理系统这个项目来学习数据库的 使用和注意事项。对于学生信息管理系统这个项目,需要处理学生的基本信息, 姓名,学号,年龄,性别,宿舍,联系方式等。设计实现意义有利于学生的管

3、理便利所要解决的主要问题帮助老师、同学们更方便快捷的查询学生的信息应用范围本系统适用于理论研究。即用来对平台功能的增减,修改及相关算法优化 等做研究.工作量:我在学习VC+的MFC编程,数据库的相关知识,同时进行下面的工 作,拟定课程设计的主要方向一学生信息管理系统;明确所做系统的主要需要解决的问题,根据问题分析系统所要实现的主要功能,根据功能设计出不同的模块登陆模块,注册模块,维护模块。设计系统的登录及各个主要功能的界面外观;以各个界面所要实现的功能为以依据,为各个部分编写代码并匹配数据库;登陆模块,能进行登录,并且输入错误时,有提示信息注册模块,可进行用户的注册维护模块,能进增加,删除,修

4、改等动作调试程序,修改程序中出现的错误,并在功能,外观方面对程序进行完善,使程序实用性更强;完成工程。工作计划安排:2012年8月20日-8月20日:进行系统分析,确定各模块及具体实现方案.2011年8月20日8月21日:进行系统的分析,确定各部分需要完成的主要功能,确定具体实现方案, 并学习相关知识,确定使用VC+6.0。2011年8月21日8月22日:根据分析和设计,开始系统的实现,进行代码的编写。2011年8月22日8月23日各模块合并,调试运行。2011年9月23日8月24日:系统完善,撰写报告目录 TOC o 1-5 h z HYPERLINK l bookmark2 o Curre

5、nt Document 1绪论1 HYPERLINK l bookmark4 o Current Document 1。1项目简介11.2设计目的11。3设计内容1 HYPERLINK l bookmark8 o Current Document 2需求分析1 HYPERLINK l bookmark10 o Current Document 2。1数据需求1 HYPERLINK l bookmark12 o Current Document 2.2事务需求1 HYPERLINK l bookmark14 o Current Document 3概要设计2 HYPERLINK l bookma

6、rk16 o Current Document 3.1系统的大致流程图24详细设计24.1系统的流程图24.2整体逻辑数据库结构24。3涉及算法的思想2 HYPERLINK l bookmark18 o Current Document 5用户使用说明3 HYPERLINK l bookmark20 o Current Document 5。1开发运行环境3 HYPERLINK l bookmark22 o Current Document 5。2数据库的名称及内容3 HYPERLINK l bookmark24 o Current Document 6关键源程序4 HYPERLINK l b

7、ookmark26 o Current Document 6。1建立工程46.2模块146.3模块276.5模块49 HYPERLINK l bookmark34 o Current Document 7测试结果及运行界面14 HYPERLINK l bookmark36 o Current Document 8总结14 HYPERLINK l bookmark38 o Current Document 8.1系统实现程度14 HYPERLINK l bookmark40 o Current Document 8.2问题及难点14 HYPERLINK l bookmark42 o Curren

8、t Document 8.3收获与体会15 HYPERLINK l bookmark44 o Current Document 参考文献151 绪论1.1 项目简介本系统主要实现学生信息管理功能,为老师与同学提供一个可以快速查找信 息的平台.1。2 设计目的 方便老师与同学查看学生信息,提高学生信息管理的效率,节省时间,从而实 现学校工作的边界管理。1.3 设计内容主要包括:用户的登陆于注册,对学生信息的增加删除修改.2 需求分析2。1 数据需求系统需要处理哪些数据 总体分为用户输入的数据和从数据库中获得的数据。主要数据类型包括:CString类型数据、double类型数据、int类型数据和C

9、Time类型数据.2。2 事务需求用户:登陆、注册,对数据的增删改3 3 概要设计3。1 系统的大致流程图4.1注册模块显示信息4.1注册模块显示信息4。3。2数据录入在新建学生信息数据库中录入学生信息。4。3。3登录框的设计4.3。3。1建立变量Sname, Spsw,通过格式变幻,将CString格式转换 成数据库规定的格式4.3。3。2通过compare函数将输入的用户名与密码与数据库比较4.3.4注册框的设计先判定输入框里的名字在数据库里不存在,然后将输入的信息替换入数据 库4。3。5添加记录4。3。5。1建立一个新的窗口,包含姓名,学号,年龄等基本信息录入 框4。3.5。2用户录入要

10、添加记录信息,如果要添加记录和已有记录不冲 突就会把录入信息添加到新建Microsoft Office Access应用程序记 录集中。4.3。6修改记录对已经录入的学生信息进行修改4。3.7删除记录将已选中的记录从记录集中去除。用户使用说明5。1 开发运行环境5.1.1设备:本系统对设备的要求很低,一般的电脑主机都能运行。运行前安装Visual C 6。0。5。1.2支持软件:系统支持:Windows 7 等。开发工具:Visual C+ 6。0、Access 2010。5。2 数据库的名称及内容本系统包含两个数据库,Data和Database数据库,Database数据库中储 存的是用户名

11、与密码,Data数据库中储存的是学生的学号、姓名、年龄、联 系方式、宿舍。Data (学生通讯表)字段名称中文含义数据类型宽度Num学号文本20Name姓名文本20Age年龄数字3Home宿舍文本20Phone联系电话文本20Database (管理登录表)字段名称中文含义数据类型宽度Logname用户名文本20Logpsw用户密码文本20关键源程序6。1 建立工程6.2模块 1先在学生信息管理系统。cpp中添加代码,通过ADO创建登陆数据库 / 学生信息管理系统.cpp : Defines the class behaviors for the application. include st

12、dafx.hinclude 学生信息管理系统。 h”include 学生信息管理系统 Dlg.h”#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;endif / CMyAppBEGIN_MESSAGE_MAP(CMyApp, CWinApp)/ AFX_MSG_MAP (CMyApp)/ NOTE the ClassWizard will add and remove mapping macros here. / DO NOT EDIT what you see in these

13、blocks of generated code!/ AFX_MSGON_COMMAND(ID_HELP, CWinApp:OnHelp) END_MESSAGE_MAP()/ CMyApp constructionCMyApp:CMyApp()/ TODO: add construction code here,/ Place all significant initialization in InitInstance/ The one and only CMyApp objectCMyApp theApp;CDaoDatabase db; 建立全局变量,在其他地方调用时要加extern/

14、CMyApp initializationBOOL CMyApp::InitInstance()AfxEnableControlContainer();/ Standard initialization/ If you are not using these features and wish to reduce the size/ of your final executable, you should remove from the following/ the specific initialization routines you do not need.ifdef _AFXDLLEn

15、able3dControls();/ Call this when using MFC in a sharedDLLelseEnable3dControlsStatic();/ Call this when linking to MFC staticallyendif/这里就是程序入口,在这里添加数据库检查代码CString Filepath=Database.mdb”;CDaoRecordset Dbset(db);CFileFind Ffind; /先看看存不存在数据库文件BOOL flag=Ffind。FindFile (Filepath);Ffind。 Close();if(!flag

16、) /如果没有就创建CString sqlcmd=CREATE TABLE DataTable(Name VARCHAR(20),Psw VARCHAR( 20) )”;db.Create(Filepath);db.Execute(sqlcmd);Dbset。 Open(AFX_DAO_USE_DEFAULT_TYPE, ”SELECT * FROM DataTable, 0);Dbset。 AddNew() ;Dbset。 SetFieldValue( ”Name,_variant_t( ”wzh) ;Dbset.SetFieldValue( Psw”,_variant_t(”123456”

17、);Dbset。Update。;Dbset。 Close();db。Close();/建立数据库文件,设置初始化账号CMyDlg dlg; m_pMainWnd = dlg; int nResponse = dlg。 DoModal(); if (nResponse = IDOK)/ TODO: Place code here to handle when the dialog is/ dismissed with OKelse if (nResponse = IDCANCEL)/ TODO: Place code here to handle when the dialog is/ dism

18、issed with Cancel/ Since the dialog has been closed, return FALSE so that we exit the/ application, rather than start the applications message pump. return FALSE;void CMyDlg::OnPaint()if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc GetSafeHdc(

19、), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect。 Width() cxIcon + 1) / 2;int y = (rect。 Height() cyIcon + 1) / 2;/ Draw the icondc。DrawIcon(x, y, m_hIcon);else/ 给窗体添加背景CPaintDC dc(t

20、his);CRect rc;GetClientRect(&rc);CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground;bmpBackground。LoadBitmap (IDB_BITMAP1 ); BITMAP bitmap;bmpBackground.GetBitmap(bitmap); /取得 bmpBackground 中图片 的信息,放在 bitmap 所指的指针中CBitmap pbmpPri = dcMem。 SelectObject(bmpBackground) ; dc.StretchBlt( 0,0

21、,rc.Width(), rc。 Height( ), &dcMem,0,0,bitmap。 bmWidth, bitmap。 bmHeight, SRCCOPY) ;/CDialog::OnPaint( );进入系统void CMyDlg:OnButton1 ( )DIALOGLOG tec; tec.DoModal() ;退出系统void CMyDlg:OnButton2()f (IDYES=MessageBox (” 确定退出?”,退出程序”, MB_ICONQUESTION I MB_YESNO )DestroyWindow( );6。3 模块 2登陆extern CDaoDataba

22、se db;调用那个全局变量void DIALOGLOG::Onlogbt()/判断输入筐里的内容和数据库里的内容是否吻合 UpdateData(true) ;CDaoRecordset Dbset(db); CString Filepath=Database。 mdb”;CString Sname,Spsw; _variant_t varname, varpsw; db.Open( Filepath);Dbset。 Open(AFX_DAO_USE_DEFAULT_TYPE, SELECT FROM DataTable”,0) ;varname=Dbset。 GetFieldValue(”N

23、ame”) ; varpsw=Dbset.GetFieldValue(”Psw);Sname=(LPCSTR)_bstr_t(varname); Spsw=(LPCSTR)_bstr_t(varpsw);Dbset.Close();db。Close();if(m_logname。IsEmpty()ll m_logpsw。IsEmpty () 如果输入框中存 在空输入MessageBox(信息不能为空!”); return;if( Sname。 Compare( m_logname)=0&Spsw.Compare( m_logpsw)=0)/如果密码和用户与数据库一致 MessageBox(登入

24、成功!”,”温情提示);DIALOG3 dlg;dlg。 DoModal() ;else MessageBox (用户名或密码错误!,”温情提示”); return;注册void DIALOGLOG:Onlogreg()DIALOGREG dlg;dlg.DoModal( );6.4 模块 3取消void DIALOGREG::OnRegcancle()CDialog:OnCancel();注册void DIALOGREG:OnRegbt()/让数据库里一直只有一个用户UpdateData(true) ;/及时更新数据CString Filepath=Database。 mdb;CString

25、 Sname;_variant_t varname;CDaoRecordset Dbset(&db);db。Open(Filepath);Dbset。 Open(AFX_DAO_USE_DEFAULT_TYPE,SELECT FROM DataTable,0);varname=Dbset。 GetFieldValue(”Name”) ;Sname=(LPCSTR)_bstr_t(varname);if (m_regname.IsEmpty () II m_regpsw。IsEmptyO) MessageBox( 信息不能为空!”,温情提示”); return;if( m_regpsw!=m_r

26、egpsw1)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/如果输入的名字和数据库里的一致,这提示存在该用户

27、MessageBox(该用户已存在!”,温情提示);Dbset。 Close(); db。 Close();6。5 模块 4初始化窗口BOOL DIALOG3::OnInitDialog()CDialog:OnInitDialog();/ TODO: Add extra initialization herem_list。 SetExtendedStyle(LVS_EX_FLATSBILVS_EX_FULLROWSELECTI LVS_EX_HEADERDRAGDROPILVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES); /设置扩展样式m_list.Inser

28、tColumn(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(); /在初始化函数中,如果没有找到数据库文件就创建,并

29、且在 列表中显示出来return TRUE;/ return TRUE unless you set the focus to a control 通过ADO创建学生信息数据库void DIALOG3:readDb()CString Filepath=” Data。 mdb; /将数据库文件 Data。 mdb 在程序的同一 目录下CFileFind Ffind;/先看看存不存在数据库文件BOOL flag=Ffind.FindFile(Filepath);Ffind。 Close() ;讦(!flag)如果没有,就创建 aa。 Create(Filepath);CString sqlcmd=

30、” CREATE TABLE DataTable(Num VARCHAR(20),Name VARCHAR(20) ,Age VARCHAR(3), Phone VARCHAR (20) ,Home VARCHAR(20) ; /创建内部表,并设置两个属性(姓名, 年龄)aa。 Execute(sqlcmd) ;/执行 sql 指令aa。 Close( ); /创建完成一定要关闭,否则出错MessageBox(数据库已建立成功!,温情提示”);_variant_t varnum,varname; COleVariant varage, varphone, varhome;CString Sna

31、me,Sage,Snum,Sphone,Shome; int i=0;aa。 Open(Filepath);Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,”SELECT * FROM DataTable”, 0) ;while(! Dbset.IsEOF() varnum=Dbset。 GetFieldValue(Num) ;varname=Dbset。 GetFieldValue(”Name); varage=Dbset。 GetFieldValue(”Age”) ; varphone=Dbset.GetFieldValue(”Phone) ; varhome=Db

32、set.GetFieldValue(Home);Snum=(LPCSTR)_bstr_t(varnum); Sname=(LPCSTR)_bstr_t(varname); Sage=(LPCSTR)varage.pbstrVal; Sphone=(LPCSTR)varphone.pbstrVal;Shome=(LPCSTR) varhome.pbstrVal;/分别将数据库里面读出来的文件转 换成 CStringm_list。Insertitem (i,”); m_list。 SetItemText( i,0, Snum) ; m_list。 SetItemText( i, 1, Sname)

33、; 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() ;与表格相关联void DIALOG3::OnClickList(NMHDR* pNMHDR, LRESULT pResult) int pos=m_list。 GetSelectionMark(); m_num=m_list.GetItemText( pos, 0); m_name=m_l

34、ist。 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;新建void DIALOG3::Onadd()UpdateData( true);if (m_name。IsEmpty( )11 m_age.IsEmpty() II m_num.IsEmpty ()1 I m_phone。IsEmpty () II m_home.Is

35、Empty () 如果输入框为空,则提示信 息MessageBox(”信息不能为空!”,”温情提示”);elseCString Filepath=”Data。 mdb;int i=m_list.GetItemCount(); /在列表的队尾添加,所以先获取行数aa.Open(Filepath);Dbset。Open(AFX_DAO_USE_DEFAULT_TYPE SELECT * FROM DataTable”,0);Dbset.AddNew (); /在记录集的队尾添加Dbset。 SetFieldValue( ”Num,_variant_t( m_num) ); Dbset.SetFie

36、ldValue( ”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

37、.SetItemText(i,l,m_name);/在 列表里显示 m_list。 SetItemText( i,2,m_age);m_list。 SetItemText( i,3,m_phone) ; m_list.SetItemText(i,4,m_home);删除void DIALOG3: Ondel()int pos=m_list。 GetSelectionMark() ;/所选中行的索引号 if(!(pos+l) /如果没有选中从第一行到最后一行,则提示选中先 MessageBox (请先选择需要删除的一行!”,”温情提示”;elseCString Filepath=”Data。 m

38、db”;aa.Open(Filepath);Dbset。 Open( AFX_DAO_USE_DEFAULT_TYPE,”SELECT * FROM DataTable,0);Dbset。 Move(pos); /将记录集的指针移动到当前数据的索引处Dbset。 Delete(); /删除数据Dbset。 Close() ;aa。 Close( );m_list.DeleteAllItems() ;readDb();/最后两句的作用是刷新列表修改void DIALOG3:Onmodify()UpdateData(true);int pos=m_list.GetSelectionMark();i

39、f(!(pos+1)MessageBox (”请先选择需要修改的行!”,”温情提示);elseCString Filepath=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

40、) ;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 : include file for standard system include files,/ or project s

41、pecific include files that are used frequently, but/are changed infrequently#if !defined( AFX_STDAFX_H_B7A04679_274E_49A4_BE2C_DE7F27AD1443_INCLUDED_)defineAFX_STDAFX_H_B7A04679_274E_49A4_BE2C_DE7F27AD1443_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ Exclude rarely/ Exclude rarelyus

42、ed stuff from Windowsheadersinclude / MFC core and standard componentsinclude #include afxext.h#include afxext.hinclude afxdisp.hinclude afxdtctl.h/ MFC Automation classes/ MFC support for Internet Explorer 4 CommonControlsifndef _AFX_NO_AFXCMN_SUPPORT#include afxcmn。h/ MFC support for Windows Common Controlsendif / _AFX_NO_AFXCMN_SUPPORT#include / AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.endif / !defined(AFX_STD

温馨提示

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

评论

0/150

提交评论