数据库课程设计报告

发布时间 2023-05-28 14:54:00作者: gjkt_2001

一、概述

1.    项目背景

学生成绩管理系统是学校管理的重要工具,是学校不可或缺的一部分。随着在校人数的不断增加,教务系统的数量也不断的上涨。学校工作繁杂,资料众多,人工管理信息的难度也越来越大,显然是不能满足实际的需要,效率也是很低的。并且这种传统的方式存在着众多的弊端,如:保密性差,查询不便,效率低,很难维护和更新等。然而,本系统针对以上的缺点能够极大的提高学生信息管理的效率,也是科学化、正规化的管理,与世界接轨的重要条件。所以如何自动高效地管理信息是这些年来许多人所研究的。

2.    选题理由

随着这些年电脑计算机的速度发生大量的提高,成本更远远下降,IT互联网大众趋势得以发展,我们使用电脑的高效率才使处理数据信息成为可能。学生成绩管理系统的出现,正是管理人员与信息数据,计算机与人类进入互动时代的体现。友好的人机交互模式,清晰简明的图形界面,高效安全的操作使得我们对成千上万的信息的管理得心入手。使用JDBC在Java代码中操作Mysql中的数据,制作了一个简易的学生成绩管理系统,系统拥有用户登录、注册,查看学生基本信息,添加学生基本信息等功能,通过JDBC可以向数据库中添加,删除,修改,查询数据,实现基本功能。通过这个系统,可以做到信息的规范处理,科学统计和快速的查询,从而减少管理方面的工作量。毋庸置疑,切实有效的把计算机管理引入学校教务管理中,对于促进学校管理制度,提高学校教学质量与办学水平有着显著意义。

3.    目前条件

eclipse(2021-12版)、JavaSE-1.8、Mysql、Navicat Premium 12(12.1.22版)、JDBC。

二、系统需求描述

1.      需求分析

学生信息的基本管理:学号、姓名、性别、专业、年级等。

学生成绩信息的基本管理:包括学号、课程编号、课程名字、分数等。

课程信息的基本管理:包括课程编号、课程名称、任课教师等。

 

教师对功能的需求:

具有基础的账号系统,可以对学生的基本信息,考试成绩,课程信息进行统一管理,细分如下:

       有关学生信息的浏览,学生信息的添加、修改和删除

       有关学生的成绩信息的浏览,学生成绩的添加、修改和删除

       有关学校的基本课程的浏览,学校课程的添加、删除

 

学生对功能的需求:

具有基础的账号系统,可以利用此系统进行与自己有关的信息查询与输入,细分如下:

       浏览课程信息

       浏览考试成绩

       浏览课程信息

2.      数据流图

3.      数据字典

数据结构:student

描述:学生信息的基本表

定义:

student = ID + name + sex +major + grade

ID={限整数型}

name={限10个字符以内}

sex={限3个字符以内}

major={限12个字符以内}

grade={限4个字符以内}

数据结构:mark

描述:学生成绩的基本信息表

定义:

mark = ID + Knumber + Kname + result

Knumber={限整数型}

Kname={限10个字符以内}

result={限实数型}

数据结构:kmark

描述:学校课程信息表

定义:

Kmark = Knumber + Kname + name

name={限10个字符以内}

数据结构:register

描述:登录用户信息表

定义:

register = identity + user + password + id

user={限12个字符以内}

password={限12个字符以内}

三、 概要结构设计  

1.      E-R图设计

 

四、逻辑结构设计

学生信息: 学号,姓名,性别,专业,年级

选课:学号,课程编号,课程名称,分数

课程信息:课程编号,课程名字,任课教师‎

 

 

 

 

五、    数据库实施

建库:create database stu;

 

建表:create table student(

ID int(12) auto_increment primary key,

name varchar(10),

sex char(3),

major varchar(12),

grade varchar(4)

) ;

 

create table mark(

ID int(11) auto_increment,

Knumber int(11),

Kname varchar(10),

result double,

primary key(ID,Knumber)

);

 

