报刊订阅管理系统 - 课程设计说明书

更新时间:2024-05-01 05:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

1 需求分析??????????????????????????1 2 概要设计??????????????????????????3 3详细设计??????????????????????????6 4调试分析??????????????????????????14 5用户使用说明????????????????????????15 6测试结果??????????????????????????22 7结论???????????????????????????23 8致谢?????????????????????????????24 9附录?????????????????????????????25 10参考文献???????????????????????????32

报刊订阅管理系统

摘 要

随着社会发展的多元化、信息化,订阅报刊的管理已经成为一个令人头痛的事情。由于现在报刊总类繁多,需求量大,交易速度快,如何在最短的时间内,对各种报刊进行有效的管理,已成为十分迫切的问题。

本系统是一个基于JAVA和数据库的企业报刊订阅管理系统。系统是智能化的管理系统,它面向企业所有的部门的职业用户,但具有安全性。它能够实现报刊订阅的基本功能,包括对用户、报刊信息的录入、统计、增删改查等操作。用户合法注册后必须输入有效密码才能成功进入此系统,可以进行报刊订阅与退订,修改个人信息和订单信息等操作。

关键词:报刊订阅管理系统,JAVA,数据库

报刊订阅管理系统

引 言

随着社会不断的发展,人们的生活水平越来越高,对知识和时事的渴求也越来越高,人们希望能够方便快捷地订阅各种报刊杂志。但是各种各样的报刊名目和详细信息以及订阅,为相关企业的管理造成很大的麻烦。因此我们想到开发一个报刊订阅管理系统。

在本系统中,需要实现:管理员可以录入用户信息,报刊信息,同时可按用户名、报刊名、部门对系统进行相应的查询信息以及统计信息等功能;用户可以注册、更新自己的信息,同时还可以订阅、退订报刊和查询、修改订单。

1 需求分析

一直以来,人们在企业单位中都是使用传统人工方式管理单位的报刊订阅,这种管理方式存在着许多缺点,譬如,效率低,保密性差,而且时间一长,将产生大量的文件和数据,难以归类整理,这对于查找、更新和维护都带来了不少的麻烦。

通过学习,了解了JAVA、数据库,并在本次课程设计中利用这些知识点,实现一个面向于企业的报刊订阅管理系统,能够通过计算机和数据库对本单位的报刊订阅进行一系列的管理,实现智能化管理,克服了传统人工管理方式的缺点以及弊端。在报刊订阅管理系统中,要实现:管理员可以录入用户信息,报刊信息,同时可按用户名、报刊名、部门对系统进行相应的查询信息以及统计信息等功能;用户可以注册、更新自己的信息,同时还可以订阅、退订报刊和查询、修改订单。

订阅信息处理的特点是订阅信息处理量比较大,所管理的信息信息种类繁多,而且订阅单、编辑单的发生量特别大,关联信息多,查询和统计的方式各不相同。因此在管理上实现起来有一定因难。

本系统在设计过程中,为了克服这些困难,需要使程序代码标准化,软件统一化,确保软件的可维护性和实用性;删除不必要的管理冗余,实现管理规范化、科学化;界面友好、简单化,做到实用、方便,尽量满足报刊订阅中员工的需要。

1 / 32

报刊订阅管理系统

1.1任务与分析

(1)界面需求:用户界面简洁明了,提供功能实用,按钮逻辑排列清晰,容易使用。

(2)登陆功能需求:通过数据库连接,对管理员ID和密码进行身份验证,进入报刊订阅管理系统界面。

(3)录入功能: 1)系统管理员可以录入新用户信息,,信息一旦提交就存入到

后台数据库中;

2) 系统管理员可以录入新报刊信息,,信息一旦提交就存入到后台数据库中。

(4)订阅功能:系统管理员可以代替用户订阅报刊,系统自动计算所需金额。 (5)查询功能:1) 管理员可以按人员查询信息。

2) 管理员可以按报刊查询信息。 3) 管理员可以按部门查询信息。

(6)统计功能:1) 管理员可以按人员统计信息。

2) 管理员可以按报刊统计信息。 3) 管理员可以按部门统计信息。

(7)注册:新用户可以注册新帐号,并且将新用户的数据提交到数据库中。

1.2测试数据

(1)管理员:用户名(admin)、密码(admin)。

