一、设计内容与设计要求
1.课程设计目的:
复习、巩固Java语言的基础知识,进一步加深对Java可视化程序设计的理解和掌握;课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;为后继课程的实验以及课程设计打下较扎实的基础。
2.设计要求:
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的中型问题,为将来开发软件积累一些典型的案例处理经验。具体要求如下:
(1)设计课题题目: 实验选课系统
⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求;输入输出的要求。②完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。③完成系统详细设计:包括采用java语言定义相关的数据类型;写出各模块的算法;画出函数的调用关系图。④调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。⑤关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
摘 要
随着计算机的普及,计算机技术有快速的发展,计算机在各行各业的应用也越来越广泛,为了满足时代的需要,我们开发了许多与实际相应的应用系统,实验选课系统就是一个很好的例子。实验选课系统的用处非常大,它是记录学生选课以及教师等相关信息的软件,应用不同的用户权限加以控制,解决了数据的安全性问题。使用简单、方便,对学校的选课有很大的帮助。
关键词:数据库应用;学生实验选课;权限;数据库
目录
引 言. 1
1.需求分析. 2
1.1系统分析. 2
1.2用户需求. 2
2 概要设计. 3
2.1系统流程图. 3
2.2系统功能模块设计. 3
3 数据库设计. 4
3.1.概念模型设计. 4
3.2逻辑结构设计. 6
3.3 物理结构设计. 6
4.程序模块设计. 9
4.1 开发环境及数据库连接. 9
4.2 学生模块设计. 9
4.3教师模块设计. 10
4.4 管理员模块设计. 11
5.系统测试. 12
5.1测试环境. 12
结 论. 21
参考文献. 22
引 言
数据结构在计算机应用中的作用非常大,程序=数据结构+算法,算法的实现也离不开数据结构,一个好的算法必须要有合适的数据结构加以实现,才能保证算法的优越性。课程设计实际上就是程序的集合,是数据结构和算法方面的综合应用,课程设计不仅仅是考验我们的编程,对语言的学习能力,更主要的是培养我们对系统软件开发的方法的学习和团队合作能力的考验。当然,课程设计的意义并不是完全局限于此,每个人在课程设计中都可以得到不同的锻炼。本次课程设计的题目是实验选课系统。
主要任务:1、实验选课系统分为教师,学生及系统管理员三类用户,学生的功能包括选课,查寻实验信息等,教师的功能包括考勤,学生实验成绩录入,查寻实验信息等。管理员的功能包括新建教师,学生账户,设定实验课程信息(设定实验时间,地点,任课教师)。2、管理员可对教师,学生及实验课程信息进行修改;教师可对任课的考勤,成绩进行修改;学生可以对自己选修的课程重选,退选。3、管理员可删除教师,学生及实验课程信息。4、教师可查询所任课程的学生名单,实验时间,考勤及实验成绩,并可按成绩分数段进行统计;学生可查寻所学课程的实验时间,教师名单;管理员具有全系统的查寻功能。
本次设计采用了SQL Sever2008和VS2010等软件实现系统。
1 需求分析
系统用户分为三类:学生、教师、管理员;
学生有选课、退选、查询成绩和课程信息、教师名单等功能。
教师有添加成绩,查询学生名单和课程信息、统计、考勤等功能。
管理员具有全系统的使用功能。
1.1 系统分析
实验选课系统针对不同的用户,对系统有着不同的使用权限,因此要求系统有密码登录功能。
1.2 用户需求
l 实验选课系统分为教师,学生及系统管理员三类用户,学生的功能包括选课,查寻实验信息等,教师的功能包括考勤,学生实验成绩录入,查寻实验信息等。管理员的功能包括新建教师,学生账户,设定实验课程信息(设定实验时间,地点,任课教师)。
l 管理员可对教师,学生及实验课程信息进行修改;教师可对任课的考勤,成绩进行修改;学生可以对自己选修的课程重选,退选。
l 管理员可删除教师,学生及实验课程信息。
l 教师可查询所任课程的学生名单,实验时间,考勤及实验成绩,并可按成绩分数段进行统计;学生可查寻所学课程的实验时间,教师名单;管理员具有全系统的查寻功
2 概要设计
2.1系统流程图
2-1 系统流程图
2.2 系统功能模块设计
系统主要功能如下所示:
图2-2 系统功能模块
2.3 系统总体设计
实验选课系统分为教师,学生管理员三个功能模块。
学生模块:选课、查寻实验信息、教师名单等功能。
教师模块:考勤、成绩统计、学生实验成绩录入、查寻实验信息、所任课程的学生名单等功能。
管理员模块:具有全系统的查询、更新功能。
3 数据库设计
3.1 概念模型设计
3.1.1 设计原理
通过对系统的总体结构的把握,采用自顶向下和自底向上像结合的混合策略,先采用自顶下策略设计出全局概念结构,再使用自底向上的方法设计出各局部概念结构。
3.1.2 概念模型
经过对实验选课系统所涉及到的数据进行分析,得到如下的实体:
(1) 学生:属性包括学号、姓名、密码。
(2) 课程:属性包括课程号、课程名称、课程信息(包括上课时间、上课地点、上课教师)。
(3) 教师:职工号、教师姓名、密码。
(4) 管理员:管理员编号、管理员姓名、密码。
联系有:
(1) 考勤:表示教师、实验课程、学生之间的关系。它有属性:状态
(2) 选课:表示学生与实验课程之间的关系。它有属性:成绩。
所设计的概念模型(E-R图)
图3-1 系统E-R图
图 3-2 管理员分E-R图
图3-3 学生分E-R图
图 3-4 教师分E-R图
图 3-5 实验课程分E-R图
3.2 逻辑结构设计
3.2.1 将实体转换为关系模式
S(Sno,Sname,password)
C(Cno,Cname,Ctine,Cplace,Tno)
T(Tno,Tname,password)
A(Ano,Aname,password)
3.2.2将联系转换为关系模式
SC(Sno,Cno,grade)
TCS(Tno,Cno,Sno,status)
3.3 物理结构设计
3.3.1 基本表设计
1、学生表:
表3-1 职工信息表
字段名 |
字段描述 |
字段类型 |
备注 |
Sno |
学号 |
Char(10) |
主键 |
Sname |
姓名 |
Char(10) |
无 |
password |
密码 |
Char(10) |
无 |
创建学生表的SQL语句如下:
Create table S
(
Sno char(10) primary key,
Sname char(10),
Password char(10)
);
2、教师表:
表3-2 教师信息表
字段名 |
字段描述 |
字段类型 |
备注 |
Tno |
职工号 |
Char(10) |
主键 |
Tname |
教师姓名 |
Char(10) |
无 |
password |
密码 |
Char(10) |
无 |
创建教师表的SQL语句如下:
Create table T
(
Tno char(10) primary key,
Tname char(10),
Password char(10)
);
3、管理员表:
表3-3 管理员信息表
字段名 |
字段描述 |
字段类型 |
备注 |
Ano |
管理员编号 |
Char(10) |
主键 |
Aname |
姓名 |
Char(10) |
无 |
password |
密码 |
Char(10) |
无 |
创建管理员表的SQL语句如下:
Create table A
(
Ano char(10) primary key,
Aname char(10),
Password char(10)
);
4、实验课程表:
表3-4 实验课程信息表
字段名 |
字段描述 |
字段类型 |
备注 |
Cno |
课程号 |
Char(10) |
主键 |
Cname |
课程名称 |
Char(20) |
无 |
Ctime |
上课时间 |
Char(20) |
无 |
Cplace |
上课地点 |
Char(10) |
无 |
Tno |
任课教师 |
Char(10) |
T表外键 |
创建实验课程表的SQL语句如下:
Create table C
(
Cno char(10) primary key,
Cname char(20),
Ctime char(20),
Cplace char(10),
Tno char(10) foreign key references T(Tno)
);
5、学生选课表:
表3-5 学生选课信息表
字段名 |
字段描述 |
字段类型 |
备注 |
Sno |
学号 |
Char(10) |
主键 |
Cno |
课程号 |
Char(10) |
主键 |
grade |
成绩 |
Int |
无 |
创建学生选课表的SQL语句如下:
Create table SC
(
Sno char(10) foreign key references S(Sno),
Cno char(10) foreign key references S(Sno),
grade int,
primary key(Sno,Cno)
);
6、考勤表:
表3-6 考勤信息表
字段名 |
字段描述 |
字段类型 |
备注 |
Tno |
职工号 |
Char(10) |
主键 |
Cno |
课程号 |
Char(20) |
主键 |
Sno |
学号 |
Char(20) |
主键 |
status |
状态 |
Char(10) |
无 |
创建考勤表的SQL语句如下:
Create table TCS
(
Tno char(10) foreign key references T(Tno),
Cno char(10) foreign key references S(Sno),
Sno char(10) foreign key references S(Sno),
status char(10),
primary key(Tno,Cno,Sno)
);
4 程序模块设计
4.1 开发环境及数据库连接
本系统使用VS2010编程环境编写,使用SQL Sever (SQLEXPRESS)数据库,基于JFrame窗体设计,采用ADO.NET数据库访问技术。
4.2 学生模块设计
4.2.1设计思路
根据任务书的内容,明确学生模块需要实现的功能,根据功能使用不同的方法设计不同的子模块。
4.2.2实现方法(以程序流程图或伪码表示 )
学生模块代码:
private void 学生选课ToolStripMenuItem_Click(object sender, EventArgs e)
{
new Sxuanke().Show();
}
private void 已选课程ToolStripMenuItem_Click(object sender, EventArgs e)
{
new Syixuan().Show();
}
private void 查询实验信息ToolStripMenuItem_Click(object sender, EventArgs e)
{
new selectshiyan().Show();
}
private void 教师名单ToolStripMenuItem_Click(object sender, EventArgs e)
{
new Tmingdan().Show();
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
new login().Show();
}
4.3教师模块设计
4.3.1设计思路
根据任务书的内容,明确教师模块需要实现的功能,根据功能使用不同的方法设计不同的子模块。
4.2.2实现方法(以程序流程图或伪码表示 )
private void 录入成绩ToolStripMenuItem_Click(object sender, EventArgs e)
{
new gradeAdd().Show();
}
private void 查询实验课程信息ToolStripMenuItem_Click(object sender, EventArgs e)
{
new selectshiyan().Show();
}
private void 学生名单ToolStripMenuItem_Click(object sender, EventArgs e)
{
new xueshengmingdan().Show();
}
private void 考勤ToolStripMenuItem_Click(object sender, EventArgs e)
{
new kaoqing().Show();
}
private void 统计ToolStripMenuItem_Click(object sender, EventArgs e)
{
new tongji().Show();
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
new login().Show();
}
4.4 管理员模块设计
4.4.1设计思路
根据任务书的内容,明确管理员模块需要实现的功能,根据功能使用不同的方法设计不同的子模块。
4.2.2实现方法(以程序流程图或伪码表示 )
private void 添加学生用户ToolStripMenuItem_Click(object sender, EventArgs e)
{
new AddS().Show();
}
private void 添加教师用户ToolStripMenuItem_Click(object sender, EventArgs e)
{
new AddT().Show();
}
private void 添加实验课程信息ToolStripMenuItem_Click(object sender, EventArgs e)
{
new AddC().Show();
}
private void 学生信息ToolStripMenuItem_Click(object sender, EventArgs e)
{
new selectS().Show();
}
private void 教师信息ToolStripMenuItem_Click(object sender, EventArgs e)
{
new selectT().Show();
}
private void 实验课程信息ToolStripMenuItem_Click(object sender, EventArgs e)
{
new selectC().Show();
}
private void 学生选课信息ToolStripMenuItem_Click(object sender, EventArgs e)
{
new selectSC().Show();
}
private void 考勤信息ToolStripMenuItem_Click(object sender, EventArgs e)
{
new selectTCS().Show();
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
new login().Show();
}
5.系统测试
5.1测试环境
系统测试的时候主要是黑盒测试,进行功能的验证。
工具:Windows 10 、VS2010、SQL Sever
5.2 测试用例及结果
5.2.1 界面测试
测试界面是否整洁美观,人机对话是否友好,检查所有的页面是否能够正确的显示,每个页面的风格是否一致,界面是否有错别字,页面每一个链接是否有对应的界面,页面控件和操作按钮的位置是否合理,界面中的下拉列表的值是否正确,是否有重复的值。
界面测试结果,界面整洁美观,界面友好,界面风格一致,无错别字,控件按钮位置合适易于操作,输入框、下拉列表等显示正确。
5.2.2功能测试
1、登录测试
图5-1管理员登录测试1
图5-2登录失败测试
学生登录测试
查询结果
结 论
通过本次数据库课程设计,对数据库的使用有了更深的了解,对于数据库的设计过程和方法有了更全面的认识。当然,本次课程设计使用的是数据库语言,对这门语言也有了初步的认识。在完成系统的过程中,让我认识到了自己的不足,自己在项目综合实训方面还比较欠缺。本次课程设计完成了任务书的全部内容,系统的详细设计还有欠缺,系统界面还有待完善。对数据库安全的方面了解甚少,以至于不知道怎样去维护,在数据库的设计方面花了很多时间,但是,有些问题还没有考虑进去。
参考文献
[1]梁勇JAVA语言程序设计(基础篇)第十版,机械工业出版社
[2]Bain T. 《SQL server 2008数据仓库与Analysis Services》. 中国电出版社
[3]周龙骧.《数据库管理系统实现技术》.中国地质大学出版社