create table Kmark(

Knumber int(11),

Kname varchar(10),

name varchar(10),

primary key(Knumber)

);

 

create table register(

identity varchar(12),

user varchar(12),

password varchar(12),

id int(11) auto_increment primary key);

 

六、    系统实现

1. 主程序流程图

 

2. 项目的包结构

 

3. 程序描述

DBUtils.java 用于连接数据库。

Kc_1.java 实例化课程信息对象。

Kc_2.java 向数据库发送sql语句实现增加课程信息,实现查询全部课程信息,实现删除课程信息。

Kc_3.java 打印课程信息的相关页面到控制台中,并实现交互。

Kmark.java 循环打印出全部课程信息。

Main.java 主函数所在,整个程序的开端,实现用户登录或注册。

RegDao.java 向数据库发送sql语句实现添加用户,实现查看用户账号和密码,实现获取用户账号,实现获取用户账号和密码。

Register.java 实例化用户对象,账号,密码,身份。

StuCtrl.java 打印学生信息的相关页面到控制台中,并实现交互。

StuDao.java 向数据库发送sql语句实现增加学生信息,实现查看全部学生列表,实现根据ID(学号)获取学生信息,实现修改学生信息,实现删除学生信息。

Student.java 实例化学生信息对象。

StuMark.java 实例化学生成绩(选课)对象。

StuMarkCtrl.java 打印学生成绩的相关页面到控制台中,并实现交互。

StuMarkDao.java 向数据库发送sql语句实现增加学生成绩信息,实现查看全部学生成绩信息,实现根据ID(学号)获取学生成绩信息,实现修改学生成绩信息,实现删除学生成绩信息。

View.java 主视图,打印管理界面,学生界面,教师界面到控制台,并与相关功能进行实例化的使用。

4. 系统实现思路

首先通过主函数实例化View对象(主视图)并调用ChooseMenu方法,进入管理界面,1.教师入口,2.学生入口,3.退出系统。通过实例化Scanner类获取用户的输入来判断进入学生系统还是教师系统,进入用户管理界面1.登录,2.注册,调用Main的Login(登录),register(注册)方法再来到RegDao.java与数据库中的数据进行核对或修改从而完成交互。

当登录到教师管理界面回到主视图显示:

1.新增学生信息与成绩,2.修改学生基本信息与成绩,3.删除学生信息,4.获取所有学生成绩,5.查询所有学生信息与成绩,6.查询课程信息,7.添加课程信息,8.删除课程信息,9.退出该界面。

当选择1、2、3、4、5时,进入StuCtrl.java,选1时实例化Student对象,再调用StuDao的add(添加学生信息)方法,实现功能。选2时实例化StuDao对象并调用FindById(根据ID获取学生信息)方法,再通过实例化Student对象修改学生信息。选3时通过实例化StuDao对象调用FindById方法核实学生信息、delete(删除学生信息)方法,完成删除。选4时实例化StuMarkCtrl对象并调用queryAllStuMark(查询所有学生成绩信息)方法,方法内再实例化StuMarkDao对象,调用list()方法,其内运用StuMark对象遍历完成对数据库的数据访问并返回相关值,最后返回集合,读取集合的相关信息显示于控制台上。选5时,同4相同,只是将集合的相关信息读取完整。选6时实例化Kmark对象,调用kc(打印查询课程信息结果)方法,方法内实例化Kc_2对象,调用list()方法,其内运用Kc_1对象遍历完成对数据库的数据访问并返回相关值,最后返回集合,读取集合的相关信息显示于控制台上。选7时实例化Kc_3对象调用add方法,方法内实例化Kc_1完成课堂信息的储存, 方法内实例化Kc_2调用add方法完成向数据库添加课程信息。选8时实例化Kc_3对象,调用delKmark(删除课程信息)方法,方法内实例Kc_2对象,调用FindById_2(根据课程编号获取课程信息),确认删除后再调用delete方法,完成删除数据库课程信息。选9即跳出do-while循环,即退出系统。