数据库课程设计图书销售管理系统.docx
《数据库课程设计图书销售管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计图书销售管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
![数据库课程设计图书销售管理系统.docx](https://file1.bdocx.com/fileroot1/2023-7/8/f44ece4d-62c5-4078-807e-d30d31c9f63d/f44ece4d-62c5-4078-807e-d30d31c9f63d1.gif)
数据库课程设计图书销售管理系统
《数据库原理》课程设计报告
专业:
软件工程
班级:
软件1201、软件1202
学号:
**********、**********
姓名:
向文静、黄鹏
题目名称:
图书销售管理系统
完成日期:
2014年5月25日
计算机学院实验中心
引言
随着计算机的普及书店规模的不断扩大,传统的图书销售管理方法,都是通过人工统计和计算的管理方式进行的。
这样的管理方法不但费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普及,打破了书店管理的传统管理方法,提高了管理效率的同时,克服了传统管理方法中易产生的问题,使管理员能够有序的、全面的对图书销售和库存进行管理。
通过图书销售管理系统可以解决书店管理中遇到的各种问题,该图书销售管理系统分析了市场需求和实际需要,利用MicrosoftVisualStudio2008连接SQL数据库的方式,实现了书店的图书销售等一系列管理,该系统具有处理图书录入、图书销售及管理、图书查询、报表查询等功能。
第一章系统分析
1.1功能需求:
本系统是根据书店的实际需求而开发的,要求稳定、可靠的实现图书销售的自动化管理,通过本系统可以达到以下目标:
a、用户管理:
对系统所有用户的相关信息进行管理。
b、图书管理:
对图书信息进行添加以及编辑,对图书基本信息的录入及编辑包括图书类别、图书进价、图书售价、图书出版社、图书折扣、图书作者等。
c、图书销售管理:
对图书的销售信息进行动态添加并实现对图书库存量的动态修改等,所添加的图书销售信息包括图书的售价、折扣、销售日期。
d、查询管理:
用户根据实际需要对图书、图书销售、图书库存等信息分类查询。
e、报表查询:
系统用户可以通过对时间段的选择来查看该段时间内图书的销售情况,以便于做出更为合理的销售计划、提高效益。
f、数据管理:
为了防止系统用户的误操作,用户可以根据自己的需要对图书信息、销售数据等进行备份等操作。
1.2待开发软件功能:
通过以上的系统目标分析,根据以上系统所要满足的功能,设计出了图书销售管理系统的主要功能模块图,如图1.1所示。
该图书销售管理系统是根据书店的情况结合实际需求而开发的,完全能够帮助书店实现高效、准确的图书销售自动化管理。
2.1系统主要功能模块设计:
结合前面对系统功能的分析,以及MicrosoftVisualStudio2008开发环境的特点,得到如下图所示的系统功能模块图:
图2.1图书销售管理系统主要功能模块图
系统各个模块功能分配如下:
(1)图书信息模块:
对图书的各种信息、类别进行录入、管理;
(3)供应商信息模块:
对供应商供应的各种图书信息进行录入、管理;
(4)客户信息模块:
对各种信息进行统计、查询;
(5)销售信息模块:
对销售完的图书进行统计、查询;
2.2系统处理流程分析:
(1)系统启动,选择登录类型并进行身份验证(账户、密码均为a、a)
(2)登录成功后,进入系统主界面;
(3)系统初始化,导入数据库;
(4)登录成功后可以进行相应的功能选择并进行操作;
(5)退出系统。
2.3系统接口设计:
2.3.1外部接口
(1)界面:
采用GUI图形用户界面,含菜单、图片控件、Button按钮、文本框等元素。
(2)软件接口:
系统运行于JAVA开发环境下。
(3)硬件接口:
运行于PC机上。
3.1系统数据库分析:
通过对图书销售管理系统的功能分析我们已知道,图书销售管理系统具有处理图书录入、图书销售、销售统计、查询库存等功能,通过该系统能够帮助用户迅速准确的对已销售图书和剩余库存图书进行统计和销售数据的汇总工作,以此来提高书店的管理效率以及实际操作过程中的准确性。
因此,在该系统的后台就必须得有一个强大的数据库作为其功能的支持。
SQL(StructuredQueryLanguage)作为一门结构化查询语言,是关系数据库的标准语言,也是一个通用的、功能极强的关系数据库语言。
当前,几乎所有关系数据库管理系统软件都支持SQL,而许多的软件厂商也对SQL的基本命令集进行了不同程度的扩充和修改,使用户在对其功能的使用上更加的容易。
所以,在图书销售管理系统的数据库使用上就选择SQL数据库。
部分代码:
createtableuserinfo(
usidintprimarykey,
unamevarchar2(20),
pwdvarchar2(20),
flagvarchar2(10)
)
createtablebooks(--图书信息
bidintprimarykey,--主键
bnamevarchar2(100),--图书名称
ballint,--总数量
buycountint,--订购数量
buytimevarchar2(20),--订购时间
buymoneynumber,--金额
pressvarchar2(100),--出版社名称
authorvarchar2(50)--作者名称
)
select*frombooks;
insertintobooksvalues(seq_bid.nextval,'oracle',20,50,'2014-5-6',20.00,'人民出版社','付鹏程');
insertintobooksvalues(seq_bid.nextval,'java',13,40,'2014-5-6',30.00,'人民出版社','主线程');
insertintobooksvalues(seq_bid.nextval,'c++',44,60,'2014-5-6',40.00,'人民出版社','阿道夫');
insertintobooksvalues(seq_bid.nextval,'c',53,70,'2014-5-6',50.00,'人民出版社','许');
insertintobooksvalues(seq_bid.nextval,'c#',69,80,'2014-5-6',60.00,'人民出版社','农合工');
commit;
selectbidas编号,bnameas书名,ballas库存,buycountas订购数量,buytimeas订购时间,buymoneyas单价,pressas出版社,authoras作者frombookswhere1=1
createtablesupplier(--供应商
sidintprimarykey,--主键
snamevarchar2(100),--供应商名字
saddressvarchar2(100),--地址
telvarchar2(100),--电话
contactvarchar2(100)--联系人
)
select*fromsupplier;
insertintosuppliervalues(seq_sid.nextval,'四色女','湖南','134256','唐先生');
insertintosuppliervalues(seq_sid.nextval,'常凯申','湖南','134256','费先生');
insertintosuppliervalues(seq_sid.nextval,'邹平','湖南','134256','李女士');
commit;
createtablecustomer(--客户信息
cidintprimarykey,--主键
cnamevarchar2(50),--客户名字
agevarchar2(10),--年龄
sexvarchar2(10),--性别
booknumnumber,--累计购书数量
countnumber--累计购书金额
)
select*fromcustomer;
updatecustomersetcname='赵伟波'wherecid=2
insertintocustomervalues(seq_cid.nextval,'付鹏程','21','男',1245);
insertintocustomervalues(seq_cid.nextval,'jeux','26','女',123);
insertintocustomervalues(seq_cid.nextval,'胡胜友','18','男',12357);
insertintocustomervalues(seq_cid.nextval,'李清清','24','女',1245);
commit;
createtablesales(--销售信息
saleidintprimarykey,--主键
saletimevarchar2(20),--时间
countint,--数量
pricenumber,--单价
bidintconstraintFK_bidreferencesbooks(bid),
cidintconstraintFK_cidreferencescustomer(cid),
sidintconstraintFK_sidreferencessupplier(sid)
)
selects.saleidas编号,b.bnameas书名,b.pressas出版社,b.authoras作者,s.countas销售数量fromsaless,booksbwheres.bid=b.bidorderbycountdesc;
select*fromsales;
insertintosalesvalues(seq_saleid.nextval,'2014-5-16',134,29,4,1,1);
insertintosalesvalues(seq_saleid.nextval,'2014-5-16',14,22,5,2,2);
insertintosalesvalues(seq_saleid.nextval,'2014-5-16',89,26,6,3,3);
selectb.bnameas书名,b.pressas出版社,b.authoras作者,s.saletimeas销售时间,s.countas销售数量,s.priceas销售单价,ameas客户名字,su.snameas供应商fromsaless,booksb,customerc,suppliersuwheres.bid=b.bidands.cid=c.cidands.sid=su.sid
commit;
createsequenceseq_usidincrementby1startwith1;
createsequenceseq_bidincrementby1startwith1;
createsequenceseq_sidincrementby1startwith1;
createsequenceseq_cidincrementby1startwith1;
createsequenceseq_saleidincrementby1startwith1;
selectsidfromsupplierwheresname='邹平'
updatebookssetball=100
图书信息表
字段名
类型
NULL
其他
备注
bname
Varchar2(100)
图书名
ball
int
图书总数量
buycount
int
订购信息
buytime
varchar2(20)
订购时间
buymoney
number
金额
press
varchar2(100)
出版社名称
author
varchar2(50)
作者名称
供应商信息表
字段名
类型
NULL
其他
备注
sname
Varchar2(100)
供应商名字
saddress
Varchar2(100)
地址
tel
varchar2(100)
电话
contact
varchar2(100)
联系人
客户信息表
字段名
类型
NULL
其他
备注
cname
varchar2(50)
客户名称
age
varchar2(10)
年龄
sex
varchar2(10)
性别
booknum
number
累计购书量
count
number
累计购金额
销售信息表
字段名
类型
NULL
其他
备注
saletime
varchar2(20)
时间
count
int
数量
price
number
单价
4.界面设计
1.登陆界面
2.主界面
3.图书综合管理界面
4.订购信息界面
5.客户信息管理界面
6.销售信息界面
5、参考文献
1.《VisualC++.net2003程序设计》何炜等冶金工业出版社
2.《数据库系统概论(第三版)》萨师煊等高等教育出版社
3.《Windows用户界面开发》[美]EverettN.McKay著北京大学出版社
4.常州VC编程网用VisualC++开发数据库应用程序
5.MicrosoftMSDN关于MFCODBC部分的文档
6、课程设计总结
此次课程设计是对我们这一学期所学知识的一次总结,也是一次检验,更是我们对自己的一次挑战。
通过这次课程设计,我发现自己对SQL的学习还是非常不够的。
但我通过自己的努力,独立完成了这次的设计。
从构思到设计,虽然我做得不是很好,但我在自己摸索的过程中学到了很多东西。
在系统设计中,我遇到了很多困难,特别是操作过程中遇到很多问题。
从开始的无从下手,到慢慢入手,我一步一个脚印从无到有学会了很多。
因此,我懂得了,只有不断的实践才是成功的关键。
在以后的学习生活中,我一定牢记此次课程设计的经验,努力实践,绝不轻言放弃。
不断的提高和完善自己,争取做得更好。
附件
packagecom.tane.ui;
importorg.eclipse.swt.widgets.Display;
/**
*登陆界面
*@authortane
*/
publicclassLoginUi{
//外部帮助类的调用
TrayUtiltrayUtil=newTrayUtil();
//自身类变量的定义
protectedShellshlBookstore;
protectedDisplaydisplay;
privateTexttext_1;
privateTexttext_2;
/**
*Launchtheapplication.
*@paramargs
*/
publicstaticvoidmain(String[]args){
try{
LoginUiwindow=newLoginUi();
window.open();
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*Openthewindow.
*/
publicvoidopen(){
display=Display.getDefault();
createContents();
shlBookstore.open();
shlBookstore.layout();
while(!
shlBookstore.isDisposed()){
if(!
display.readAndDispatch()){
display.sleep();
}
}
}
/**
*Createcontentsofthewindow.
*/
protectedvoidcreateContents(){
shlBookstore=newShell(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"));
shlBookstore.setSize(450,300);
shlBookstore.setText("BookStore");
/**
*设置窗口可拖动
*/
Listenerlistener=newListener(){
intstartX,startY;
publicvoidhandleEvent(Evente){
if(e.type==SWT.MouseDown&&e.button==1){
startX=e.x;
startY=e.y;
}
if(e.type==SWT.MouseMove&&(e.stateMask&SWT.BUTTON1)!
=0){
Pointp=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);
Groupgroup=newGroup(shlBookstore,SWT.NONE);
group.setBounds(42,102,343,115);
Labellabel=newLabel(group,SWT.NONE);
label.setAlignment(SWT.RIGHT);
label.setBounds(10,34,77,17);
label.setText("\u8D26\u53F7\uFF1A");
Labellabel_1=newLabel(group,SWT.NONE);
label_1.setAlignment(SWT.RIGHT);
label_1.setBounds(10,74,77,17);
label_1.setText("\u5BC6\u7801\uFF1A");
//账号
text_1=newText(group,SWT.BORDER);
text_1.setBounds(110,31,165,23);
//密码
text_2=newText(group,SWT.BORDER|SWT.PASSWORD);
text_2.setBounds(110,71,165,23);
Buttonbutton=newButton(shlBookstore,SWT.NONE);
button.addSelectionListener(newSelectionAdapter(){
@Override
publicvoidwidgetSelected(SelectionEvente){
//取出账号密码,如果账号密码正确就进入主菜单
Stringname=text_1.getText();
Stringpassword=text_2.getText();
if(name.equals("a")&&password.equals("a")){
MainMenuUimainMenu=newMainMenuUi();
LoginUi.this.shlBookstore.setVisible(false);
mainMenu.open();
}else{
UiUtil.getMessage(shlBookstore,"账号或密码错误!
");
}
}
});
button.setBounds(98,250,80,27);
button.setText("\u767B\u5F55");
Buttonbutton_1=newButton(shlBookstore,SWT.NONE);
button_1.setBounds(264,250,80,27);
button_1.setText("\u6CE8\u518C");
Labellabel_2=newLabel(shlBookstore,SWT.NONE);
label_2.setForeground(SWTResourceManager.getColor(SWT.COLOR_MAGENTA));
label_2.setFont(SWTResourceManager.getFont("华文行楷",20,SWT.NORMAL));
label_2.setBounds(100,56,233,29);
label_2.setText("\u5C0F\u578B\u4E66\u5E97\u7BA1\u7406\u7CFB\u7EDF");
/**关闭按钮*/
Labellabel_3=newLabel(shlBookstore,SWT.NONE);
label_3.addMouseListener(newMouseAdapter(){