《数据库课程设计报告-学籍管理系统(共34页).doc》由会员分享,可在线阅读,更多相关《数据库课程设计报告-学籍管理系统(共34页).doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上目 录专心-专注-专业1 项目计划1.1 系统开发目的(1)利用本系统实现学生信息关系的系统化,规范化和自动化;(2)提高学生管理工作的效率,减少管理方面的工作量;1.2 背景说明随着人类社会进入信息时代,计算机越来越多地活跃在社会各个领域:管理,网络,计算,控制,多媒体等.并且在某些方面成为不可缺少的工具,尤其在管理方面,管理软件的出现使大量繁琐复杂的问题变得简单易行. 现今学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长.面对庞大的信息量,需要有学生信息管理系统来提高学生管理工作的效率.通过这样的系统,可以做到信息的规范管理,科学统计和快速的查
2、询,从而减少管理方面的工作量. 1.3 项目确立针对现今学校管理学生信息的特点,我们小组经过研究,决定开发一项学生信息管理系统。该学生信息管理系统用Visual Basic来设计界面,以SQL Server为后台数据库,采用面向对象的语言编程,实现对学生信息的基本管理。本系统主要包括院系信息的管理功能,学生基本信息管理功能,学生照片管理功能,学生主要教育经历信息管理功能,学生奖罚管理功能,学生学籍变动管理功能,课程设置管理功能,学生成绩管理功能,系统用户管理功能,系统日志管理功能和用户操作权限控制功能等,其中每项信息管理功能模块都包括对信息的录入,修改,删除和查询。该系统充分考虑用户的操作简便
3、性,实现快捷操作. 为了安全考虑,我还在进入系统之前加上了登录模块。其中学生照片管理是本系统中较有特色的部分。1.4 应用范围本系统具有很强的实用性,各大,中,小学校可以根据自身情况稍加修及可应用与本校的学生信息管理中。1.5 参考资料数据库应用系统开发与实例 李晓黎、张巍编 人民邮电出版社Visual Basic信息系统开发实例精选 赛奎春编 机械工业出版社Visual Basic程序设计教程 刘炳文编 清华大学出版社数据库应用实例完全解析王颖、李明业编 人民邮电出版社Visual Basic 6.0程序设计刘新民,蔡琼,白康生编清华大学出版社2004 Visual Basic数据库开发入门
4、与范例解析郭胜,夏邦贵编 机械工业出版社2004.1 Visual Basic实例教程王彬华,李建华编 电子科技大学出版社2004.4 Visual Basic数据库系统开发实例导航(第二版)刘韬,骆娟,何旭洪编人民邮电出版社2003.8 Visual Basic数据库开发自学教程孙越编人民邮电出版社2003.7 2 逻辑分析与详细分析2.1 系统功能该学生信息管理系统用Visual Basic来设计界面,以SQL Server为后台数据库,采用面向对象的语言编程,实现对学生信息的基本管理。本系统的主要 任务是实现对学校各院系和所有学生的系统管理,功能主要如下:1.院系信息管理功能: 院系信息
5、的录入,包括院系编号,院系名称,院系职能描述和上级院系等信息;院系信息的修改;院系信息的删除;院系信息的查询2.学生基本信息管理功能:学生基本信息的录入,包括院系编号,姓名,性别,生日,所在院系等信息;学生基本信息的修改;学生基本信息的删除;学生基本信息的查询3.学生照片管理功能(照片的存储和管理与其他基本信息不同)学生照片的录入,将指定的图象文本存储到数据库中;学生照片的修改;学生照片的删除;学生照片的显示4学生主要教育经理信息管理功能学生主要教育经历信息的录入,包括开始日期,截至日期,所在学校,职务等信息;学生主要教育经历信息的修改;学生主要教育经历信息的删除;学生主要教育经历信息的查询5
6、学生奖罚管理功能学生奖罚信息的录入,包括奖罚日期,奖罚内容等信息;学生奖罚信息的修改;学生奖罚信息的删除;学生奖罚信息的查询6学生学籍变动管理功能学生学籍信息的录入;学生学籍信息的修改;学生学籍信息的删除;学生学籍信息的查询7课程设置管理功能课程设置信息的录入,包括课程编号,课程名称,课程内容等信息;课程设置信息的修改;课程信息的删除;课程信息的查询8学生成绩管理功能学生成绩信息的录入,包括课程编号,学生编号,分数等信息;学生成绩信息的修改;学生成绩信息的删除;学生成绩信息的查询9系统用户管理功能系统用户信息的录入,包括用户名,密码等信息;系统用户信息的修改;系统用户信息的删除;系统用户信息的
7、查询10用户权限管理功能用户权限信息的查询;用户权限信息的修改(只有系统管理员才拥有此权限)11系统日志管理功能系统日志信息的查询,包括(全部信息,院系管理信息,学生管理信息,奖罚信息,学籍管理信息,成绩信息,用户管理信息);系统日志信息的删除(包括单个删除,全部删除等) (3) 系统结构图2-1系统总体结构图2-2基本信息子模块系统结构功能描述:此为基本信息管理功能模块,包括院系信息管理和学生信息管理等模块。此模块是整个系统的核心,其他各个模块都针对每个学生的一个方面进行管理,都需要提供学生编号等基本信息作为索引。图2-3学籍及考核管理子模块系统结构功能描述:此为学籍及考核管理功能集合,包括
8、学籍管理、奖惩管理和成绩管理模块。 图2-4用户管理及权限控制子模块系统结构功能描述:此为用户管理及权限控制功能集合,包括用户信息管理、权限控制等模块。权限控制虽不是一个独立存在的模块,但是它却贯穿在整个系统的运行过程中。2.2 流程图本系统的流程分析如下:2.3 用户类型与职能(1)、管理员(Admin):自身信息的修改添加普通用户编辑普通用户的信息管理普通用户的权限系统各模块信息的录入,修改,删除,查询(2)、普通用户:自身信息的修改根据系统管理员赋予的权限进行模块信息的录入,修改,删除和查询2.4 统开发步骤 确定开发系统的功能并进行开发分工 创建数据库,设计数据库逻辑结构,创建表的脚本
9、文件 利用Visual Basic创建工程,添加模块和类模块 系统主页面设计并在其中添加代码 登陆模块设计,在登陆窗体中添加代码 工程中的各个管理模块的设计 进行测试,检验体统2.5 系统环境需求 系统模式本系统采用C/S模式作为开发模式。 硬件环境高性能计算机一台,内存512M,硬盘80G 软件环境SQL Server 2000Visual Basic 6.02.6 系统安全问题本学生信息管理系统采用不同用户模式登陆的方式,有效的实现了系统安全问题。当用户登陆时,如果用户名或密码输入错误的次数超过三次,系统将自动退出。进入系统后,普通用户将会受到一些访问权限的控制。这些访问权限是通过系统管理
10、员进行分配的。系统管理员可以根据不同用户的需要或其他一些情况进行权限的分配,使不同的用户进行不同的操作。3 学生信息管理系统概念设计文档3.1 系统ER图系统ER图说明 一个院系中可以有多个学生,但是每个学生只能从属于一个院系; 每个学生可以学习多门课程,每门课程也可以有多个学生学习。4 逻辑设计文档4.1 系统关系模型a) 院系班级表Class(院系编号,院系名称,院系的职能描述,上级院系编号)b) 学生基本信息表Student(学生编号,姓名,照片,性别,民族,生日,政治面貌,籍贯,身份证号,学生证号,家庭电话,居住地址,邮政编码,入校日期,所在院系编号,职务,备注,填表日期)c) 学生教
11、育经历记录表Experience(编号,学生编号,开始日期,终止日期,学校、单位名称,职务)d) 学生奖罚表Evaluation(奖罚记录编号,奖罚日期,学生编号,奖罚类型(0表示奖励,1表示处罚),奖罚说明)e) 学生学籍变动表Change(学籍变动编号,学生编号,学籍变动类型(1表示退学,2表示休学,3表示转学,4表示调班),学籍变动日期,原班级编号,转入学校名称,转入班级编号,学籍变动原因,备注)f) 课程设置表Lessons(课程编号,课程名称,课程设置的学期,授课老师,课时,课程类型(必修课,选修课)g) 考试成绩表Scores(课程编号,学生编号,考试分数)h) 用户信息表User
12、s(用户名,密码)i) 用户权限信息表Privilege(用户名,院系管理权限标记,学生管理权限标记,奖罚管理权限标记,学籍管理权限标记,成绩管理权限标记,用户管理权限标记)j) 系统日志信息表SysLog(日志编号,事件发生日期,事件发生时间,时间类型,事件标题,事件内容,操作用户名)4.2 系统数据库表结构数据库表索引表名中文名Classes院系班级表Students学生基本信息表Experience学生教育经历记录表Evaluation学生奖惩表Change学生学籍变动表Lessons课程设置表Scores考试成绩表Users用户信息表Privilege用户权限信息表Syslog系统日志
13、信息表学生基本信息表(Student)字段名字段类型长度主/外键字段值约束对应中文名Student_IdintPNot null学生编号Student_NameVarchar50Not null姓名PhotoImage照片SexChar2性别NationalityVarchar40民族BrithVarchar20Not null生日Political_PartyVarchar40政治面貌Family_PlaceVarchar60籍贯Id_CardVarchar20身份证号BadgeIDVarchar40学生证号Home_phoneVarchar30家庭电话ResidenceVarchar100
14、居住地址PostcodeVarchar10邮政编码InDateVarchar20Not null入校日期Class_IdSmallInt所在院系编号TitleVarchar20职务MemoVarchar200备注Fillin_TimeVarchar20填表时间院系班级表(Classes)字段名字段类型长度主/外键字段值约束对应中文名Class_idvarcharPNot null院系编号Class_NameVarchar40Not null院系名称DescribeVarchar400院系职能描述UpperIdSmallIntNot null上级院系编号学生教育经历记录表(Experience)
15、字段名字段类型长度主/外键字段值约束对应中文名ExpIdIntPNot null编号Student_IdIntNot null学生编号Strat_DateChar10Not null开始日期End_DateChar10Not null终止日期SchoolVarchar50Not null学校/单位名称TitleVarchar20职务学生奖惩表(Evaluation)字段名字段类型长度主/外键字段值约束对应中文名EvaIdIntPNot null奖惩记录编号EvaDateChar10Not null奖惩日期Student_IdIntNot null学生编号EvaTypeBitNot null奖惩
16、类型MemoVarchar200奖惩说明学生学籍变动表(Change)字段名字段类型长度主/外键字段值约束对应中文名ChangeIdIntPNot null学籍变动编号Student_IdIntNot null学生编号ChangeTypeTinyintNot null学籍变动类型ChangeDateChar10Not null学籍变动日期OriClassInt原班级编号NewSchoolVarchar50转入学校名称NewClassInt转入的班级编号ReasonVarchar200学籍变动原因MemoVarchar200备注课程设置表(Lessons)字段名字段类型长度主/外键字段值约束对应
17、中文名LessonIdIntPNot null课程编号LessonNameVarchar100Not null课程名称TermVarchar20课程设置的学期TeacherVarchar20授课老师HoursTinint课时LessonTypeVarchar20Not null课程类型考试成绩表(Scores)字段名字段类型长度主/外键字段值约束对应中文名LessonIdIntFNot null课程编号Student_IdIntFNot null学生编号ScoreTinyint考试分数用户信息表(Users)字段名字段类型长度主/外键字段值约束对应中文名UserNamevarchar40PNo
18、t null用户名PwdVarchar40Not null密码用户权限信息表(Privilege)字段名字段类型长度主/外键字段值约束对应中文名UserNameVarchar40FNot null用户名PrivClassBit院系管理权限标记PrivStuBit学生管理权限标记PrivEvaBit奖惩管理权限标记PrivChangeBit学籍管理权限标记PrivScoreBit成绩管理权限标记PrivUserBit用户管理权限标记系统日志信息表(SysLog)字段名字段类型长度主/外键字段值约束对应中文名LogIdBigIntPNot null日志编号LogDateChar10Not null
19、事件发生日期LogTimeChar10Not null事件发生时间LogTypeTinyInt事件类型TitleVarchar100事件标题Body Varchar500事件内容UserNameVarchar40FNot null操作用户名5 物理设计文档/*-创建数据库-*/USE masterGOCREATE DATABASE StudentSysONPRIMARY ( NAME = St1, FILENAME = c:program filesmicrosoft sql servermssqldataStData1.mdf, SIZE = 10MB, MAXSIZE = 200, FIL
20、EGROWTH = 2),( NAME = St2, FILENAME = c:program filesmicrosoft sql servermssqldataStData2.ndf, SIZE = 10MB, MAXSIZE = 200, FILEGROWTH = 2),( NAME = St3, FILENAME = c:program filesmicrosoft sql servermssqldataStData3.ndf, SIZE = 10MB, MAXSIZE = 200, FILEGROWTH = 2)LOG ON ( NAME = StLog1, FILENAME = c
21、:program filesmicrosoft sql servermssqldataStLog1.ldf, SIZE = 1MB, MAXSIZE = 20, FILEGROWTH = 1),( NAME = StLog2, FILENAME = c:program filesmicrosoft sql servermssqldataStLog2.ldf, SIZE = 1MB, MAXSIZE = 20, FILEGROWTH = 1)GO/*创建院系班级表*/CREATE TABLE Classes (Class_Id Int Primary Key, Class_NameVarchar
22、(40) NOT NULL, Describe Varchar(400), UpperIdSmallInt NOT NULL )/*创建学生基本信息表*/CREATE TABLE Students (Student_IdInt Primary Key, Student_Name Varchar(50) NOT NULL, PhotoImage, SexChar(2), NationalityVarchar(40), BirthVarchar(20), Political_PartyVarchar(40), Family_PlaceVarchar(60), Id_CardVarchar(20),
23、 BadgeIDVarchar(40), Home_phoneVarchar(30), ResidenceVarchar(100), PostcodeVarchar(10), InDateVarchar(20), Class_IdSmallInt, TitleVarchar(20), MemoVarchar(200), Fillin_TimeVarchar(20) )/*创建学生教育经历记录表*/CREATE TABLE Experience (ExpIdInt Primary Key IDENTITY, Student_Id Int NOT NULL, Start_Date Char(10)
24、, End_Date Char(10), SchoolVarchar(50), TitleVarchar(20) )/*创建学生奖惩表*/CREATE TABLE Evaluation (EvaIdInt Primary Key IDENTITY, EvaDateChar(10) NOT NULL, Student_Id Int NOT NULL, EvaTypeBit, MemoVarchar(200) )/*创建学籍变动表*/CREATE TABLE Change (ChangeId Int Primary Key IDENTITY, Student_Id Int NOT NULL, Ch
25、angeTypeTinyint, ChangeDateChar(10), OriClassInt, NewSchoolVarchar(50), NewClassInt, ReasonVarchar(200), MemoVarchar(200) )/*创建课程设置表*/CREATE TABLE Lessons (LessonIdInt Primary Key IDENTITY, LessonNameVarchar(100), TermVarchar(20), TeacherVarchar(20), HoursTinyint, LessonTypeVarchar(20) )/*创建销售表*/CRE
26、ATE TABLE Sale (SaleID int identity(1,1) Primary key ,MerChID int NOT NULL ,SaleDate datetime NOT NULL ,SaleNum int NOT NULL,SalePrice money NOT NULL) GO/*创建考试成绩表*/CREATE TABLE Scores (LessonIdInt NOT NULL, Student_IdInt NOT NULL, ScoreTinyint )/*创建用户表*/CREATE TABLE Users (UserName Varchar(40) Prima
27、ry Key, PwdVarchar(40) NOT NULL )INSERT INTO Users Values(Admin, Admin)/*创建用户权限信息表*/CREATE TABLE Privilege (UserNameVarchar(40) Primary Key, PrivClassBit, PrivStuBit, PrivEvaBit, PrivChangeBit, PrivScoreBit, PrivUserBit )/*创建系统日志信息表*/CREATE TABLE SysLog (LogIdBigInt Primary Key IDENTITY, LogDateChar
28、(10), LogTimeChar(10), LogTypeTinyInt, TitleVarchar(100), BodyVarchar(500), UserNameVarchar(40) )6 操作界面截图1. 运行程序,出现如下登陆界面: 现在以系统管理员的身份登陆,用户名中输入“Admin”,密码也是“Admin”。然后单击“确定”,进入程序的主窗口如下: 2. 单击“院系管理”,进入如下界面: 可以对院系信息进行添加、修改和删除,单击“添加”或“修改”进入如下界面: 3. 单击“学生管理”,进入如下界面: 如果要添加学生,必须先选中一个院系班级,单击“添加学生”进入如下界面: 添加完
29、信息后,单击“确定”,然后选中此学生,可以添加其照片,在图像框着中单击鼠标右键-“设置照片”,然后可以选择不同格式的照片,添加完成后界面如下: 选中一个学生,可以添加其教育经历,单击“教育经历”,进入界面如下: 可以添加、修改和删除学生的教育经历,这里就不再演示。4. 单击“奖惩管理”,进入如下界面: 可以通过选择年份和类型,然后再选择学生,进行奖惩信息的添加、修改和删除。5. 单击“学籍管理”,进入如下界面: 可以通过选择年份和类型,然后再选择学生,进行学籍信息(包括退学、休学、转学和调班)的添加、修改和删除。6. 单击“成绩管理”,进入如下界面: 首先可以添加、修改和删除课程,选中课程可查
30、看课程的相关信息。然后单击“成绩管理”,进入如下界面: 必须先选择班级,然后选中学生,最后才能够添加、修改或删除成绩。7. 单击“用户管理”,进入如下界面: 只有管理员具有添加、修改和删除用户的权限,若要添加用户,单击“添加用户”,进入如下界面: 8. 单击“权限管理”,进入如下界面: 若选择管理员,则提示“管理员拥有一切权限”,无需赋权限;若选择普通用户,则可以赋予一定的权限,截图如下: 此时该普通用户被赋予的权限是学籍管理和用户管理,那么该用户登陆时只具有这两个权限,下面是用该用户登陆时的截图: 当该用户选择“院系管理”、“学生管理”、“奖惩管理”、“成绩管理”、“权限管理”或者“系统日志
31、”时,都会提示“没有权限”,则该用户不能够进行相应的操作。9. 单击“系统日志”,进入如下界面: 可以通过选择事件类别、日期和用户,来查看不同的日志记录,并且可以进行日志记录的单个删除或者全部删除。7 主要代码7.1 数据库连接代码Private Sub Connect() Dim TmpStat As Long SQLConnect()函数的返回值 如果连接标记为真,则返回。否则会出错 If IsConnect = True Then Exit Sub End If 分配环境句柄,保存在变量Henv中 If SQLAllocEnv(Henv) Then MsgBox 无法初始化ODBC环境!
32、, , ODBC API执行错误 End End If 根据环境句柄,分配连接句柄,保存在变量Hdbc中 If SQLAllocConnect(Henv, Hdbc) Then MsgBox 无法连接ODBC!, , ODBC API执行错误 End End If 根据连接句柄、数据源、用户名和密码连接指定的数据库 TmpStat = SQLConnect(Hdbc, DSN, Len(DSN), DB_USER_NAME, _ Lench(DB_USER_NAME), DB_PASSWORD, Len(DB_PASSWORD) 如果连接不成功则退出程序 If TmpStat SQL_SUCC
33、ESS And _ TmpStat SQL_SUCCESS_WITH_INFO Then MsgBox 无法获得连接句柄!, , ODBC API执行错误 IsConnect = True Disconnect End End If 设置连接标记 IsConnect = TrueEnd Sub7.2 数据库断开代码Private Sub Disconnect() Dim Rc As Long 如果连接标记为假,标明已经断开连接,则直接返回 If IsConnect = False Then Exit Sub End If 断开连接 Rc = SQLDisconnect(Hdbc) 释放连接句柄
34、 Rc = SQLFreeConnect(Hdbc) 释放环境句柄 Rc = SQLFreeEnv(Henv) IsConnect = FalseEnd Sub7.3 照片管理模块代码SOL Server2000的图像字段不能够使用Insert和update等语句插入和更新,所以本系统中使用GetChunk和AppChunk方法读取和填写图象字段。GetChunk方法用来返回大型文本和二进制数据Field对象的全部或部分内容,AppendChunk方法则将数据追加到大型文本,二进制数据Field或Parameter对象中。这一部分也是我们本系统的特色部分。7.3.1 显示图象函数代码Publi
35、c Sub ShowImage(Image1 As Image, _ Adodc1 As Adodc) Erase byteChunk() FieldSize = Adodc1.Recordset.Fields(2).ActualSize If FieldSize = 0 Then Image1.Picture = LoadPicture() Exit Sub End If 提供一个尚未使用的文件号 SourceFile = FreeFile 打开文件 Open TempFile For Binary Access Write As SourceFile 计算数据块 NumBlocks = F
36、ieldSize BlockSize LeftOver = FieldSize Mod BlockSize 得到剩余字节数 分块读取图像数据,并写入到文件中 If LeftOver 0 Then ReDim byteChunk(LeftOver) byteChunk() = Adodc1.Recordset.Fields(2).GetChunk(LeftOver) Put SourceFile, , byteChunk() End If For i = 1 To NumBlocks ReDim byteChunk(BlockSize) byteChunk() = Adodc1.Recordse
37、t.Fields(2).GetChunk(BlockSize) Put SourceFile, , byteChunk() Next i Close SourceFile 将文件装入到Image1控件中 Image1.Picture = LoadPicture(TempFile) 删除临时文件 Kill (TempFile)End Sub7.3.2 保存图象函数代码Public Sub SaveImage(ByVal ImageFile As String, _ Adodc1 As Adodc) If Adodc1.Recordset.BOF = True Or Adodc1.Recordse
38、t.EOF = True Then Exit Sub End If If ImageFile = Then Exit Sub End If 提供一个尚未使用的文件号 SourceFile = FreeFile 打开文件 Open ImageFile For Binary Access Read As SourceFile 得到文件长度 FileLength = LOF(SourceFile) 判断文件是否存在 If FileLength = 0 Then Close SourceFile MsgBox DiskFile & 无内容或不存在! Else NumBlocks = FileLengt
39、h BlockSize 得到数据块的个数 LeftOver = FileLength Mod BlockSize 得到剩余字节数 Adodc1.Recordset.Fields(2).Value = Null ReDim byteData(BlockSize) 重新定义数据块的大小 For i = 1 To NumBlocks Get SourceFile, , byteData() 读到内存块中 Adodc1.Recordset.Fields(2).AppendChunk byteData() 写入FLD Next i ReDim byteData(LeftOver) 重新定义数据块的大小
40、Get SourceFile, , byteData() 读到内存块中 Adodc1.Recordset.Fields(2).AppendChunk byteData() 写入FLD Close SourceFile 关闭源文件 Adodc1.Recordset.Update End IfEnd Sub8 小结在开发这个软件系统的漫长过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,在本次设计过程中,我采用循环测试法,力求在每个阶段结束之前通过严格技术审查,即每完成一个功能,就进行测试,尽可能早的发现并纠正差错,完成模块测试之后再进行系统测试. 在该设计中,我偏重考虑了当用户输入的信息出错时,系统就会出现提示,以便让用户知道出错的原因,并能及时做出修改,所以我站在用户的角度考虑,尽可能设想各种边界条件,如记录为空,输入为空,输入出错等,以此来发现错误,纠正错误,取得了一定的效果. 当然,该学生信息管理系统也存在一些不足之处.在进入成绩信息浏览窗体后,可看到增加记录,修改记录,查询记录是在一个窗口中进行操作,有些控件在执行一定操作时并不需要用到,此时应该使其变为灰色不可用状态.做到使数据安全的输入与存储.也让使用者能清楚的知道哪几个控件是可用的.哪些不必要用到,做到一目了然.可是由于技术原因,这个设想未能实现,原因找