VC++学生信息管理系统课程设计报告.docx

上传人:精*** 文档编号:865410 上传时间:2023-10-05 格式:DOCX 页数:24 大小:366.09KB
下载 相关 举报
VC++学生信息管理系统课程设计报告.docx_第1页
第1页 / 共24页
VC++学生信息管理系统课程设计报告.docx_第2页
第2页 / 共24页
VC++学生信息管理系统课程设计报告.docx_第3页
第3页 / 共24页
VC++学生信息管理系统课程设计报告.docx_第4页
第4页 / 共24页
VC++学生信息管理系统课程设计报告.docx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、目录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模块156.3模块296.5模块4127测试结果及运行界面198总结238.1系统实现程度238.2问题及难点238.3收获与体会23参考文献241绪论1.1项目简介本系统主要实现学生信息管理功能,为老师与同学提供一个可以快速查找信息的平台。1.2设计目的方便老师与同学查看学生信息

2、,提高学生信息管理的效率,节省时间,从而实现学校工作的边界管理。1.3设计内容主要包括:用户的登陆于注册,对学生信息的增加删除修改。2需求分析2.1数据需求系统需要处理哪些数据总体分为用户输入的数据和从数据库中获得的数据。主要数据类型包括:CString类型数据、double类型数据、int类型数据和CTime类型数据。2.2事务需求用户:登陆、注册,对数据的增删改3概要设计3.1系统的大致流程图注册模块登录模块维护模块录入学生信息删除学生信息修改学生信息通讯录管理系统4详细设计4.1系统的流程图注册结束开始添加显示信息登录流程切换详细信息修改退出删除4.2整体逻辑数据库结构数据库用户登陆操作

3、score表修改信息添加信息删除信息 4.3涉及算法的思想4.3.1建立数据库通过ADO建立两个数据库(新建 Microsoft Office Access 应用程序)存放登陆信息和学生信息。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、龄等基本信息录入框 4.3.5.2用户录入要添加记录信息,如果要添加记录和已有记录不冲突就会把录入信息添加到新建 Microsoft Office Access 应用程序记录集中。4.3.6修改记录对已经录入的学生信息进行修改4.3.7删除记录 将已选中的记录从记录集中去除。5用户使用说明5.1开发运行环境5.1.1设备:本系统对设备的要求很低,一般的电脑主机都能运行。运行前安装Visual C 6.0。5.1.2支持软件:系统支持:Windows 7等。开发工具:Visual C 6.0、Access 2010。5.2数据库的名称及内容本系统包含两个数据库,Data和Database数据库,

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

6、on.#include stdafx.h#include 学生信息管理系统.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 se

7、e in these 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;/建立全局变量,在其他地方调用时要

8、加extern/ 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

9、_AFXDLLEnable3dControls();/ Call this when using MFC in a shared DLL#elseEnable3dControlsStatic();/ Call this when linking to MFC statically#endif/这里就是程序入口,在这里添加数据库检查代码CString Filepath=Database.mdb;CDaoRecordset Dbset(&db); CFileFind Ffind;/先看看存不存在数据库文件 BOOL flag=Ffind.FindFile(Filepath); Ffind.Clos

10、e(); if(!flag)/如果没有就创建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);Dbset.

11、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/ dismissed with

12、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(), 0);/ Cent

13、er 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(this); CRe

14、ct 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,rc.Width()