(2)录入报刊信息:报刊代号(1-3)、报刊名称(华西都市报)、出版社(华西

都市报出版社)、出版日期(2016-05-10)、内容介绍(生活)、季度报价(45)。

(3)注册:用户帐号(3120130901506)、真实姓名(赵六)、用户密码(1234)、

2 / 32

报刊订阅管理系统

联系电话(18394842934)、部门名称(公关部)、部门号(0135)、用户联系地址(西华大学)。

(4)订阅报刊:用户帐号(3120130901506)、真实姓名(赵六)、报刊代号(1-3)、报刊名称(华西都市报)、部门名称(公关部)、部门号(0135)、订阅份数(2)。

2 概要设计

报刊订阅管理系统功能结构图如下:

订阅、退订报刊 用户 查询、修改订单 查询、修改信息 用户信息(增删改查) 登录 注册 录入 报刊信息(增删改查) 按部门查询 管理员 查询 按用户查询 按报刊查询 按部门统计 统计 按用户统计 按报刊统计

本系统分为六大模块:

(1)登录功能:登录系统为身份验证登录。分为管理员登录和一般用户登录。分别通过不同的用户名和密码进入报刊订阅管理界面,新的用户需要注册。 (2)录入新信息功能:录入报刊和用户信息,并能对报刊和用户信息进行增删

3 / 32

报刊订阅管理系统

改查。

(3)订阅功能:用户可以订阅报刊,系统自动计算所需金额,并显示在界面上。 (4)查询功能:按人员查询、按报刊查询、按部门查询有关订阅信息,对查询结果能进行预览和打印。

(5)统计功能:按报刊统计、按人员统计、按部门统计,对统计结果能进行预览和打印。

(6)系统维护:权限管理,管理员只能登录管理员界面,用户只能根据正确的用户名和密码登录用户界面。

E-R如下:

部门名称出版周期季度报价部门号用户编号报刊代号报刊名称报刊信息内容介绍订阅份数出版报社订单总额用户名 N订阅报刊代号报刊名 M用户订单1订制MM管理部门名称联系电话1管理员真实姓名联系地址部门号密码管理员名用户账号密码

4 / 32

报刊订阅管理系统

数据库设计如下: admin管理员表 字段名称 adminUser(主码) adminPass book订单表 字段名称 userNo userName newsNo newsName orderAmount totalPrice users用户表 字段名称 userNo(主码) userName password phone depName depNumber address newspaper报刊表 字段名称 newsNo(主码) newsName publish pubPeriod 字段类型 Char(10) Char(40) Char(150) Char(30) 允许空 否 否 是 是 说明 报刊代号 报刊名称 出版报社 出版日期 字段类型 Char(20) Char(20) Char(10) Char(20) Char(50) Char(10) Char(150) 允许空 否 是 否 是 是 否 是 说明 用户帐号 真实姓名 用户密码 联系电话 部门名称 部门号 用户联系地址 字段类型 Char(10) Char(20) Char(10) Char(40) Int(4) Float(8) 允许空 否 是 否 否 否 是 说明 用户帐号 真实姓名 报刊代号 报刊名称 订阅份数 订阅总额 字段类型 Char(20) Char(10) 允许空 否 否 说明 管理员用户名 管理员密码 5 / 32

报刊订阅管理系统

content Char(200) 是 price Float(8) 否

3 详细设计

3.1 主函数的实现

(1)连接数据库(Dbutils.java) package com.jdbc.utils;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;

import java.util.ResourceBundle;

