《图书销售管理系统--数据库课设(共17页).doc》由会员分享,可在线阅读,更多相关《图书销售管理系统--数据库课设(共17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上目录一系统需求分析(1)系统概述.(2)系统目标.(3)可行性分析.(4)系统分析.二数据库设计部分(1)数据流图(2)表设计及结构(3)用T-SQL语句创建数据库、创建表以及添加数据 1.创建数据库代码: 2.创建表代码: 3.详细设计三 实验总结及体会四 参考文献一需求分析1.系统概述现如今图书销售行业发展迅速,大大小小的书店到处可见,特别是一些发展较大的书城采用大规模的连锁经营方式。随着规模的扩大传统的图书管理已经不能适应发展的需要。图书管理工作繁琐,销售频繁,包含大量的信息数据,因此就需要一个完善的图书销售管理系统来实现对这些数据的有效管理。本系统主要任务就是
2、对书店、图书、顾客、销售信息、查询进行统一管理,满足各类用户的需求。本系统在功能上要实现书店基本信息管理功能,图书销售功能,图书采购功能,财务管理工能。开发背景:我们对世面上的书城如新华书店和学校里的小书店进行了初步的了解,发现其业务主要是集中在对图书的管理和图书的销售和退货上。对图书的管理工作量较大,采用手工的方式还容易出错,并且不能满足顾客对图书的详细的查询功能。本系统在设计中考虑和克服了上诉的诸多问题,增强了实用性。2.系统目标图书销售管理系统就是要求图书管理人员通过该系统对图书、顾客、管理员、购买信息等进行统一管理,从而实现功能上的销售图书、退还图书、库存量以及信息查询。这就要求管理人
3、员能够对数据库熟悉操作而简单的表查询、触发器的建立、存储过程的建立以及用户自定义函数的建立等等这些管理数据库的方法都能对图书馆里系统的管理起到事半功倍的效果。3.系统可行性分析系统现阶段的发展过程中,利用现有人力和物力是完全具备能力开发出来的,作为阶段性产品,日后的发展空间大,实现方法简单容易。本系统采用java和SQL Sever相结合的方法来实现。由于图书销售的普及,许多都要求使用计算机进行管理,并且实际中也有系统的使用。所以本系统的使用市场非常的广阔,易于推广和普及到现实中应用。所以本系统在市场应用上是完全可行 4.系统分析(1)图书销售管理系统功能结构图:由于管理员是本系统的主要的使用
4、者所以其涉及的活动较多。图书管理是指对图书信息的录入、更新、修改和删除。查询图书信息是在销售图书时进行的,以了解是否有该图书和库存等信息。二 数据库设计部分1.数据流图(1)第一层数据流图:(2)第二层数据流图(3)第三层数据流图销售细化购买细化财务细化(2) 表设计1.需要的表有:图书信息表,供应商信息表,书店信息表,顾客信息表,书店员工表,进货表等。 2.以下为各表的表结构(1)图书库存信息表结构列名数据类型长度是否允许为空默认值说明图书编号char12无主键图书名nvarchar20无图书价格char20无库存量Char20无(2)供应商信息表结构列名数据类型长度是否允许为空默认值说明供
5、应书号char12无主键出版社char12无供应商姓名char8无供应商电话char12否(3)书店信息表结构列名数据类型长度是否允许为空默认值说明书店编号char10无主键负责人编号char20无书店名char12无(4)顾客信息表结构列名数据类型长度是否允许为空默认值说明顾客编号char10无主键顾客姓名char8无顾客电话char12无(5)书店员工表结构列名数据类型长度是否允许为空默认值说明员工编号char10无主键员工姓名char12无员工性别char4无员工电话char12无(6)书店进货表结构列名数据类型长度是否允许为空默认值说明图书书号char12无外键书店编号nvarchar
6、10无外键进货日期datetime无进货量char100是(7)书店发货表结构列名数据类型长度是否允许为空默认值说明图书书号char12无外键书店编号nvarchar10无外键发货日期datetime无发货量char100是(8)顾客退货表结构列名数据类型长度是否允许为空默认值说明图书书号char12无外键书店编号nvarchar10无外键退货日期datetime无退货量char100是(9)顾客订货表结构列名数据类型长度是否允许为空默认值说明顾客编号char10无外键图书编号char12无外键图书价格Char20无库存量char100无销售量char50无(3) 用T-SQL语句创建数据库、
7、创建表以及添加数据1.创建数据库代码: create database 图书销售管理系统on primary(name=tsxsgl_dat, filename=f:数据库tsxsgl_dat.mdf,size=10mb,maxsize=20mb,filegrowth=2mb),filegroup图书销售管理系统(name=tsxsgl_data, filename=f:数据库tsxsgl_data.ndf,size=5mb,maxsize=10mb,filegrowth=1mb)log on(name=tsxsgl_log, filename=f:数据库tsxsgl_log.ldf,size
8、=5mb,maxsize=10mb,filegrowth=1mb)go2.创建表代码create table 图书库存信息(图书编号 char(12) not null primary key,图书名 nvarchar(20) not null,图书价格 char(20) null,库存量 char(20) null)insert into 图书库存信息 values(00001,红楼梦, 18,100) insert into 图书库存信息 values(00002,围城, 22,34) insert into 图书库存信息 values(00003,英语四级词汇, 30,123) inse
9、rt into 图书库存信息 values(00004,电子技术基础, 33,78) insert into 图书库存信息 values(00005,计算机组成原理, 12,55) create table 顾客信息(顾客编号 char(10) not null primary key,顾客姓名 char(8) not null ,顾客电话 char(12) not null)insert into 顾客信息 values(1001,田令, ) insert into 顾客信息 values(1002,刘子, ) insert into 顾客信息 values(1003,张伟, ) inser
10、t into 顾客信息 values(1004,李全文, ) insert into 顾客信息 values(1005,王万, ) insert into 顾客信息 values(1006,高寒, ) create table 供应商信息(供应书号 char(12)not null primary key, 出版社 char(12) not null,供应商姓名 char(8) not null,供应商电话 char(12) not null)insert into 供应商信息 values(001,延边出版社, 李明,) insert into 供应商信息 values(002,延边出版社,
11、 李明,) insert into 供应商信息 values(003,吉林出版社, 李明,) insert into 供应商信息 values(004,教育出版社, 李明,) insert into 供应商信息 values(005,教育出版社, 李明,) insert into 供应商信息 values(006,青华出版社, 李明,) insert into 供应商信息 values(007,青华出版社, 张华,) insert into 供应商信息 values(008,青华出版社, 张华,) insert into 供应商信息 values(009,广州出版社, 张华,) insert
12、into 供应商信息 values(010,广州出版社, 李明,)create table 书店信息(书店号 char(10) not null primary key,负责人编号 char(20)not null,书店名 char(12) null)insert into 书店信息 values(0001,101, 新华书店) insert into 书店信息 values(0002,102, 新华书店) insert into 书店信息 values(0003,103, 新华书店) insert into 书店信息 values(0004,104, 新华书店) insert into 书店
13、信息 values(0005,105, 新华书店) insert into 书店信息 values(0006,106, 新华书店) create table 顾客订货货表(图书编号 char(12) not null,书店号 nvarchar(10) not null,订货日期 datetime not null,订货量 char(100) null,)insert into 顾客订货货表 values(01,0001, ,100) insert into 顾客订货货表 values(02,0001, ,120) insert into 顾客订货货表 values(03,0006, ,100)
14、 insert into 顾客订货货表 values(04,0006, ,100)insert into 顾客订货货表 values(05,0005, ,200) create table 书店发货表(图书编号 char(12) not null,书店号 nvarchar(10) not null,发货日期 datetime not null,发货量 char(100) null,)insert into 书店发货表 values(01,0001, ,100) insert into 书店发货表 values(02,0001, ,120) insert into 书店发货表 values(03
15、,0006, ,100) insert into 书店发货表 values(04,0006, ,100)insert into 书店发货表 values(05,0005, ,200) create table 书店进货表(图书编号 char(12) not null,书店号 nvarchar(10) not null,进货日期 datetime not null,进货量 char(100) null,)insert into 书店进货表 values(01,0001, ,100) insert into 书店进货表 values(02,0001, ,120) insert into 书店进货表
16、 values(03,0006, ,100) insert into 书店进货表 values(04,0006, ,100)insert into 书店进货表 values(05,0005, ,200) create table 供应商发货表(图书编号 char(12)not null,供应商编号 char(10) not null,图书价格 char(20)null,库存量 char(100) not null,销售量 char(50) null)insert into 供应商发货表 values(01,1001, 18,100,1) insert into 供应商发货表 values(02
17、,1001, 22,34,2) insert into 供应商发货表 values(03,1006, 30,123,2) insert into 供应商发货表 values(04,1006, 33,78,2)insert into 供应商发货表 values(05,1005, 12,55,3) create table 书店员工信息(员工编号 char(10) not null primary key,员工姓名 char(12) not null,员工性别 char(4) not null,员工电话 char(12) null)insert into 书店员工信息 values(11001,田
18、伟,男, ) insert into 书店员工信息 values(11002,刘令, 男,) insert into 书店员工信息 values(11003,张子, 女,) insert into 书店员工信息 values(11004,李阳, 男,) insert into 书店员工信息 values(11005,王全, 男,) insert into 书店员工信息 values(11006,高万, 女,) 为进货表创建触发器trig_orders_insert,当进货表中增加一条记录时触动触发器,更新库存图书中的图书数量及相关信息。create trigger trig_orders_in
19、serton 进货表for insertasdeclare 图书编号 varchar(13),num intselect 图书编号 =ISBN,num=stock_num from insertedupdate book set num=num+numwhere 图书编号=图书编号为进货表创建存储过程showBidPrice,当输入书名时输出报价单,供操作人员选择go /*进货*/create procedure showBidPrice bname varchar(20)asdeclare num intselect * from 供应商信息表 where 图书编号=(select ISBN
20、 from book where 图书名=图书名)exec showBidPrice 数据库原理3.详细设计该系统采用java连接SQL数据库的方式,使用图形用户界面,主要实现图书增删改等功能。下面具体对各模块进行介绍。1 登录模块及主界面登陆框流程图如下图所示,单击某个按钮就能弹出面 系统登录界面在按按钮“操作数据库”后就会出现下图,在根据提示操作2.实现界面的java代码为:import javax.swing.*; import java.awt.*;import java.awt.event.*;import java.sql.*; public class Example publi
21、c static void main(String args ) try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e) System.out.println(+e); DatabaseWin win=new DatabaseWin(); class DatabaseWin extends JFrame implements ActionListener/主窗口 JMenuBar menubar; JMenu menu; JMenuItem itemShow,itemUpdate,item
22、Insert,itemDelete; ShowRecord showRecord; ModifyRecord modifyRecord; InsertRecord insertRecord; DeleteRecord deleteRecord ; DatabaseWin() menubar=new JMenuBar(); menu=new JMenu(操作数据库); itemShow=new JMenuItem(显示记录); itemUpdate=new JMenuItem(更新记录); itemInsert=new JMenuItem(增加记录); itemDelete=new JMenuI
23、tem(删除记录); itemShow.addActionListener(this); itemUpdate.addActionListener(this); itemInsert.addActionListener(this); itemDelete.addActionListener(this); menu.add(itemShow); menu.add(itemUpdate); menu.add(itemInsert); menu.add(itemDelete); menubar.add(menu); showRecord=new ShowRecord(显示记录对话框); modify
24、Record=new ModifyRecord(修改记录对话框); insertRecord=new InsertRecord(增加记录对话框); deleteRecord=new DeleteRecord(删除记录对话框); setJMenuBar(menubar); setBounds(100,100,370,250); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public void actionPerformed(ActionEvent e) if(e.getSource()=itemShow)
25、showRecord.setVisible(true); else if(e.getSource()=itemUpdate) modifyRecord.setVisible(true); else if(e.getSource()=itemInsert) insertRecord.setVisible(true); else if(e.getSource()=itemDelete) deleteRecord.setVisible(true); class ShowRecord extends JDialog implements ActionListener/负责显示记录的类 JTable t
26、able; Object a; Object name=图书编号,图书名,图书价格,库存量; JButton showRecord; Connection con; Statement sql; ResultSet rs; ShowRecord(String title) setTitle(title); showRecord=new JButton(显示记录); showRecord.addActionListener(this); add(showRecord,BorderLayout.NORTH); setBounds(200,60,400,250); public void actio
27、nPerformed(ActionEvent e) try con=DriverManager.getConnection(jdbc:odbc:hello,); sql=con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=sql.executeQuery(SELECT * FROM 图书信息); rs.last(); int lastNumber=rs.getRow(); a=new ObjectlastNumber6; int k=0; rs.beforeFirst(); w
28、hile(rs.next() ak0=rs.getString(1); ak1=rs.getString(2); ak2=rs.getString(3); ak3=rs.getString(4); ak4=rs.getString(5); ak5=rs.getString(6); k+; con.close(); catch(SQLException ee) System.out.println(ee); table=new JTable(a,name); getContentPane().removeAll(); add(showRecord,BorderLayout.NORTH); add
29、(new JScrollPane(table),BorderLayout.CENTER); validate(); class ModifyRecord extends JDialog implements ActionListener /负责更新记录的类 JLabel hintLabel; JTextField inputNumber; Object name=图书编号,图书名,图书价格,库存量; Object a=new Object16; JTable table; JButton enterModify; Connection con; Statement sql; ResultSet
30、 rs; String num; ModifyRecord(String s) setTitle(s); hintLabel=new JLabel(图书编号(回车确认):); inputNumber=new JTextField(20); table=new JTable(a,name); enterModify=new JButton(更新记录); setLayout(null); Box baseBox=Box.createHorizontalBox(); baseBox.add(hintLabel); baseBox.add(inputNumber); baseBox.add(new J
31、ScrollPane(table); baseBox.add(enterModify); add(baseBox); baseBox.setBounds(10,40,600,38); inputNumber.addActionListener(this); enterModify.addActionListener(this); setBounds(20,60,700,200); public void actionPerformed(ActionEvent e) if(e.getSource()=inputNumber) try num=inputNumber.getText().trim(
32、); con=DriverManager.getConnection(jdbc:odbc:hello,); sql=con.createStatement(); rs=sql.executeQuery(SELECT * FROM 图书信息 WHERE 图书编号=+num+); boolean boo=rs.next(); if(boo=false) JOptionPane.showMessageDialog (this,图书编号不存在,提示,JOptionPane.WARNING_MESSAGE); else a00=rs.getString(1); a01=rs.getString(2);
33、a02=rs.getString(3); a03=rs.getString(4); a04=rs.getString(5); table.repaint(); con.close(); catch(SQLException ee) System.out.println(ee); if(e.getSource()=enterModify) try con=DriverManager.getConnection(jdbc:odbc:hello,); sql=con.createStatement(); sql.executeUpdate (UPDATE 图书信息 SET 图书信息=+a00+ ,A
34、DDRESS=+a01+ ,IN_AMOUNT=+a02+ ,OUT_AMOUNT=+a03+,REMAIN_AMOUNT=+a04+WHERE 图书编号=+num+); JOptionPane.showMessageDialog (this,更新成功,成功,JOptionPane.PLAIN_MESSAGE); con.close(); catch(SQLException ee) JOptionPane.showMessageDialog (this,更新失败+ee,失败,JOptionPane.ERROR_MESSAGE); class InsertRecord extends JDia
35、log implements ActionListener /负责增加记录的类 JLabel hintLabel; Object name=图书编号,图书名,图书价格,库存量; Object a=new Object16; JTable table; JButton enterInsert; Connection con; Statement sql; ResultSet rs; String num; InsertRecord(String s) setTitle(s); hintLabel=new JLabel(输入新记录:); table=new JTable(a,name); ente
36、rInsert=new JButton(增加新记录); setLayout(null); Box baseBox=Box.createHorizontalBox(); baseBox.add(hintLabel); baseBox.add(new JScrollPane(table); baseBox.add(enterInsert); add(baseBox); baseBox.setBounds(10,40,600,38); enterInsert.addActionListener(this); setBounds(120,160,700,200); public void actionPerformed(ActionEvent e) try con=DriverManager.getConnection(jdbc:odbc:hello,); sql=con.createStat