15、, rc.Height(), &dcMem,0,0,bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);/CDialog:OnPaint();进入系统void CMyDlg:OnButton1() DIALOGLOG tec;tec.DoModal();退出系统void CMyDlg:OnButton2() if(IDYES=MessageBox(确定退出?,退出程序, MB_ICONQUESTION|MB_YESNO )DestroyWindow();6.3模块2登陆extern CDaoDatabase db;/调用那个全局变量void DIALOGLOG:

16、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(Name);varpsw=Dbset.GetFieldValue(Psw);Snam

17、e=(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(登入成功!,温情提示);DIALOG3 dlg;dlg.DoModal();elseMessageBox(用户名或密码

18、错误!,温情提示);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 Sname;_variant_t varname;CDaoRecordset Dbset(&db);db.Open(Filepath);

19、Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,SELECT * FROM DataTable,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)/如果输入框里的名字在数据库里

20、不存在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初始化窗口BOOL DIALOG3:OnInitDialog() CDialog:

21、OnInitDialog();/ TODO: Add extra initialization herem_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.InsertColum

22、n(2,年龄,LVCFMT_LEFT,100,2);/添加年龄项m_list.InsertColumn(3,联系方式,LVCFMT_LEFT,200,3);/添加联系方式项m_list.InsertColumn(4,宿舍,LVCFMT_LEFT,100,4);/添加宿舍项readDb();/在初始化函数中,如果没有找到数据库文件就创建,并且在列表中显示出来return TRUE; / return TRUE unless you set the focus to a control通过ADO创建学生信息数据库void DIALOG3:readDb()CString Filepath=Data.

23、mdb;/将数据库文件Data.mdb在程序的同一目录下 CFileFind Ffind;/先看看存不存在数据库文件 BOOL flag=Ffind.FindFile(Filepath); Ffind.Close(); if(!flag)/如果没有,就创建aa.Create(Filepath); CString sqlcmd=CREATE TABLE DataTable(Num VARCHAR(20),Name VARCHAR(20),Age VARCHAR(3),Phone VARCHAR(20),Home VARCHAR(20);/创建内部表,并设置两个属性(姓名,年龄) aa.Execu

24、te(sqlcmd);/执行sql指令 aa.Close();/创建完成一定要关闭,否则出错 MessageBox(数据库已建立成功!,温情提示);_variant_t varnum,varname;COleVariant varage,varphone,varhome; CString Sname,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.GetF

25、ieldValue(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.pbstr

26、Val;/分别将数据库里面读出来的文件转换成CStringm_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();与表格相关联void DIALOG3:OnClickList(NMHDR* pNMHDR, L

27、RESULT* pResult) int pos=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;新建void DIALOG3:Onadd() UpdateData(true);if(m_name.IsEm

28、pty()|m_age.IsEmpty()|m_num.IsEmpty()|m_phone.IsEmpty()|m_home.IsEmpty()/如果输入框为空,则提示信息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.S

29、etFieldValue(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.SetItem

30、Text(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);删除void DIALOG3:Ondel() int pos=m_list.GetSelectionMark();/所选中行的索引号if(!(pos+1)/如果没有选中从第一行到最后一行,则提示选中先MessageBox(请先选择需要删除的一行!,温情提示);elseCString Filepath=Da

31、ta.mdb;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();if(!(pos+

32、1)MessageBox(请先选择需要修改的行!,温情提示);elseCString Filepath=Data.mdb;aa.Open(Filepath);Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,SELECT * FROM DataTable,0);Dbset.Move(pos);Dbset.Edit();/将指针移动到所选项后,将数据置于编辑状态Dbset.SetFieldValue(Num,_variant_t(m_num);Dbset.SetFieldValue(Name,_variant_t(m_name);Dbset.SetFieldValue(Ag

33、e,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 specific include files that are used fre

34、quently, but/ are changed infrequently#if !defined(AFX_STDAFX_H_B7A04679_274E_49A4_BE2C_DE7F27AD1443_INCLUDED_)#define AFX_STDAFX_H_B7A04679_274E_49A4_BE2C_DE7F27AD1443_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000#define VC_EXTRALEAN/ Exclude rarely-used stuff from Windows headers#in

35、clude / MFC core and standard components#include / MFC extensions#include / MFC Automation classes#include / MFC support for Internet Explorer 4 Common Controls#ifndef _AFX_NO_AFXCMN_SUPPORT#include / MFC support for Windows Common Controls#endif / _AFX_NO_AFXCMN_SUPPORT#include #include/AFX_INSERT_

36、LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_STDAFX_H_B7A04679_274E_49A4_BE2C_DE7F27AD1443_INCLUDED_)7测试结果及运行界面进入系统建立新用户时,若两次输入密码不同会弹出警告在登录界面中输入错误的用户名或者密码时,弹出警告框当用户名和密码都正确时,进入主界面在添加菜单中,输入的数据不能为空,否则弹出警告当未选择所要删除的记录时,弹出警告框当

37、为选择所要修改的记录时,弹出警告框退出程序时,谈出对话框8总结8.1系统实现程度最终的系统完成了哪些功能,与初期设计还有哪些差距或未完成的内容。系统完成的功能包括:注册、登录和注册信息修改,学生信息的增加、修改和删除。未完成的内容:学生信息的查询和相关图表的生成学生成绩的增删改查,以及管理员的更多操作等。8.2问题及难点课设过程中遇到的棘手问题及难点所在。在学习vc+的过程中,有接触到一定的有关MFC的知识,但了解的比较肤浅,也很零散。但实际操作过程中遇到了很多实际的问题。对于ADO语言的不熟悉,在调用时函数时,遇到了很大地难度。在技术上或没用过或没学过,需要边做边学习!如MFC中对各种类和控

38、件的操作还不熟练。细节问题:头文件包含的顺序。全局变量问题。视图切换和切换后的数据更新问题。ADO数据库的相关操作和数据类型的相关转换问题等8.3收获与体会1、通过这次课程设计,对MFC有了更深的认识,对MFC控件有了更深刻理解。把老师教的一些东西运用到实践中去锻炼了自己的能力。我C+学了很久,MFC也看了10多集视频,但就是从没机会亲自动手编一个稍复杂点的程序练练。一门语言或是一门技术,真正逐渐掌握的过程正是不断联系,不断用的过程。理论永远代替不了实践。2、学会了用ADO来操作与创建数据库3、通过这次课程设计,对数据库知识有了初步的认识。初步学会了用Access创建数据库。学会了表的建立和设

39、置。为了完善学生信息管理系统的功能我走进图书馆,翻阅了大量关于数据库的资料,并从互联网上学到很多知识。不能说已经通悟了数据库,但是对数据库中的一些基本知识还是有所了解的。4、从一开始的选题到现在的设计结束,从在课本上熟悉基本知识到到外面的相关图书中了解其他与设计通讯录有关的知识,我不仅对课本的基本知识有了一定的掌握,还对其他方面的知识有所了解。让我懂得更多的知识。在这次课程设计中遇到了很多问题,对亏了同学和老师的帮助得以完成谢谢老师和同学的帮助。参考文献面向对象程序设计基础,机械工业出版社,赵雷、朱晓旭编著;Visual C+教程,机械工业出版社,丁有和编著;Visual C+课程设计 案例经

40、编,中国水利水电出版社,严华峰等编著;Visual C+程序设计教程与上机指导,北京大学出版社,高志伟著;Visual C+数据库系统开发完全手册,人民邮电出版社,王瑞,于速著Visual C+程序员成长攻略,中国水利水电出版社,戴博,周杨等著C+ Builder数据库开发经典案例解析,清华大学出版社,王晟著精彩C+ Builder6 程序设计,科学出版社,吴逸贤著C+ Builder应用程序开发实例与技巧,西安交通大学出版社,曹岩等著Visual C+教程北京机械工业出版社。郑阿奇,丁有和编著.Visual C+实用教程(第二版).北京电子工业出版社,郑阿奇编著.Visual C+ 6.0多媒体开发指南北京清华大学出版社,李博轩编著.23

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 课程设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922