数据库课程设计报告书.docx
- 文档编号:5208456
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:54
- 大小:539.01KB
数据库课程设计报告书.docx
《数据库课程设计报告书.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告书.docx(54页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告书
数
据
库
课
程
设
计
报
告
书
学院:
计算机学院
班级:
10计科一班
姓名:
杨旭
1、系统需求分析
选修课程管理系统是我校校不可缺少的部分,它的内容对于我校的教学管理者和决策者来说都至关重要,所以选修课程管理系统应该能够为用户提供充足的信息和快捷的查询手段。
随着我校规模的扩大、学生人数的增加,按照数据库技术开发学生选课管理系统已成为学校的必要需求。
本课程设计实现的学生选课管理系统主要包括以下功能:
1.完成数据的添加和修改,并提交数据库保存。
其中的数据包括:
学生信息、课程信息、教师信息等;
2.设计实现学生信息查询,教师信息查询,课程信息查询,选课,选课查询,等JAVA图形化界面面。
3.具备一定的安全性管理功能。
包括登录、退出等功能。
二、系统设计
1、系统总体设计
本系统采用B/S体系结构,客户端负责提供表达逻辑、显示用户界面信息、访问数据库服务器,采用java作为开发工具;服务器端则用于提供数据服务,采用SQLServer2005标准版作为数据库管理系统。
本系统按照功能划分为以下三个个模块:
学生界面(包括学生添加和查询等)、教师界面(包括课程查询、成绩添加等)和管理员界面(包括课程管理、教师管理、学生管理等)。
系统的功能模块图如下图所示:
2、数据库设计
(1)数据库概念结构设计
本系统主要有三个实体:
a、学生实体、选修课两个实体,一个学生可以选修若干门课程,一门课程也可以被多个学生选修,这两个实体集之间是多对多联系,联系上有选课成绩;
b、教师和课程两个实体,一个老师可以教授若干门课程,一门课程也可以被多个老师教授,这两个实体集之间也是多对多联系;
本系统的E-R图如下:
m
n
n
m
(2)数据库逻辑结构设计
根据关系模型的转换原则,上面的E—R图可转换为如下所示的关系模型:
学生信息表:
student(学号,姓名,所属院系,课程编号,选修课程,选修成绩)
公选课信息表:
course(课程号,课程名,学分,学时,教师编号)
教师信息表:
teacher(教师编号,教师姓名,所属院系,教授课程号,教授课程名)
根据上面的E-R图设计及关系模型的设计,得出数据表的设计,在本系统中主要的数据表如下:
表1教师信息表teacher的表结构
主码
列名
数据类型
宽度
是否可为空
PK
教师工号
char
10
教师姓名
char
10
是
所属院系
char
10
是
教授课程号
char
10
教授课程名
char
10
是
表2学生信息表student的表结构
主码
列名
数据类型
宽度
是否可为空
PK
学号
char
10
姓名
char
10
是
所属院系
char
20
是
所选课程号
int
4
选修课程
char
10
是
选修成绩
int
10
是
表3公选课信息表course的表结构
主码
列名
数据类型
宽度
是否可为空
PK
课程号
char
10
课程名
char
10
是
学分
int
4
学时
int
4
下面在系统实施阶段就可以物理实现数据库了,本系统使用前面实验已经建好的服务器端SQLServer数据库—yangxu.
三、系统实现
本课程设计是用java结合数据库实现的,其中包含了三个主页面,一是学生登录界面面,二是教师登录界面,三是管理员登陆界面,其中每个界面中都会有按钮进行相应的操作。
1、主界面操作:
Login.java//登录界面(包含学生、教师、管理员三个选项)
2、学生操作界面(student.java):
(1)、主界面
Student.java//选择操作界面(用于选择学生选课、选课查询、课程列表、退出等操作)
(2)、学生选课界面
SSelectCourse.java//显示添加界面(可进行添加、修改等操作)
(3)、选课查询界面
StuSelect1.java//按学号查询用户所选课程
(4)、课程列表界面
CourseList.java//用于显示所有公选课列表
3、教师操作界面(Teacher.java)
(1)、主界面
Teacher.java//显示操作界面(用于教师查询、成绩添加等操作)
(2)查询教师界面
TcSelect1.java//用于查询教师所授课程
(3)教师添加成绩界面
TInsert.java//教师添加学生所选课程的成绩
4、管理员界面(Admin.java)
(1)、主界面
Admin.java//选择管理对象界面(用于选择管理学生、管理教师、管理课程等操作
(2)、教师管理界面
教师添加TcInsert.java(用于教师的添加或修改)
教师删除TcDelete.java
教师查询TcSelect.java
(3)、学生管理界面
添加学生
StuInsert.java//用于学生的添加和修改
删除学生信息
StuDelete.java//可按学号进行对学生的删除
查询学生信息
StuSelectjava//用于对学生信息的查询
4、课程管理界面(Course.java)
(1)添加课程
CouInsert.java//用于添加修改课程
(2)删除课程
CouDelete.java
(3)课程列表
CourseList.java//显示所有课程
4、具体操作
1、主界面
主要代码:
Login.java
package数据库课程设计;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.applet.Applet;
importjava.applet.AudioClip;
importjava.io.*;
import.MalformedURLException;
import.URI;
import.URL;
importsun.audio.*;
publicclassLoginextendsJFrame{
JLabellLogin,lKey,lLoginInform;
JTextFieldtextLogin,textKey;
JPasswordFieldpassField;
JButtonbLogin,bCancel;
Choiceidentify;
Containerct=getContentPane();
publicLogin(){
setTitle("选修课程管理系统");
intwidth=getWidth();
intheight=getHeight();
intw=(Toolkit.getDefaultToolkit().getScreenSize().width-width)/2;
inth=(Toolkit.getDefaultToolkit().getScreenSize().height-height)/2;
setLocation(w,h);
JPanelp=newJPanel();
p.setOpaque(false);
ImageIconige=newImageIcon("D:
//数据库图片//湖工.jpg");
JLabell=newJLabel(ige);
l.setBounds(-100,-100,ige.getIconWidth(),ige.getIconHeight());
getLayeredPane().add(l,newInteger(Integer.MIN_VALUE));
((JPanel)this.getContentPane()).setOpaque(false);
p.setLayout(newFlowLayout(FlowLayout.CENTER,100,25));
lLoginInform=newJLabel("登陆身份:
");
identify=newChoice();
identify.add("学生");
identify.add("教师");
identify.add("管理员");
p.add(lLoginInform);
p.add(identify);
lLogin=newJLabel("账号:
");
p.add(lLogin);
textLogin=newJTextField("",7);
p.add(textLogin);
lKey=newJLabel("密码:
");
p.add(lKey);
passField=newJPasswordField(7);
p.add(passField);
bLogin=newJButton("登陆");
bLogin.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){
booleanflag;
if(identify.getSelectedItem().equals("学生")&&(textLogin.getText()).equals("student")){
charpass[]=passField.getPassword();
for(inti=0;i<6;){
if(pass[i]==i+1)
flag=true;
else{
flag=false;
break;
}
}
if(flag=true){
dispose();
newStudent().setVisible(true);
}
}
if(identify.getSelectedItem().equals("管理员")&&(textLogin.getText()).equals("manager")){
charpass[]=passField.getPassword();
for(inti=0;i<6;){
if(pass[i]==i+1)
flag=true;
else{
flag=false;
break;
}
}
if(flag=true){
dispose();
newAdmin().setVisible(true);
}
}
if(identify.getSelectedItem().equals("教师")&&(textLogin.getText()).equals("teacher")){
charpass[]=passField.getPassword();
for(inti=0;i<6;){
if(pass[i]==i+1)
flag=true;
else{
flag=false;
break;
}
}
if(flag=true){
dispose();
newTeacher().setVisible(true);
}
}
else{
setTitle("输入的账号或者密码有误,重新输入");
}
}
}
);
bCancel=newJButton("退出");
bCancel.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
System.exit(0);
}
});
p.add(bLogin);
p.add(bCancel);
add(p);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,250);
setVisible(true);
}
publicstaticvoidmain(String[]args){
newLogin();
try{
Filef=newFile("D:
//音乐//logic.mid");
URIu=f.toURI();
URLr=null;
r=u.toURL();
AudioClipm=Applet.newAudioClip(r);
m.loop();
}catch(MalformedURLExceptione){
e.printStackTrace();
}
}
}
2、学生操作
(1)学生登陆界面
(2)学生主界面
主要代码:
Student.java
package数据库课程设计;
importjava.awt.*;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
import.URL;
importjava.sql.*;
importjavax.swing.*;
importjavax.swing.table.AbstractTableModel;
import数据库课程设计.SelectStu.MyTable;
publicclassStudentextendsJFrame{
JButtonsSelectCourse,sSelect,courseList,sreturn;
publicStudent(){
super("学生界面");
setLayout(newFlowLayout(FlowLayout.CENTER,100,60));
intwidth=getWidth();
intheight=getHeight();
intw=(Toolkit.getDefaultToolkit().getScreenSize().width-width)/2;
inth=(Toolkit.getDefaultToolkit().getScreenSize().height-height)/2;
setLocation(w,h);
JPanelp=newJPanel();
p.setOpaque(false);
ImageIconige=newImageIcon("D:
//数据库图片//yangxu.jpg");
JLabell=newJLabel(ige);
l.setBounds(-100,-100,ige.getIconWidth(),ige.getIconHeight());
getLayeredPane().add(l,newInteger(Integer.MIN_VALUE));
((JPanel)this.getContentPane()).setOpaque(false);
sSelectCourse=newJButton("学生选课");
sSelectCourse.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
dispose();
newSSelectCourse().setVisible(true);
}
});
sSelect=newJButton("选课查询");
sSelect.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
dispose();
newStuSelect1().setVisible(true);
}
});
courseList=newJButton("课程列表");
courseList.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
newCourseList().setVisible(true);
}
});
add(sSelectCourse);
add(sSelect);
add(courseList);
sreturn=newJButton("返回前页");
sreturn.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
dispose();
newLogin().setVisible(true);
}
});
add(sreturn);
add(p);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,250);
setVisible(true);
}
publicstaticvoidmain(String[]args){
newStudent();
}
}
(3)学生选课界面
主要代码:
SSelectCourse.java
classSSelectCourseextendsJFrame{
JLabell,m,a,q;
JTextFieldtf,tf1,tf2;
JButtonjbut,rt,ud;
publicSSelectCourse(){
super("学生选课");
setLayout(newFlowLayout(FlowLayout.CENTER,8,40));
intwidth=getWidth();
intheight=getHeight();
intw=(Toolkit.getDefaultToolkit().getScreenSize().width-width)/2;
inth=(Toolkit.getDefaultToolkit().getScreenSize().height-height)/2;
setLocation(w,h);
JPanelp=newJPanel();
p.setOpaque(false);
ImageIconige=newImageIcon("D:
//数据库图片//a.jpg");
JLabell=newJLabel(ige);
l.setBounds(-100,-100,ige.getIconWidth(),ige.getIconHeight());
getLayeredPane().add(l,newInteger(Integer.MIN_VALUE));
((JPanel)this.getContentPane()).setOpaque(false);
a=newJLabel("");
add(a);
m=newJLabel("请输入你要添加的学号:
");
add(m);
tf=newJTextField("",7);
add(tf);
q=newJLabel("请输入你要添加的姓名:
");
add(q);
tf1=newJTextField("",7);
add(tf1);
l=newJLabel("请输入你要添加的课程号:
");
add(l);
tf2=newJTextField("",7);
add(tf2);
jbut=newJButton("确定");
jbut.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Connectionconn=null;
try{
StringURL="jdbc:
microsoft:
sqlserver:
//localhost:
1433;DatabaseName=yangxu";
Stringuser="system";//连接数据库的用户名
Stringpassword="yangxu";//连接数据库的密码
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//加载驱动程序
}catch(java.lang.ClassNotFoundExceptione1){
e1.printStackTrace();
}
try{
conn=DriverManager.getConnection(URL,user,password);//与url指定的数据源建立连接
}catch(SQLExceptione1){
e1.printStackTrace();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 报告书