数据库课程设计报告手机进销存.docx
- 文档编号:9744545
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:31
- 大小:1.09MB
数据库课程设计报告手机进销存.docx
《数据库课程设计报告手机进销存.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告手机进销存.docx(31页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告手机进销存
数据库课程设计报告-手机进销存
告
手机进销存管理系统
软件学院软件工程专业
姓名:
学号:
任课教师:
实验教师:
一、系统开发平台
题目:
手机进销存管理系统
开发工具:
Eclipse,sqlserver2008
数据库:
sqlserver2008
操作系统:
windows7
二、数据库规划
2.1任务陈述
进销存管理系统是流程较为完整的中小型商业企业信息管理系统,包括企业的客户信息、供应商信息、银行资料信息、采购管理、销售管理、库房管理、报表管理、应收应付、报表统计、利润统计和异常处理一等一系列企业业务全方位的解决方案。
手机进销存管理系统是主要针对销售手机的中小企业的信息管理系统,主要包括手机的库存信息,出库、入库,手机销售,售后服务,手机调价,供应商信息,各种数据的记录、查询等的解决方案。
软件主要针对手机销售过程中所涉及的不同阶段分不同的功能板块进行设计,满足手机信息管理所需的数据的各种查询、增加、删除、更新等操作,方便用户使用,为用户提供所需的手机库存、销售等方面的各种信息,实现对手机进销存的管理。
2.2任务目标
添加供应商提供的手机品牌信息
按入库日期、手机品牌或型号、供应商、手机串号查询有关库存手机信息
添加有关手机入库信息
按手机串号、品牌或型号、供应商添加出库手机信息
按手机品牌或型号、供应商、手机串号查询有关出库手机信息
添加手机销售信息
按销售日期、品牌或型号、供应商、手机串号查询销售手机信息
添加手机换机信息
添加手机退机信息
查询手机销售排行信息
添加更新手机售后信息
按品牌或型号、手机串号查询已修手机售后信息
查询未修手机售后信息
添加手机调价信息
按品牌或型号查询手机调价信息
添加新用户
修改用户密码信息
按串号查询手机状态信息
添加手机结款信息
查询手机结款信息
三、系统定义
供应手机
3.1系统边界
3.2用户视图
普通用户:
1.添加供应商供应的手机品牌信息
2.查询手机销售排行信息
3.查询库存手机信息
4.添加入库手机信息
5.添加出库手机信息
6.查询出库手机记录
7.添加销售手机信息
8.录入销售换机信息
9.录入销售退机信息
10.查询销售记录
11.登记售后手机信息
12.添加售后取机信息
13.查询售后手机记录
14.添加手机调价信息
15.查询手机调价记录
16.查询手机状态信息
17.录入手机结款信息
18.查询手机结款信息
19.修改用户密码
管理员:
除了具有与普通用户相同的权限外,管理员可以新增普通用户
四、需求分析
4.1用户需求说明
4.1.1数据需求
品牌信息:
供应商,品牌
手机信息:
串号,品牌,型号,颜色,结款状态,备注
机型信息:
品牌,型号,键/触,机型,进价
入库信息:
串号,入库日期
出库信息:
串号,出库日期
销售信息:
串号,售价,销售日期
换机信息:
卖机串号,换机串号,换机价格
退机信息:
退机串号
售后信息:
售后机串号,故障
售后取机信息:
取机串号
调价信息:
品牌,型号,调后价格
结款信息:
串号,结款日期
4.1.2事务需求
查询销售量最多的十五部手机
按品牌、价格、键/触、机型查询符合组合条件的所有库存手机信息
添加一部准备入库的手机信息
提交插入所有准备入库的手机信息
按串号添加一部准备出库的手机信息
按品牌或型号添加多部准备出库的手机信息
按供应商添加多部准备出库的手机信息
提交删除所有准备出库的手机信息,同时添加相应的所有的出库信息
按品牌或型号查询所有的出库记录
按日期查询所有的出库记录
按串号查询一部手机的出库记录
添加一部准备销售的手机信息
提交多部准备销售的手机信息
添加一部准备换机的手机信息和一部换机的手机信息
提交一部换机手机信息
添加一部准备退机的手机信息
提交一部准备退机的手机信息
按日期、品牌、型号、供应商查询符合组合条件的销售记录信息
按串号查询一部手机的销售记录信息
添加登记一部手机的售后信息
提交一部手机的售后信息
添加一部手机的售后取机信息
提交一部手机的售后取机信息
查询所有售后待修手机的信息
查询所有售后已修手机的信息
添加一种机型的手机调价信息
提交一种机型的手机调价信息
查询手机调价记录
添加一种品牌的供应商名称
添加一部将要结款的手机信息
提交所有准备结款的手机信息
查询手机结款记录
修改一位用户的密码信息
创建一位新的用户
查询一部手机的手机状态信息
4.2系统需求说明
1)软件环境
软件环境需支持windows操作系统,sqlserver数据库
2)初始数据库大小
大约有500部库存手机
大约有500种不同品牌和型号的机型信息
大约有10家供应商提供不同品牌的手机
至少有一名普通用户和一名管理员
其它初始信息可为零
3)数据库增长速度
平均每天销售3-10部手机
平均每月有50部手机入库
平均每月有2-5部手机售后
平均每月有10-20部手机出库
平均每月有1-3部手机退机
平均每月有1-5部手机换机
平均每月有1-10部手机调价
平均每月有30-50部手机结款
4)记录查找的类型和平均数量
查询库存手机信息每天大约20次
查询出库记录每天大约5-10次
查询销售记录每天大约20-30次
查询调价记录每天大约3-10次
查询结款记录每天大约5-10次
查询销售排行每天大约3-5次
查询手机状态每天大约30-50次
5)性能
单个记录查询时间少于一秒
多个记录查询时间少于三秒
添加、删除、更新记录时间少于五秒
五、数据库逻辑设计
5.1ER图
5.2数据字典
1.实体和联系属性
所有手机allmobile:
串号num品牌brand型号model颜色color结款状态paystate备注remark
供应品牌supplybrand:
供应商supplyer品牌brand
机型mobilemodel:
品牌brand型号model键/触keytouch机型tool进价pricein
手机入库storage:
串号num入库日期instoragedate
手机出库outstorage:
串号num出库日期outstoragedate入库日期instoragedate
手机销售sell:
串号num售价sellprice销售日期selldate入库日期instoragedate
售后服务aftersell:
串号num登记日期checkdate故障faulty维修状态repairstate
手机调价chprice:
品牌brand型号model调价日期chpricedate调前beforech调后afterch
手机结款payment:
串号num结款日期paystate
用户account:
用户名username密码psw
实体
属性
类型及大小
空
Account
Username
Varchar(20)
Notnull
Psw
Varchar(15)
Notnull
Allmobile
Num
Varchar(15)
Notnull
brand
Varchar(10)
model
Varchar(10)
color
Varchar(10)
paystate
Varchar(10)
remark
Varchar(10)
chprice
brand
Varchar(10)
model
Varchar(10)
chpricedate
date
beforech
int
afterch
int
2.属性描述
实体
属性
类型及大小
空
Mobilemodel
Brand
Varchar(10)
Notnull
Model
Varchar(10)
Notnull
Keytouch
Varchar(10)
Tool
Varchar(10)
Pricein
Int
Outstorage
Num
Varchar(15)
Notnull
Outstoragedate
Date
Instoragedate
Date
Paymentdate
Num
Varchar(15)
Paydate
Date
Sell
Num
Varchar(15)
Sellprice
Int
Selldate
Date
Instoragedate
Date
Sellservice
Num
Varchar(15)
Checkdate
Date
Fault
Varchar(30)
Repairstate
Varchar(10)
Storage
Num
Varchar(10)
Instoragedate
Date
Supplybrand
Suplyer
Varchar(10)
Brand
Varchar(10)
5.3关系表
六、数据库物理设计
6.1索引
Objectname
ObjecteId
Indexname
Indexed
Averagefreebytes
allmobile
165575628
PK__allmobil__DF908D650BC6C43E
1
7511
supplybrand
293576084
0
8023.5
storage
309576141
0
8077
outstorage
357576312
0
7986
sell
389576426
0
7912
sellservice
421576540
0
8034
mobilemodel
501576825
PK__mobilemo__11841F0F1FCDBCEB
1
7734
chprice
597577167
0
8018
paymentdate
629577281
PK__paymentd__DF908D65276EDEB3
1
8039
account
709577566
PK__account__F3DBC5732C3393D0
1
8044
sysdiagrams
789577851
PK__sysdiagr__C2B05B6130F848ED
1
0
sysdiagrams
789577851
UK_principal_name
2
0
6.2视图
本节可选。
6.3安全机制
系统安全、数据安全
1.系统安全
为用户设置登录密码,登录时必须经过验证才可进入系统。
设有管理员,只有管理员可以新建用户。
所有用户名和密码均存在数据库中,不可擅自修改,需要验证后才可以修改密码。
2.数据安全
对于手机出库、入库、销售、售后、结款等重要的插入删除等操作均设有列表,首先将数据添加到列表中,然后进行二次确认才会进行提交。
对于入库、出库、销售等操作均排除对空数据、重复的数据、错误的数据进行插入删除查询操作。
对于空查询结果,错误查询结果均有提示。
对于重要的数据需要输入相应手机串号后进行操作。
6.4其他
本节可选:
引入受控冗余等。
由于进行手机销售,查看销售记录,手机出库,查看出库记录,手机售后,手机调价以及与供应商进行结款时都需要查看手机入库时间,因此为了避免大量的表之间的连接操作,这些表中均加入了入库时间这一列,以使查询效率更高。
七、应用程序设计
7.1功能模块
1.主界面查询
主界面分为两块查询,为销售排行和机型推荐。
销售排行列出销售量最大的15部手机。
机型推荐可对手机从品牌、价格、键/触、机型几个方面进行查询。
2.库存查询
从品牌、型号、供应商、串号、入库日期等几个方面对库存手机进行查询
3.手机出/入库
分为手机入库,手机出库和出库记录三个方面。
主要实现手机出入库,以及对出库信息的查询。
4.手机销售
分为手机销售,销售换机,销售退机,销售查询几个方面。
实现手机销售操作,销售后可以进行换机、退机操作,以及查询销售记录。
5.手机售后
分为售后登记、售后取机,以及查询售后记录。
实现手机售后方面的功能
6.手机调价
分为手机调价和查询调价记录。
实现手机调价方面的功能。
7.品牌添加
可以进行手机品牌的添加以及与之对应的供应商的名称。
8.供应商结款
分为库存手机结款,已售手机结款,和查询借款记录。
9.串号追踪
主要查询手机状态,查询某串号的手机在库存还是已售,或者是已出库。
10.账户保护
用户可以修改密码,管理员可以新建用户。
7.2界面设计
可抓几幅画面介绍。
1.登陆界面
2.主界面
主界面分为功能表和查询两块,功能表包括程序的所有基本功能,查询分为销售排行查询和机型查询,这两个查询是常用查询与各功能模块并不相关,所以设在了主界面。
2.品牌添加
3.库存手机
这个界面设计时没有考虑到用户查询的方便性,而且几个查询组建位置设置不太好,需要进一步改进。
4.手机出/入库
5.手机销售
6.手机售后
8.手机调价
9.账户保护
10.供应商结款
11.串号追踪
7.3事务设计
关键或复杂的事务操作的设计,可附相应SQL语句进行分析介绍。
1.查询销售排行
查询销售排行对于用户及时掌握销售信息,促进手机销售有很重要的作用。
包括两条主要查询语句:
r=c.executeQuery("selectCOUNT(distinctmodel)fromallmobilewhereexists(select*fromsellwhereallmobile.num=sell.num)");
r.next();
totlenumber=Integer.parseInt(r.getString
(1));
if(totlenumber==0)
{
JOptionPane.showMessageDialog(null,"暂无销售记录!
");
return;
}
r=c.executeQuery("selectp.brand,p.model,q.keytouch,q.tool,COUNT(*)asnumberfromallmobileasp,mobilemodelasqwherep.brand=q.brandandp.model=q.modelandexists(select*fromsellwherep.num=sell.num)groupbyp.brand,p.model,q.keytouch,q.toolorderbyCOUNT(*)desc");
其中第一条语句查询已销售的总的手机型号数,以确保有已售手机并正确显示;第二条语句为了避免多个表的连接操作,使用了exist语句,查询出销售排行。
2.销售换机
销售换机分别涉及到两个表的插入和删除操作,需将已售机从销售记录中删除,插入到库存手机记录中,并将要换手机从库存中删除,插入到销售记录中:
c=connection.getConnection().createStatement();
c.executeUpdate("deletefromsellwherenum='"+num1+"'");
c.executeUpdate("insertintostorage(num,instoragedate)values('"+num1+"','"+eindate1+"')");
c.executeUpdate("deletefromstoragewherenum='"+num2+"'");
c.executeUpdate("insertintosell(num,sellprice,selldate,instoragedate)values('"+num2+"',"+esellprice+",'"+eselldate+"','"+eindate2+"')");
四条语句分别进行相应的插入删除操作,如果抛出异常,将进行回滚,保证数据的一致性。
3.多次添加,一次提交
对于手机入库,出库,销售,结款等常用操作,特别是手机的大批量入库,为了避免每部手机均要进行提交的麻烦,程序首先将用户输入或通过查询得到的数据显示在表格中,待用户确认后,可一起进行提交,这样就方便了用户的操作。
//首先将数据显示在表格中
s=connection1.getConnection().createStatement();
r=s.executeQuery("select*frommobilemodelwherebrand='"+inbrandstr+"'"+"andmodel='"+inmodelstr+"'");
if(!
r.next())
{
s.executeUpdate("insertintomobilemodel(brand,model,keytouch,tool,pricein)values('"+inbrandstr+"','"+inmodelstr+"','"+inkeytouchstr+"','"+intoolstr+"',"+pricein+")");
}
r.close();
mobile[0]=(String)brandb.getSelectedItem();
mobile[1]=(String)modelb.getSelectedItem();
mobile[2]=numf.getText();
mobile[3]=(String)keytouchb.getSelectedItem();
mobile[4]=(String)toolb.getSelectedItem();
mobile[5]=(String)colourb.getSelectedItem();
mobile[6]=pricef.getText();
mobile[7]=(String)stateb.getSelectedItem();
mobile[8]=remarkf.getText();
for(inti=0;i<9;i++)
{
instoragetable.setValueAt(mobile[i],number,i);
}
number++;
//将表中数据一起提交
for(ints=0;s { submitinstr[0]=(String)instoragetable.getValueAt(s,0); submitinstr[1]=(String)instoragetable.getValueAt(s,1); submitinstr[2]=(String)instoragetable.getValueAt(s,2); submitinstr[3]=(String)instoragetable.getValueAt(s,5); submitinstr[4]=(String)instoragetable.getValueAt(s,7); submitinstr[5]=(String)instoragetable.getValueAt(s,8); try{ si=connection1.getConnection().createStatement(); si.executeUpdate("insertintoallmobile(num,brand,model,color,paystate,remark)values('"+submitinstr[2]+"','"+submitinstr[0]+"','"+submitinstr[1]+"','"+submitinstr[3]+"','"+submitinstr[4]+"','"+submitinstr[5]+"')"); si.executeUpdate("insertintostorage(num,instoragedate)values('"+submitinstr[2]+"','"+yearstr+"-"+monthstr+"-"+daystr+")"); }catch(SQLExceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } } 八、测试和运行 介绍系统的测试情况,可提供几个测试用例。 可选: 生成大数据量的仿真数据,进行性能测试的情况。 通过不同的错误输入,漏输测试各个部分是否给出准确提示,检测系统漏洞,并且不断完善,增强系统的健壮性。 同时在几名同学的帮助下,首先向他们讲述了系统需求和所需操作方法;然后请他们使用该系统,测试尽可能多的情况;最后根据同学的测试感受主要对系统提示方式和内容方面做出了改进。 九、总结 经验体会;系统的特色、不足(可继续完善的方面)。 编写本系统是从暑假开始,共用了一个多月的时间完成,从需求的分析到功能的设置,以及数据库的设计和界面的设计,到编码,中间发现了许多问题,也收获了一些编程的经验,虽然有不少的错误和失误的地方,但最终完成了整个系统。 从中感受到了编写一个完整系统所需的步骤,也了解到了自己编程方面的不足,对于以后的变成很有帮助。 刚开始的时候以为一个手机进销存的系统编写起来会很容易,但要入手的时候才会感受到各个方面需要学习和注意的地方有很多。 首先就感受到了需求分析的重要性。 一开始不进行需求分析就有种无从下手的感觉,不能够很清晰的知道手机入库、出库、销售各个功能模块所需实现的功能,特别是一些细节的实现。 而需求分析以后,不仅各个功能的实现清晰了,数据库中所要建立的表格也很清楚。 其次就是软件设计过程中应该注意的软件的健壮性问题,特别是对于重要数据的插入、删除、更新操作必须非常慎重,而且要检查数据的正确性、一致性,这对于整个系统至关重要,只有保证数据的正确才能使用户得到有用的信息,否则整个软件是没有意义的。 还有就是对于数据库事务的概念有了体会,对于一些插入删除操作必须建立事务的概念,在对数据库操作失败时,应该及时回滚。 系统的特色是功能的设置考虑的比较全面,对于手机运营过程中所涉及的操作基本都有实现,所以用户操作起来会更
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 报告 手机 进销存
![提示](https://static.bdocx.com/images/bang_tan.gif)