开发工具与关键技术:Visual Studio 2019 与WPF
1、项目概要
系统主要功能模块有:
(1)日常事务:主要包括前台销售、采购进货、商品管理、VIP管理、日销售明细的功能
(2)其他事物:主要包括库存调整、库存盘点、钱箱出入款、库存往来账查询的功能
(3)统计分析:主要包括销售系统分析、经营利润分析、库存统计分析、进货统计分析、进销存统计分析的功能
(4)信息维护:主要包括系统配置、基础信息维护、用户及权限设定、数据库维护、三易通软件注册的功能
完成功能模块:采购进货、商品管理、VIP管理、钱箱出入款、用户及权限设定
2、数据库设计
2.1数据表
B_commodity
資料表名稱 | B_commodity | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | commodityID | int identity | (10, 0) | NO | PK | 商品ID | |
2 | commodityName | nvarchar | 20 | YES | 商品名称 | ||
3 | styleNumber | nvarchar | 20 | YES | 款号 | ||
4 | commoditycode | nvarchar | 20 | YES | 商品编码 | ||
5 | operatorID | int | (10, 0) | YES | 操作人ID | ||
6 | sizeID | int | (10, 0) | YES | 尺码ID | ||
7 | commodityColorID | int | (10, 0) | YES | 商品颜色ID | ||
8 | goodsID | int | (10, 0) | YES | 商品种类ID | ||
9 | regimentationID | int | (10, 0) | YES | 商品类别ID | ||
10 | brandID | int | (10, 0) | YES | 品牌ID | ||
11 | seasonID | int | (10, 0) | YES | 季节ID | ||
12 | supplierID | int | (10, 0) | YES | 供应商ID | ||
13 | unitID | int | (10, 0) | YES | 单位ID | ||
14 | inventoryID | int | (10, 0) | YES | 库存ID | ||
15 | effect | bit | 1 | YES | 生效否 | ||
16 | bargain | bit | 1 | YES | |||
17 | bargainGoods | bit | 1 | YES | 特价商品 | ||
18 | stockQty | decimal | (8, 0) | YES | 数量 | ||
19 | goodsPrice | decimal | (8, 2) | YES | 商品价格 | ||
20 | purchasingPrice | decimal | (8, 2) | YES | 进价 | ||
21 | sellingPrice | decimal | (8, 2) | YES | 吊牌价 | ||
22 | discount | decimal | (8, 2) | YES | 销售折扣 | ||
23 | afterDiscount | decimal | (8, 2) | YES | 折后售价 | ||
24 | upperLimit | decimal | (8, 0) | YES | 库存上限 | ||
25 | lowerLimit | decimal | (8, 0) | YES | 库存下限 | ||
26 | operatoTime | datetime | (23, 3) | YES | 操作时间 | ||
27 | picture | ntext | 1073741823 | YES | 商品图片 |
B_order
資料表名稱 | B_order | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | orderID | int identity | (10, 0) | NO | PK | 订单ID | |
2 | orderNo | nvarchar | 20 | YES | 订单编号 | ||
3 | operatorID | int | (10, 0) | YES | 操作人ID | ||
4 | payMoney | decimal | (8, 2) | YES | 支付金额 | ||
5 | orderStatus | int | (10, 0) | YES | 订单状态 | ||
6 | payTime | datetime | (23, 3) | YES | 支付时间 | ||
7 | styleNumber | nvarchar | 20 | YES | 款号 |
B_supplier
資料表名稱 | B_supplier | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | supplierID | int identity | (10, 0) | NO | PK | 供应商ID | |
2 | supplierName | nvarchar | 20 | YES | 供应商名称 | ||
3 | supplierAddress | nvarchar | 100 | YES | 地址 | ||
4 | contacts | nvarchar | 20 | YES | 联系人 | ||
5 | contactsPhoto | nvarchar | 20 | YES | 联系人电话 | ||
6 | account | nvarchar | 20 | YES | 账号 | ||
7 | bankOfDeposit | nvarchar | 30 | YES | 开户银行 | ||
8 | facsimile | nvarchar | 20 | YES | 传真 |
B_vipcategory
資料表名稱 | B_vipcategory | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | vipID | int | (10, 0) | YES | vipID | ||
2 | vipsortName | nvarchar | 30 | YES | VIP类型名称 | ||
3 | discount | decimal | (8, 2) | YES | 默认折扣 |
B_vipMessage
資料表名稱 | B_vipMessage | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | vipMessageID | int identity | (10, 0) | NO | PK | VIP信息ID | |
2 | vipID | int | (10, 0) | YES | VIPID | ||
3 | vipName | nvarchar | 20 | YES | VIP姓名 | ||
4 | sexID | int | (10, 0) | YES | 性别 | ||
5 | vipNumber | nvarchar | 10 | YES | VIP编码 | ||
6 | phoneNumber | nvarchar | 30 | YES | 手机号 | ||
7 | total | decimal | (8, 2) | YES | 消费金额 | ||
8 | integral | decimal | (8, 0) | YES | 消费积分 | ||
9 | birthday | date | 10 | YES | 生日 | ||
10 | lastConsumption | date | 10 | YES | 上次消费 | ||
11 | openingDate | date | 10 | YES | 打开日期 | ||
12 | note | nvarchar | 200 | YES | 备注 |
D_brand
資料表名稱 | D_brand | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | brandID | int identity | (10, 0) | NO | PK | 品牌ID | |
2 | brandName | nvarchar | 30 | YES | 品牌名称 |
D_colour
資料表名稱 | D_colour | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | commodityColorID | int identity | (10, 0) | NO | PK | 颜色ID | |
2 | colourName | nvarchar | 20 | YES | 颜色名称 | ||
3 | colorCoding | nvarchar | 20 | YES | 颜色编码 |
D_season
資料表名稱 | D_season | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | seasonID | int identity | (10, 0) | NO | PK | 季节ID | |
2 | seasonName | nvarchar | 10 | YES | 季节名称 |
D_size
資料表名稱 | D_size | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | sizeID | int identity | (10, 0) | NO | PK | 尺码ID | |
2 | sizeName | nvarchar | 10 | YES | 尺码名称 | ||
3 | sizeNumber | nvarchar | 10 | YES | 尺码编号 |
D_suit
資料表名稱 | D_suit | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | suitID | int identity | (10, 0) | NO | PK | 套装ID | |
2 | suitName | nvarchar | 50 | YES | 套装名称 | ||
3 | attribute_gather_id | int | (10, 0) | YES | 属性ID | ||
4 | detailed_attribute_gather_id | int | (10, 0) | YES | 属性明细ID |
D_unit
資料表名稱 | D_unit | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | unitID | int identity | (10, 0) | NO | PK | 单位ID | |
2 | unitName | nvarchar | 10 | YES | 单位名称 |
R_inventoryInformation
資料表名稱 | R_inventoryInformation | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | inventoryID | int identity | (10, 0) | NO | PK | 库存ID | |
2 | inventoryName | nvarchar | 20 | YES | 仓库名称 | ||
3 | update | datetime | (23, 3) | YES | 更新日期 |
S_access
資料表名稱 | S_access | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | accessID | int identity | (10, 0) | NO | PK | 出入款ID | |
2 | aggregateAmount | decimal | (8, 2) | YES | 总额 | ||
3 | earnings | decimal | (8, 2) | YES | 本次收益 | ||
4 | keep | decimal | (8, 2) | YES | 上次留存 | ||
5 | salesOrder | nvarchar | 20 | YES | 截止销售单号 | ||
6 | note | varchar | 50 | YES | 备注 |
S_attributeGather
資料表名稱 | S_attributeGather | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | attribute_gather_id | int identity | (10, 0) | NO | PK | 属性ID | |
2 | attribute_gather_name | nvarchar | 30 | YES | 属性名称 |
S_auditStatus
資料表名稱 | S_auditStatus | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | auditStatusID | int identity | (10, 0) | NO | PK | 审核状态ID | |
2 | auditStatusName | nvarchar | 5 | YES | 审核状态 |
S_detailedAttributeGather
資料表名稱 | S_detailedAttributeGather | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | detailed_attribute_gather_id | int identity | (10, 0) | NO | PK | 属性明细ID | |
2 | attribute_gather_id | int | (10, 0) | YES | 属性ID | ||
3 | detailed_attribute_gather_name | nvarchar | 50 | YES | 属性明细名称 | ||
4 | f_attribute_gather_id | int | (10, 0) | YES | 属性父ID |
S_goodsPrice
資料表名稱 | S_goodsPrice | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | goodsPriceID | int identity | (10, 0) | NO | PK | 商品价格ID | |
2 | commodityID | int | (10, 0) | YES | 商品ID | ||
3 | goodsPrice | decimal | (8, 2) | YES | 商品价格 | ||
4 | purchasingPrice | decimal | (8, 2) | YES | 进价 | ||
5 | sellingPrice | decimal | (8, 2) | YES | 吊牌价 | ||
6 | afterDiscount | decimal | (8, 2) | YES | 折后售价 |
S_modular
資料表名稱 | S_modular | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | modular_id | int identity | (10, 0) | NO | PK | 模块ID | |
2 | modular_name | nvarchar | 50 | YES | 模块名称 | ||
3 | modular_code | nvarchar | 40 | YES | 模块编号 | ||
4 | f_id | int | (10, 0) | YES | 父ID |
S_modularOperation
資料表名稱 | S_modularOperation | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | modular_detail_id | int | (10, 0) | YES | 模块操作ID | ||
2 | modular_id | int | (10, 0) | YES | 模块ID | ||
3 | as_operation_id | nvarchar | 200 | YES | 操作ID |
S_operators
資料表名稱 | S_operators | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | operatorID | int identity | (10, 0) | NO | PK | 操作人ID | |
2 | permissionGroupID | int | (10, 0) | YES | 权限组ID | ||
3 | staffID | int | (10, 0) | YES | 员工ID | ||
4 | operatorsAccount | nvarchar | 20 | YES | 账号 | ||
5 | operatorsPassword | nvarchar | 20 | YES | 密码 | ||
6 | effective | bit | 1 | YES | 有效否 | ||
7 | phone | nvarchar | 20 | YES | 手机 |
S_permissionGroup
資料表名稱 | S_permissionGroup | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | permissionGroupID | int identity | (10, 0) | NO | PK | 权限组ID | |
2 | permissionName | nvarchar | 200 | YES | 权限组名称 | ||
3 | modularDetailid | nvarchar | 200 | YES | 模块明细ID | ||
4 | abstract | nvarchar | 200 | YES | 摘要 |
S_purchaseInformation
資料表名稱 | S_purchaseInformation | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | stockID | int identity | (10, 0) | NO | PK | 采购ID | |
2 | receiptsID | int | (10, 0) | YES | 销售单号 | ||
3 | supplierID | int | (10, 0) | YES | 供应商ID | ||
4 | commodityCode | nvarchar | 30 | YES | 商品编码 | ||
5 | commodityName | nvarchar | 30 | YES | 商品ID | ||
6 | styleNumber | nvarchar | 20 | YES | 款号 | ||
7 | purchaseDate | date | 10 | YES | 采购日期 | ||
8 | quantityIn | decimal | (8, 0) | YES | 数量 | ||
9 | tagPrice | decimal | (8, 2) | YES | 吊牌价 | ||
10 | discount | decimal | (8, 2) | YES | 销售折扣 | ||
11 | primeCost | decimal | (8, 2) | YES | 进货价 | ||
12 | grossAmount | decimal | (8, 2) | YES | 总金额 | ||
13 | commodityColorID | int | (10, 0) | YES | 颜色ID | ||
14 | sizeID | int | (10, 0) | YES | 尺码ID | ||
15 | unitID | int | (10, 0) | YES | 单位ID | ||
16 | seasonID | int | (10, 0) | YES | 季节ID | ||
17 | brandID | int | (10, 0) | YES | 品牌ID | ||
18 | detailed_attribute_gather_id | int | (10, 0) | YES | 属性明细ID | ||
19 | lastOperationID | int | (10, 0) | YES | 最后操作员ID | ||
20 | inventoryID | int | (10, 0) | YES | 仓库ID |
S_receipts
資料表名稱 | S_receipts | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | receiptsID | int identity | (10, 0) | NO | PK | 单据ID | |
2 | receiptsNumber | nvarchar | 20 | YES | 单号 | ||
3 | receiptsDate | date | 10 | YES | 单据日期 | ||
4 | supplierID | int | (10, 0) | YES | 供应商ID | ||
5 | staffID | int | (10, 0) | YES | 员工ID | ||
6 | auditStatusID | int | (10, 0) | YES | 单据状态ID | ||
7 | quantity | decimal | (8, 0) | YES | 数量 | ||
8 | amount | decimal | (8, 2) | YES | 金额 | ||
9 | updateTime | date | 10 | YES | 更新时间 | ||
10 | note | nvarchar | 200 | YES |
S_sales
資料表名稱 | S_sales | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | salesID | int identity | (10, 0) | NO | PK | 退货ID | |
2 | orderID | int | (10, 0) | YES | 订单ID | ||
3 | marketID | int | (10, 0) | YES | 销售ID | ||
4 | operatorID | int | (10, 0) | YES | 操作人ID | ||
5 | refundAmount | decimal | (8, 2) | YES | 退款金额 | ||
6 | realRefund | decimal | (8, 2) | YES | 实退金额 | ||
7 | finalOperation | int | (10, 0) | YES | 最后操作人 | ||
8 | operationTime | datetime | (23, 3) | YES | 操作时间 | ||
9 | returnReason | nvarchar | 2000 | YES | 退货原因 |
S_salesMessage
資料表名稱 | S_salesMessage | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | marketID | int identity | (10, 0) | NO | PK | 销售ID | |
2 | commodityID | int | (10, 0) | YES | 商品ID | ||
3 | salesDate | datetime | (23, 3) | YES | 销售日期 | ||
4 | sellQuantity | nvarchar | 10 | YES | 数量 | ||
5 | discountRate | decimal | (8, 2) | YES | 折扣率 |
S_soldNote
資料表名稱 | S_soldNote | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | soldNoteID | int | (10, 0) | NO | PK | 单据ID | |
2 | marketNumber | nvarchar | 20 | YES | 单据编号 | ||
3 | marketStatusID | int | (10, 0) | YES | 销售状态ID | ||
4 | receiptsDate | date | 10 | YES | 单据日期 | ||
5 | staffID | int | (10, 0) | YES | 操作员ID | ||
6 | VIPID | int | (10, 0) | YES | VIPID |
S_staff
資料表名稱 | S_staff | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | staffID | int identity | (10, 0) | NO | PK | 员工ID | |
2 | permissionGroupID | int | (10, 0) | YES | 权限组ID | ||
3 | staffName | nvarchar | 50 | YES | 员工姓名 | ||
4 | staffNumber | nvarchar | 30 | YES | 员工编号 | ||
5 | staffpassword | nvarchar | 30 | YES | 员工密码 | ||
6 | sexID | int | (10, 0) | YES | 性别ID | ||
7 | effects | bit | 1 | YES | 有效否 | ||
8 | staffphone | nvarchar | 20 | YES | 员工电话 |
S_user
資料表名稱 | S_user | 資料表描述 | |||||
SN | 欄位 | 資料型態 | 長度 | null | PK | 描述 | |
1 | userID | int identity | (10, 0) | NO | PK | 用户ID | |
2 | groupID | int | (10, 0) | YES | 权限组ID | ||
3 | userName | nvarchar | 50 | YES | 名字 | ||
4 | userAccount | nvarchar | 20 | YES | 账号 | ||
5 | userPassword | nvarchar | 20 | YES | 密码 | ||
6 | effects | bit | 1 | YES | 有效否 | ||
7 | userPhone | nvarchar | 20 | YES | 电话 |
3、设计与实现
3.1采购进货
3.1.1功能实现
采购进货:见图1,是采购进货实现界面。
图1
点击图 1“新增”按钮解锁下方文本框限制,然后即可输入商品信息,输入后点击添加商品按钮即可将商品添加到临时表格中,如图2
图2
双击表格数量可修改数量,也可继续添加
3.1.2相关业务表和关系
采购进货表和关系
3.1.3经典代码
保存临时数据功能实现:
(1)、创建临时表:
(2)、将数据添加到页面
(3)、修改表格数据
(4)、移除临时表格数据
(5)、按照日期自动生成流水号,流水号每天更新一次
3.2商品管理
3.2.1 功能实现
商品管理:添加和修改商品详细信息的功能模块
服装、鞋帽行业最突出的特点是,同一个款式,包含不同颜色、不同尺码,而成本和吊牌价等属性 均相同。
1).对于已有的款式,可以直接点击款号文本框的“…”按钮,选择已有款号,或手工录入商品款 号,然后按回车键,即可带出此商品的其他信息。
2).若是新商品,在左边录入该款的共同信息,如名称、吊牌价、进货价等。
3).在右边的网格里,录入(选中)该商品的颜色,然后在对应的尺码列中录入相应的进货数即可。 其他颜色,另起一行即可,支持多颜色与多尺码的商品录入。
4).一款录入完毕,点击“添加商品”按钮,该款的进货明细便添加到主网格中。重复此操作,直 到该份“采购进货单”明细已全部录入。
图1
1、点击图1中“添加”按钮弹出商品详细信息,如图2
图2
3.2.2相关业务表关系
商品管理表和关系:
3.2.3经典代码
(1)、绑定图片
(2)、单品删除跟整款删除两个代码看似一样但是存储过程不一致
① 单品删除
② 整款删除
3.3VIP管理
3.3.1功能实现
VIP管理:添加或修改VIP贵宾信息的功能模块
(1)、点击图1添加按钮弹出新增信息模板(图2)
图1
图2
3.3.2相关业务表关系
VIP信息表
3.3.3经典代码
(1)、模糊查询
图1
图2
图3
3.4钱箱出入款
3.4.1功能实现
(1)、在系统导航栏(图1)点击钱箱出入款,然后弹出出入款模块功能面板(图2)
图1
图2
3.4.2经典代码
(1)、文本框获取(失去)焦点事件
3.5 用户及权限设定
3.5.1功能实现
用户及权限设定主要包括:新增用户数据、修改用户数据
(1)、在系统导航栏点击用户及权限设定打开用户管理模板,如图1
图1
(2)、点击“添加”按钮,清空文本框内容,新增用户数据(图2)
图2
(3)、点击“修改”按钮,解除文本框限制(图3)
图3
3.5.2相关业务表关系
3.5.3经典代码
(1)、确认密码
(2)、密码框禁止复制
4、技术总结
经过这次做项目,我们不仅学到一些新的知识,也巩固了在校期间所学到的理论知识。在项目中也有一些平时老师没有讲过的新知识点,总会让我们眼前一新,从而觉得有挑战性,这既提高了我们的理论水平,也锻炼了我们的思维逻辑能力,能够让我们更好的去适应实习时带给我们的挑战,增强了自己对专业的热情,也提高了自己的兴趣。项目已经结束了,我也收获很多,同时也认识到了自己的诸多不足之处,再往后的学习、实习生涯中将更加努力,虚心求教,不负韶华。期待下一次项目的到来!!