西安郵電大學
综合应用软件课程设计报告
学院名称 : 专业名称 : 班 级 : 学
号 :
题 目: 中小型超市管理系统
计算机学院
2013年09月09日
学生姓名 : 指导教师 :
时间 :
至 2013年09月23日
一、 课程设计目的
该系统实现了“中小型超市管理系统”的工作流程,并让我熟悉了这类信息管理系统的开发原理及流程。在设计过程中, 能够深入地理解面向对象设计方法的优越性, 获得这些方面的相关经验。
二、课程设计内容
针对一般超市管理系统的需求,通过对超市管理工作过程的内容分析与设计中所要承担的任务,设计出下面的数据项和数据结构:
(1)商品信息查询:包括商品号、商品名称、单价、商品类型、库存量、厂商等信息。
(2)销售记录查询:包括销售号、销售职工号、商品号和消费总额等信息。 (3)销售员工信息表,包含的数据项有职工号、姓名、性别、联系电话和用户类型等
(4)查询的同时也可以进行添加、删除员工信息,商品信息等。 三、软硬件环境及系统所采用的体系结构
系统开发工具前台为 VB6.0,后台数据库为SQL Server2000.
四、需求分析
系统大致分为四个功能模块。系统的每一个功能模块都包含了多个功能。功能权限实现了对这些功能点的权限控制:①.登录模块 ②大老板模块 ③.管理员模块 ④.收银员模块
①.登录模块:登录模块主要进行用户权限的验证,只有具备一定权限的人才能登录到系统,这样才能保证系统的安全。同时不同的用户有不同的权限。
②.大老板模块:该模块主要是查看商品,员工,供应商的信息 ③.管理员模块:该模块管理了商品和销量的信息,以方便随时查询,并及时录入售出商品的信息
④.收银员模块:这模块是系统的前台销售模块,一般收银员都是在这个界面操作以实现对顾客的购买商品信息的登记 收款等业务。
五、系统设计
1
A. 总框图
B.
C
D.
2. 数据库设计
A.
B. 员工的信息如下,由此可以设计出表:
C. 供应商的信息如下,由此可以设计出表:
D. 订单的信息如下,由此可以设计出表:
另外建立了一个关系图,把销售和库存联系起来,结果如下:
六、系统的实施
为了提高软件操作安全性,用户进入系统前,需进行身份验证,通过此窗体输入个人信息以验证身份。如果用户名和密码都正确,单击对应的登录按钮,则进入系统,如果输入错误,则会提示密码错误,重新输入。 结果如下:
1. 进入boss 界面:
2. 进入管理员界面:
3. 进入收银员界面:
七、系统评价及心得体会
1、对自己的超市管理系统的总体设计的评价:系统与数据库的链接成功有效,数据的增、删、查、改都能正常无误的运行。界面友好,操作简单方便,基本的功能都有实现。
合理之处:能根据用户的职位的不同进入不同的操作界面。数据的增、删、查、改都能运行,界面友好。
不足之处:相关的数据信息不够多,对于相关信息的描述不够充分。对各种错误的操作给出的错误提示不够充分,考虑数据的关联性不充足。
2. 出现的问题及解决方法:在设计中出现了输入查询的商品编号后,没有结果的错误情况,最后经过上网查资料,找参考书,问同学,解决了问题,原来是datagrid 控件没有设置属性,虽然是个小问题,但我也收获不少。
八、参考文献
[1].数据库系统原理与应用. 孟彩霞, 张荣, 乔平安编著 人民邮电出版社 2008
九.源代码:
在数据库中建表的源代码
create table emp ( empno char(10) primary key not null, empname varchar(10) not null, empsex char(2) check(empsex in('男',' 女')) not null,
empsort char(10) not null, empho char(20) not null, );
create table goods ( gno char(8) primary key not null, gname char(10) not null, gsort char(10) not null, gsupname char(20) not null, gstock char(10) not null, gprice char(10) not null, );
create table supply ( ssno char(10) primary key not null, sname char(20) not null, spho char(20) not null, sadd char(20) not null, );
create table denglu ( yonghu char(8) primary key not null, pass char(10) not null, );
create table orders ( orderno char(20) primary key, gno char(8) foreign key references goods(gno), empno char(10)foreign key references emp(empno), quantity int not null, ordersum real, );
create trigger orders_insert on orders after insert AS update goods set gstock=gstock-(select quantity from inserted) where gno in (select gno from inserted);
在VB 中,实现具体功能的代码(8个界面,共1. Private Sub Command2_Click()
Dim s As String Dim t As String
s = "select * from denglu where yonghu = '" & Text1 & "'" Adodc1.RecordSource = s
t = Trim(Text2.Text)
8段代码): 管理员登录
Adodc1.Refresh
If Adodc1.Recordset.BOF Then ' 没有找到 该条记录
MsgBox "账户错误,重新输入", vbExclamation, "警告" Text1.Text = "" Text1.SetFocus Else
If t = Trim(Adodc1.Recordset.Fields("pass")) Then Unload Me Form7.Show Else
MsgBox "密码错误,重新输入", vbExclamation, "警告" Text2.Text = "" Text2.SetFocus
Text1.Enabled = False ' 更改密码时,不能更改帐户,否则还是refresh 会自动恢复,受很大影响 End If End If End Sub
Private Sub Command3_Click() Dim s As String Dim t As String
收银员登录
s = "select * from denglu where yonghu = '" & Text1 & "'" Adodc1.RecordSource = s
t = Trim(Text2.Text) 否则两个字符串不相同, 调试出来的
Adodc1.Refresh
If Adodc1.Recordset.BOF Then ' 没有找到 该条记录
MsgBox "账户错误,重新输入", vbExclamation, "警告" Text1.Text = "" Text1.SetFocus Else
If t = Trim(Adodc1.Recordset.Fields("pass")) Then
' 此处为什么要用t 和spassword 比较呢,因为sno 正确,但是refresh 之后,文本框就又恢复到了新的记录源的第一条 记录,所以就是,text2的内容也就不是你刚刚输入进去的密码了,所以要用t 暂时存储 Unload Me Form4.Show Else
MsgBox "密码错误,重新输入", vbExclamation, "警告" Text2.Text = "" Text2.SetFocus
Text1.Enabled = False ' 更改密码时,不能更改帐户,否则还是refresh 会自动恢复,受很大影响 End If End If End Sub
Private Sub Command4_Click()
End 退出 End Sub
Private Sub Command1_Click()
Dim s As String
Dim t As String 老板登录
s = "select * from denglu where yonghu = '" & Text1 & "'" Adodc1.RecordSource = s
t = Trim(Text2.Text) Adodc1.Refresh
If Adodc1.Recordset.BOF Then ' 没有找到 该条记录
MsgBox "账户错误,重新输入", vbExclamation, "警告" Text1.Text = "" Text1.SetFocus Else
If t = Trim(Adodc1.Recordset.Fields("pass")) Then Unload Me Form2.Show Else
MsgBox "密码错误,重新输入", vbExclamation, "警告" Text2.Text = "" Text2.SetFocus
Text1.Enabled = False ' 更改密码时,不能更改帐户,否则还是refresh 会自动恢复,受很大影响 End If End If
End Sub
Private Sub Form_Load()
End Sub
2. 进入老板界面
Private Sub Command1_Click()
End 退出 End Sub
Private Sub Command2_Click()
Form2.Hide 显示供应商信息 Form5.Show End Sub
Private Sub Command3_Click()
Form2.Hide 显示员工信息
Form6.Show
End Sub
Private Sub Command4_Click()
Form2.Hide 显示商品信息 Form3.Show End Sub
Private Sub Form_Load()
Form2.Picture = LoadPicture("D:\娱乐\电脑壁纸\12.jpg") End Sub
3. 进入商品信息管理界面:
Private Sub Command1_Click() End End Sub
Private Sub Command2_Click() Form3.Hide Form8.Show
End Sub
Private Sub delete_Click() Me.Adodc1.Recordset.delete
MsgBox "删除成功!", vbOKOnly, "提示" Me.Adodc1.Refresh End Sub
Private Sub DataGrid1_Click() Dim strSno As String Dim strSelect As String
strSno = Trim(Form3.Text2.Text)
strSelect = "select * from goods where goods.gno ='" & strSno & "'" Adodc1.RecordSource = strSelect Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1 Call DataGrid1_Click
End Sub
Private Sub Form_Load()
Form3.Picture = LoadPicture("D:\娱乐\电脑壁纸\13.jpg") End Sub
Private Sub new_Click()
Me.Adodc1.Recordset.AddNew End Sub
Private Sub save_Click()
Me.Adodc1.Recordset.Update
MsgBox "存储成功!", vbOKOnly, "提示" End Sub
4. 进入销售信息界面:
Private Sub Command1_Click() End
End Sub
Private Sub Form_Load()
Form4.Picture = LoadPicture("D:\娱乐\电脑壁纸\14.jpg") End Sub
5. 进入供应商信息界面:
Private Sub Command1_Click()
End
End Sub
Private Sub Command2_Click()
Form5.Hide
Form2.Show
End Sub
Private Sub Form_Load()
Form5.Picture = LoadPicture("D:\娱乐\电脑壁纸\15.jpg") End Sub
6. 进入员工信息管理界面:
Private Sub Command1_Click()
Form6.Hide
Form2.Show
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub delete_Click()
Me.Adodc1.Recordset.delete
MsgBox "删除成功!", vbOKOnly, "提示"
Me.Adodc1.Refresh
End Sub
Private Sub Form_Load()
Form6.Picture = LoadPicture("D:\娱乐\电脑壁纸\16.jpg") End Sub
Private Sub new_Click()
Me.Adodc1.Recordset.AddNew
End Sub
Private Sub save_Click()
Me.Adodc1.Recordset.Update
MsgBox "存储成功!", vbOKOnly, "提示"
End Sub
7. 进入管理员操作界面
Private Sub Command1_Click()
Form7.Hide
Form3.Show
End Sub
Private Sub Command2_Click()
Form7.Hide
Form4.Show
End Sub
Private Sub Form_Load()
Form7.Picture = LoadPicture("D:\娱乐\电脑壁纸\17.jpg") End Sub
8. 进入按商品编号查询的界面:
Private Sub Command1_Click()
Dim strSno As String
Dim strSelect As String
strSno = Trim(Form8.Text1.Text)
strSelect = "select * from goods where goods.gno ='" & strSno & "'" Adodc1.RecordSource = strSelect
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
End Sub
Private Sub Command2_Click()
Form8.Hide
Form3.Show
End Sub
Private Sub DataGrid1_Click()
End Sub
Private Sub Form_Load()
Form8.Picture = LoadPicture("D:\娱乐\电脑壁纸\18.jpg") End Sub
西安郵電大學
综合应用软件课程设计报告
学院名称 : 专业名称 : 班 级 : 学
号 :
题 目: 中小型超市管理系统
计算机学院
2013年09月09日
学生姓名 : 指导教师 :
时间 :
至 2013年09月23日
一、 课程设计目的
该系统实现了“中小型超市管理系统”的工作流程,并让我熟悉了这类信息管理系统的开发原理及流程。在设计过程中, 能够深入地理解面向对象设计方法的优越性, 获得这些方面的相关经验。
二、课程设计内容
针对一般超市管理系统的需求,通过对超市管理工作过程的内容分析与设计中所要承担的任务,设计出下面的数据项和数据结构:
(1)商品信息查询:包括商品号、商品名称、单价、商品类型、库存量、厂商等信息。
(2)销售记录查询:包括销售号、销售职工号、商品号和消费总额等信息。 (3)销售员工信息表,包含的数据项有职工号、姓名、性别、联系电话和用户类型等
(4)查询的同时也可以进行添加、删除员工信息,商品信息等。 三、软硬件环境及系统所采用的体系结构
系统开发工具前台为 VB6.0,后台数据库为SQL Server2000.
四、需求分析
系统大致分为四个功能模块。系统的每一个功能模块都包含了多个功能。功能权限实现了对这些功能点的权限控制:①.登录模块 ②大老板模块 ③.管理员模块 ④.收银员模块
①.登录模块:登录模块主要进行用户权限的验证,只有具备一定权限的人才能登录到系统,这样才能保证系统的安全。同时不同的用户有不同的权限。
②.大老板模块:该模块主要是查看商品,员工,供应商的信息 ③.管理员模块:该模块管理了商品和销量的信息,以方便随时查询,并及时录入售出商品的信息
④.收银员模块:这模块是系统的前台销售模块,一般收银员都是在这个界面操作以实现对顾客的购买商品信息的登记 收款等业务。
五、系统设计
1
A. 总框图
B.
C
D.
2. 数据库设计
A.
B. 员工的信息如下,由此可以设计出表:
C. 供应商的信息如下,由此可以设计出表:
D. 订单的信息如下,由此可以设计出表:
另外建立了一个关系图,把销售和库存联系起来,结果如下:
六、系统的实施
为了提高软件操作安全性,用户进入系统前,需进行身份验证,通过此窗体输入个人信息以验证身份。如果用户名和密码都正确,单击对应的登录按钮,则进入系统,如果输入错误,则会提示密码错误,重新输入。 结果如下:
1. 进入boss 界面:
2. 进入管理员界面:
3. 进入收银员界面:
七、系统评价及心得体会
1、对自己的超市管理系统的总体设计的评价:系统与数据库的链接成功有效,数据的增、删、查、改都能正常无误的运行。界面友好,操作简单方便,基本的功能都有实现。
合理之处:能根据用户的职位的不同进入不同的操作界面。数据的增、删、查、改都能运行,界面友好。
不足之处:相关的数据信息不够多,对于相关信息的描述不够充分。对各种错误的操作给出的错误提示不够充分,考虑数据的关联性不充足。
2. 出现的问题及解决方法:在设计中出现了输入查询的商品编号后,没有结果的错误情况,最后经过上网查资料,找参考书,问同学,解决了问题,原来是datagrid 控件没有设置属性,虽然是个小问题,但我也收获不少。
八、参考文献
[1].数据库系统原理与应用. 孟彩霞, 张荣, 乔平安编著 人民邮电出版社 2008
九.源代码:
在数据库中建表的源代码
create table emp ( empno char(10) primary key not null, empname varchar(10) not null, empsex char(2) check(empsex in('男',' 女')) not null,
empsort char(10) not null, empho char(20) not null, );
create table goods ( gno char(8) primary key not null, gname char(10) not null, gsort char(10) not null, gsupname char(20) not null, gstock char(10) not null, gprice char(10) not null, );
create table supply ( ssno char(10) primary key not null, sname char(20) not null, spho char(20) not null, sadd char(20) not null, );
create table denglu ( yonghu char(8) primary key not null, pass char(10) not null, );
create table orders ( orderno char(20) primary key, gno char(8) foreign key references goods(gno), empno char(10)foreign key references emp(empno), quantity int not null, ordersum real, );
create trigger orders_insert on orders after insert AS update goods set gstock=gstock-(select quantity from inserted) where gno in (select gno from inserted);
在VB 中,实现具体功能的代码(8个界面,共1. Private Sub Command2_Click()
Dim s As String Dim t As String
s = "select * from denglu where yonghu = '" & Text1 & "'" Adodc1.RecordSource = s
t = Trim(Text2.Text)
8段代码): 管理员登录
Adodc1.Refresh
If Adodc1.Recordset.BOF Then ' 没有找到 该条记录
MsgBox "账户错误,重新输入", vbExclamation, "警告" Text1.Text = "" Text1.SetFocus Else
If t = Trim(Adodc1.Recordset.Fields("pass")) Then Unload Me Form7.Show Else
MsgBox "密码错误,重新输入", vbExclamation, "警告" Text2.Text = "" Text2.SetFocus
Text1.Enabled = False ' 更改密码时,不能更改帐户,否则还是refresh 会自动恢复,受很大影响 End If End If End Sub
Private Sub Command3_Click() Dim s As String Dim t As String
收银员登录
s = "select * from denglu where yonghu = '" & Text1 & "'" Adodc1.RecordSource = s
t = Trim(Text2.Text) 否则两个字符串不相同, 调试出来的
Adodc1.Refresh
If Adodc1.Recordset.BOF Then ' 没有找到 该条记录
MsgBox "账户错误,重新输入", vbExclamation, "警告" Text1.Text = "" Text1.SetFocus Else
If t = Trim(Adodc1.Recordset.Fields("pass")) Then
' 此处为什么要用t 和spassword 比较呢,因为sno 正确,但是refresh 之后,文本框就又恢复到了新的记录源的第一条 记录,所以就是,text2的内容也就不是你刚刚输入进去的密码了,所以要用t 暂时存储 Unload Me Form4.Show Else
MsgBox "密码错误,重新输入", vbExclamation, "警告" Text2.Text = "" Text2.SetFocus
Text1.Enabled = False ' 更改密码时,不能更改帐户,否则还是refresh 会自动恢复,受很大影响 End If End If End Sub
Private Sub Command4_Click()
End 退出 End Sub
Private Sub Command1_Click()
Dim s As String
Dim t As String 老板登录
s = "select * from denglu where yonghu = '" & Text1 & "'" Adodc1.RecordSource = s
t = Trim(Text2.Text) Adodc1.Refresh
If Adodc1.Recordset.BOF Then ' 没有找到 该条记录
MsgBox "账户错误,重新输入", vbExclamation, "警告" Text1.Text = "" Text1.SetFocus Else
If t = Trim(Adodc1.Recordset.Fields("pass")) Then Unload Me Form2.Show Else
MsgBox "密码错误,重新输入", vbExclamation, "警告" Text2.Text = "" Text2.SetFocus
Text1.Enabled = False ' 更改密码时,不能更改帐户,否则还是refresh 会自动恢复,受很大影响 End If End If
End Sub
Private Sub Form_Load()
End Sub
2. 进入老板界面
Private Sub Command1_Click()
End 退出 End Sub
Private Sub Command2_Click()
Form2.Hide 显示供应商信息 Form5.Show End Sub
Private Sub Command3_Click()
Form2.Hide 显示员工信息
Form6.Show
End Sub
Private Sub Command4_Click()
Form2.Hide 显示商品信息 Form3.Show End Sub
Private Sub Form_Load()
Form2.Picture = LoadPicture("D:\娱乐\电脑壁纸\12.jpg") End Sub
3. 进入商品信息管理界面:
Private Sub Command1_Click() End End Sub
Private Sub Command2_Click() Form3.Hide Form8.Show
End Sub
Private Sub delete_Click() Me.Adodc1.Recordset.delete
MsgBox "删除成功!", vbOKOnly, "提示" Me.Adodc1.Refresh End Sub
Private Sub DataGrid1_Click() Dim strSno As String Dim strSelect As String
strSno = Trim(Form3.Text2.Text)
strSelect = "select * from goods where goods.gno ='" & strSno & "'" Adodc1.RecordSource = strSelect Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1 Call DataGrid1_Click
End Sub
Private Sub Form_Load()
Form3.Picture = LoadPicture("D:\娱乐\电脑壁纸\13.jpg") End Sub
Private Sub new_Click()
Me.Adodc1.Recordset.AddNew End Sub
Private Sub save_Click()
Me.Adodc1.Recordset.Update
MsgBox "存储成功!", vbOKOnly, "提示" End Sub
4. 进入销售信息界面:
Private Sub Command1_Click() End
End Sub
Private Sub Form_Load()
Form4.Picture = LoadPicture("D:\娱乐\电脑壁纸\14.jpg") End Sub
5. 进入供应商信息界面:
Private Sub Command1_Click()
End
End Sub
Private Sub Command2_Click()
Form5.Hide
Form2.Show
End Sub
Private Sub Form_Load()
Form5.Picture = LoadPicture("D:\娱乐\电脑壁纸\15.jpg") End Sub
6. 进入员工信息管理界面:
Private Sub Command1_Click()
Form6.Hide
Form2.Show
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub delete_Click()
Me.Adodc1.Recordset.delete
MsgBox "删除成功!", vbOKOnly, "提示"
Me.Adodc1.Refresh
End Sub
Private Sub Form_Load()
Form6.Picture = LoadPicture("D:\娱乐\电脑壁纸\16.jpg") End Sub
Private Sub new_Click()
Me.Adodc1.Recordset.AddNew
End Sub
Private Sub save_Click()
Me.Adodc1.Recordset.Update
MsgBox "存储成功!", vbOKOnly, "提示"
End Sub
7. 进入管理员操作界面
Private Sub Command1_Click()
Form7.Hide
Form3.Show
End Sub
Private Sub Command2_Click()
Form7.Hide
Form4.Show
End Sub
Private Sub Form_Load()
Form7.Picture = LoadPicture("D:\娱乐\电脑壁纸\17.jpg") End Sub
8. 进入按商品编号查询的界面:
Private Sub Command1_Click()
Dim strSno As String
Dim strSelect As String
strSno = Trim(Form8.Text1.Text)
strSelect = "select * from goods where goods.gno ='" & strSno & "'" Adodc1.RecordSource = strSelect
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
End Sub
Private Sub Command2_Click()
Form8.Hide
Form3.Show
End Sub
Private Sub DataGrid1_Click()
End Sub
Private Sub Form_Load()
Form8.Picture = LoadPicture("D:\娱乐\电脑壁纸\18.jpg") End Sub