1、数据库原理课程设计报告 专业: 软 件 工 程 班级: 软件1201、软件1202 学号: 、 姓名: 向文静、黄鹏 题目名称: 图书销售管理系统 完毕日期: 2023年5月25日 计算机学院实验中心引 言随着计算机的普及书店规模的不断扩大,传统的图书销售管理方法,都是通过人工记录和计算的管理方式进行的。这样的管理方法不仅费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普及,打破了书店管理的传统管理方法,提高了管理效率的同时,克服了传统管理方法中易产生的问题,使管理员可以有序的、全面的对图书销售和库存进行管理。通过图书销售管理系统可以解决书店管理中碰到的各种问题,该图书销售管理系统分析
2、了市场需求和实际需要,运用Microsoft Visual Studio 2023连接SQL数据库的方式,实现了书店的图书销售等一系列管理,该系统具有解决图书录入、图书销售及管理、图书查询、报表查询等功能。第一章 系统分析1.1功能需求:本系统是根据书店的实际需求而开发的,规定稳定、可靠的实现图书销售的自动化管理,通过本系统可以达成以下目的:a、 用户管理:对系统所有用户的相关信息进行管理。b、 图书管理:对图书信息进行添加以及编辑,对图书基本信息的录入及编辑涉及图书类别、图书进价、图书售价、图书出版社、图书折扣、图书作者等。c、 图书销售管理:对图书的销售信息进行动态添加并实现对图书库存量的
3、动态修改等,所添加的图书销售信息涉及图书的售价、折扣、销售日期。d、 查询管理:用户根据实际需要对图书、图书销售、图书库存等信息分类查询。e、 报表查询:系统用户可以通过对时间段的选择来查看该段时间内图书的销售情况,以便于做出更为合理的销售计划、提高效益。f、 数据管理:为了防止系统用户的误操作,用户可以根据自己的需要对图书信息、销售数据等进行备份等操作。1.2待开发软件功能:通过以上的系统目的分析,根据以上系统所要满足的功能,设计出了图书销售管理系统的重要功能模块图,如图1.1所示。图书销售管理系统销售信息模块供应商信息模块图书信息模块客户信息模块该图书销售管理系统是根据书店的情况结合实际需
4、求而开发的,完全可以帮助书店实现高效、准确的图书销售自动化管理。2.1 系统重要功能模块设计:结合前面对系统功能的分析,以及Microsoft Visual Studio 2023开发环境的特点,得到如下图所示的系统功能模块图:图书销售管理系统销售信息模块供应商信息模块图书信息模块客户信息模块图2.1图书销售管理系统重要功能模块图系统各个模块功能分派如下:(1) 图书信息模块:对图书的各种信息、类别进行录入、管理;(3)供应商信息模块:对供应商供应的各种图书信息进行录入、管理;(4)客户信息模块:对各种信息进行记录、查询;(5)销售信息模块:对销售完的图书进行记录、查询;2.2 系统解决流程分
5、析:(1) 系统启动,选择登录类型并进行身份验证(账户、密码均为a、a)(2)登录成功后,进入系统主界面;(3)系统初始化,导入数据库;(4)登录成功后可以进行相应的功能选择并进行操作;(5)退出系统。2.3系统接口设计:2.3.1外部接口(1) 界面:采用GUI图形用户界面,含菜单、图片控件、Button按钮、文本框等元素。(2) 软件接口:系统运营于JAVA开发环境下。(3) 硬件接口:运营于PC机上。3.1系统数据库分析:通过对图书销售管理系统的功能分析我们已知道,图书销售管理系统具有解决图书录入、图书销售、销售记录、查询库存等功能,通过该系统可以帮助用户迅速准确的对已销售图书和剩余库存
6、图书进行记录和销售数据的汇总工作,以此来提高书店的管理效率以及实际操作过程中的准确性。因此,在该系统的后台就必须得有一个强大的数据库作为其功能的支持。SQL(Structured Query Language)作为一门结构化查询语言,是关系数据库的标准语言,也是一个通用的、功能极强的关系数据库语言。当前,几乎所有关系数据库管理系统软件都支持SQL,而许多的软件厂商也对SQL的基本命令集进行了不同限度的扩充和修改,使用户在对其功能的使用上更加的容易。所以,在图书销售管理系统的数据库使用上就选择SQL数据库。部分代码:create table userinfo( usid int primary
7、key, uname varchar2(20), pwd varchar2(20), flag varchar2(10)create table books( -图书信息 bid int primary key, -主键 bname varchar2(100), -图书名称 ball int, -总数量 buycount int, -订购数量 buytime varchar2(20), -订购时间 buymoney number, -金额 press varchar2(100), -出版社名称 author varchar2(50) -作者名称)select * from books;inse
8、rt into books values(seq_bid.nextval,oracle,20,50,2023-5-6,20.00,人民出版社,付鹏程);insert into books values(seq_bid.nextval,java,13,40,2023-5-6,30.00,人民出版社,主线程);insert into books values(seq_bid.nextval,c+,44,60,2023-5-6,40.00,人民出版社,阿道夫);insert into books values(seq_bid.nextval,c,53,70,2023-5-6,50.00,人民出版社,
9、许);insert into books values(seq_bid.nextval,c#,69,80,2023-5-6,60.00,人民出版社,农合工);commit;select bid as 编号,bname as 书名,ball as 库存,buycount as 订购数量,buytime as 订购时间,buymoney as 单价,press as 出版社,author as 作者 from books where 1=1create table supplier( -供应商 sid int primary key, -主键 sname varchar2(100), -供应商名字
10、 saddress varchar2(100), -地址 tel varchar2(100), -电话 contact varchar2(100) -联系人)select * from supplier;insert into supplier values(seq_sid.nextval,四色女,湖南,134256,唐先生);insert into supplier values(seq_sid.nextval,常凯申,湖南,134256,费先生);insert into supplier values(seq_sid.nextval,邹平,湖南,134256,李女士);commit;cre
11、ate table customer( -客户信息 cid int primary key, -主键 cname varchar2(50), -客户名字 age varchar2(10), -年龄 sex varchar2(10), -性别 booknum number, -累计购书数量 count number -累计购书金额)select * from customer;update customer set cname=赵伟波 where cid=2insert into customer values(seq_cid.nextval,付鹏程,21,男,1245);insert into
12、 customer values(seq_cid.nextval,jeux,26,女,123);insert into customer values(seq_cid.nextval,胡胜友,18,男,12357);insert into customer values(seq_cid.nextval,李清清,24,女,1245);commit;create table sales( -销售信息 saleid int primary key, -主键 saletime varchar2(20), -时间 count int, -数量 price number, -单价 bid int cons
13、traint FK_bid references books(bid), cid int constraint FK_cid references customer(cid), sid int constraint FK_sid references supplier(sid)select s.saleid as 编号,b.bname as 书名,b.press as 出版社,b.author as 作者,s.count as 销售数量 from sales s,books b where s.bid=b.bid order by count desc;select * from sales;
14、insert into sales values(seq_saleid.nextval,2023-5-16,134,29,4,1,1);insert into sales values(seq_saleid.nextval,2023-5-16,14,22,5,2,2);insert into sales values(seq_saleid.nextval,2023-5-16,89,26,6,3,3);select b.bname as 书名,b.press as 出版社,b.author as 作者,s.saletime as 销售时间,s.count as 销售数量,s.price as 销
15、售单价,ame as 客户名字,su.sname as 供应商 from sales s,books b,customer c,supplier su where s.bid=b.bid and s.cid=c.cid and s.sid=su.sid commit;create sequence seq_usid increment by 1 start with 1;create sequence seq_bid increment by 1 start with 1;create sequence seq_sid increment by 1 start with 1;create se
16、quence seq_cid increment by 1 start with 1;create sequence seq_saleid increment by 1 start with 1;select sid from supplier where sname=邹平update books set ball=100图书信息表 字段名类型NULL其他备注bnameVarchar2(100)图书名ballint图书总数量buycountint订购信息buytimevarchar2(20)订购时间buymoneynumber金额pressvarchar2(100)出版社名称authorvar
17、char2(50)作者名称供应商信息表 字段名类型NULL其他备注snameVarchar2(100)供应商名字saddressVarchar2(100)地址telvarchar2(100)电话contactvarchar2(100)联系人客户信息表 字段名类型NULL其他备注 cnamevarchar2(50)客户名称agevarchar2(10)年龄sexvarchar2(10)性别booknumnumber累计购书量countnumber累计购金额销售信息表 字段名类型NULL其他备注saletimevarchar2(20)时间countint数量pricenumber单价4. 界面设计
18、1. 登陆界面2. 主界面3.图书综合管理界面4.订购信息界面5.客户信息管理界面6.销售信息界面5、参考文献1.Visual C+ .net 2023程序设计 何炜等 冶金工业出版社 2.数据库系统概论(第三版) 萨师煊等 高等教育出版社3.Windows用户界面开发 美 Everett N. McKay著 北京大学出版社4.常州VC编程网 用Visual C+开发数据库应用程序5.Microsoft MSDN 关于MFC ODBC部分的文档6、 课程设计总结本次课程设计是对我们这一学期所学知识的一次总结,也是一次检查,更是我们对自己的一次挑战。通过这次课程设计,我发现自己对SQL的学习还是
19、非常不够的。但我通过自己的努力,独立完毕了这次的设计。从构思到设计,虽然我做得不是很好,但我在自己摸索的过程中学到了很多东西。在系统设计中,我碰到了很多困难,特别是操作过程中碰到很多问题。从开始的无从下手,到慢慢入手,我一步一个脚印从无到有学会了很多。因此,我懂得了,只有不断的实践才是成功的关键。在以后的学习生活中,我一定牢记本次课程设计的经验,努力实践,绝不轻言放弃。不断的提高和完善自己,争取做得更好。附件package com.tane.ui;import org.eclipse.swt.widgets.Display;/* * 登陆界面 * author tane */public cl
20、ass LoginUi /外部帮助类的调用TrayUtil trayUtil=new TrayUtil();/自身类变量的定义protected Shell shlBookstore;protected Display display;private Text text_1;private Text text_2;/* * Launch the application. * param args */public static void main(String args) try LoginUi window = new LoginUi();window.open(); catch (Exce
21、ption e) e.printStackTrace();/* * Open the window. */public void open() display = Display.getDefault();createContents();shlBookstore.open();shlBookstore.layout();while (!shlBookstore.isDisposed() if (!display.readAndDispatch() display.sleep();/* * Create contents of the window. */protected void crea
22、teContents() shlBookstore = new Shell(SWT.NONE);shlBookstore.setBackgroundMode(SWT.INHERIT_FORCE);shlBookstore.setBackgroundImage(SWTResourceManager.getImage(LoginUi.class, /com/tane/image/Login.jpg);shlBookstore.setImage(SWTResourceManager.getImage(LoginUi.class, /com/tane/image/logo.png);shlBookst
23、ore.setSize(450, 300);shlBookstore.setText(BookStore);/* * 设立窗口可拖动 */Listener listener = new Listener() int startX, startY; public void handleEvent(Event e) if (e.type = SWT.MouseDown & e.button = 1) startX = e.x; startY = e.y; if (e.type = SWT.MouseMove & (e.stateMask & SWT.BUTTON1) != 0) Point p =
24、 shlBookstore.toDisplay(e.x, e.y); p.x -= startX; p.y -= startY; shlBookstore.setLocation(p); ;shlBookstore.addListener(SWT.MouseDown, listener);shlBookstore.addListener(SWT.MouseMove, listener);/*设立居中*/TrayUtil.center(shlBookstore);Group group = new Group(shlBookstore, SWT.NONE);group.setBounds(42,
25、 102, 343, 115);Label label = new Label(group, SWT.NONE);label.setAlignment(SWT.RIGHT);label.setBounds(10, 34, 77, 17);label.setText(u8D26u53F7uFF1A);Label label_1 = new Label(group, SWT.NONE);label_1.setAlignment(SWT.RIGHT);label_1.setBounds(10, 74, 77, 17);label_1.setText(u5BC6u7801uFF1A);/账号text_
26、1 = new Text(group, SWT.BORDER);text_1.setBounds(110, 31, 165, 23);/密码text_2 = new Text(group, SWT.BORDER | SWT.PASSWORD);text_2.setBounds(110, 71, 165, 23);Button button = new Button(shlBookstore, SWT.NONE);button.addSelectionListener(new SelectionAdapter() Overridepublic void widgetSelected(Select
27、ionEvent e) /取出账号密码,假如账号密码对的就进入主菜单String name=text_1.getText();String password=text_2.getText();if(name.equals(a)&password.equals(a)MainMenuUi mainMenu=new MainMenuUi();LoginUi.this.shlBookstore.setVisible(false);mainMenu.open();elseUiUtil.getMessage(shlBookstore, 账号或密码错误!););button.setBounds(98, 25
28、0, 80, 27);button.setText(u767B u5F55);Button button_1 = new Button(shlBookstore, SWT.NONE);button_1.setBounds(264, 250, 80, 27);button_1.setText(u6CE8 u518C);Label label_2 = new Label(shlBookstore, SWT.NONE);label_2.setForeground(SWTResourceManager.getColor(SWT.COLOR_MAGENTA);label_2.setFont(SWTRes
29、ourceManager.getFont(华文行楷, 20, SWT.NORMAL);label_2.setBounds(100, 56, 233, 29);label_2.setText(u5C0Fu578Bu4E66u5E97u7BA1u7406u7CFBu7EDF);/*关闭按钮*/Label label_3 = new Label(shlBookstore, SWT.NONE);label_3.addMouseListener(new MouseAdapter() Overridepublic void mouseDown(MouseEvent e) /判断是否真的退出,假如拟定,则退
30、出系统,取消的话就返回本来界面int result=UiUtil.getWarnning(shlBookstore, 拟定退出?);if(result=32)/假如返回值为32,表达拟定退出System.exit(0);else if(result=256)/假如返回值为256,表达取消return;);label_3.setImage(SWTResourceManager.getImage(LoginUi.class, /com/tane/image/close.png);label_3.setBounds(425, 5, 16, 16);/*最小化按钮*/Label label_4 = n
31、ew Label(shlBookstore, SWT.NONE);label_4.addMouseListener(new MouseAdapter() Overridepublic void mouseDown(MouseEvent e) if(e.stateMask=0)shlBookstore.setMinimized(true);/shell.setActive(););label_4.setImage(SWTResourceManager.getImage(LoginUi.class, /com/tane/image/min.png);label_4.setBounds(400, 5, 16, 16);