资源描述
精品文档就在这里
-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有--------------
--------------------------------------------------------------------------------------------------------------------------------------------
目 录
1 现行系统概述…………………………………………………………2
2 系统分析………………………………………………………………3
2.1需求分析……………………………………………………………………3
2.2可行性研究…………………………………………………………………3
2.3系统的开发方法的选择……………………………………………………3
2.4组织结构与功能分析………………………………………………………4
2.5业务流程分析………………………………………………………………5
2.6数据与数据流程分析………………………………………………………6
2.7 数据分析…………………………………………………………………6
3 系统设计………………………………………………………………9
3.1系统总体结构设计…………………………………………………………9
3.2数据结构与数据库设计……………………………………………………12
3.3系统物理配置方案设计……………………………………………………13
4系统实施…………………………………………………………………14
4.1登陆界面…………………………………………………………………14
4.2系统主界面…………………………………………………………………16
5结束语…………………………………………………………………28
参考文献………………………………………………………………………30
1现行系统概述
本门窗企业早期的销售管理单纯依靠人工来完成,耗时耗力,且效率不高,严重影响了企业的发展,不能及时对市场及客户的要求做出迅速反应调整生产,而随着科技日益发展及信息化浪潮的日益临近,企业经营管理机制正在发生着根本性的变化,特别是处于激烈市场竞争环境下的企业,如果想要在日新月异的市场变化中求得生存,就必须有效地进行企业内部改革和加强企业管理。借助现代信息技术和管理理论,建立企业管理信息系统势在必行。因此,本门窗企业开发订单式销售管理系统,以求提高企业的管理效率,增强企业的竞争力。
2系统分析
2.1 需求分析
随着科技的发展,信息化在企业中显得尤为重要。随着信息量的日益增多,单纯的人工处理已经不能满足企业快速发展的需要,企业每天都需要接受各式订单,如果仅仅依靠人工处理与统计分配生产,在人工协调生产与需求的关系,必然会出现各种各样的错误,加大企业工作人员的工作量,降低企业的生产效率,企业的发展也必然受阻。在这种情况下,开发管理系统,就显得尤为重要,是企业目前迫切的需求。
2.2可行性研究
此次信息系统开发是对本学期所学专业知识的一次综合检验与提高,在刘印平老师的指导下,我和我得合作者在机房共同开发订单式管理系统。本学期,我已经学习了管理信息系统,对系统开发的流程及所需知识及先关软件有了一定了解,并且对数据库、数据结构、C语言、C#及ASP.NET都有一定的了解,这些相关知识也为本次系统的开发提供了可能,再者教材中的各种系统开发范例也为我们的开发做了很好的指导,综合考虑,完全有能力开发出此管理系统。
2.3系统的开发方法的选择
我们选择结构化开发方法,即用系统工程的思想和工程化的方法,按照用户至上的原则,自顶向下整体分析与设计和自底向上逐步实施的系统开发过程。是组织、管理和控制信息系统开发过程的一种基本框架。
其基本思想:在系统分析时,采用自顶向下、逐层分解,由抽象到具体的逐步认识问题的过程;在系统设计的时候,先考虑系统整体的优化,再考虑局部的优化问题;在系统实施的时候,则坚持自底向上,先局部后整体,通过标准化模块的连接形成完整的系统。
开发过程主要包括以下几个阶段:系统规划阶段、系统分析阶段、系统设计阶段、系统实施阶段、系统运行与维护阶段,每个阶段都有明确的任务和目标,这样整个开发过程容易调整和控制。
2.4 组织结构与功能分析
数据统计
信息管理
经
销
商
业
绩
产品销量
客户信息
订单式销售管理系统
经销商信息
产品信息
订单信息
图2-1 组织结构图
2.5 业务流程分析
本系统的业务流程主要描述如下:
厂家事先录入产品信息,各地经销商根据产品信息向客户销售产品并向厂家提交订货单,同时经销商生成客户信息。之后厂家审核订货单,合格则生成合格订货单,不合格则退给经销商重新填写,此时生成经销商信息厂家存档,并将合格的订单送往车间生产,生产结束后通过物流将产品发送给经销商。
业务流程图如下:
图2-2 业务流程图
2.6数据与数据流程分析
数据流程分析是把数据在组织内部的流动情况抽象地独立出来, 舍去了具体的组织机构等,以发现和解决数据流中的问题。员工将产品信息和客户信息录入,生成相应的产品档案和客户档案,而订单记录建立了客户和产品的联系,并存储这些记录。其数据流程图如图2-3所示
图2-3 数据流程图
2.7数据分析
数据字典:根据系统的数据流程图,得到数据流、数据存储、加工和数据项的数据字典,数据字典详细描述了数据流程图中各个项,有助于操作员进一步了解系统的逻辑功能和结构。举例如下:
(1)数据项条目:
①数据项名称:订购日期
简述:客户订购商品的日期
别名:无
类型:日期
取值范围:'1000-01-01'到'9999-12-31'
②数据项名称:订单编号
简述:用户此次订货在系统内部的定义
别名:订单编号
类型:字符型
取值范围:'000000'到'999999'
③数据项名称:客户编号
简述:客户在经销商编号
别名:客户编号
类型:字符型
取值范围:'000000'到'999999'
(2)数据流条目:
①数据流名称:客户信息
简述: 对客户的基本信息进行介绍
数据流来源:订单记录
数据流去向:客户档案
数据流组成:客户编号+客户姓名+联系方式+客户地址+备注
数据流量:100次 / 日
高峰流量:200次 / 日
②数据流名称:产品信息
数据流来源:厂家
数据流去向:产品档案
简述: 厂家将各产品信息写入系统,以便查询使用
数据流组成:产品号+产品名称+主要材料+备注
数据流量:100次 / 日
高峰流量:200次 / 日
③数据流名称:经销商信息
简述: 对经销商的基本信息进行介绍
数据流来源:厂家
数据流去向:经销商档案
数据流组成:经销商编号+经销商姓名+联系方式+经销商地址+备注
④数据流名称:订单信息
简述: 客户发出订货的证明
数据流来源:经销商
数据流去向:销售额统计
数据流组成:订单号+客户姓名+联系方式+客户地址+产品号+产品名称+主要材料
数据流量:100次 / 日
高峰流量:200次 / 日
(3)数据存储条目:
①数据存储名称:客户档案
简述:进一步整理客户信息,一边用于产品维护
数据存储组成:客户编号+客户姓名+性别+联系方式+客户地址+产品编号+产品数量+备注
关键字:客户编号
②数据存储名称:产品档案
简述:厂家输入产品信息生成产品档案,用于产品查询
数据存储组成: 产品号+产品名称+主要材料+备注
关键字:产品型号
③数据存储名称:订单记录
简述:用于保存客户填写的订单信息
数据存储组成:订单号+客户姓名+联系方式+客户地址+产品号+产品名称+主要材料
关键字:订单号
④数据存储名称:销售统计表
简述:将统计后的销售信息存储下来,用于厂家和经销商的查询
数据存储组成:销售额统计
关键字:产品编号
(4)处理逻辑条目:
①处理逻辑名称:销售统计
简述:对销售情况进行统计
输入数据流:订单信息
处理:根据订单信息,找出销售状况,分析出各种产品的销售状况,经销商业绩
输出数据流:销售统计表
3 系统设计
3.1系统总体结构设计
订单式销售管理系统的系统模块结构图见图3-1:
图3-1 系统模块结构图
3.2数据结构与数据库设计
3.2.1数据库的概念结构设计
概念结构设计是按用户的观点对数据和信息建模,而概念模型的最常用的表示方法是实体-联系方法(简称E-R图),该系统的而图如图3-2所示:
图3-2 E-R图
3.2.2 数据库的表结构定义
用户信息表:存放用户的相关信息。如表3-3所示:
表3-3 用户信息表
字段名
属性
备注
Userid
Userpwd
Uservel
Varchar(10)
Varchar(10)
Varchar(10)
主键
产品信息表:存放产品的相关信息。如表3-4所示:
表3-4 产品信息表
字段名
属性
备注
产品型号
产品名称
规格描述
备注
Char(50)
Varchar(50)
char(50)
Varchar(50)
主键
经销商信息表:存放经销商的相应信息。如表3-5所示:
表3-5经销商信息表
字段名
属性
备注
经销商编号
经销商姓名
性别
联系电话
住址
备注
Char(6)
Varchar(8)
Char(2)
Char(15)
Varchar(50)
Varchar(100)
主键
客户信息表:用于存放客户的相应信息。如表3-6所示:
表3-6客户信息表
字段名
属性
备注
经销商编号
经销商姓名
性别
联系电话
客户地址
备注
Char(6)
Varchar(8)
Char(2)
Char(15)
Varchar(100)
Varchar(100)
主键
订单信息表:显示记录客户、产品、经销商之间的联系。如表3-7所示:
表3-7订货单信息表
字段名
属性
备注
订单号
客户编号
经销商编号
产品型号
数量
总价
签订日期
交货日期
备注
Char(6)
Char(6)
Char(6)
Char(50)
Int
Money
Datetime
Datetime
Varchar(100)
主键
外键
外键
外键
3.2.3数据库中表的实现
此系统的数据关系图如图3-3所示:
图3-3 数据关系图
3.3系统物理配置方案设计
(1)硬件选择。系统中计算机能够运行Windows XP 以上操作系统即可。
(2)操作系统。Windows XP以上操作系统。
(3)开发工具。Visual Studio 2010(C#)。
(4)数据库管理系统。SQL Server2005数据库管理系统及其使用工具。
4系统实施
4.1登陆界面
登录页面的功能主要是供合法的用户根据自己的用户名、用户密码进行登录。订单式销售管理系统登录模块运行的结果如图4-1所示。
图4-1 登陆界面
登陆界面代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 订单式销售管理系统
{
public partial class FrmLogin : Form
{
public FrmLogin()
{
InitializeComponent();
fl = this;
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();//退出登录模块
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() == "" || textBox2.Text.Trim() == "")
MessageBox.Show("用户名或密码不能为空!", "登录提示");
else
{
string SqlText = "select * from UserInfo where Userid='" + this.textBox1.Text + "'and Userpwd='" + this.textBox2.Text + "'";
DataAccess DA = new DataAccess();
if (DA.IsRead(SqlText) == true)
{
string mySql = "select * from UserInfo where Userid='" + this.textBox1.Text + "'";
DataTable dt = DA.ExeSQLdt(mySql);
this.Competence = dt.Rows[0]["Uservel"].ToString();
FrmLogin.Can = true;
this.Close();
}
else
{
MessageBox.Show("用户名或密码错误,请重新输入!", "登录提示");
}
}
}
4.2系统主界面
主界面包含系统管理、产品信息管理、客户信息管理、经销商信息管理、订货单信息管理、数据汇总这几个模块,如图4-2所示。
图4-2 系统主界面
4.3部分功能模块设计界面及部分代码
(1) 部分功能模块界面如下:
产品信息管理界面如下:
客户信息管理界面如下:
经销商信息信息管理界面如下:
经销商信息管理界面如下:
(2) 主要代码如下:
①数据库连接代码
class DataAccess
{
SqlConnection myconn;
static string Str = "Server =CHENYING-PC;Database =订单式销售管理系统;Uid = sa;Pwd = 123";
public SqlConnection Conn = new SqlConnection(Str);
public DataAccess()
{
myconn = new SqlConnection(Str);
myconn.Open();
}
②修改密码代码
private void Edit_bt_Click(object sender, EventArgs e)//执行修改密码功能
{
if ((this.textboxOld.Text == "") || (this.textboxNew.Text == "") || (this.textboxConfigNew.Text == ""))
{
MessageBox.Show("请输入完整信息!","修改提示!");
return;
}
if (this.textboxNew.Text != this.textboxConfigNew.Text)
{
MessageBox.Show("确认密码失败,请重新输入!", "修改提示!");
return;
}
else
{
DataAccess DAEdit = new DataAccess();
string SqlTextUpdate = "update UserInfo set Userpwd='" + this.textboxNew.Text.Trim() + "' where Userid='" + this.textboxUserName.Text + "'";
DAEdit.ExeSQL(SqlTextUpdate);
MessageBox.Show("修改密码成功!", "修改提示!");
}
}
③DataAccess类代码
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.IO;
using System.Data;
using System.Data.SqlClient;
namespace 订单式销售管理系统
{
class DataAccess
{
SqlConnection myconn;
static string Str = "Server =CHENYING-PC;Database =订单式销售管理系统;Uid = sa;Pwd = 123";
public SqlConnection Conn = new SqlConnection(Str);
public DataAccess()
{
myconn = new SqlConnection(Str);
myconn.Open();
}
public int ExeSQL(string sql)
{
SqlCommand cmd = new SqlCommand(sql, this.myconn);
try
{
cmd.ExecuteNonQuery();
return 0;
}
catch (System.Data.SqlClient.SqlException ex)
{
MessageBox.Show(ex.Message.ToString());
return -1;
}
finally
{
cmd.Dispose();
this.myconn.Close();
}
}
// 判断数据库是否有记录,有记录则返回真,无则返回假
public bool IsRead(string sql)
{
SqlCommand cmd = new SqlCommand(sql,this.myconn);
SqlDataReader dr = cmd.ExecuteReader();
try
{
if(dr.Read())
{
return true;
}
else
{
return false;
}
}
catch(System.Data.SqlClient.SqlException ex)
{
MessageBox.Show(ex.Message.ToString());
return false;
}
finally
{
dr.Close();
cmd.Dispose();
this.myconn.Close();
}
}
public DataTable ExeSQLdt(string sql)
{
try
{
SqlDataAdapter da = new SqlDataAdapter(sql, myconn);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
catch(System.Data.SqlClient.SqlException ex)
{
MessageBox.Show(ex.Message.ToString());
return null ;
}
finally
{
this.myconn.Close();
}
}
}
}
④经销商信息添加代码
private void button1_Click(object sender, EventArgs e)//添加经销商信息
{
if (textBox1.Text.Trim() == "" || textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "" || textBox4.Text.Trim() == "" || Remarks_txt.Text.Trim() == "" || comboBox1.Text.Trim() == "")
MessageBox.Show("请输入完整信息!", "输入提示");
else if(订单式销售管理系统.子窗体.FrmJingxiaoshangInfo.JingxiaoshangID == "insert")
{
string SqlText = "insert into 经销商信息表 (经销商编号,经销商姓名,性别,联系电话,住址,备注) values('" + this.textBox1.Text + "','" + this.textBox2.Text + "','" + boBox1.Text + "','" + this.textBox3.Text + "','" + this.textBox4.Text + "','" + this.Remarks_txt.Text + "')";
DataAccess dataaccess = new DataAccess();
DataAccess DA = new DataAccess();
DA.ExeSQL(SqlText);
订单式销售管理系统.子窗体.FrmJingxiaoshangInfo.JingxiaoshangInfo.Enabled = true;
订单式销售管理系统.子窗体.FrmJingxiaoshangInfo.JingxiaoshangInfo.DBDataGrid();
this.Close();
MessageBox.Show("添加成功!", "添加提示!");
}
}
⑤经销商信息查询代码
private void button1_Click(object sender, EventArgs e)//执行查询经销商信息功能
{
string mystr, mysql;
mystr = "Server =CHENYING-PC;Database =订单式销售管理系统;Uid = sa;Pwd = 123";
SqlConnection myconn = new SqlConnection();
myconn.ConnectionString = mystr;
myconn.Open();
myds.Clear();
mysql = "select 经销商编号,经销商姓名,性别,联系电话,住址,备注 from 经销商信息表 where 经销商编号 like '%" + textBox1.Text.Trim() + "%'";
myda = new SqlDataAdapter(mysql, myconn);
myda.Fill(myds, "经销商信息表");
dataGridView1.DataSource = myds.Tables["经销商信息表"];
}
⑥经销商信息修改代码
private void button3_Click(object sender, EventArgs e)//执行经销商信息修改功能
{
DialogResult ID = MessageBox.Show("您确定要修改经销商编号为"+dataGridView1.SelectedCells[0].Value.ToString()+"的信息么?", "修改提示!", MessageBoxButtons.YesNo);
if (ID == DialogResult.Yes)
{
SqlCommandBuilder mycmdbuilder = new SqlCommandBuilder(myda);
if (myds.HasChanges())
{
try
{
myda.Update(myds, "经销商信息表");
MessageBox.Show("修改成功","修改提示!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
MessageBox.Show("修改失败","修改提示!");
}
}
}
else
{
MessageBox.Show("取消修改!", "修改提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
⑦经销商信息添加代码
private void button1_Click(object sender, EventArgs e)//添加经销商信息
{
if (textBox1.Text.Trim() == "" || textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "" || textBox4.Text.Trim() == "" || Remarks_txt.Text.Trim() == "" || comboBox1.Text.Trim() == "")
MessageBox.Show("请输入完整信息!", "输入提示");
else if(订单式销售管理系统.子窗体.FrmJingxiaoshangInfo.JingxiaoshangID == "insert")
{
string SqlText = "insert into 经销商信息表 (经销商编号,经销商姓名,性别,联系电话,住址,备注) values('" + this.textBox1.Text + "','" + this.textBox2.Text + "','" + boBox1.Text + "','" + this.textBox3.Text + "','" + this.textBox4.Text + "','" + this.Remarks_txt.Text + "')";
DataAccess dataaccess = new DataAccess();
DataAccess DA = new DataAccess();
DA.ExeSQL(SqlText);
订单式销售管理系统.子窗体.FrmJingxiaoshangInfo.JingxiaoshangInfo.Enabled = true;
订单式销售管理系统.子窗体.FrmJingxiaoshangInfo.JingxiaoshangInfo.DBDataGrid();
this.Close();
MessageBox.Show("添加成功!", "添加提示!");
}
}
⑧调用视图代码
private void button1_Click(object sender, EventArgs e)//执行查询订货单信息记录功能
{
string mystr, mysql;
mystr = "Server =CHENYING-PC;Database =订单式销售管理系统;Uid = sa;Pwd = 123";
SqlConnection myconn = new SqlConnection();
myconn.ConnectionString = mystr;
myconn.Open();
myds.Clear();
mysql = "select * from v_Order where 客户姓名 like '%" + textBox1.Text.Trim() + "%'";//调用数据库中的视图v_Order
myda = new SqlDataAdapter(mysql, myconn);
myda.Fill(myds, "v_Order");
dataGridView1.DataSource = myds.Tables["v_Order"];
}
⑨调用存储过程代码
DataAccess DA = new DataAccess();
SqlCommand insertCommand = DA.Conn.CreateCommand();
insertCommand.CommandText = "execute pro_UserInfo @Userid,@Userpwd,@Uservel";//调用数据库中的存储过程添加用户信息
insertCommand.Par
展开阅读全文