随着科技的发展,基本上所有的具有一定数量数据的机构都开始使用计算机数据库来做管理。几乎现在每个人在学习中,都会做大量的题。该课程设计要求设计一个做题的数据管理系统,数据库中包含了用户的基本信息,题库基本信息,以及用户错题集。要方便用户进行做题整理与归纳,通过该课程设计,应该达到把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分结合起来。






在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。可对该关系的屆性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。在实际设计中最常用的存取方法是紫引发,使用紫引可以大大减少数据的查询时间,在建立紫引时应遊福:在经常需要搜紫的列上建立紫引:在主关键字上建立紫升;在经常用于连接的列上建立索引,即在外键上建立索引:在经常需要根据范围进行搜索的列上创建索列,因为索引己经排序,其指定的范围是连续的等规则。才能充分利用索引的作用避免因索引引起的负面
作用。
创建用户表:
CREATE TABLE [dbo].[usertable](
[userid] [varchar](10) NOT NULL,
[password] [varchar](16) NOT NULL,
[name] [varchar](10) NOT NULL,
[power] [int] NOT NULL,
CONSTRAINT [PK_user] PRIMARY KEY CLUSTERED
(
[userid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[usertable] WITH CHECK ADD CONSTRAINT [CK_usertable] CHECK (([power]=(1) OR [power]=(0)))
GO
ALTER TABLE [dbo].[usertable] CHECK CONSTRAINT [CK_usertable]
GO
创建题库表:
CREATE TABLE [dbo].[title](
[topicid] [int] IDENTITY(1,1) NOT NULL,
[topic] [varchar](800) NOT NULL,
[A] [varchar](800) NOT NULL,
[B] [varchar](800) NOT NULL,
[C] [varchar](800) NOT NULL,
[D] [varchar](800) NOT NULL,
[E] [varchar](800) NULL,
[type] [char](6) NOT NULL,
[value] [varchar](5) NOT NULL,
[userid] [varchar](10) NULL,
CONSTRAINT [PK_title] PRIMARY KEY CLUSTERED
(
[topicid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[title] WITH CHECK ADD CONSTRAINT [FK_title_title] FOREIGN KEY([topicid])
REFERENCES [dbo].[title] ([topicid])
GO
ALTER TABLE [dbo].[title] CHECK CONSTRAINT [FK_title_title]
GO
ALTER TABLE [dbo].[title] WITH CHECK ADD CONSTRAINT [FK_title_title1] FOREIGN KEY([topicid])
REFERENCES [dbo].[title] ([topicid])
GO
ALTER TABLE [dbo].[title] CHECK CONSTRAINT [FK_title_title1]
GO
创建错题表:
CREATE TABLE [dbo].[error](
[errorid] [int] IDENTITY(1,1) NOT NULL,
[userid] [varchar](10) NOT NULL,
[topicid] [int] NOT NULL,
[errortime] [date] NOT NULL,
CONSTRAINT [PK_error] PRIMARY KEY CLUSTERED
(
[errorid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[error] WITH CHECK ADD CONSTRAINT [FK_error_title] FOREIGN KEY([topicid])
REFERENCES [dbo].[title] ([topicid])
GO
ALTER TABLE [dbo].[error] CHECK CONSTRAINT [FK_error_title]
GO
ALTER TABLE [dbo].[error] WITH CHECK ADD CONSTRAINT [FK_error_usertable] FOREIGN KEY([userid])
REFERENCES [dbo].[usertable] ([userid])
GO
ALTER TABLE [dbo].[error] CHECK CONSTRAINT [FK_error_usertable]
GO
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import java.util.concurrent.CopyOnWriteArrayList;
public class ConnectSQLserver {
public ConnectSQLserver( ) {
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=exam;user=sa;password=123";//sa身份连接
Connection con = null; //会话连接
try {
//1-注册驱动器,驱动管理器类加载SQLServerDriver类的静态方法,如果没有添加这个驱动,则创建这个驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("驱动加载成功!");
//2-与数据源获得连接
con = DriverManager.getConnection(url);
System.out.println("数据库连接成功!");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
con.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
public User login( String userid, String password ) {
User user = new User();
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=exam;user=sa;password=123";//sa身份连接
Connection con = null; //会话连接
Statement stmt = null; //用于执行静态SQL语句并返回其生成的结果的对象。
ResultSet rs = null; //数据库结果集的数据表
try {
//1-注册驱动器,驱动管理器类加载SQLServerDriver类的静态方法,如果没有添加这个驱动,则创建这个驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("驱动加载成功!");
//2-与数据源获得连接
con = DriverManager.getConnection(url);
System.out.println("数据库连接成功!");
//3-创建一个Statement对象,用于将SQL语句发送到数据库
stmt = con.createStatement();
//4- SQL语句
String SQL = "SELECT name,power FROM usertable where userid="
+ "'" + userid + "'and password=" + "'" + password + "'";
//5-执行SQL,返回数据
rs = stmt.executeQuery(SQL);
//6-遍历
if (rs.next()) {
user.setUserid(rs.getString("name"));
user.setPower(rs.getString("power"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null)
try {
rs.close();
} catch (Exception e) {
}
if (stmt != null)
try {
stmt.close();
} catch (Exception e) {
}
if (con != null)
try {
con.close();
} catch (Exception e) {
}
return user;
}
}
public int addexam( String topic, String A, String B, String C, String D, String E, String type, String value ,String userid) {
User user = new User();
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=exam;user=sa;password=123";//sa身份连接
Connection con = null; //会话连接
Statement stmt = null; //用于执行静态SQL语句并返回其生成的结果的对象。
int rs = 0; //数据执行结果
try {
//1-注册驱动器,驱动管理器类加载SQLServerDriver类的静态方法,如果没有添加这个驱动,则创建这个驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("驱动加载成功!");
//2-与数据源获得连接
con = DriverManager.getConnection(url);
System.out.println("数据库连接成功!");
//3-创建一个Statement对象,用于将SQL语句发送到数据库
stmt = con.createStatement();
//4- SQL语句
String SQL = "insert into title values('" + topic + "','" + A + "','" + B + "','" +
C + "','" + D + "','" + E + "','" + type + "','" + value + "','" +userid+"')";
//5-执行SQL,返回数据
System.out.println(SQL);
rs = stmt.executeUpdate(SQL);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stmt != null)
try {
stmt.close();
} catch (Exception e) {
}
if (con != null)
try {
con.close();
} catch (Exception e) {
}
return rs;
}
}
public Vector[] delExam( ) {
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=exam;user=sa;password=123";//sa身份连接
Connection con = null; //会话连接
Statement stmt = null; //用于执行静态SQL语句并返回其生成的结果的对象。
ResultSet rs = null; //数据执行结果
Vector rowData, columnNames;
columnNames = new Vector();
columnNames.add("题目编号");
columnNames.add("题目");
rowData = new Vector();
try {
//1-注册驱动器,驱动管理器类加载SQLServerDriver类的静态方法,如果没有添加这个驱动,则创建这个驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("驱动加载成功!");
//2-与数据源获得连接
con = DriverManager.getConnection(url);
System.out.println("数据库连接成功!");
//3-创建一个Statement对象,用于将SQL语句发送到数据库
stmt = con.createStatement();
//4- SQL语句
String SQL = "select topicid,topic from title";
//5-执行SQL,返回数据
rs = stmt.executeQuery(SQL);
while (rs.next()) {
Vector hang = new Vector();
hang.add(rs.getString(1));
hang.add(rs.getString(2));
rowData.add(hang.clone());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null)
try {
rs.close();
} catch (Exception e) {
}
if (stmt != null)
try {
stmt.close();
} catch (Exception e) {
}
if (con != null)
try {
con.close();
} catch (Exception e) {
}
Vector[] vectors = {rowData, columnNames};
return vectors;
}
}
public int bDelExam( int i ) {
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=exam;user=sa;password=123";//sa身份连接
Connection con = null; //会话连接
Statement stmt = null; //用于执行静态SQL语句并返回其生成的结果的对象。
int rs = 0; //数据执行结果
try {
//1-注册驱动器,驱动管理器类加载SQLServerDriver类的静态方法,如果没有添加这个驱动,则创建这个驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("驱动加载成功!");
//2-与数据源获得连接
con = DriverManager.getConnection(url);
System.out.println("数据库连接成功!");
//3-创建一个Statement对象,用于将SQL语句发送到数据库
stmt = con.createStatement();
//4- SQL语句
String SQL0 = "delete from title where topicid=" + i;
String SQL1 = "delete from error where topicid=" + i;
//5-执行SQL,返回数据
System.out.println(SQL1);
stmt.executeUpdate(SQL1);
rs = stmt.executeUpdate(SQL0);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stmt != null)
try {
stmt.close();
} catch (Exception e) {
}
if (con != null)
try {
con.close();
} catch (Exception e) {
}
return rs;
}
}
public int bAltExam( int i ) {
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=exam;user=sa;password=123";//sa身份连接
Connection con = null; //会话连接
Statement stmt = null; //用于执行静态SQL语句并返回其生成的结果的对象。
ResultSet rs = null; //数据执行结果
int rs1 = 0;
try {
//1-注册驱动器,驱动管理器类加载SQLServerDriver类的静态方法,如果没有添加这个驱动,则创建这个驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("驱动加载成功!");
//2-与数据源获得连接
con = DriverManager.getConnection(url);
System.out.println("数据库连接成功!");
//3-创建一个Statement对象,用于将SQL语句发送到数据库
stmt = con.createStatement();
//4- SQL语句
String SQL = "select topicid from title where topicid=" + i;
//5-执行SQL,返回数据
rs = stmt.executeQuery(SQL);
while (rs.next()) {
rs1 = new Integer(rs.getInt(1));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
}
}
if (stmt != null)
try {
stmt.close();
} catch (Exception e) {
}
if (con != null)
try {
con.close();
} catch (Exception e) {
}
return rs1;
}
}
public int setExam( int topicid, String topic, String A, String B, String C, String D, String E, String type, String value ) {
User user = new User();
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=exam;user=sa;password=123";//sa身份连接
Connection con = null; //会话连接
Statement stmt = null; //用于执行静态SQL语句并返回其生成的结果的对象。
int rs = 0; //数据执行结果
try {
//1-注册驱动器,驱动管理器类加载SQLServerDriver类的静态方法,如果没有添加这个驱动,则创建这个驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("驱动加载成功!");
//2-与数据源获得连接
con = DriverManager.getConnection(url);
System.out.println("数据库连接成功!");
//3-创建一个Statement对象,用于将SQL语句发送到数据库
stmt = con.createStatement();
//4- SQL语句
String SQL = "update title set topic='" + topic + "',A='" + A + "',B='" + B + "',C='" +
C + "',D='" + D + "',E='" + E + "',type='" + type + "',value='" + value + "'" + "where topicid=" + topicid;
//5-执行SQL,返回数据
System.out.println(SQL);
rs = stmt.executeUpdate(SQL);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stmt != null)
try {
stmt.close();
} catch (Exception e) {
}
if (con != null)
try {
con.close();
} catch (Exception e) {
}
return rs;
}
}
public int addUser( String userid, String password, String name, int power ) {
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=exam;user=sa;password=123";//sa身份连接
Connection con = null; //会话连接
Statement stmt = null; //用于执行静态SQL语句并返回其生成的结果的对象。
int rs = 0; //数据执行结果
try {
//1-注册驱动器,驱动管理器类加载SQLServerDriver类的静态方法,如果没有添加这个驱动,则创建这个驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("驱动加载成功!");
//2-与数据源获得连接
con = DriverManager.getConnection(url);
System.out.println("数据库连接成功!");
//3-创建一个Statement对象,用于将SQL语句发送到数据库
stmt = con.createStatement();
//4- SQL语句
String SQL = "insert into usertable(userid,password,name,power) " +
"values('" + userid + "','" + password + "','" + name + "'," +
power + ")";
//5-执行SQL,返回数据
System.out.println(SQL);
rs = stmt.executeUpdate(SQL);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stmt != null)
try {
stmt.close();
} catch (Exception e) {
}
if (con != null)
try {
con.close();
} catch (Exception e) {
}
return rs;
}
}
public Vector[] delUser( ) {
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=exam;user=sa;password=123";//sa身份连接
Connection con = null; //会话连接
Statement stmt = null; //用于执行静态SQL语句并返回其生成的结果的对象。
ResultSet rs = null; //数据执行结果
Vector rowData, columnNames;
columnNames = new Vector();
columnNames.add("用户账户");
columnNames.add("用户姓名");
columnNames.add("权限");
rowData = new Vector();
try {
//1-注册驱动器,驱动管理器类加载SQLServerDriver类的静态方法,如果没有添加这个驱动,则创建这个驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("驱动加载成功!");
//2-与数据源获得连接
con = DriverManager.getConnection(url);
System.out.println("数据库连接成功!");
//3-创建一个Statement对象,用于将SQL语句发送到数据库
stmt = con.createStatement();
//4- SQL语句
String SQL = "select userid,name,power from usertable";
//5-执行SQL,返回数据
rs = stmt.executeQuery(SQL);
while (rs.next()) {
Vector hang = new Vector();
hang.add(rs.getString(1));
hang.add(rs.getString(2));
hang.add(rs.getString(3));
rowData.add(hang.clone());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null)
try {
rs.close();
} catch (Exception e) {
}
if (stmt != null)
try {
stmt.close();
} catch (Exception e) {
}
if (con != null)
try {
con.close();
} catch (Exception e) {
}
Vector[] vectors = {rowData, columnNames};
return vectors;
}
}




