资源描述
重庆交通大学信息科学和工程学院
设计性试验汇报
专 业:计算机科学和技术(软件开发)
班 级: 级 软件 2 班
学 号:
姓 名: 刘 克
课 程 名 称: 《数据库原理》
试验项目性质: 设计性试验
试验所属课程: 数据库原理
试验室(中心): 软件和通信试验室
指 导 教 师 : 王 家 伟
试验完成时间: 年 12 月 6 日
此页必需保留
评分标准及成绩
评分细则
评分
汇报表述清楚程度和完整性(20分)
概念模型合理性(20分)
逻辑模型合理性(20分)
功效合理性(20分)
功效完善性(10分)
个人体会(10分)
总成绩
老师署名
日期
总体试验要求:
1 排版要求
标题用黑体四号,段前、段后距6磅(或0.3行);正文用小四号宋体,行距为1.5倍行距。汇报必需生成目录,目录必需带页码。
2 设计汇报需要打印,装订,1份/人,理论课考试时交设计汇报。
3 各班学习委员搜集每位同学做结果,包含数据库备份、程序源代码和运行配置说明,并将每位同学结果拷贝到软件和通信试验室老师机上。
目 录
1 需求分析 4
1.1 开发背景 4
1.2 软件适用对象 4
1.3 系统功效 4
1.4 运行环境 7
1.5 开发软件 7
2 系统具体分析 7
2.1 数据库设计 7
2.2 界面设计 12
2.3 文件组织结构 26
3 系统测试 26
3.1 系统测试 26
3.2 测试结果 27
4 试验体会 27
1.需求分析
1.1开发背景
依据对当今高校深入调查可知,因为高校人数庞大,老师人数、学生人数不停增加。在高校不停发展同时,教学管理采取传统人工管理方法暴露了部分问题。比如参与管理人员数量庞大,关系混乱而又复杂;通常情况下,纸质数据进行整理以后存档,不过纸质数据极易受损,且保留需花费大量人力物力,时间一久,便会造成数据丢失,资料损伤,管理费事费力等多方面问题。
在这么大背景下,学生管理系统开发就是在于提升学生管理工作效率,加强对学生管理,全方面实施计算机管理。使学生管理工作规范化,系统化,程序化,避免学生管理随意性,提升信息处理速度和正确性,能够立即、正确、有效添加,查询和修改学生各方面情况。
1.2软件适用对象
高校管理员及全部师生。
1.3系统功效
1.3.1关键功效
(1) 添加学生、老师信息,并对信息进行管理。
(2) 添加学院、专业、课程、班级信息,并对添加信息进行管理。
(3) 添加教学计划,并对教学计划信息进行管理。
(4) 添加学生简历或社会关系,并对此信息进行管理。
(5) 添加学生奖励或处罚信息,并对此信息进行管理。
(6) 学生能够选课。
(7) 老师能够添加自己所教课程学生成绩,并对成绩进行管理。
(8) 已经有学生老师能够注册系统用户。系统管理员能够对用户进行管理。
1.3.2各用户功效权限
1.3.2.1系统管理员
(1) 添加学生、老师信息,并对信息进行管理。
(2) 添加学院、专业、课程、班级信息,并对添加信息进行管理。
(3) 添加教学计划,并对教学计划信息进行管理。
(4) 添加学生简历或社会关系,并对此信息进行管理。
(5) 添加学生奖励或处罚信息,并对此信息进行管理。
(6) 管理用户,能够查询或删除用户信息。
管理员界面以下:
1.3.2.2 学生
系统管理员假如录入了某学生信息以后,这个学生才能够进行注册用户,而且用户名就是自己学号,密码由自己设置。含有以下功效:
(1) 查看个人信息。
(2) 查看个人简历、社会关系、教学计划、个人课表,个人奖惩等。
(3) 选课。
(4) 查询成绩。
学生界面以下:
1.3.2.3老师
系统管理员添加了某个老师信息以后,这个老师才能够注册用户。其中用户号是自己老师号,密码自己设置。注册成功以后才能够登录。含有以下功效
(1) 查询个人信息。
(2) 查看教学计划。
(3) 查看个人课表。
(4) 录入学生成绩。
(5) 学生成绩管理。如(修改、删除等)
老师界面以下:
1.4运行环境
本系统运行环境:
操作系统:Windows 7/8/8.1/10
硬件平台:500MHz以上处理器,256M以上内存。
数据库服务器:Microsoft SQL Server本。
1.5开发软件
本系统采取Microsoft Visual Studio 集成开发系统作为前台开发Windows窗体控制平台,以Power Designer 15作为数据库模型设计工具,采取SQL Server作为后台数据库管理程序。
2.系统具体设计
2.1 数据库设计
2.1.1 数据库E-R模型
(1)实体列表
实体
描述
学院
包含学院编号、学院名称
专业
包含专业编号、专业名称
班级
包含班级编号、班级名称
学生
学校里全部学生信息,包含学号,姓名基础信息。
老师
学校里全部老师信息,包含老师号和姓名等。
课程
每个学院开设全部课程,包含课程号、课程名。
成绩
每个学生各科成绩,包含成绩号、考试类型、分数等。
奖励
学生在校期间奖励信息。
处罚
学生在校期间处罚信息。
简历
学生个人简历,包含实习情况等。
社会关系
学生社会关系,即家人部分信息。
教学计划
包含学校各学院各专业在哪学期开设了什么样课程等
2.1.2 数据库概念模型
2.1.3 数据库概念模型
2.1.4 数据字典
(1)学生信息表StudentInfo
字段名称
说明
数据类型
字段大小
stuID
学号
varchar
12
name
姓名
char
10
CollegeID
学院号
varchar
12
MajorID
专业号
varchar
12
ResumeID
简历号
varchar
12
SocialID
社会关系号
varchar
12
ClassID
班级号
varchar
12
sex
性别
char
12
birthdate
出生日期
datetime
Grade
年级
varchar
12
photo
照片
image
address
籍贯
varchar
20
(2)College学院
列名
说明
数据类型
字段大小
CollegeID
学院号
varchar
12
ColegeName
学院名
char
20
(3)Major专业
列名
说明
数据类型
字段大小
MajorID
专业号
varchar
12
MajorName
专业名
char
20
CollegeID
学院号
varchar
12
(4)Class班级
列名
说明
数据类型
字段大小
ClassID
班级号
varchar
12
ClassName
班级名
varchar
12
MajorID
专业号
varchar
12
(5) Course课程
列名
说明
数据类型
字段大小
CourseID
学院号
varchar
12
CourseName
学院名
char
20
Credit
学分
float
Studytime
课时
int
(6)Resume学生简历
列名
说明
数据类型
字段大小
ResumeID
简历号
varchar
12
stuID
学名
varchar
12
telephone
电话
varchar
12
email
邮箱
varchar
20
fixedAddress
固定地址
varchar
50
socialPractice
社会实习
varchar
100
Politicsstatus
政治状态
varchar
10
(7)SocialRelations社会关系
列名
说明
数据类型
字段大小
SocialID
社会关系号
varchar
12
stuID
学号
varchar
12
FatherName
父亲姓名
varchar
10
MotherName
母亲姓名
varchar
10
BackGround
背景
varchar
100
linkman
联络人
varchar
11
(8)StuPunish学生处罚
列名
说明
数据类型
字段大小
PunishID
处罚号
varchar
12
stuID
学号
varchar
12
PunishTime
处罚时间
datetime
PunishReason
处罚原因
varchar
100
PunishMeasure
处罚方法
varchar
50
(9)StuReward学生奖励
列名
说明
数据类型
字段大小
RewardID
奖励号
varchar
12
stuID
学号
varchar
12
RewardTime
奖励时间
datetime
RewardReason
奖励原因
varchar
100
RewardMeasure
奖励方法
varchar
50
(10)Teacher老师
列名
说明
数据类型
字段大小
TeacherID
老师号
varchar
12
CollegeID
学院号
varchar
12
TeachName
老师姓名
varchar(20)
Title
职称
varchar
10
sex
性别
varchar
2
(11)ChooseClass学生选课
列名
说明
数据类型
字段大小
CourseID
课程号
varchar
12
stuID
学号
varchar
12
(12)Grade成绩
列名
说明
数据类型
字段大小
GradeID
老师号
varchar
12
CourseID
学院号
varchar
12
stuID
学号
varchar
12
TeacherID
老师号
varchar
12
ScoreType
分数类型
varchar
4
Score
分数
varchar
4
(13)TeachPlan教学计划
列名
说明
数据类型
字段大小
TeachID
老师号
varchar
12
CourseID
学院号
varchar
12
MajorID
学号
varchar
12
ClassID
老师号
varchar
12
TeacherID
分数类型
varchar
4
Semster
分数
varchar
4
Grade
年级
varchar
12
Classtime
上课时间
varchar
30
ClassPlace
上课地点
varchar
30
StartTime
开始时间
datetime
EndTime
结束时间
datetime
(14)UserInfo用户
列名
说明
数据类型
字段大小
UserID
老师号
varchar
12
UserName
学院号
varchar
12
password
老师姓名
varchar(20)
PersonIdentity
职称
varchar
10
2.1.5 数据表
2.2界面设计
2.2.1登录界面
(1)登录主界面
用户需要输入用户名、密码、验证码才能够登录进去,其中验证码不区分大小写,假如看不清验证码还能够点击验证码更换其它验证码。点击“注册”能够进入注册界面。
(2)注册界面
用户需要输入完整信息才能够注册成功,其中两次密码要填写一致。个人编号必需是系统管理员已经注册学生编号或老师号。
2.2.2管理员界面
(1)管理员主界面
这是管理员主界面,界面上有录入多种信息按钮。假如要录入某信息点击相关按钮即可。还有多种管理按钮,假如要管理某信息,点击相关按钮即可。
(2)录入师生信息界面
录入学生信息界面如上,其中院系编号,专业编号,班级编号不能输入,因为打开界面时,已经有院系,专业,班级等信息已经绑定在这些comboBox之中。其中学号也不能输入,因为学号也是自动生成,生成规则为“院系编号+专业编号+班级编号+个人序号”。点击“选择图片”能够从电脑中选择学生图片录入数据库。
院系编号不能输入,只能从绑定数据中选择。老师编号是自动生成,生成规则为“院系编号+个人序号”。
(3)录入学院专业课程班级信息
院系编号自动生成,院系名称不能反复,假如反复则会报错。
专业编号自动生成,专业名称不能反复。
课程编号自动生成
班级编号自动生成
(3)录入学生简历或社会关系界面
录入已录入学生简历信息,简历编号自动生成。其中“邮箱”和“电话”必需根据正确格式来写,不然会报错,因为我使用了正则表示式来验证输入格式。
社会关系号自动生成,联络人电话必需根据正确格式来写,不然会提醒错误。
各类信息不可为空。
(4)录入学生奖惩
录入学生奖惩,其中选择奖惩类型和学号以后,自动生成奖惩号。
(5)师生信息管理
选择“老师”或“学生”以后,点击“查看全部”会显示对应全部信息。假如是学生信息,点击某一条统计,就会在左下角控件中显示她所对应图片。点击“添加”会弹出录入师生信息窗体。选择某一条统计,点击“删除”,会弹出“确定删除?”提醒窗口,假如选择“是”就会删除对应统计。在datagridview里面修改某一条统计信息以后,点击“修改”就会弹出确定修改窗口。假如选择确定就会修改信息。其中学号或老师编号不可修改。在文本框中输入学生编号或老师编号以后点击“查找”就能够查询出对应信息。
(6)学院专业课程班级等管理
此界面能够管理“课程”,“专业”,“学院”,“班级”,“学生简历”,“学生社会关系”,“学生奖励”,“学生处罚”等多个信息。此功效和师生信息管理类似在此不做赘述。
(7)用户管理
此界面能够管理用户信息,其中点击“查看全部”就能够查看全部用户信息,点击“删除”就能够删除选择某一条选中信息。在文本框之中输入编号能够查询对应用户信息。
2.2.3老师界面
(1)老师主界面
老师界面如上所表示,用户一旦登录进来,在下面状态栏最右边就会显示目前用户用户号和用户名。此时这个用户只能够操作和自己相关信息。如查看自己信息,自己课表,录入自己所讲课程学生成绩,对自己已经添加成绩信息进行管理。
(2)查看个人信息
在这个界面能够查看个人信息,个人课表,教学计划等信息
(3)录入学生成绩
在这里每个老师只能录入自己所讲课程而且选择了这门课程学生成绩。
(4)学生成绩管理
在这个界面上老师能够对自己录入学生成绩进行增删改查操作。
2.2.4学生界面
(1)学生主界面
学生管理主界面,每个学生只能够查找自己个人信息,如基础信息、自己选课成绩、个人奖惩等。每个学生能够进行选课。
(2)学生选课
界面左侧是现在已经有课程,选中若干个以后点击“移入”以后就能够将选中项移到右侧下方“要选课程”框之中。假如哪门课不想选了,选中之中点击“移出”就能够就能够删除。在右侧上方是已经选择课程编号。等选择完成以后,点击“确定”以后就能够将选择课程信息录入数据库之中。
(3)查询个人信息
点击“个人信息”就能够显示个人信息。假如有图片就会在左侧显示图片。在此界面上还能够查询个人课表、个人处罚、个人奖励、个人简历、社会关系等。
2.3 文件组织结构
3、系统测试
系统测试范围是整个系统,具体操作时候能够进行分模块分阶段进行,并在系统完成以后进行总体测试。系统测试目标是验证系统整体功效是否符适用户需求、整体结构是否符合系统规范定义。而且在系统测试过程中,找出产生冲突矛盾地方,进行对应调试,找出问题原因和位置,从而进行修改完善,使得最终方案能够顺利进行满足用户需求。
3.1 模块测试
模块测试由老师进行,在此不做赘述。
3.2 测试结果
经过我测试,各项功效基础完成,数据库设计能够满足系统需求,数据处理正常。我在程序中加入了大量容错处理,能够接收用户大部分不规范操作。不过因为时间等各方面原因所限,对于部分不规范操作容错处理还还未完成。
4、试验体会
这个试验我前前后后大约花了两周时间来完成,其中经历了比较多修改时间。现在程序最终完成了,不过我还是不够满意,关键是这个程序还是只能作为一个作业,而不能作为一个真正商业化产品来使用。
我记得在着手做这个试验时候,我还有个想法,尽可能作出一个能够投入使用程序出来,不过在我做过程中发觉这实在太难了,因为要考虑细节问题太多了,一个真正教务系统要完成功效也实在太多了,凭自己力量在短时间内根本是完不成。所以就忽略了很多细节问题,简化了整个系统,所以做到最终,即使建立了18个窗体,建立了14张表,写了余行代码,不过我认为这还只是一个作业,离一个商业化产品还差得远。
即使如此,不过经过做这个试验,我收获还是很大。首先,对于数据库设计有了比较深刻了解,因为有句话叫做学以致用,即使我们之前听了很多数据库课,可是并没有真正去做数据库设计,所以对于数据库设计要考虑东西了解不多。做这次试验是自己设计概念模型,在设计过程中发觉设计一个数据库还是很麻烦,要考虑细节问题很多。这次试验因为是第一次设计概念模型,没有相关经验,所以在设计逻辑上可能还有很多不合适地方。不过对于设计数据库基础步骤还是有了比较深刻了解。
其次是对于C#编程有了更深了解,这次试验我敲了余行代码,能够说对于编程能力是一个锻炼,比如对于数据库操作愈加得心应手了,对于界面布局和容错处理做得也愈加好了。对于面向对象也了解地更深刻了,比如之前写程序时没什么面向对象概念,代码冗余度很高,现在我一旦发现代码反复较多,我全部会将其写着公共类之中作为一个公共函数,这么代码就比较简练了。
附页:
(1) 数据库创建代码(部分)
go
/*==============================================================*/
/* Table: College */
/*==============================================================*/
create table College (
CollegeID varchar(12) not null,
CollegeName char(20) null,
constraint PK_COLLEGE primary key nonclustered (CollegeID)
)
go
/*==============================================================*/
/* Table: Course */
/*==============================================================*/
create table Course (
ClassID varchar(12) not null,
ClassName char(20) null,
Credit float null,
StudyTime int null,
constraint PK_COURSE primary key nonclustered (ClassID)
)
go
/*==============================================================*/
/* Table: Grade */
/*==============================================================*/
create table Grade (
GradeID varchar(12) not null,
ClassID varchar(12) null,
ID varchar(12) null,
CourseID varchar(12) null,
stuID varchar(12) null,
TeacherID varchar(12) null,
ScoreType varchar(12) null,
Score varchar(4) null,
constraint PK_GRADE primary key nonclustered (GradeID)
)
go
/*==============================================================*/
/* Table: Major */
/*==============================================================*/
create table Major (
MajorID varchar(12) not null,
MajorName char(30) null,
constraint PK_MAJOR primary key nonclustered (MajorID)
)
go
/*==============================================================*/
/* Table: Resume */
/*==============================================================*/
create table Resume (
ResumeID varchar(12) not null,
ID varchar(12) null,
MainReward varchar(100) null,
MainPunish varchar(100) null,
FixedAddress varchar(50) null,
SocialPractice varchar(200) null,
PoliticsStatus varchar(10) null,
constraint PK_RESUME primary key nonclustered (ResumeID)
)
go
/*==============================================================*/
/* Table: SocialRelations */
/*==============================================================*/
create table SocialRelations (
SocialID varchar(12) not null,
ID varchar(12) null,
FatherName varchar(10) null,
MotherName varchar(10) null,
Background varchar(100) null,
Linkman bigint null,
constraint PK_SOCIALRELATIONS primary key nonclustered (SocialID)
)
go
/*==============================================================*/
/* Table: StuPunish */
/*==============================================================*/
create table StuPunish (
PunishID varchar(12) not null,
ID varchar(12) null,
PunishTime datetime null,
PunishReason char(100) null,
PunishMeasure varchar(100) null,
constraint PK_STUPUNISH primary key nonclustered (PunishID)
)
go
/*==============================================================*/
/* Table: StuReward */
/*==============================================================*/
create table StuReward (
RewardID varchar(12) not null,
ID varchar(12) null,
RewardTime datetime null,
RewardReason char(100) null,
RewardMeasure varchar(100) null,
constraint PK_STUREWARD primary key nonclustered (RewardID)
)
go
/*==============================================================*/
/* Table: Study */
/*==============================================================*/
create table Study (
ClassID varchar(12) not null,
ID varchar(12) not null,
constraint PK_STUDY primary key nonclustered (ClassID, ID)
)
go
/*==============================================================*/
/* Table: TeachPlan */
/*==============================================================*/
create table TeachPlan (
TeachID varchar(12) not null,
ClassID varchar(12) null,
MajorID varchar(12) null,
TeacherID varchar(12) null,
班级_ClassID varchar(12) null,
Semster varchar(8) null,
Grade varchar(8) null,
Classtime datetime null,
ClassPlace char(10) null,
StartTime datetime null,
EndTime datetime null,
constraint PK_TEACHPLAN primary key nonclustered (TeachID)
)
go
/*==============================================================*/
/* Table: Teacher */
/*==============================================================*/
create table Teacher (
TeacherID varchar(12) not null,
CollegeID varchar(12) null,
TeachName char(16) null,
Tiltle varchar(10) null,
sex char(2) null,
age int null,
constraint PK_TEACHER primary key nonclustered (TeacherID)
)
go
/*==============================================================*/
/* Table: 班级 */
/*==============================================================*/
create table 班级 (
ClassID varchar(12) not null,
MajorID varchar(12) null,
ClassName varchar(12) null,
constraint PK_班级 primary key nonclustered (ClassID)
)
go
/*==============================================================*/
/* Table: 用户
展开阅读全文