进销存管理系统课程设计
数据库课程设计
课题名称:进销存管理系统
专 业:08计算机科学与技术 班 级: 08计算机本三班 学 号: 小组成员:
指导教师:
2010 年 12月27日
目 录
1. 系统概述................................................................................... 2 2. 系统分析................................................................................... 3 2.1需求分析 .......................................................................... 3 2.2数据字典 .......................................................................... 5 2.3程序运行流程图 .............................................................. 7 3. 系统设计................................................................................... 9 3.1模块结构设计 .................................................................. 9 3.2数据库概念设计 ............................................................ 10 3.3数据库逻辑设计 ............................................................ 10 3.4输出设计和输入设计 .................................................... 13 4. 结语 . ........................................................................................ 32 5参考文献................................................................................. 32
1. 系统概述
现代科技技术突飞猛进,在不同的领域要求各异,以前对库存盘点的统计都是手写登记,纸制查看,这样很容易发生错误,导致企事业失去他们所需要的信息,而且会产生错误信息误导决策,现在为了方便决策者了解到更加确切的信息和资料,所以开发这样的系统方便决策者查询信息及网上浏览,使各方面的信息
都能够正确及时。
系统的功能是将该企业的所有库存盘点信息进行电子统计, 根据不同的需求建立各种的报表, 便于企事业在网上查询库存的各方面的信息情况, 方便决策者了解市场, 也能够方便管理者对库存盘点的信息进行不同的统计。
库存盘点管理管理子系统主要实现的是库存盘点信息的录入,修改,查询以及盘点信息的打印等功能,为此,若要实现各方面的需求,系统的数据必须具有高度的完整性和准确性,这就要求系统的高度安全性,可维护性,可靠性及灵活性。
比如库存管理系统的管理,管理员在录入商品的库存情况的时候或是数据库出现异常而产生差错,可能会影响决策者从网上查询这些商品的库存情况,这就要求系统具有高度的安全性,可维护性和可靠性;灵活性指的是系统要具有强大的功能以适应不同层次的客户不同的需求。另外,系统的操作界面要求简便,通俗,以便于操作。
用户对系统的信用,如果因为一次的错误就会导致一连串的信息错误,所以保证信息的可靠性十分必须的,这样才能使系统得到用户的信赖和支持。这样的系统需要保证可靠性, 避免给决策者提供虚假的信息, 更确保各部门通过浏览该系统, 进行相应的需求操作。
因此,随着技术发展,企业采用库存盘点信息化已成为趋势及必然。
2. 系统分析
2.1需求分析
2.1.1需求分析
本系统通过简单的数据库的操作,实现企事业单位的库存信息的管理。库存盘点管理管理子系统是一个小型的信息管理系统,数据库采用SQL Server 2005。使用户和项目人员明确系统的功能、应用范围。 本系统具有以下功能:
1:实现库存盘点管理的信息化管理。
2:实现库存盘点管理的基础要求,如信息添加,查看及删除。操作方便简单,且数据稳定性强。
3:方便的库存信息查询功能,支持多条件查询。 4:数据计算自动完成,尽量减少人工干预。
5:强大的报表打印功能。
可行性分析
经济上可行性分析
现在,计算机的价格已经十分低廉,性能却有了长足的进步。而本系统的开发,为企业的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:
第一,本系统的运行可以代替人工进行许多繁杂的劳动; 第二,本系统的运行可以节省许多资源;
第三,本系统的运行可以大大的提高企业的工作效率; 第四,本系统可以使敏感文档更加安全,等等。
本产品的开发所需的设备在现有条件下,只需要少量的投入资金就可以实现。因此在经济上是可行的。 技术上可行性分析
软件可行性
C#具有丰富的数据库功能,可以直接建立和编辑数据库,使用结构化查询语言直接访问SQL Sever 上的数据库,并提供简单的面向对象的库操作命令、多用户数据库的加锁机制和网络数据库的编程技术。
SQL Sever2000是由微软公司推出的,能提供超大型系统所需的数据库服务,并对数据库提供全面的保护,具有防止问题发生的安全措施,他是一个采用SQL 语言的关系型数据库管理系统。作为客户机/服务器的后端数据库,他是所有数据的汇总和管理中心。
项目规划
企业进销存管理系统是一个典型的数据库开发应用程序,由基础信息模块、采购管理模块、库存管理模块、商品销售模块、查询统计模块、往来管理模块、系统设置模块等部分组成,规划系统功能模块如下:
❑ 基础信息模块
该模块主要管理商品信息录入、客户信息录入、供应商信息录入、商品信息查询、客户信息查询、供应商信息查询。
❑ 采购管理模块
该模块的主要管理商品采购信息录入和商品采购信息查询。 ❑ 库存管理模块
该块主要管理商品入库信息、商品入库退货、商品库存查询和库存商品价格调整。
❑ 商品销售模块
该模块主要管理商品销售信息录入和商品销售退货信息录入。 ❑ 查询统计模块
该模块主要管理销售信息查询、销售退货查询、商品入库查询、入库退货查询、商品销售排行和年销售额分析。
❑ 往来管理模块
该模块主要管理商品销售结账、入库退货结账、销售结账查询、商品入库结账、销售退货结账和入库结账查询。
❑ 系统设置模块
该模块主要管理添加操作员、更改操作员密码、删除操作员。
2.1.2开发及运行环境
1. 硬件环境:CPU :C Ⅱ1.7G 以上,内存在256M 以上。
2. 软件环境:Windows XP操作系统,Microsoft SQL Servers数据库系统。软件编程使用Microsoft Visual studio 2005
2.1.3程序流程
本库存盘点管理管理子系统使用如下的流程进行登陆以及其他的操作:
开始界面是始于登陆界面“登录(登录.frm )”,当用户键入用户名和密码的时候,系统自动到所对应的数据库“用户信息表”中进行用户验证。如果输入正确则进入系统主界面,就可以进入到主操作菜单窗体“系统(系统.frm) ”中进行操作。在主操作菜单窗体“系统(系统.frm) ”中,用户可以对数据库中的商品信息、供应商信息及客户信息等基本信息进行包括:添加,查询,修改等操作,并能够进行入库管理,出库管理及库存盘点。此外,可在“清单报表管理窗口”中进行相应的报表打印。
2.2数据字典
2.2.1. 数据元素条目 2.2.2数据结构条目
2.2.4数据存储条目
2.2.5处理过程条目
2.2.6外部实体条目
2.3程序运行流程图
3. 系统设计
3.1模块结构设计
该系统的总体结构设计如下图所示:
人员信息档案管理系统包括基本信息管理,销售信息管理,库存信息管理,数据报表管理和系统管理等部分。
图二系统图
其中,基本信息管理中可以对商品,供应商,客户基本信息进行添加,修改,查询和删除等操作,如图:
图三信息管理
库存管理中可以实现库存信息,入库单信息,出库单信息,盘点清单信息的录入,修改,查询等操作,如图:
图四库存管理
数据报表管理可以实现盘点清单的预览及打印等操作,如图:
图五清单图
系统管理中主要是用户查询,添加用户,修改密码,数据备份及恢复等的操作,如图:
图六系统管理图
3.2数据库概念设计
图七 概念设计图
3.3数据库逻辑设计
表七 商品信息表
表八供应商信息表
表十一商品库存信息表
3.4输出设计和输入设计
3.4.1登录界面:
登陆代码:
using System;
using System.Collections.Generic;
using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;
using System.Windows.Forms; using System.Data.SqlClient; namespace 进销存 {
public partial class 登陆 : Form {
public static string name; public static string password; public static string entry; public 登陆() {
InitializeComponent(); }
private void pictureBox1_Click(object sender, EventArgs e) {
}
private void textBox1_TextChanged(object sender, EventArgs e) {
name = this .textBox1.Text;
SqlConnection con = new SqlConnection (); //创建连接
con.ConnectionString = "server=(local);database=进销存管理系统;uid=sa;pwd="; con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "select 用户类型 from 用户表 where 用户名='" + this .textBox1.Text + "'" ;
SqlDataReader sqlread = cmd.ExecuteReader(CommandBehavior .CloseConnection); if (sqlread.Read()) {
label5.Text = sqlread[" 用户类型" ].ToString(); entry = this .label5.Text.Trim(); con.Close(); } }
private void textBox2_TextChanged(object sender, EventArgs e)
{
password = this .textBox2.Text; }
private void button1_Click(object sender, EventArgs e) {
if (this .textBox1.Text == "" || this .textBox2.Text == "" ) MessageBox .Show(" 请输入用户名和密码" ); else {
SqlConnection con = new SqlConnection (); //创建连接
con.ConnectionString = "server=(local);database=进销存管理系统;uid=sa;pwd="; con.Open();
SqlCommand cmd = con.CreateCommand(); cmd.CommandText = "select *from 用户表" ; SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) {
string power = dr[0].ToString(); 主界面 main = new 主界面(); main.Tag = this .FindForm(); this .Visible = false ; main.ShowDialog(); this .Close();
}
else {
MessageBox .Show(" 用户名或密码错误" ); }
con.Close();
} }
private void button2_Click(object sender, EventArgs e) {
this .Close(); } } }
3.4.2主界面:
主界面代码:
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;
using System.Windows.Forms;
namespace 进销存 {
public partial class 主界面 : Form {
public 主界面() {
InitializeComponent(); }
private void 主界面_Load(object sender, EventArgs e) {
private void 商品类别ToolStripMenuItem_Click(object sender, EventArgs e) {
商品信息 m = new 商品信息(); m.Show(); }
private void 商品添加ToolStripMenuItem_Click(object sender, EventArgs e) {
if (进销存. 登陆.entry == " 管理员" ) {
商品添加 tj = new 商品添加(); tj.Show(); } else {
MessageBox .Show(" 您没有权限添加库存信息!" , " 信息" , MessageBoxButtons .OK, MessageBoxIcon .Information);
} }
private void 商品删除ToolStripMenuItem_Click(object sender, EventArgs e) {
商品删除 sc = new 商品删除(); sc.Show(); }
private void 商品查询ToolStripMenuItem_Click(object sender, EventArgs e) {
商品查询 cx = new 商品查询(); cx.Show(); }
private void 返回登陆ToolStripMenuItem_Click(object sender, EventArgs e) {
登陆 dl = new 登陆(); dl.Show();
private void 修改密码ToolStripMenuItem_Click(object sender, EventArgs e) {
修改密码 xg = new 修改密码(); xg.Show(); }
private void 供应商信息ToolStripMenuItem_Click(object sender, EventArgs e) {
供应商信息 m = new 供应商信息(); m.Show(); }
private void 销售信息ToolStripMenuItem_Click(object sender, EventArgs e) {
销售信息 m = new 销售信息(); m.Show(); }
private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) {
关于 m = new 关于(); m.Show(); }
private void 库存信息ToolStripMenuItem_Click(object sender, EventArgs e) {
库存信息 m = new 库存信息(); m.Show();
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) {
this .Close(); }
private void pictureBox1_Click(object sender, EventArgs e) {
}
} }
3.4.3
商品信息管理:
代码:
namespace 进销存 {
public partial class 商品信息 : Form {
public 商品信息() {
InitializeComponent(); }
private void 商品信息_Load(object sender, EventArgs e) {
// TODO: 这行代码将数据加载到表“进销存管理系统DataSet. 商品信息”中。您可以根据需要移动或移除它。
this . 商品信息TableAdapter.Fill(this . 进销存管理系统DataSet. 商品信息);
}
private void button2_Click(object sender, EventArgs e) {
this .Close(); }
private void button1_Click(object sender, EventArgs e) {
} } }
3..4.4供应商信息管理:
代码:
namespace 进销存 {
public partial class 供应商信息 : Form {
public 供应商信息() {
InitializeComponent(); }
private void button2_Click(object sender, EventArgs e) {
this .Close(); }
private void 供应商信息_Load(object sender, EventArgs e) {
// TODO: 这行代码将数据加载到表“进销存管理系统DataSet2. 供应商信息”中。您可以根据
需要移动或移除它。
this . 供应商信息TableAdapter.Fill(this . 进销存管理系统DataSet2. 供应商信息);
}
private void 确定_Click(object sender, EventArgs e)
{
}
}
}
3.4.5商品添加:
代码:
namespace 进销存
{
public partial class 商品添加 : Form
{
public 商品添加()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (this .textBox1.Text != "" )
{
string a = this .textBox1.Text;
string b = this .textBox2.Text;
string c = this .textBox3.Text;
string d = this .textBox4.Text;
string m = this .textBox5.Text;
string er = this .dateTimePicker1.Value.ToShortDateString();
SqlConnection con = new SqlConnection (); //创建连接
con.ConnectionString = "server=(local);database=进销存管理系统;uid=sa;pwd=";
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "insert into 进货信息(商品编号, 商品名称, 单价, 数量, 进货编号, 进货日期) " + "values('" + a + "','" + b + "','" + c + "','" + d + "','" + m + "','" + er + "'')" ;
con.Open();
int dd = cmd.ExecuteNonQuery();
if (dd == 1)
{
MessageBox .Show(" 添加成功!" );
}
}
else
MessageBox .Show(" 请输入商品编号!" );
}
private void button2_Click(object sender, EventArgs e)
{
this .Close();
}
private void button3_Click(object sender, EventArgs e)
{
this .Close();
}
}
}
3.4.5商品删除:
代码:
namespace 进销存
{
public partial class 商品删除 : Form
{
public 商品删除()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult result = new DialogResult ();
result = MessageBox .Show(" 确定要删除该库存信息?" , " 警告!" , MessageBoxButtons .OKCancel, MessageBoxIcon .Warning);
switch (result)
{
case DialogResult .OK:
{
SqlConnection con = new SqlConnection ();
con.ConnectionString = "server=(local);database=进销存管理系统;uid=sa;pwd="; SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "delete from 进货信息 where 商品名称='" + this .textBox1.Text + "'" ;
cmd.Connection = con;
con.Open();
int d = cmd.ExecuteNonQuery();
if (d == 1)
MessageBox .Show(" 删除成功" );
} break ;
case DialogResult .Cancel: break ;
}
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Clear();
}
private void button3_Click(object sender, EventArgs e)
{
this .Close();
}
}
}
3.4.6商品查询:
代码:
namespace 进销存
{
public partial class 商品查询 : Form
{
public 商品查询()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string tempValue = comboBox1.Items[comboBox1.SelectedIndex].ToString();
SqlConnection con = new SqlConnection ();
con.ConnectionString = "server=(local);uid=sa;password=;database=进销存管理系统" ; if (tempValue == " 商品编号" )
{
string co = "select * from 进货信息 where 商品编号='" + this .textBox1.Text + "'" ; DataSet ds = new DataSet ();
SqlDataAdapter da = new SqlDataAdapter (co, con);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
if (tempValue == " 商品名称" )
{
string co = "select * from 进货信息 where 商品名称='" + this .textBox1.Text + "'" ; DataSet ds = new DataSet ();
SqlDataAdapter da = new SqlDataAdapter (co, con);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
if (tempValue == " 进货编号" )
{
string co = "select * from 进货信息 where 进货编号='" + this .textBox1.Text + "'" ; DataSet ds = new DataSet ();
SqlDataAdapter da = new SqlDataAdapter (co, con);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
}
private void button2_Click(object sender, EventArgs e)
{
this .Close();
}
private void 商品查询_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“进销存管理系统DataSet1. 进货信息”中。您可以根据需要移动或移除它。
this . 进货信息TableAdapter.Fill(this . 进销存管理系统DataSet1. 进货信息);
}
}
}
3..4.7销售信息管理:
代码:namespace 进销存
{
public partial class 销售信息 : Form
{
public 销售信息()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
this .Close();
}
private void 销售信息_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“进销存管理系统DataSet3. 销售信息”中。您可以根据需要移动或移除它。
this . 销售信息TableAdapter.Fill(this . 进销存管理系统DataSet3. 销售信息);
}
private void button1_Click(object sender, EventArgs e)
{
}
}
}
3..4.8商品库存管理:
代码:
namespace 进销存
{
public partial class 库存信息 : Form
{
public 库存信息()
{
InitializeComponent();
}
private void 库存信息_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“进销存管理系统DataSet4. 库存信息”中。您可以根据需要移动或移除它。
this . 库存信息TableAdapter.Fill(this . 进销存管理系统DataSet4. 库存信息);
}
private void button1_Click_1(object sender, EventArgs e)
{
string tempValue = comboBox1.Items[comboBox1.SelectedIndex].ToString();
SqlConnection con = new SqlConnection ();
con.ConnectionString = "server=(local);uid=sa;password=;database=进销存管理系统" ; if (tempValue == " 商品编号" )
{
string co = "select * from 库存信息 where 商品编号='" + this .textBox1.Text + "'" ; DataSet ds = new DataSet ();
SqlDataAdapter da = new SqlDataAdapter (co, con);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
if (tempValue == " 仓库编号" )
{
string co = "select * from 库存信息 where 仓库编号='" + this .textBox1.Text + "'" ; DataSet ds = new DataSet ();
SqlDataAdapter da = new SqlDataAdapter (co, con);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
if (tempValue == " 进货编号" )
{
string co = "select * from 库存信息 where 进货编号='" + this .textBox1.Text + "'" ; DataSet ds = new DataSet ();
SqlDataAdapter da = new SqlDataAdapter (co, con);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
if (tempValue == " 销售编号" )
{
string co = "select * from 库存信息 where 销售编号='" + this .textBox1.Text + "'" ; DataSet ds = new DataSet ();
SqlDataAdapter da = new SqlDataAdapter (co, con);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
if (tempValue == " 仓库名称" )
{
string co = "select * from 库存信息 where 仓库名称='" + this .textBox1.Text + "'" ;
DataSet ds = new DataSet ();
SqlDataAdapter da = new SqlDataAdapter (co, con);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
}
private void button2_Click(object sender, EventArgs e)
{
this .Close();
}
}
}
3.4.9修改密码:
代码:
namespace 进销存
{
public partial class 修改密码 : Form
{
public 修改密码()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string s = this .textBox2.Text;
if (s != 进销存. 登陆.password)
{
MessageBox .Show(" 密码输入不正确!请重新输入!" , " 信息" , MessageBoxButtons .OK, MessageBoxIcon .Error);
textBox2.Focus();
}
else
{
SqlConnection con = new SqlConnection ();
con.ConnectionString = "server=(local);database=进销存管理系统;uid=sa;pwd="; SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "update 用户表 set 密码='" + textBox3.Text + "'where 用户名='" + textBox1.Text + "'" ;
con.Open();
int d = cmd.ExecuteNonQuery();
if (d == 1)
MessageBox .Show(" 修改密码成功!" , " 信息" , MessageBoxButtons .OK, MessageBoxIcon .Information);
}
}
private void button2_Click(object sender, EventArgs e)
{
this .Close();
}
}
}
3..4.10关于设计:
代码:
namespace 进销存
{
public partial class 关于 : Form
{
public 关于()
{
InitializeComponent();
}
private void 关于_Load(object sender, EventArgs e)
{
}
}
}
4. 结语
这次的课程设计后有以下几点感受:
1)通过这次课程设计,加强了大家思考和解决问题的能力。在设计前要理清思路,对开发的系统整合模块,并且对每个模块的功能有充分的了解,设计思路。
2)在设计过程中,经常会遇到这样那样的情况,就是心里想老是这样的设计可以行得通,但总是实现不了,因此耗费在这上面的时间用去很多。
3)我沉得做课程设计同时也是对知识的渴求和对所学知识的加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用,而且考试内容有限,所以在这次课程设计过程中,对数据库有了更深的了解,并且对于其在软件设计的使用有了更多的认识。
4)这次所用的语言是VB ,可是没学过,看书老是弄不懂,做完课程设计,有些问题就迎刃而解了。而且还可以记住很多东西。比如一些控件的功能,以前没接触过,可这次课程设计后,对它们有了进一步的了解,所以,从实践中可以学到很多东西。知识源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这的课程设计对我的作用是非常大的。
5)在课程设计时,我发现细心耐心,恒心很重要,具备这些才能做好事情。有时一个小小的错误就会导致整个调试过程的结束。这时,细心,耐心很重要,不然就会功亏一篑。
经过两个星期的学习,过程曲折可谓一语难尽。在此期间我也失落过,也曾一度热情高涨。有时一个小小的成功会让我兴奋许久,整个过程的点点滴滴无不令我回味无长。生活就是这样,辛勤预示着结果也见证着收获。
此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。
最后的大功告成, 对我们而言,知识上的收获重要,精神上的丰收更加可喜。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!
5参考文献
1王珊,萨师煊《数据库系统概论》(第四版)
2刘卫国,严晖《数据库技术与应用--sql server》