public class Dbutils {

private static String driver; private static String url; private static String user; private static String pwd; private static

rb=ResourceBundle.getBundle(\ static {

driver=rb.getString(\ url=rb.getString(\ user=rb.getString(\ pwd=rb.getString(\

try {

Class.forName(driver);

} catch (ClassNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } }

private Dbutils() {}

public static Connection getConnection()

6 / 32

内容介绍 季度报价 ResourceBundle

报刊订阅管理系统

{

Connection conn=null; try {

conn=DriverManager.getConnection(url,user,pwd); } catch (SQLException e) {

// TODO 自动生成的 catch 块 e.printStackTrace(); }

return conn; }

public static void close(Connection conn,Statement stmt,ResultSet rs) {

try {

if(conn!=null)conn.close(); if(stmt!=null)stmt.close(); if(rs!=null)rs.close(); } catch (SQLException e) {

// TODO 自动生成的 catch 块 e.printStackTrace(); } }

public static void main(String [] args) {

System.out.println(getConnection()); } }

(2)主界面:添加面板,页面跳转(其他页面类似)Main.java class Main extends JFrame implements ActionListener{

JRadioButton manager,users; JLabel label,label1,label2; JTextField userName; JPasswordField password; JButton login,register,exit; JPanel p1,p2,p3; public Main(){ init();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true);

7 / 32

报刊订阅管理系统

}

void init(){

setLayout(new FlowLayout()); setSize(390,260); p1=new JPanel(); p2=new JPanel(); p3=new JPanel();

label=new JLabel(\欢迎使用报刊管理系统\ Font font=new Font(\隶书\ label.setFont(font); p1.add(label);

ButtonGroup group=new ButtonGroup(); manager=new JRadioButton(\管理员\ users=new JRadioButton(\用户\ group.add(manager); group.add(users); p2.add(manager); p2.add(users);

label1=new JLabel(\用户名\ p3.add(label1);

userName=new JTextField(10); p3.add(userName);

label2=new JLabel(\密码\ p3.add(label2);

password=new JPasswordField(10); p3.add(password);

add(p1,BorderLayout.CENTER); add(p2,BorderLayout.CENTER); add(p3,BorderLayout.CENTER);

login=new JButton(\登录\ register=new JButton(\注册\ exit=new JButton(\退出\ add(login); add(register); add(exit);

8 / 32

报刊订阅管理系统

userName.addActionListener(this); login.addActionListener(this); register.addActionListener(this); exit.addActionListener(this); }

public static void main(String[] args) {

Main f=new Main();

f.setTitle(\报刊订阅管理系统\ }

public void actionPerformed(ActionEvent e) { // TODO 自动生成的方法存根

if(e.getSource()==register) //注册(登录、退出类似) {

new UsersRegister();//过渡到新的窗口Menu; this.dispose();//释放当前窗口 } }

3.2数据录入实现

录入报刊信息(录入用户信息和对用户、报刊、订单的增删改查与之类似) (1)LoggingdataNewspaper.java

public static void main(String[] args) {

LoggingdataNewspaper f=new LoggingdataNewspaper(); f.setTitle(\报刊信息\ }

public void actionPerformed(ActionEvent e) { // TODO 自动生成的方法存根

if(e.getSource()==button5) // 退出 {

new ManagerHome();//过渡到新的窗口Menu; this.dispose();//释放当前窗口 }

if(e.getSource()==button1) // 添加 {

//定义一个空的newspaper对象 newspaper news=new newspaper(); //将数据封装到news中

news.setNewsNo(text1.getText().trim());

9 / 32

报刊订阅管理系统

news.setNewsName(text2.getText().trim()); news.setPublish(text3.getText().trim()); news.setPubPeriod(text4.getText().trim()); news.setContent(text5.getText().trim());

news.setPrice(Float.parseFloat(text6.getText().trim())); System.out.println(news); //定义一个控制对象

InformationDaoImpl ifd=new InformationDaoImpl(); //执行添加用户操作 ifd.addNews(news); }

if(e.getSource()==button2) // 删除 {

//定义一个空的newspaper对象

newspaper delnews=new newspaper(); //将数据封装到delnews中

delnews.setNewsNo(text1.getText().trim()); delnews.setNewsName(text2.getText().trim());

System.out.println(delnews); //定义一个控制对象

InformationDaoImpl ifd=new InformationDaoImpl(); //执行添加用户操作

ifd.deleteNews(delnews); }

if(e.getSource()==button3) // 查询 {

//定义一个空的newspaper对象 newspaper n=new newspaper(); //将数据封装在n中

String news=text1.getText().trim(); //定义一个控制对象

InformationDaoImpl ifd=new InformationDaoImpl(); n=ifd.FindNewsByNewspaper(news); System.out.println(n);

text2.setText(n.getNewsName()); text3.setText(n.getPublish()); text4.setText(n.getPubPeriod()); text5.setText(n.getContent());

text6.setText(String.valueOf(n.getPrice())); }

if(e.getSource()==button4) // 修改 {

//定义一个空的users对象

10 / 32

报刊订阅管理系统

newspaper news=new newspaper(); //将数据封装到u当中

news.setNewsNo(text1.getText().trim()); news.setNewsName(text2.getText().trim()); news.setPublish(text3.getText().trim()); news.setPubPeriod(text4.getText().trim()); news.setContent(text5.getText().trim());

news.setPrice(Float.parseFloat(text6.getText().trim())); //定义一个控制对象

InformationDaoImpl ifd=new InformationDaoImpl(); //执行修改用户信息操作 ifd.updateNewspaper(news); System.out.println(news); } }

(2)InformationDaoImpl.java //添加报刊

public void addNews(newspaper n){ //定义一个空的连接对象 Connection conn=null; //定义一个准备sql语句 PreparedStatement ps=null; //自定义将要执行的sql语句 String sql=\newspaper(newsNo,newsName,publish,pubPeriod,content,price) values(?,?,?,?,?,?)\

//通过Dbutils得到数据库的连接 conn=Dbutils.getConnection(); System.out.println(conn); try {

//将sql语句传给ps(接收sql语句的容器) ps=conn.prepareStatement(sql); //将news的各个属性值添加到?处 ps.setString(1, n.getNewsNo()); ps.setString(2, n.getNewsName()); ps.setString(3, n.getPublish()); ps.setString(4, n.getPubPeriod()); ps.setString(5, n.getContent()); ps.setFloat(6, n.getPrice());

//执行sql语句(相当于在数据库中执行sql语句) ps.executeUpdate(); } catch (SQLException e) {

// TODO 自动生成的 catch 块

11 / 32

into 报刊订阅管理系统

e.printStackTrace(); }

finally{

//释放连接,同时释放资源

Dbutils.close(conn, ps, null); } }

//通过报刊号和报刊名删除报刊

public void deleteNews(newspaper dn) { // TODO 自动生成的方法存根 Connection conn=null;

PreparedStatement ps=null; conn=Dbutils.getConnection(); String sql=\from newspaper where newsNo=? and newsName=?\ try {

ps=conn.prepareStatement(sql); ps.setString(1, dn.getNewsNo()); ps.setString(2, dn.getNewsName()); ps.executeUpdate(); } catch (SQLException e) {

// TODO 自动生成的 catch 块 e.printStackTrace(); }finally {

Dbutils.close(conn, ps, null); } }

//通过报刊代号查找报刊

public newspaper FindNewsByNewspaper(String ne) { newspaper news= new newspaper(); Connection conn=null;

PreparedStatement ps=null; ResultSet rs=null;

conn=Dbutils.getConnection();

String sql=\ try {

ps=conn.prepareStatement(sql); ps.setString(1, ne); rs=ps.executeQuery(); if(rs.next()) {

news.setNewsNo(rs.getString(\

12 / 32

报刊订阅管理系统

news.setNewsName(rs.getString(\ news.setPublish(rs.getString(\

news.setPubPeriod(rs.getString(\ news.setContent(rs.getString(\ news.setPrice(rs.getFloat(\ }

} catch (SQLException e) {

// TODO 自动生成的 catch 块 e.printStackTrace(); }finally {

Dbutils.close(conn, ps, rs); }

return news;

//更新报刊信息

public void updateNewspaper(newspaper news) { // TODO Auto-generated method stub //定义一个空的连接对象 Connection conn=null; //定义一个准备sql语句 PreparedStatement ps=null; //自定义将要执行的sql语句

String sql=\newspaper set publish=? content=?, price=? where newsNo=? and newsName=? \ //通过Dbutils得到数据库的连接 conn=Dbutils.getConnection(); System.out.println(conn); try {

//将sql语句传给ps(接收sql语句的容器) ps=conn.prepareStatement(sql); //将user的各个属性值添加到?处 ps.setString(1, news.getPublish()); ps.setString(2, news.getPubPeriod()); ps.setString(3, news.getContent()); ps.setFloat(4, news.getPrice()); ps.setString(5,news.getNewsNo()); ps.setString(6, news.getNewsName()); //执行update SQL语句 ps.executeUpdate(); } catch (SQLException e) {

// TODO 自动生成的 catch 块 e.printStackTrace(); }

13 / 32

,pubPeriod=?,

报刊订阅管理系统

}

finally{

//释放连接,同时释放资源

Dbutils.close(conn, ps, null); }

4 调试分析

(1)在按条件进行统计时,不能显示任何信息。

解决方案:添加刷新面板语句:JPTable.revalidate()。

(2)在注册新用户时,用户帐号太长,所以出现了以下错误

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'userNo' at row 1

解决方案:将userNo char(10)改为userNo char(20)。

(3)在查询报刊信息时,FindNewsByNewspaper方法类型不匹配,所以出现了以下错误。

类型不匹配:不能从 void 转换为 newspaper

解决方案:将FindNewsByNewspaper方法从 void 转换为 newspaper,并添加返回类型。

14 / 32

报刊订阅管理系统

(4)在出现订单时,遇见的错误类型。

类型 JTextComponent 中的方法 setText(String)对于参数(int)不适用 类型 JTextComponent 中的方法 setText(String)对于参数(float)不适用

解决方案:因为orderAmount是int类型,而totalPrice是float类型,因此要通过转换才能变为String型。

将text7.setText( b.getOrderAmount()); text8.setText(b.getTotalPrice()); 改为:

text7.setText(String.valueOf(b.getOrderAmount()));

text8.setText(String.valueOf(b.getTotalPrice()));

将bo.setOrderAmount(rs.getString(\

bo.setTotalPrice(rs.getString(\

改为:bo.setOrderAmount(rs.getInt(\

bo.setTotalPrice(rs.getFloat(\

5 用户使用说明(小三黑体)

1 主界面

1.1点击管理员,输入管理员用户名(admin)和密码(admin),点击“登录”,进入管理员主界面。

15 / 32

报刊订阅管理系统

1.1.1 点击“录入报刊信息”按钮,进入录入报刊信息界面。

1.1.1.1 填写相关信息,点击“添加“,录入报刊信息,并将报刊信息保

存到数据库。

1.1.1.2 输入报刊代号,点击“查询“,通过报刊代号查找报刊。 1.1.1.3 填写需要修改的信息,点击“修改“,修改报刊信息(报刊代号不

能修改)。

16 / 32

报刊订阅管理系统

修改出版日期

1.1.1.4输入报刊名和报刊代号,点击“删除“,通过报刊号和报刊名删除报刊,同时删除数据库里面的报刊信息。

17 / 32

报刊订阅管理系统

1.1.1.5点击“返回“,返回管理员界面。

1.1.2点击“录入用户信息”,进入录入用户信息(与录入报刊信息操作相同)。

1.1.3点击“统计”,进入统计界面。

1.1.3.1选择统计条件,并输入信息,点击预览。

18 / 32

报刊订阅管理系统

1.1.3.2点击打印。

1.1.3.3点击“返回”,返回管理员界面。

1.1.4点击“查询”,进入查询系统。(与统计界面操作相同)。 1.1.5点击“退出”,返回主界面。 1.2 点击“注册”,进入注册界面。

1.2.1 填写相关信息,点击“注册”,新用户注册成功,跳转到主界面,

并将新用户的数据存到数据库。

19 / 32

报刊订阅管理系统

1.2.2 点击“退出”,返回主界面。

1.3点击“用户”,填写用户名和密码,点击登录,进入用户界面。

1.3.1 订阅报刊界面。

1.3.1.1 填写信息(除“订阅总额”外),点击“确定”,自动计算订阅总额。

1.3.1.2 点击“订阅”,数据传入数据库。

20 / 32

报刊订阅管理系统

1.3.1.3输入用户帐号和报刊号,点击查询,通过用户帐号和报刊号查找订单。

1.3.1.4填写需要修改的信息,点击修改,修改订单信息(用户帐号和报刊代号不能修改)。

修改订阅份数

1.3.1.5点击“退订”, 通过用户帐号和报刊代号删除订单。

1.3.1.6点击返回,返回用户界面。

1.3.2 点击“修改用户信息”,进入修改用户信息界面。 1.3.2.1 点击“查询”, 根据用户帐号查询用户信息。 1.3.2.2 点击“修改”,修改用户信息(用户帐号不能修改)。

21 / 32

报刊订阅管理系统

修改电话号码

1.3.3 点击“退出”,返回用户界面。

6 测试结果

整个系统基本上实现了所有要求,用户可以订阅报刊、退订报刊,查看和修改自己的订单信息,也可修改自己的信息,除了用户帐号。管理员方面,可以添加、删除、修改、查询用户的信息。管理订单方面,管理员可以按人员、按部门、按报刊查询和统计所有的订单信息,并打印出来。本系统的特色在于,用户订阅报刊非常方便,用户只需要输入所要订阅的报刊名和订阅份数,系统会自动计算出这次订阅所需要的金额。

由于是初次用JAVA做系统,难免有些不足之处。比如:用户在选择“按报刊统计”,点击预览和打印后,会显示出相应的信息。但是如果你想换个条件进行统计,如“按用户统计”,就必须先点击“退出”,再进入统计系统,进行统计。

以上是该系统的不足之处,我想在以后继续学习的过程中,我会找到解决的方法。

22 / 32

报刊订阅管理系统

结 论

这次课程设计的主要目的是掌握JAVA数据库网络综合程序设计,进一步提高分析解决问题的综合能力。通过这次课程设计,我基本掌握了以上要求。但由于时间比较仓促,所以开发的系统不是很完善,有一些功能还有一些缺陷,但是报刊订阅的基本功能均已实现。以前对JAVA和数据库的很多知识认识都不深刻,做过这次课程设计之后,我对JAVA和数据库的知识有了一个更加深入的了解;比如:对数据的增删改查等的运用已经比较熟练。

这个课程设计使我巩固了JAVA和数据库的知识。当我基本完成此系统开发的时候,我发现其实也没有那么难,在未做之前我还害怕做不出来。经过对这个系统的开发,在开发过程中遇到但也解决了很多问题,所以说我们不能惧怕有困难而不去接触认识它,我们要知难而上,只有这样我们才能成长,才能有所发展。

我会继续学习JAVA的知识,学习数据库的知识,只有通过不断的学习充实

自己,才能让自己有所得。只有了知识的积淀,才能为自己的发展铺平道路。

23 / 32

报刊订阅管理系统

JPTable.invalidate();

ResultSet rs = inf.getRS();

//得到输入内容

String input=text.getText().trim(); System.out.println(input); try {

while(rs.next()) {

System.out.println(rs.getString(\ System.out.println(input);

if(rs.getString(\ area.append(\用户帐号:\,\ \用户姓名:\,\ \报刊代号:\,\ +\报刊名称:\ \部门名称:\,\ +\部门号:\,\ +\订阅份额:\,\ \订阅总额:\ row++; } }

} catch (SQLException e2) { e2.printStackTrace(); } }

else if(\按用户查找\ JPTable.invalidate();

ResultSet rs = inf.getRS();

//得到输入内容

String input=text.getText().trim(); System.out.println(input);

29 / 32

报刊订阅管理系统

try {

while(rs.next()) {

System.out.println(rs.getString(\ System.out.println(input);

if(rs.getString(\ area.append(\用户帐号:\ \用户姓\,\ \报刊代\ +\报刊名\ \部门名\ +\部门\,\ +\订阅份\ \订阅总\ row++; } }

} catch (SQLException e2) { e2.printStackTrace(); } }

else if(\按报刊查找\ JPTable.invalidate();

ResultSet rs = inf.getRS();

//得到输入内容

String input=text.getText().trim(); System.out.println(input); try {

while(rs.next()) {

System.out.println(rs.getString(\

30 / 32

名:号:称:称:号:额:额:

报刊订阅管理系统

System.out.println(input);

if(rs.getString(\ area.append(\用户帐号:\ \用户姓\,\ \报刊代\ +\报刊名\ \部门名\ +\部门\,\ +\订阅份\ \订阅总\ row++; } }

} catch (SQLException e2) { e2.printStackTrace(); } } }

if(e.getSource()==button3) // 退出 {

new ManagerHome();//过渡到新的窗口Menu; this.dispose();//释放当前窗口 } } }

31 / 32

名:号:称:称:号:额:额:

报刊订阅管理系统

参考文献

[1] 王珊、萨师煊.数据库系统概论[J].高等教育出版社. 2006.5

[2] 李刚.Java程序员之旅--Java数据库技术详解[J].化学工业出版社.2011.4 [3]姜中华、刘小春.Java 数据库应用程序设计[J].机械工业出版社.2008.4 [4]软件开发技术联盟.Java Web开发实践[J].清华大学出版社.2013.9 [5]Leszek A.Maciaszek.需求分析与系统设计[J]中信出版社.2003 [6]汤承林.SQL Server数据库应用基础与实现[J].电子工业出版社.2008 [7]王国辉.JAVA全能速查宝典[J]人民邮电出版社.2006

32 / 32

本文来源:https://www.bwwdw.com/article/1lqg.html

Top