数据库课程设计报告—学生信息管理系统.doc_第1页
数据库课程设计报告—学生信息管理系统.doc_第2页
数据库课程设计报告—学生信息管理系统.doc_第3页
数据库课程设计报告—学生信息管理系统.doc_第4页
数据库课程设计报告—学生信息管理系统.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

数据库课程设计报告题目:学生信息管理系统学 号:姓 名:指导教师:完成时间:2011年12月16日第一部分 系统需求分析1. 开发环境分析2. 系统功能分析3. 系统功能模块设计4. 与其它系统的关系5. 数据流程图第二部分 数据库设计1. 数据库需求分析2. 数据库概念结构设计3. 数据库逻辑结构设计4. 数据库的建立第三部分 各功能模块的设计与实现1. 功能说明2. 用户界面设计3. 各功能模块的实现4.第四部分 课程设计总结第一部分 系统需求分析随着计算机网络的发展和个大高校的不断扩招,学生人数逐渐增多,需要通过学生管理系统对学生信息进行管理。学生信息管理系统指通过计算机对学生的各种信息进行管理的计算机软、硬件系统。对一个学校来说,无任规模的大小,每时每刻都会产生大量的学生信息,这些信息是如此的复杂,如此的海量,使得每个学校为维护和管理这些信息而浪费了大量的人力和物力,结果还经常出错,更谈不上数据的快速的科学分析。为了方便管理员更好的管理学生信息,减少工作量,开发了这个可视化的学生管理系统,为管理员提供方便,可以对学生信息实现查询、修改、维护等操作,通过这个系统,可以做到信息的规范管理、快速的查询。1.1开发环境分析1.1.1 软件开发环境windows xp;microsoft sql server 2000;photoshop cs4。1.2系统功能分析本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统的主要功能有:学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。学生流动情况的输入,包括:转系、休学、复学、退学、毕业。l 奖惩情况的输入。学生个人情况查询和修改,包括流动情况和奖罚情况。1.3系统功能模块设计根据系统功能要求可以将系统分解成几个模块来分别设计应用程序界面,如图1所示。图1 学生信息管理系统功能模块1.4与其它系统的关系学生信息管理系统是校园信息管理系统的一个组成部分。它为其它系统,如班级信息管理系统、教学管理系统、成绩单系统、宿舍分配系统等,提供学生的基本情况。同时需要其他系统提供的班级设置和院系设置等情况。这些系统可以使用同一个数据库,直接相互调用所需的数据。1.5数据流程图根据1.2节中对该系统功能模块的分析,绘得学生信息管理系统的数据流程图,如图2所示。图2 学生信息管理系统的数据流程第二部分 数据库设计2.1数据库需求分析根据上一节的数据流程图,可以列出以下记录学生信息所需的数据项和数据结构:学生:学号、姓名、性别、生日、籍罗、所在院系、所在班级。处罚记录:记录号、级别、处罚对象、记录时间、详细描述、是否生效。奖励记录:记录号、级别、奖励对象、记录时间、详细描述。学籍变更记录:记录号、变更情况、记录对象、记录时间、详细描述。所需的外部数据支持:班级:班级编号、班级名称、所属院系。院系:代码、名称。2.2数据库概念结构设计本系统所需数据的e-r模型图如图3所示。图3 学生信息管理系统的er图2.3数据库逻辑结构设计根据系统e-r图,需要设计4个数据表来存放学生的信息,一个表存放密码信息。为了系统的完整,系统中包括了应用程序设计中所需的2个外部数据表。为了优化数据表结构,部分字段采用代码形式,因此需要附加3个代码表。这9个数据表的结构如表1到表10所示。表1 studengt学生个人信息表字段名数据类型是否可空说明studentnumbervarchar否学号(主关键字)namevarchar是姓名sexvarchar是性别(m、f)classvarchar是班级编号(外部关键字)departmentvarchar是所属院系编号(外部关键字)ageinte是生日native_placevarchar是籍贯monitorvarchar是班长学号表2 exchaange学籍变更信息表字段名数据类型是否可空说明idvarchar否记录号(主关键字)sstudentnumbervarchar是学号(外部关键字)changevarchar是变更代码(外部关键字)rec_timedata是记录时间descriptionvarchar是描述表3 rewadr奖励记录信息表字段名数据类型是否可空说明idvarchar否记录号(主关键字)studentnumbervarchar是学号(外部关键字)levelsinte是级别代码(外部关键字)rec_timevarchar是记录时间descriptionvarchar是描述表4 punishment处罚记录信息表字段名数据类型是否可空说明idvarchar否记录号(主关键字)studentnumbervarchar是学号(外部关键字)levelsinte是级别代码(外部关键字)rec_timevarchar是记录时间enablevarchar是是否生效(t、f)descriptionvarchar是描述表5 log_in 密码记录表字段名数据类型是否可空说明namevarchar否编号(主关键字)rasswordvarchar是全称authorityvarchar是班长学号(外部关键字)表6 class班级信息表字段名数据类型是否可空说明id编号(主关键字)name全称monitor班长学号(外部关键字)表7 change_code学籍变动代码表字段名数据类型是否可空说明code代码(主关键字)description描述表8 change_code学籍变动代码表字段名数据类型是否可空说明codeinte否代码(主关键字)descriptionvarchar是描述表9 reward_levels奖励等级代码表字段名数据类型是否可空说明codeinte否代码(主关键字)descriptionvarchar是描述表10 punish_levels处罚等级代码表字段名数据类型是否可空说明codeinte否代码(主关键字)descriptionvarchar是描述2.4数据库的建立2.4.1数据库的建立 进入microsoft sql server企业管理器,在控制面板跟目录中,选择数据库,右键单击“新建数据库”,如图4所示。图4 新建数据库a在弹出的对话框中输入要创建的数据库的名称,点击确定即可。如图5所示。图5 新建数据库b2.4.2 初始数据的输入数据表创建成功后,数据库中还没有实际的数据。为了保证外部键能使用,数据需要提前输入,如院系编号、班级编号、学籍变更代码和奖惩级别等等。学籍变更代码和奖惩级别的主关键字code从0开始用阿拉伯数字依次编号,便于程序设计时,采用单选按钮来选择。本系统中所用到的学籍变更和奖惩级别代码如表11至表20所示。表11 student学生个人信息表表12 exchaange学籍变更信息表表13 reward 奖励记录信息表表14 punishment处罚记录信息表表15 log_in 密码信息表表16 depatment院系信息表表17 class班级信息表表18 change_code 血迹变更代码表表19 reward_code 奖励等级代码表表20 punishment处罚等级代码表第三部分 各功能模块的设计与实现3.1功能说明1、用户登录:操作人员使用自己注册时设置的用户名和密码登录到系统,对学生信息进行管理。2、新生个人信息输入:系统操作人员打开学生信息输入界面,采用文本形式输入相关信息,包括学号、姓名、班级等基本信息,将新生信息加入到数据库中。3、学籍变更情况的输入:新增学生学籍变更情况。4、奖历情况的输入:新增学生获奖情况。5、处罚情况的输入:新增学生处罚情况。6、学生个人情况查询和修改:根据相关字段查询出学生的相应信息,继而对这些信息进行更新和删除操作,并存储到数据库中。3.2用户界面设计完成数据库创建和功能说明以后,我们可以进行下一步工作,既设计用户界面。由于本系统管理内容比较简单,且为校园管理信息系统的一部分,因此使用一个窗体不同的标签页来完成系统要求的6项功能。我们把学生信息管理系统的窗体分成6个主要部分,如下图所示。3.2.1应用程序主窗体的创建 该窗体为整个系统的主界面,对该界面的设计主要包括背景,菜单栏的设计,如图6所示。图6 应用程序主窗体3.2.2用户登录界面 用户登录界面,顾名思义,用户进入学生信息系统的通道,该界面设计如图7所示。图7 用户登录界面3.2.3新生个人信息输入界面 新生个人信息输入模块主要用于新生信息的录入,其界面设计主要包括学号、姓名、班级、年龄、籍贯、学院等基本信息的录入,界面设计如图8所示:图8 新生基本信息输入窗口3.2.4学籍变更情况输入界面 学籍变更模块用于学生学籍变更情况的录入,对该模块的界面设计主要包学号,学籍变更类别等情况的输入,其界面设计如图9所示。图9 学籍变更输入界面3.2.5奖历情况输入界面奖励情况输入模块用于学生获奖情况的录入,对该模块的界面设计主要包括学号,奖励级别等情况的输入,其界面设计如图10所示。图10 奖励情况输入3.2.6处罚情况输入界面处罚情况输入模块用于学生处罚情况的录入,对该模块的界面设计主要包括学号,处罚级别等情况的输入,其界面设计如图11所示。图11 处罚情况输入界面3.2.7学生个人情况查询和修改界面 学生个人情况查询和修改界面分为学生信息查询界面和学生信息更新界面和学生信息删除界面。 学生信息查询用于对学生信息的查询,包括流动情况的查询,及界面设计如图12所示。图12 学生信息查询学生信息更新是对学生原有的信息记录进行修改和更新,及界面设计如图13所示。图13 学生信息更新界面学生信息删除包括学生基本信息删除和流动情况的删除,其界面设计如图14所示。图14 学生信息删除界面3.3各功能模块的实现3.3.1 用户登录模块用户登录模块主要与log_in密码表进行连接,用于密码的验证,使用了1个adodc,2个static,2个edit,2个botton共计7个控件。用户登录模块为用户进入系统对学生信息进行管理的唯一通道,若用户没有登录成功,则其他模块的功能无效,这是需要定义以风格函数onmy(),接收用户登录成功的消息,代码如下:lresult cimformationdlg:onmy(wparam wparam, lparam lparam)/接收消息getmenu()-enablemenuitem(1,mf_enabled | mf_byposition );getmenu()-enablemenuitem(2,mf_enabled | mf_byposition );getmenu()-enablemenuitem(3,mf_enabled | mf_byposition );getmenu()-enablemenuitem(4,mf_enabled | mf_byposition );return 0;如登录成功,则其他模块的功能可以实现,界面图标变亮。其运行界面如图15所示。图15 用户成功运行界面用户登录时输入的密码需要与预设的密码相吻合,否则登录失败。为button1按钮创建关联成员,属性为“登录”,并对其编辑编码,代码如下:void cpersion:onbutton1() / todo: add your control notification handler code here/ todo: add extra validation hereupdatedata(true);_connectionptr m_pconnection;_recordsetptr m_precordset;:coinitialize(null);trym_pconnection.createinstance(adodb.connection);m_precordset.createinstance(adodb.recordset);_bstr_t strconn=provider=sqloledb.1;integrated security=sspi;persist security info=false;initial catalog=command;data source=416-1-1;m_pconnection-open(strconn,admodeunknown);catch(_com_error e):couninitialize();afxmessagebox(e.errormessage();return;/查询用户名密码在数据库中是否存在/ _variant_t ra;cstring str;/= selete * from tms where tms_user = +m_name+ and tms_pswd = +m_password+;str.format(select * from log_in where studentnumber=%s,m_studentnumber);m_precordset=m_pconnection-execute(_bstr_t)str,null,adcmdtext);while(!m_precordset-getadoeof() _variant_t varname;_variant_t varpwd;varname = m_precordset-getcollect (studentnumber);varpwd = m_precordset-getcollect (password);cstring strname =(char *)_bstr_t(varname);cstring strpwd =(char *)_bstr_t(varpwd); strname.trimright();strpwd.trimright();/messagebox(strpwd = +strpwd+ m_password = +m_password);if(strpwd=m_password)afxmessagebox(欢迎进入学生管理系统);hwnd hwnd;hwnd = findwindow (null,学生信息管理系统)-getsafehwnd();:sendmessage(hwnd,wm_my,0,0);cdialog:onok();/发送消息return ;if(strpwd!=m_password)messagebox(密码不正确);return;cdialog:onok();经过上述步骤,已经完成代码编写任务,现在来连接数据库。在插入的adodc控件上单击鼠标右键,在弹出的快捷菜单上选择“adodc属性adodc object”,弹出adodc属性对话框。选择“general”选项卡,在该选项卡上可以通过三种方式连接数据库,其中常用的是后两项:通过odbc和连接字符串连接数据库。在此,我们选择后者,如图16所示:图16 microsoft ado data control properties对话框(2)单击“生成”按钮,弹出“数据链接属性”对话框。根据要连接的数据库情况,选择适当的提供者,在此,选择“microsoft ole db provider for sql server”来连接sql server数据库。单击下一步进入“连接”属性页,在“选择或输入数据库名称”文本框中,填入要连接的sql server服务器名,在“输入登录服务器的信息”区域选择登录的验证模式,最后选择要连接到的数据库。(3)关闭“数据连接属性”对话框,需要的字符串便显示在“use connection string”文本框中,如图17 所示。图17 自动生成的连接字符串(4) 设置datagrid控件的属性。datagrid控件用于显示数据,需将数据源属性(datasource属性)的值设置为ado控件的id属性值idc_adodc1。方法是:右击datagrid控件,选择“properties”,在弹出的属性对话框中选择“all”选项卡,然后在该选项中将“datasource”项的值设置为idc_adodc1,其中idcadodc1为ado控件的id属性值。此外,还将“caption”属性设置为“查询结果”,如图18所示。图18 设置datagrid控件的属性(5)连接数据库。主要是对ado控件的相关属性进行设置。可按以下几个步骤进行: 在主对话框上右击ado控件,在弹出的菜单中选择“properties”命令,会弹出如前面图2.2所示的对话框,按照图2.3中讲过的方法设置好数据库的连接信息,包括服务器名,登录服务器的验证方式(根据自己的服务器设置),要访问的数据库(选择command)。选择“recordsource”选项卡,在“commandtype”下拉列表框中选择“adcmdtext”项,表示要通过在下面的“commandtext”文本框中输入语句“select*from log_in”来查询数据。至此,datagrid控件与ado控件联系起来,为了让ado控件在运行时不可见,可在“常规”选项卡,去掉“visible”复选框中的勾。至此,对用户界面制作的所有过程已经完成,运行程序,输入用户名和对应的密码,点击“登录”即可进入学生信息管理系统。如图19所示。图19 成功登录系统3.3.2 学生个人信息输入模块 学生个人信息输入模块主要由student学生个人信息表构成,使用了1个datagrid、1个adodc,2个button,1个combo、7个edit和8个static共计20个控件。采用文本形式输入数据,点击“插入”按钮,数据存入数据库中,显示在列表中,如图20所示。图20 学生个人信息输入模块的运行界面3.3.3 学籍变更情况输入模块 该模块连接数据表exchaange,由5个statict,2个combo,3个edit,2个button,1个datagrid和一个adodc共计14个控件构成,其正确运行结果如图21所示。图21 学籍变更情况输入模块运行界面3.3.4 奖历情况输入模块该功能模块连接数据表reward,由5个static,2个combo,3个edit,2个button,1个datagrid和1个adodc共计14个控件构成,起成功运行结果如图22所示。图22 奖励情况输入模块运行界面3.3.5 处罚情况输入模块该功能模块连接数据表punishment,由6个static,3个combo,3个edit,2个button,1个datagrid和1个adodc共计16个控件构成,其成功运行结果如图23所示。图23 处罚情况输入模块运行界面3.3.6 学生个人情况查询模块该功能模块连接student,reward,punishment,exchaange四个数据表,由2个static,2个combo,1个edit,2个button,1个datagrid和1个adodc共计9个控件构成,以查询名字为高玮的学生信息为例,其成功运行结果如图24所示。图24 学生信息查询运行界面3.3.7 学生信息更新模块更新数据是通过执行update语句来实现。在vc中执行update语句也可以通过调用ado对象的open方法来实现。该功能模块连接student数据表,由8个static,8个edit,2个button,1个datagrid和1个adodc共计20个控件构成。下面进入学生基本信息更新模块的编辑。(1)为每个控件创建关联变量。(2)打开“mfc classwizard”对话框,为datagrid控件添加成员函数ondblclickdatagrid()并在该函数中添加代码,结果如下:void cupdata:ondblclickdatagrid1() / todo: add your control notification handler code hereupdatedata(true); int colnum = 2; cstring colval; ccolumns cols; /要包含头文件columns.h ccolumn col; /要包含头文件column.h variant v_colnum,v_value; /根据列编号返回ccolumn对象 cols = m_datagrid1.getcolumns();/调用getcolumns返回cdatagrid对应的ccolumns对象 v_colnum.vt = vt_i2; /读取学号 v_colnum.ival = 0; /设置列编号 col = cols.getitem(v_colnum); /根据列编号返回ccolumn对象 v_value = col.getvalue(); /读取列值 m_studentnumber = v_value.bstrval; /读取姓名v_colnum.ival = 1; col = cols.getitem(v_colnum); v_value = col.getvalue(); m_name = v_value.bstrval; /读取性别v_colnum.ival = 2; col = cols.getitem(v_colnum); v_value = col.getvalue(); m_sex = v_value.bstrval; /读取班级v_colnum.ival = 3; col = cols.getitem(v_colnum); v_value = col.getvalue(); m_class = v_value.bstrval; /读取年龄v_colnum.ival = 4; col = cols.getitem(v_colnum); v_value = col.getvalue(); m_age = v_value.bstrval; /读取籍贯v_colnum.ival = 5; col = cols.getitem(v_colnum); v_value = col.getvalue(); m_native_place = v_value.bstrval; /读取学院v_colnum.ival = 6; col = cols.getitem(v_colnum); v_value = col.getvalue(); m_department = v_value.bstrval; /读取班长学号v_colnum.ival = 7; col = cols.getitem(v_colnum); v_value = col.getvalue(); m_monitor = v_value.bstrval; updatedata(false);该函数的作用是,每次双击datagrid控件中编辑单元时就会执行该函数,结果是将datagrid控件的当前行中的所有字段值依次复制到界面下方的六个文本框中。代码中用到了m_datagrid1,因此还要按照前面的方法,为datagrid控件创建一个关联变量m_datagrid1,否则运行时会提示找不到变量。(3)将button1控件的caption属性改为“更新”,然后修改对应的成员函数的代码,结果如下:void cupdata:onbutton1() / todo: add your control notification handler code hereupdatedata(true);_connectionptr m_pconnection; :coinitialize(null);try m_pconnection.createinstance(adodb.connection);_bstr_t strconn=provider=sqloledb.1;integrated security=sspi;persist security info=false;initial catalog=command;data source=416-1-1;database=student; m_pconnection-open(strconn,admodeunknown);/if(m_pconnection-state = adstateopen) messagebox(成功连接数据库);catch (_com_error e):couninitialize(); afxmessagebox(e.errormessage();return; /以下插入数据_variant_t ra; _bstr_t stradd = update student set name = ;stradd = stradd + m_name + , sex = ;stradd = stradd + m_sex + , class = ;stradd = stradd + m_class + , age = ;stradd = stradd + m_age + , native_place = ;stradd = stradd + m_native_place + , department = ;stradd = stradd + m_department + , monitor = ;stradd = stradd + m_monitor + ;stradd = stradd + where studentnumber = + m_studentnumber+; afxmessagebox(stradd); /return; m_pconnection-execute(stradd,&ra,adcmdtext); m_pconnection-close(); / 以下显示当前数据m_adodc1.setrecordsource(select * from student); m_adodc1.refresh();afxmessagebox(成功更新数据!);updatedata(false); (4)经过上述代码更改以后,该工程已经具有了数据更新功能了。图25是该工程运行并修改数据时的一个界面。图25学生信息更新运行界面3.3.8 学生信息删除模块 对于数据的删除,这里通过调用ado对象的open方法来执行delete语句而实现删除功能。该功能模块连接student,punishment,reward,exchaange四个数据表,使用了9个button,4个datagrid和4个adodc共计20个控件(1)双击第一个datagrid控件,为其建立ondblclickdatagrid()函数,代码编辑如下:/功能:当双击datagrid控件时,当前记录被删除。void cdelect:ondlbclickdatagrid1() / todo: add your control notification handler code hereccolumns cols; /要包含头文件columns.h ccolumn col; /要包含头文件column.h variant v_colnum,v_value; cols = m_datagrid1.getcolumns();/调用getcolumns返回cdatagrid对应的ccolumns对象 v_colnum.vt = vt_i2; /读取学号 v_colnum.ival = 0; /设置列编号 col = cols.getitem(v_colnum); /根据列编号返回ccolumn对象 v_value = col.getvalue(); /读取列值 cstring tmp = v_value.bstrval; / int currow=atoi(tmp);cstring tmp2 = 确认要删除编号为 +tmp+ 的记录吗?;if(messagebox(tmp2, _t(数据删除提示), mb_yesno|mb_iconstop)!=idyes) return; updatedata(true);_connectionptr m_pconnection; :coinitialize(null);try m_pconnection.createinstance(adodb.connection);_bstr_t strconn=provider=sqloledb.1;integrated security=sspi;persist security info=false;initial catalog=command;data source=416-1-1;database=student;m_pconnection-open(strconn,admodeunknown); if(m_pconnection-state = adstateopen) messagebox(成功连接数据库);catch (_com_error e):couninitialize(); afxmessagebox(e.errormessage();return; /以下删除当前数据_variant_t ra; _bstr_t stradd = delete from student where studentnumber = +tmp; m_pconnection-execute(stradd,&ra,adcmdtext); m_pconnection-close(); / 以下显示当前数据m_adodc1.setrecordsource(select * from student); m_adodc1.refresh(); updatedata(false); (2)双击button1,为其创建onbutton1()函数,其代码编辑如下:void cinsertdatadlg:onbutton1()ondblclickdatagrid1();该函数直接调用ondblclickdatagrid1()来删除当前记录。(3)为button2控件(id为idc_button2)创建关联函数onbutton2(),该函数的作用是删除表中所有的数据。代码如下:void cd

温馨提示

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

最新文档

评论

0/150

提交评论