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

下载本文档

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

文档简介

数据库课程设计报告题目:学生信息管理系统学 号:姓 名:指导老师:完成时间:1 系统需求分析学校每年都有新生入学,老生毕业,有各种奖惩更新,学籍的变动,以及班级学院的更换。面对着一系列数据,如何高效地管理学生信息,实现信息的正确存储和利用,帮助老师掌握学生的基本情况,对于系统的总体设计尤为重要。1.1系统功能分析本系统为解决学生信息的管理,实现信息的更新和删除,特针对于需求分析,设计出具有如下功能的学生管理系统:(1) 学生信息输入,包括学生信息的添加,修改,显示等。(2) 学生信息查询,包括学生信息的查找和删除。(3) 学生处罚信息管理,包括添加,查找,删除等。(4) 学生学籍信息管理,包括添加,修改,查询等。(5) 学生奖励信息管理,包括添加,查找,删除等。(6) 学生班级信息管理,包括添加,查找,删除等。(7) 学院部门信息管理,包括添加,查找,删除等。(8) 系统帐户管理,包括添加帐户,更改密码等。1.2系统功能模块设计根据系统需求分析,以及需要实现的功能分析,需要对整个系统分成八个模块,来实现其所要求的功能,本系统功能模块设计如图1所示。学生信息查询修改密码系统其他学生基本信息管理学生信息管理系统学生信息输入学生处罚,奖励,学籍管理学生班级,学院部门管理处罚管理奖励管理学籍管理班级管理学院管理添加帐户图1 学生管理系统功能模块图1.3与其它系统的关系学生信息管理系统是校园信息管理系统的一个重要组成部分,是实现对学生有效管理的工具。它所提供的功能,如学籍管理,学生奖励管理和学生处罚管理,对财务系统,成绩管理系统等其他系统的使用提供了支持,数据库内容亦可共享,从而实现资源的重利用。1.4数据流程图数据流程图是根据数据的流向,规划整个数据库和管理整个系统,从而高效地开发数据库管理系统。本系统的数据流程图如图2所示。录取名单学籍变动学生奖励学生处罚学生信息输入学籍信息奖励信息处罚信息数据库查询更新图2 学生管理系统数据流程图2.数据库设计2.1数据库需求设计根据系统功能分析和功能模块设计,可以得出数据库中需要建立的数据项和数据结构:学生基本信息:学号,姓名,性别,班级,学院,生日,籍贯等学生学籍信息:记录号,学号,变更代号,记录时间以及变更描述。学生处罚信息:记录号,学号,处罚代码,记录时间,是否生效,描述。学生奖励信息:记录号,学号,奖励代码,记录时间,描述。同时需要其他数据的支持,才能实现管理程序时数据显示的规范完整。班级:班级编号,班级全称,班级班长学号。院系:院系编号,名称。2.2数据库概念结构设计本系统的ER图如图3设计:图3学生信息管理系统ER图2.3数据库的关系模型根据学生信息所需的数据项和数据库的概念结构设计,可以得出数据库系统的关系模型如下:学生(STUDENTID,NAME,SEX,CLASS,DEPARTMENT,BIRTHDAY,NATIVE_PLACE)学籍(ID,STUDENTID,CHANGE,REC_TIME,DESCRIPTION)奖励(ID,STUDENTID,LEVELS,REC_TIME,DESCRIPTION)处罚(ID,STUDENTID,LEVELS,REC_TIME,ENABLE,DESCRIPTION)班级(ID,NAME,MONITOR)学院(ID,NAME)2.4数据库逻辑设计根据ER图,需要设计4个数据表存放学生信息,为了使系统完整,需要设置班级和学院的数据表,来实现基本信息的扩充。表1:STUDENT学生个人信息表字段名数据类型是否可空说明STUDENTIDnvarchar(50)否学号(主关键字)NAMEnvarchar(50)否姓名SEXnvarchar(50)否性别(男,女)CLASSnvarchar(50)否班级编号(外部关键字)DEPARTMENTnvarchar(50)否所属院系编号(外部关键字)BIRTHDAYdatetime否生日NATIVE_PLACEnvarchar(50)否籍贯表2 CHANGE学籍变更信息表字段名数据类型是否可空说明IDint否记录号(主关键字)STUDENTIDnvarchar(50)否学号(外部关键字)CHANGEnvarchar(50)否变更代号REC_TIMEdatetime否记录时间DESCRIPTIONnvarchar(50)否描述表3 REWARD奖励记录信息表字段名数据类型是否可空说明IDint否记录号(主关键字)STUDENTIDnvarchar(50)否学号(外部关键字)LEVELSnvarchar(50)否奖励代码REC_TIMEdatetime否记录时间DESCRIPTIONnvarchar(50)否描述表4 PUNISHMENT处罚记录信息表字段名数据类型是否可空说明IDint否记录号(主关键字)STUDENTIDnvarchar(50)否学号(外部关键字)LEVELSnvarchar(50)否级别代码(外部关键字)REC_TIMEdatetime否记录时间ENABLEnvarchar(50)否是否生效(T、F)DESCRIPTIONnvarchar(50)否描述表5 DEPARTMENT院系信息表字段名数据类型是否可空说明IDnvarchar(50)否学院编号(主关键字)NAMEnvarchar(50)否全称表6 CLASS班级信息表字段名数据类型是否可空说明IDnvarchar(50)否班级编号(主关键字)NAMEnvarchar(50)否全称MONITORnvarchar(50)否班长学号(外部关键字)表7 USER用户信息表字段名数据类型是否可空说明workIDint否帐户编号USERnvarchar(50)否账户名pwdnvarchar(50)否密码2.4数据库的建立2.4.1数据库的建立由数据库的逻辑结构已经设计出来了,只需要在SQL server2005软件中建立数据库,添加表格,设置主键等操作,经过一系列操作,将stu_ma数据库已建立。如图4所示。图4 数据库列表从图4可看出,已建立了所需要的数据表,进而可以通过程序对数据库进行操作。2.4.2初始数据的输入由于数据库的内容都可以通过管理系统添加,所以只需要初始化USER的用户信息,即帐户和密码,使用户可以登录系统进行操作。初始化USER表的信息如图5所示:图5 USER表中初始化记录我们可以通过以上任意帐户登入系统。以下我们默认以帐户admin密码admin登入系统。3.各功能模块的设计和实现3.1.登录窗口3.1.1功能实现说明连接数据库后,用记录集指针从STUDENT表格中用select语句选出符合要求的记录集,这里需要选出和输入值一致的记录,即账户名和密码与数据库中的某一条信息的USER和pwd值相同,若有这样的记录,说明此用户为合法用户,即可登录系统操作,进入主界面,否则达到五次输入错误,就退出系统。3.1.2界面设计根据说明所要达到的效果,设计出图6 的登录界面。图6 登录界面3.1.3登录功能实现输入用户名和密码后,点击“确定”按钮,程序进入后台操作,即执行select语句,查找是否存在这样的记录,若存在则进入系统,否则提示“登录失败”。核心代码:strSQL.Format(select * from USER where user=%s and pwd=%s,m_User_name,m_Password);m_pLogset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pLogset-GetRecordCount()=0)if(countOpen(AFX_DB_USE_DEFAULT_TYPE,strSQLC);if(m_pset-GetRecordCount()!=0)MessageBox(已存在此学生记录,不能再添加,学生信息登记);m_pset-Close();return ;m_pset-Close();CString strSQLI;strSQLI.Format(select * from STUDENT);m_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQLI);m_pset-AddNew();m_pset-SetFieldNull(&(m_pset-m_STUDENTID),FALSE);m_pset-m_STUDENTID=m_studentID;m_pset-SetFieldNull(&(m_pset-m_NAME),FALSE);m_pset-m_NAME=m_name;m_pset-SetFieldNull(&(m_pset-m_SEX),FALSE);m_pset-m_SEX=m_sex;m_pset-SetFieldNull(&(m_pset-m_CLASS_ID),FALSE);m_pset-m_CLASS_ID=m_class;m_pset-SetFieldNull(&(m_pset-m_DEPART_ID),FALSE);m_pset-m_DEPART_ID=m_depart;m_pset-SetFieldNull(&(m_pset-m_BIRTHDAY),FALSE);m_pset-m_BIRTHDAY=m_birth;m_pset-SetFieldNull(&(m_pset-m_NATIVE_PLACE),FALSE);m_pset-m_NATIVE_PLACE=m_native;m_pset-Update();m_pset-Requery();m_pset-Close();m_database.Close();MessageBox(成功输入学生信息!,学生信息登记);修改事件核心代码:UpdateData(true);if(!m_database.IsOpen()if(!m_database.Open(_T(stu_ma)MessageBox(Cannot access database!,学生信息登记);return;CFindset *m_pset=new CFindset(&m_database);CString strSQL;strSQL.Format(select * from STUDENT where STUDENTID=%s,m_studentID);if(m_studentID=&m_name=&m_class=&m_depart=&m_native=)MessageBox(请输入完整的信息!,学生信息登记);return ;m_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pset-GetRecordCount!=0)m_pset-Edit();m_pset-m_STUDENTID=m_studentID;m_pset-m_NAME=m_name;m_pset-m_SEX=m_sex;m_pset-m_CLASS_ID=m_class;m_pset-m_DEPART_ID=m_depart;m_pset-m_BIRTHDAY=m_birth;m_pset-m_NATIVE_PLACE=m_native;m_pset-Update();m_pset-Requery();m_pset-Close();MessageBox(成功更新此同学的数据,学生信息登记);m_database.Close();elseMessageBox(库中没有学生信息,无法更新,学生信息登记);m_database.Close();显示事件核心代码:CString strSQL;strSQL.Format(select * from STUDENT);TRYm_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);CATCH(CDBException,ex)AfxMessageBox(OK1);AfxMessageBox (ex-m_strError);AfxMessageBox (ex-m_strStateNativeOrigin);AND_CATCH(CException,e)TCHAR szError100;e-GetErrorMessage(szError,100);AfxMessageBox (szError);END_CATCHif(m_pset-GetRecordCount()=0)MessageBox(书库中没有任何书籍信息!,新书登记);m_database.Close();return;3.4学生信息查询3.4.1功能说明l 查找事件:连接数据库后,通过select语句选出符合输入学号相同的记录,从而显示出来,此核心和显示一样,只是select语句选出的记录集变小了,通过在列表控件里的显示,查看该学号学生的基本信息。l 删除事件:利用select语句选出需要删除的记录,再删除掉,在此仅仅使用了delete()语句,即可实现对词条记录的删除,实质性的没多少,都一样,不再赘述。3.4.2界面设计以及实现查询的界面如图9所示。依靠学号实现对数据的查询,并把数据显示在列表控件里面。图9 学生信息查询输入学生学号后,点击“查找”,若存在此记录,则在下面的控件里面显示出来,若不存在此数据,则提示“库中不存此同学的信息”。对于删除也是大同小异,核心代码如下所示。查找核心代码:strSQL.Format(select * from STUDENT where STUDENTID=%s,m_StudentID);m_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pset-GetRecordCount()=0)MessageBox(数据库中不存在此学生记录!,学生信息查询);m_database.Close();return;m_List.DeleteAllItems();m_pset-MoveFirst();char buf50;int i=0;CString str;while(!m_pset-IsEOF()m_List.InsertItem(i,buf);m_List.SetItemText(i,0,m_StudentID);m_pset-GetFieldValue(1,str);m_List.SetItemText(i,1,str);m_pset-GetFieldValue(2,str);m_List.SetItemText(i,2,str);m_pset-GetFieldValue(3,str);m_List.SetItemText(i,3,str);m_pset-GetFieldValue(4,str);m_List.SetItemText(i,4,str);m_pset-GetFieldValue(5,str);m_List.SetItemText(i,5,str);m_pset-GetFieldValue(6,str);m_List.SetItemText(i,6,str);i+;m_pset-MoveNext();UpdateData(FALSE);删除核心代码:strSQL.Format(select * from STUDENT where STUDENTID=%s,m_StudentID);m_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);m_pset-Delete();m_pset-Requery();m_pset-Close();m_database.Close();MessageBox(删除成功!,删除学生信息);m_StudentID.Empty();3.5学籍变动,奖励管理,处罚管理3.5.1功能说明为实现学籍的变动,需要对学籍信息进行添加,修改,查询等功能,从而设置三个按键实现其功能。所以基本事件也只这三个方面,在本系统上也只实现了这三个功能。l 添加操作:第一步检验数据库连接是否成功,第二步用select语句符合输入学号相同的记录,第三步则定位到数据库,通过AddNew()函数,将已输入的数据从程序面板逐条输入到数据库中,然后更新数据库,实现数据的添加。l 修改操作:第一步检验数据库连接是否成功,第二步用select语句符合输入学号相同的记录,第三步则进行更新修改数据,主要是通过数据的再编辑,将已输入的数据从程序面板逐条重新输入到数据库中,覆盖原来的数据,然后更新数据库,实现数据的修改。l 查询操作:连接数据库后,通过select语句选出符合输入学号相同的记录,从而显示出来,若没有该学生的,就提示不存在,否则查询,此核心和显示一样,只是select语句选出的记录集变小了,通过在列表控件里的显示,查看该学号学生的学籍变动信息。奖励管理和处罚管理实现的功能差不多,只是对不同的表进行操作,主要是在数据库连接的过程中,这样就不再赘述了!3.5.2界面设计学籍变动,奖励管理,处罚管理的界面设计分别为图10、11、12所示。实现的功能也差不多,所以基本界面设计也相似。图10 学生学籍变动对于代码的实现,因为三个管理窗口,实现的功能差不多,代码也差不多,只是对不同的表格进行操作,所以三个管理界面只提供一个功能按键的代码。学籍信息添加核心代码:strSQL.Format(select * from CHANGE);m_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);m_pset-MoveLast();i=m_pset-m_ID;/获得ID号m_pset-AddNew();m_pset-SetFieldNull(&(m_pset-m_ID),FALSE);m_pset-m_ID=i+1;m_pset-SetFieldNull(&(m_pset-m_STUDENTID),FALSE);m_pset-m_STUDENTID=m_studentID;m_pset-SetFieldNull(&(m_pset-m_Change_ID),FALSE);m_pset-m_Change_ID=m_change_ID;m_pset-SetFieldNull(&(m_pset-m_Rec_time),FALSE);m_pset-m_Rec_time=m_Rec_time;m_pset-SetFieldNull(&(m_pset-m_DESCRIPTION),FALSE);m_pset-m_DESCRIPTION=m_descri;m_pset-Update();m_pset-Requery();m_pset-Close();m_database.Close();MessageBox(成功键入学籍更改信息!,学籍登记);图11 学生奖励管理学生处罚信息删除CPunishset *m_pset=new CPunishset(&m_database);CString strSQL;strSQL.Format(select * from PUNISH where STUDENTID=%s,m_studentID);m_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);m_pset-Delete();m_pset-Requery();m_pset-Close();m_database.Close();MessageBox(删除成功!,删除学生信息);m_studentID.Empty();m_descri.Empty();UpdateData(FALSE);return;图12 学生处罚管理学生奖励信息查询strSQL.Format(select * from REWARD where STUDENTID=%s,m_studentID);m_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pset-GetRecordCount()=0)MessageBox(数据库中不存在此学生记录!,奖励查询);m_database.Close();return;m_List.DeleteAllItems();m_pset-MoveFirst();char buf50;int i=0;CString str;while(!m_pset-IsEOF()m_List.InsertItem(i,buf);m_List.SetItemText(i,0,m_studentID);m_pset-GetFieldValue(2,str);m_List.SetItemText(i,1,str);m_pset-GetFieldValue(3,str);m_List.SetItemText(i,2,str);m_pset-GetFieldValue(4,str);m_List.SetItemText(i,3,str);m_pset-MoveNext();i+;3.6学生班级,学院部门管理此功能模块提供班级和学院的增加,删除,查询,便于学校或是学院的动态管理。界面设计如图13,14所示。图13 学生班级查询图 14学院部门管理由于学院管理和班级管理实现的功能一样,代码也差不多一样,并且和前面介绍的功能差不多,也不再赘述。3.7添加帐户和修改密码为使系统能够多用户使用,而不使用同一个账号,所以需要添加合法的帐户使用者,通过不同的帐户名和密码登录同样的系统,实现对数据的操作。同时若用户需要对自己的密码进行更改,则可进入更改界面,更改密码。此处要求添加帐户时应检查数据库中是否存在此帐户,若存在即不能添加,对于密码更换,必须找出系统中已存在的帐户名和密码与输入的帐户名和原密码进行比对,存在才能进行密码修改,否则不能。相关功能界面设计分别如图15,16所示。图15 更改密码添加用户核心代码if(m_user.Compare()=0)MessageBox(请填写你要添加的账户名!,添加账户);m_database.Close();return;CString strSQLT,strSQLD;strSQLT.Format(select * from USER where user=%s,m_user);m_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQLT);if(m_pset-GetRecordCount()!=0)MessageBox(已存在此帐户,不能再添加,添加帐户);m_pset-Close();m_database.Close();return ;m_pset-Close();if(m_pwd_first.Compare(m_pwd_second)!=0)MessageBox(两次输入的密码不相同!,添加账户);m_database.Close();return;long i;strSQLD.Format(select * from USER);m_pset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQLD);m_pset-MoveLast();i=m_pset-m_workID;/获得ID号m_pset-AddNew();m_pset-SetFieldNull(&(m_pset-m_workID),FALSE);m_pset-m_workID=i+1;m_pset-SetFieldNull(&(m_pset-m_user),FALSE);m_pset-m_user=m_user;m_pset-SetFieldNull(&(m_pset-m_pwd),FALSE);m_pset-m_pwd=m_pwd_first;m_pset-Update();m_pset-Requery();m_pset-Close();m_database.Close();MessageBox(成功添加账户!,添加账户);m_user.Empty();m_pwd_first.Empty();m_pwd_second.Empty();UpdateData(

温馨提示

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

评论

0/150

提交评论