数据库系统课程设计报告
题目: 学生选课管理系统
课程代号: 0688116
课程名称:数据库系统课程设计
学号:
姓名:
班级:
指导教师:
完成日期:2020 年 6 月
第一章 引言
科学技术的进步和生产的发展使人类知识总量的增长不断加快,生产社会化
趋势的扩大和社会对产品需求的多样性使得组织在营运活动中所涉及的内部和
外部信息量迅速地膨胀起来。数据库设计是指对于一个给定的应用环境,构造优
化的数据库逻辑模式和物理模式结果,并据此建立数据库及其应用系统,使之能
有效地存储和管理数据,满足应用需求,包括信息管理要求和数据操作。信息管
理要求是指在数据库中应该存储和管理哪些数据对象;数据操作要求是指对数据
对象进行哪些操作,如查询、增、删、改、统计等操作。数据库设计地目标是维
用户和各种应用系统提供的一个信息基础设施和高效率地运行环境。高效率的运
行环境包括:数据库数据的存取速率、数据库存储空间的利用率、数据库系统运
行管理的效率等都是高的。我按照以上部分要点在 MyEclipse 和 SQL server 两个
软件上开发了学生选课管理系统数据库。
第二章 系统分析与设计
Student 表:
SC 表:
Course 表:
数
据
流
图
:
数据库逻辑结构设计:
E-R 图:
第三章 系统开发及实现
Java 连接数据库的驱动,连接数据库的都需要这一部分:
public static Connection CONN(){
Connection dbConn=null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
System.err.println("未找到驱动");
}
try {
String connectDB =
"jdbc:sqlserver://localhost\\SQLEXPRESS:1434;DatabaseName=学生管理系统";
String user = "asd";
// 这里只要注意用户名密码不要写错即可
String password = "a123";
dbConn = DriverManager.getConnection(connectDB, user, password);
// 连接数据库对象
System.out.println("连接数据库成功");
} catch (SQLException e) {
e.printStackTrace();
System.out.print(e.getErrorCode());
System.out.println("数据库连接错误");
System.exit(0);
}
return dbConn;
}
用户登录界面。
登陆时,凡是账号密码未填写,输入错误账号都会提出错误
提示框。在填写好账号密码后,会提取数据库里面的 admin
表,并查询其输入是否存在,若无误,则登录到用户界面。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
public class User extends JFrame{ //JFrame 在本机操作系统中是以窗口的形式注册的,
//这么做之后,就可以得到许多熟悉的操作系统窗口的
特性:最小化/最大化、改变大小、移动。
private JLabel use,password;
者。
private JTextField k1;//用户名输入框
private JPasswordField k2;//一个只能输入数字的密码框
private JButton b1,b2;//创建按钮
//JLabel 对象可以显示文本、图像或同时显示二
//登录窗口
public User(JFrame f){
super("请登录");
Container c=getContentPane(); //初始化一个容器,用来在容器上添加一些控件
c.setLayout(new FlowLayout());//设置流式布局
use=new JLabel("用户名:");
use.setFont(new Font("Serif",Font.PLAIN,20));//设置字体,普通体,大小
password=new JLabel("密码:");
password.setFont(new Font("Serif",Font.PLAIN,20));
k1=new JTextField(12);//创建一个20长度的文本框
k2=new JPasswordField(12);
b1=new JButton("登录");//// 创建一个登录的按钮
b2=new JButton("退出");
// 设置登录方法
BHandler b=new BHandler();//通过线程修改界面Button的内容
EXIT d=new EXIT();
b1.addActionListener(b);//进行b操作的时候触发某项功能
b2.addActionListener(d);
//添加控件
c.add(use);
c.add(k1);
c.add(password);
c.add(k2);
c.add(b1);
c.add(b2);
setBounds(600,300,250,150);//移动组件并调整其大小。由前两个指定左上角的新位置,由
后两个指定新的大小。
setVisible(true);//数据模型已经构造好
setResizable(false);//窗口大小不可改变
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//意思就是设置一个默认的关闭操
作,也就是你的JFrame窗口的关闭按钮,点击它时,退出程序。
}
//主函数
public static void main(String[] args) {
User fl =new User(new JFrame());
}
//登录按钮方法
private class BHandler implements ActionListener{
public void actionPerformed(ActionEvent event){
if(k1.getText().equals("")||k2.getText().equals("")){
JOptionPane.showMessageDialog(User.this,"用户名密码不能为空! ");
}
else{
String sql=new String();
sql="select * from admin where username='"+k1.getText()+"'";
try{
Connection dbConn1=null;
dbConn1=CONN();
Statement
stmt=dbConn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CO
NCUR_READ_ONLY);
//ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY
ResultSet rs=stmt.executeQuery(sql);
if(rs.next()){
sql="select * from admin where password='"+k2.getText()+"'";
ResultSet xm=stmt.executeQuery(sql);
if(xm.next()){ //k2.getText().equals(xm.next())
JOptionPane.showMessageDialog(User.this,"登录成功");
dispose();
new Menu();//管理窗口
}
else{
JOptionPane. showMessageDialog(User.this,"密码错误");
}
}
else{
JOptionPane.showMessageDialog(User.this,"用户名错误");
}
rs.close();
stmt.close();
}
catch(SQLException e){
JOptionPane.showMessageDialog(User.this,"SQL错误是:"+e.getMessage());
}
}
}
}
//退出方法结束
private class EXIT implements ActionListener{
public void actionPerformed(ActionEvent even){
System.exit(0);
}
}
用户界面 Menu.Java
用户界面能菜单栏有四个一级菜单,学生管理、课程管理、
选课管理、退出。前三个都能够增加和查询数据库中 Student、
Course、SC 表。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Menu extends JFrame implements ActionListener{
addStudent 增加学生界面;
S_Student 查找学生界面;