本博客,主要记录我做毕业设计的各个步骤,分享下自己的心得,同时可以互相学习。
1开发工具简介
- 开发平台:windows 10
- 开发工具:visual studio 2013
- 数据库:SQL Server 2012
- 开发框架:.NET Framework4.0
- 建模工具:Visio 2013
- Windows安装开发解决方案:InstallShield 2010
2数据库设计
在书店采购管理系统中,创建6个表格如下:
- 图书信息(图书编号,图书名称,语种,作者,单价,总量)
- 销售(销售号,图书编号,图书名称,顾客编号,销售日期,单价,数量,销售员号)
- 采购(采购号,图书编号,图书名称,数量,管理员号,采购员号)
- 会员(顾客编号,顾客姓名,身份证号,电话号,级别)
- 用户信息(工号,姓名,账号,密码,有效权)
- 图书管理员(账号,密码,权限)
表-1 图书信息表(bookinfo)
字段名称 | 数据类型 | 字段注释 | 非空 |
---|---|---|---|
bookid | Varchar(10) | FK图书编号 | Y |
bookname | Varchar(50) | 图书名称 | N |
languages | Varchar(10) | 语种 | N |
author | Varchar(10) | 作者 | N |
price | Varchar(10) | 价格 | N |
total | int | 总量 | N |
表-2 销售表(pay)
字段名称 | 数据类型 | 字段注释 | 非空 |
---|---|---|---|
paycode | Varchar(10) | FK销售单 | Y |
bookid | Varchar(10) | PK图书号 | Y |
bookname | Varchar(50) | 图书名称 | Y |
vip_id | Varchar(10) | PK顾客号 | Y |
pay_date | datetime | 购买日期 | Y |
price | Varchar(10) | 单价 | Y |
num | int | 数量 | Y |
id | Varchar(10) | PK管理员号 | Y |
表-3 采购表(purchase)
字段名称 | 数据类型 | 字段注释 | 非空 |
---|---|---|---|
purchase_id | Varchar(10 | ) FK采购号 | Y |
bookid | Varchar(10) | 图书号 | Y |
bookname | Varchar(50) | 图书名称 | Y |
number | int | 数量 | Y |
id | Varchar(10) | 管理员号 | Y |
id_end | Varchar(10) | 采购员号 | N |
表-4 顾客表(vip)
字段名称 | 数据类型 | 字段注释 | 非空 |
---|---|---|---|
Vip_id | Varchar(10) | FK顾客号 | Y |
Vip_name | Varchar(10) | 顾客姓名 | N |
Id_card | Varchar(10) | 身份证 | N |
telephone | Varchar(10) | 电话号 | N |
Vip_role | int | 级别 | N |
表-5 用户表(user)
字段名称 | 数据类型 | 字段注释 | 非空 |
---|---|---|---|
id | Varchar(10) | FK工号 | Y |
name | Varchar(10) | 姓名 | Y |
user_id | Varchar(10) | PK账号 | Y |
password | Varchar(10) | 密码 | Y |
status | bit | 是否有效 | Y |
表-6 登录表(userinfo)
字段名称 | 数据类型 | 字段注释 | 非空 |
---|---|---|---|
user_id | Varchar(10) | FK账号 | Y |
password | Varchar(10) | 密码 | N |
role | int | 权限(默认为1) | Y |
数据库表创建语句:
CREATE TABLE [dbo].[bookinfo] (
[bookid] [nchar] (10) NOT NULL ,
[bookname] [nvarchar] (50) NULL ,
[languages] [nchar] (10) NULL ,
[author] [nchar] (10) NULL ,
[price] [nchar] (10) NULL ,
[comment] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[pay] (
[paycode] [nchar] (10) NOT NULL ,
[bookid] [nchar] (10) NOT NULL ,
[bookname] [nvarchar] (50) NOT NULL ,
[vip_id] [nchar] (10) NOT NULL ,
[pay_date] [datetime] NOT NULL ,
[price] [nchar] (10) NOT NULL ,
[num] [int] NOT NULL ,
[id] [nchar] (10) NOT NULL
) ON [PRIMARY]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
--销售表触发器主要实现按销售数量更新图书数量的功能
CREATE trigger Tri3 on [dbo].[pay]
for insert
as
begin
declare @c char(10),@d int
select @c=bookid from inserted
select @d=num from inserted
update bookinfo
set comment=comment-@d
where bookid=@c
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE trigger [dbo].[Tri4] on [dbo].[pay]
for update
as
begin
declare @c1 char(10),@c2 char(10),@d1 int,@d2 int
select @c1=bookid from deleted
select @c2=bookid from inserted
select @d1=num from deleted
select @d2=num from inserted
if(@c1=@c2)
update bookinfo
set comment=comment-(@d2-@d1)
where bookid=@c1
else
update bookinfo
set comment=comment+@d1
where bookid=@c1
update bookinfo
set comment=comment-@d2
where bookid=@c2
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE TABLE [dbo].[purchase] (
[purchase_id] [nchar] (10) NOT NULL ,
[bookid] [nchar] (10) NOT NULL ,
[bookname] [nvarchar] (50) NOT NULL ,
[number] [int] NOT NULL ,
[id] [nchar] (10) NOT NULL ,
[id_end] [nchar] (10) NULL
) ON [PRIMARY]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
--采购表触发器主要实现按采购数量更新图书数量的功能
CREATE trigger Tri1 on [dbo].[purchase]
for insert
as
begin
declare @a char(10),@b int
select @a=bookid from inserted
select @b=number from inserted
update bookinfo
set comment=comment+@b
where bookid=@a
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE trigger [dbo].[Tri2] on [dbo].[purchase]
for update
as
begin
declare @a1 char(10),@a2 char(10),@b1 int,@b2 int
select @a1=bookid from deleted
select @a2=bookid from inserted
select @b1=number from deleted
select @b2=number from inserted
if(@a1=@a2)
update bookinfo
set comment=comment+(@b2-@b1)
where bookid=@a1
else
update bookinfo
set comment=comment-@b1
where bookid=@a1
update bookinfo
set comment=comment+@b2
where bookid=@a2
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE TABLE [dbo].[user] (
[id] [nchar] (10) NOT NULL ,
[name] [nchar] (10) NULL ,
[user_id] [nchar] (10) NOT NULL ,
[password] [nchar] (10) NULL ,
[status] [bit] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[userinfo] (
[user_id] [nchar] (10) NOT NULL ,
[password] [nchar] (10) NULL ,
[role] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[vip] (
[vip_id] [nchar] (10) NOT NULL ,
[vip_name] [varchar] (50) NULL ,
[id_card] [varchar] (50) NULL ,
[telephone] [varchar] (50) NULL ,
[vip_role] [int] NULL
) ON [PRIMARY]
GO
3系统展示
系统展示视频:基于C#的windows窗体应用(已打包)
- 登录、注册窗口界面
- 图书查询窗口界面
- 图书管理窗口界面
- 销售管理窗口界面
- 采购管理窗口界面
- 维护管理窗口界面
- 顾客管理窗口界面
- 修改密码窗口界面
- 权限管理窗体界面
4功能模块
本系统一共分为四个模块:图书管理模块、采购管理模块、销售管理模块、维护管理模块。如图所示。
5系统实现
系统实现:(纯代码)基于C#-winform的书店采购管理系统的设计
在设计过程,设置数据源是决定连接数据库表是报错的关键点。在VS2013中选择项目–>添加新数据源,进入数据源配置向导界面选择数据库–>数据集–>新建连接,进入添加连接界面选择更改,进入更改数据源界面选择Microsoft SQL Server 数据库文件 (SqlClient)并按确定,返回到添加连接界面选择浏览,找到分离的数据库文件(.mdf格式)。测试成功后确定,即可创建保存到应用程序中的连接字符串。