6.数据库实施
6.1数据库创建
6.1.1各数据表说明
表6.1 数据表描述表
编号 数据表名称 类型 内容
01 Login 辅助表 记录管理员帐号,密码
02 Customer 主表 记录订户信息
03 Diretory 主表 记录目录信息
04 Order 主表 记录订单基本信息
05 OrderDetail 主表 记录详细订单项信息
6.1.2数据库创建
在Microsoft SQL Server 2000的企业管理器中完成数据库和数据表的创建,具体SQL脚本请参见附录Newspaper_booking_system.sql
CREATE TABLE [dbo].[Customer] (
[Cid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Cname] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[Phone] [varchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[Address] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Login] (
[UName] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[UPassword] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Diretory] (
[Did] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Dname] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[UnitPrice] [float] NOT NULL ,
[Ifo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Order] (
[Ono] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Cid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Odate] [datetime] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[OrderDetail] (
[Ono] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Did] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Quantity] [int] NOT NULL ,
[QiShu] [int] NOT NULL ,
[UnitPrice] [float] NOT NULL ,
[Total] [float] NULL
) ON [PRIMARY]
GO
6.2数据库备份和恢复方案
6.2.1应用辅助工具进行备份和恢复
应用数据库辅助工具(如sqlbackuptools…)进行备份,选择所需要备份的数据库和目标地址即可进行数据备份,恢复数据库只需要指定备份文件和需要恢复的数据库即可进行数据恢复。
6.2.2分离数据库法
在企业管理器中右击需要备份的数据库,选择“所有任务”,“分离数据库”,执行分析操作,拷贝数据库MDF文件和LDF文件。
恢复方案:在企业管理器的控制台树中选择“数据库”节点,右击,“所有任务”,“附加数据库”,找到待恢复数据库的MDF文件,确定。
6.3用户界面设计和应用程序编码
6.3.1用户界面设计
本系统的用户界面用Java Swing编写,主要由1个主界面Newspaper.java和10个辅助对话框组成。主界面集合系统主要基本功能按键,辅助对话框负责采集用户输入信息和做基本的信息处理。
图10 用户界面
6.3.2类文件功能描述
NO. 类名 类型 功能
01 Newspaper Frame 主窗口类,提供系统主要功能的调用接口
02 Utilities 辅助类 封装系统主要数据和方法,为其它类提供信息处理功能
03 AdminCreateDlg Dialog 管理员创建对话框,提供管理员创建功能
04 AdminModifyDlg Dialog 管理员信息修改对话框,修改管理员密码,删除管理员
05 UserCreateDlg Dialog 订户新建对话框,采集订户信息,创建新订户
06 UserModifyDlg Dialog 订户修改对话框,提供订户修改、删除操作
07 DirCreateDlg Dialog 目录新建对话框,采集目录信息,创建新目录
08 DirModifyDlg Dialog 目录修改对话框,提供目录修改、删除操作
09 BookingDlg Dialog 添加订单对话框,提供新订单添加功能
10 OrderSearchDlg Dialog 订单查找对话框,提供按Ono或Cid查找订单操作
11 OrderDetailDlg Dialog 订单细节对话框,显示订单细节,提供订单和订单项删除操作,并能通过调用DetailModifyDlg对话框完成订单项修改。
12 DetailModify Dialog 订单项修改对话框,提供订单项修改操作
13 LoginDlg Dialog 管理员登陆对话框,提供登陆界面,检查登陆信息
表4 类文件描述表
6.3.3主要代码分析
//-----------------------------------------------------------------------------
//所属类:Utilities
//功能:取得应用程序与数据库系统的连接
public static void getConnection() throws Exception {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
.newInstance();//加载驱动程序
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Newspaper";
String user = "sa";
String password = "";
conn = DriverManager.getConnection(url, user, password);//取得连接
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);//创建语句
conn2 = DriverManager.getConnection(url, user, password);
www.751com.cn
//功能:完成查询结果的表格显示
public static void displayResultSet(JTable table, ResultSet rs)
throws SQLException {
rs.beforeFirst();// 指针移到结果集第一条记录前面
boolean moreRecords = rs.next();
if (!moreRecords) {// 如果没有记录,则提示一条消息
JOptionPane.showMessageDialog(table, "无相关记录", "Check your input!",
JOptionPane.ERROR_MESSAGE);
return;
}
Vector columnHeads = new Vector();// 用于存储表格字段
Vector rows = new Vector();// 用于存储记录行
try {// 获取字段的名称
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
columnHeads.addElement(rsmd.getColumnName(i));
do {// 获取记录集
rows.addElement(getNextRow(rs, rsmd));
} while (rs.next());
// 建立相应的TableModel,并将TableModel应用到table中显示出来
DefaultTableModel model = new DefaultTableModel(rows, columnHeads);
table.setModel(model);
return;
} catch (SQLException sqlex) {
sqlex.printStackTrace();
}
}
//-----------------------------------------------------------------------------//所属类:Utilities
//功能:被displayResultSet(JTable table, ResultSet rs)调用, 返回一个记录行
private static Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页