基于Jsp和MySQL实现的简单选课系统

Carewhose

发布日期: 2021-04-05 09:40:48 浏览量: 699
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、需求说明

  • 网站的使用者:某学校的学生,老师和管理员使用

  • 网站的主要目的: 用于学生选课,以及老师和学生之间的交流

  • 网站的功能(根据不同的使用者设定的权限):如下表所示

使用者 权限
学生 选择课程;退出课程(在有效的退出时间内);修改个人信息(除学号);查看个人成绩
老师 创建,查看和修改课程信息;删除课程;从课程里增加和删除学生;给选课的学生成绩
管理员 创建用户(学生,老师,管理员);查看,修改用户个人信息;删除用户;删除留言簿的信息
学生,老师,管理员 改变自己的登陆密码,查看个人信息;进入留言簿
  • 网站创建内容
    • 设计,创建关系数据库
    • 根据管理员的权限完成网站功能
    • 根据老师的权限完成网站功能
    • 根据学生的权限完成网站功能
    • 设计网页
    • 整合各部分功能成一完整网站

二、系统实现说明

2.1 数据库说明

数据库表的ER图

数据库名是:JoyStudy。

userTB 是存放用户信息的

  • uID:该表的主键。是一个自动增加的int 型数据

  • userName:是用户名。就是登录,标示用户一个标示(其实这样说,别不准确,里面大多数是靠主键 uID 来唯一标示的)

  • password:是存储用户的密码(不过没有经过处理的原始数据,很不符号实际应用)

  • realName: 是存储用户的实际姓名。这个只是我模仿其他的一个属性

  • Email、sex:就是存储的用户Email 和 sex

  • 属性:type是代表用户的类型

    • 1 代表管理员
    • 2 代表老师
    • 3 代表学生

courseTB 存放课程信息

  • csID是主键, 是一个自动增加的int 型数据

  • csTeacher是引用userTB主键uID的外键

messageTB 存放留言信息

  • mgID是主键, 是一个自动增加的int 型数据

  • userID是引用userTB主键uID的外键

  • courseID是引用courseTB主键csID的外键

  • mgTitle、mgContent分别存放留言的标题和内容

注:这里需要说明一下,这里的逻辑:userID 是存放的留言者的uID,courseID是存放的本条留言所针对的课程。就是说一条留言针对一个课程!或者说,只能针对某科课程发布留言!

enrollmentTB 是存放选课信息的表

  • enID是主键, 是一个自动增加的int 型数据

  • enUserID是引用userTB主键uID的外键。即选课的学生

  • enCourseID是引用至courseTB主键csID的外键

  • enGrade存放成绩

注:JoyStudy文件夹下面的“joystudy.mer”是从MyEclipse里面导出来的数据库ER视图。但是在Eclipse中不能正常显示。

2.2 网页文件说明

  • 网站的唯一入口:index.jsp

  • 所有用户的密码是:123

  • 三类典型用户的用户名分别是

    • 管理员:adai
    • 老师: teacher
    • 学生:student

网页文件的命名都是“见文知意”。另外,文件我是按“权限”分类的,(公共的就放到顶层文件夹下。管理员用到的就放到“admin”文件夹下。依次类推。)就不过多解释了!

2.3 查询使用的SQL语句

这个作业,我做了四天。前两天是边学边做,就是把自己的理论实践一下!后两天,有前两天的感触和体会,所以实现了模型、视图、控制器的分离,感觉做的快多了!除了编程思路的提升之外,并没有学到什么东西!

但是感觉这几个SQL查询语句很经典!可以说是后两天工作的精华,所以也贴出来“显摆”一下。(我仔细排了一下序列,个人认为前三个做经典!)

查询没有选过的课程。选过之后的就不在这里显示了!(这个应该是最耗脑筋的一个查询语句了!)

  1. Select csName, realName, csID From courseTB, userTB Where csTeacher=uID And csID Not In (Select enCourseID From enrollmentTB Where enUserID=? )

查询自己选课的信息(所选课程,以及本课程相关的信息)(这个应该是最麻烦的SQL查询语句!我曾经在工具里测试了很多次才成功!)

  1. Select csName, teachTB.realName As tRealName, csID, enID From userTB usTB, userTB teachTB, courseTB, enrollmentTB Where usTB.uID=enUserID And encourseID=csID And csTeacher=teachTB.uID And usTB.uID=?

根据老师uID的查询选这个老师课程的学生信息(个人感觉这个也不错,用到了嵌套查询。)

  1. Select userName, realName, csName, enGrade, enID From enrollmentTB, userTB, courseTB Where enCourseID=csID And enUserID=uID And csID in (Select csID From courseTB Where csTeacher=?)

查询学生课程成绩

  1. Select realName, csName, enGrade, enID From enrollmentTB, userTB, courseTB Where enCourseID=csID And enUserID=uID And enUserID=?

查询某老师所讲授的课程

  1. select * from coursetb where csTeacher=?

查询所有信息

  1. Select csName, userName, mgTitle, mgContent, mgID From userTB, courseTB, messageTB Where uID=userID And csID=courseID

获取所有留言

  1. Select csName, userName, mgTitle, mgContent, mgID From userTB, courseTB, messageTB Where uID=userID And csID=courseID

获取关于某个课程的留言

  1. Select csName, realName, mgTitle, mgContent From userTB, courseTB, messageTB Where csID=courseID And userID=uID And csID=?

三、程序截图

3.1 数据库

3.2 公共界面

修改个人信息

针对课程添加留言

查看课程留言

3.3 学生界面

去选课

查看成绩

3.4 老师界面

创建课程

老师本人讲授课程

打分

3.5 管理员界面

用户信息

所有课程信息

所有留言信息

上传的附件 cloud_download 基于Jsp和MySQL实现的简单选课系统.7z ( 1.89mb, 2次下载 )
error_outline 下载需要10点积分

发送私信

你总是喊着努力努力,可是又坚持了多久

13
文章数
14
评论数
最近文章
eject