




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于C#的汽车销售管理系统的设计与实现德江县高山中学:何波摘要:随着计算机技术的广泛应用,为了使计算机更高效、更科学地管理汽车销售市场,基于目前汽车销售的现状,利用C#开发的一个汽车管理系统,并对该系统整个开发过程就行详细论述。该系统在设计方面采用B/S模式,使用C#技术和SQL Server 2005数据库进行基本页面的设计与功能实现,本系统的设计实施为销售管理系统的运行做基础,为销售管理系统管理工作提供良好的条件。关键字:NET(C#);汽车销售管理系统;汽车销售Abstract:With the extensive application of computer technology,
2、in order to make your computer more efficient and more scientific management of the automobile market, car sales based on the current status quo, a vehicle management system using C # development, and of the system throughout the development process in detail. The system design using the B / S mode
3、with C # and the SQL Server, 2005 database carry out basic page's design and function to achieve sales management system of operation to do the basis of a design of this system, the sales management system management work to provide good conditions.Keywords: C# ; Sales-cars management system; Sa
4、le of car.1 引 言1.1 研究背景该系统是基于汽车销售公司的系统,汽车销售公司都是以汽车营销为主,且大多数汽车销售公司在全国都设有连锁机构,随着企业的不断扩大规模,业务量日益增多,企业管理层通过自己的方式解决个地区之间在销售过程中遇到的种种问题。根据各销售地区业务流量,系统基于中文版SQL Server 2005 设计,采用较先进的.Net(C#)技术进行开发,具有良好的稳定性和可靠性。 该销售管理系统,它可以完成对车辆信息的浏览、查询、修改及销售表单打印等功能,大大方便了销售员的管理。而且它对传统的手工劳动冲击不大,备有的用户手册使用户不至于不适应,这样操作起来,用户也能快速的接
5、受。此系统是为了满足用户方便对该公司销售的汽车信息的查询,同时方便企业对汽车的各种管理与操作。1.2 国内现状 汽车销售管理系统是销售行业的主要业务之一,汽车信息、用户信息日常工作管理成为及保存工作日趋繁重、复杂,且在日趋激烈的社会竞争中,客户量的多少是衡量一个企业在社会上的竞争力度,为此迫切需要一个能有效管理客户信息和对用户提出的需求做出快速反应的系统。目前国内现状是:国内众多中小企业迫切需要信息化管理,但是自己处于初步需求阶段,无法承受大型ERP、财务销售仓储一体信息化管理的中级阶段,自主开发的管理系统平台较低且功能单一,商用软件又过于注重通用性,无法充分考虑到具体每一个单位、具体部分的实
6、际需求。销售数据标准化程度差,难以保证数据的唯一性和权威性。忽略了对销售数据的分析,使得销售经理需查询账单,才能了解销售情况,在一定程度上影响了对市场的判断。没有注重对客户的管理,严重影响了企业对客户需求的了解,难以把握市场动态。因此,开发一款功能全面操作简单的汽车销售管理系统是很有必要的,实现企业员工的集中管理、分散操作、信息共享,是传统的管理系统朝智能化,综合化得发展,并为近一步完善销售管理市场。1.3 研究内容汽车销售管理系统是典型的信息管理系统,其开发主要包括前端应用程序的开发及数据库的建立。前端得的应用程序要求应用程序功能完备、易使用等特点。对于数据库的建立要求数据一致性和完整性强,
7、业务逻辑紧凑的数据库机构及操作方法。给予这些要求,我对SQL Sever 2005 数据库管理系统、SQL语言原理、C#程序设计语言、visual Studio 2010等进入了深入的学习和应用。最终顺利完成了汽车销售管理系统的设计与实现1.4 本人所做的工作为设计和实现汽车销售管理系统,针对该系统做了需求分析、功能划分、数据库模式分析、并为此设计了数据库结构和应用程序。实现了本系统的基本功能:登录管理员的权限判断,员工信息、车辆信息、用户信息的管理,保险、税费、活动等服务信息的管理。本系统完全给予B/S结构,使用了C# windows 窗体结构来完成本系统的设计,是一款功能全面,操作简单的销
8、售管理系统。1.5 论文结构引 言 主要叙述研究背景、国内现状的分析及本人主要做的工作。第一章 系统需求分析 对系统的设计思想及系统共能分析。第二章 概要设计 对系统总体机构进行分析及用户行为的分析。第三章 主要模块设计 对系统各个模块操作进行分析设计页面。第四章 主要模块的实现 写出模块间实现其功能代码。第五章 系统安装与调试 安装调试相关的软件,并根据功能需求对系统进行调试。2 需求分析2.1 开发设计思想减少系统对硬件的要求。本系统在装有操作系统的计算机上均可使用。节约了人力资源。传统的手工式收集用户资料方式被计算机取代。使用性:为汽车信息、用户信心、员工信息管理提供便捷的方法。操作简单
9、:保证系统适合于任何计算机水平的员工,尽可能的简单。代码可读性好:系统机构清晰,代码简洁可读,方便日后的扩展。2.2 系统目标本系统主要实现以下目标:l 员工管理。增加、修改和删除分类及员工权限管理。l 用户管理。对已在本公司购车的用户信息管理。l 用户选车、购车。根据用户需求查找适合用户需求的车辆。l 代办车务。在用户购车时,帮助用户代办汽车业务。l 管理员及公司员工登陆。l 管理员管理。3 概要设计3.1 系统总体结构图3.1汽车销售系统功能结构图3.2 员工行为分析图3.2 销售员工工作流程图3.3 经理行为分析图3.3经理工作流程图3.4 管理员行为分析下面是看管理员的工作,其行为主要
10、包括对用户权限的管理。如图3.4所示。图3.4管理员行为分析图3.5 数据库概念设计图 3.5数据库逻辑设计图3.6 数据库物理机构设计图用户表(yonghu)名称类型是否可为空车辆编号nchar(10)NO, 主键,外键保险编号nchar(10)NO, 主键,外键用户姓名vnchar(10)NO性别nchar(2)NO贯籍nvarchar(50)Yes民族nchar(2)Yes出生年月datetimeYes学历nvarchar(15)Yes证件类型nchar(10)Yes证件号码nchar(18)Yes工作单位varchar(50)Yes联系地址varchar(50)NO联系电话nchar(
11、12)NO邮政编码nchar(6)Yes婚姻状况nchar(10)Yes汽车分类表(cars)名称类型是否可为空车辆编号nchar(10)NO, 主键厂牌型号nvarchar(50)NO发动机号varchar(50)NO车架号码varchar(50)NO车辆类型char(10)NO车辆性质char(10)NO车身颜色char(10)NO车辆价格char(10)NO出厂日期datetimeNO保险表(baoxian)名称类型是否可为空保险编号nchar(10)NO, 主键保险名称varchar(50)NO分类名称char(10)NO员工信息表(YGB)名称类型是否可为空工号nchar(10)NO
12、, 主键姓名nchar(10)NO性别nchar(10)NO贯籍nchar(10)NO生日datetimeYES身份证号nchar(18)NO联系电话nchar(12)NO联系地址varchar(50)NO邮编nchar(6)NO部门nchar(10)NO职务nchar(10)NO销售表名称类型是否可为空工号nchar(10)NO, 主键,外键车辆编号nchar(10)NO, 主键,外键用户姓名vnchar(10)NO保险编号nchar(10)NO, 主键,外键销售日期datetimeNO管理员信息表名称类型是否可为空userIDintNO, 主键user_namenchar(10)NOuse
13、r_pswdvarchar(50)NOuser_powernchar(10)NO4 主要模块详细设计4.1 登录模块分析41登录模块分析3.2 购车建档模块分析42购车建档模块分析5主要模块的实现5.1 开发工具的选取.NET(c#)技术是开发软件的技术之一,它继承了Microsoft的两项主要技术:Active Server Page(ASP)和.NET Framework。利用. NET Framework提供的强大类库和预定义控件,.NET开发windows窗体应用程序非常的方便。其优点如下:1) 优良的性能。C# windows 窗体程序是在服务器上运行的编译好的代码。利用早期绑定、实
14、时编译、本机优化和缓存服务来提高程序的性能。2) 强大的功能。由于 .NET技术基于公共语言运行库,因此 C# windows窗体应用程序开发人员可以利用整个平台的威力和灵活性。3) 简易性。C# Windows 窗体使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署。4) 自定义性和扩展性。C#随附了一个设计周到的结构,它使开发人员可以在适当的级别"插入"代码。5) 安全性。借助内置的 Windows 身份验证和基于每个应用程序的配置,可以保证应用程序是安全的。虽然.NET可以支持多种开发语言,但只有C#是为. NET Framework量身定做的,它拥有所有
15、. NET Framework提供的优点,如资源回收、内存自动管理等,能够最完美地体现. NET 的功能。正是基于以上原因,本系统采用.NET(C#)技术来实现。5.2 公共类的编写5.2.1 widows窗体.Config文件的配置以下是本系统与数据库建立连接的源代码:public static SqlConnection GyDATE() return new SqlConnection("Data Source=PC2011031418pts;Initial Catalog=汽车销售管理;Integrated Security=True;Pooling=False;"
16、); 5.3 主要模块的实现登录页面设计汽车销售管理系统有一个严格的身份验证,不同身份的用户有不同的操作权限。用户权限分为员工、经理、管理员三种,其中员工只能操作极少的页面,经理可以查看员工销售统计和管理员工信息。管理员具有最高权限,可以进行一切页面的操作。登录用户登录系统后可以修改密码,在登录界面需输入用户名和密码并且选择身份,此三项若有一项不正确均不能登录到操作页面。改页面具体实现过程如下:5.1 登录界面设计登录按钮添加代码如下:private void button1_Click(object sender, EventArgs e) if (textBox2.Text.Trim()
17、= string.Empty) MessageBox.Show("请输入用户名"); return; if (textBox3 .Text .Trim ()=string .Empty ) MessageBox.Show("请输入密码?"); return; using (SqlConnection con = new SqlConnection("Data Source=PC2011031418pts;Initial Catalog=汽车销售管理;Integrated Security=True;Pooling=False;") 用
18、户登录.loginId = textBox2.Text.Trim(); 用户登录.loginATC = comboBox1.Text.Trim(); string sql = "select * from userstring where user_name= '" + textBox2.Text.Trim() + "'and user_power = '" + comboBox1.Text.Trim() + "' and user_pswd = '" + textBox3.Text.Trim(
19、) + "' " con.Open(); SqlDataAdapter da = new SqlDataAdapter(sql, con); DataSet ds = new DataSet(); da.Fill(ds); DataTable dt = ds.Tables0; if (dt.Rows.Count > 0) MessageBox.Show("登录成功"); 主页面 ff = new 主页面(); ff.Show(); this.Visible = false; else MessageBox.Show("登录失败&q
20、uot;); /comboBox1.Text = string.Empty; textBox2.Text = string.Empty; textBox3.Text = string.Empty; 购车建档设计其中主要任务利用DateGridView显示数据库表中当前用户信息和建立新用户信息,也可对也有用户数据进行查询,也可打印当前构建的用户信息让用户确认,若有错误或资料不完整,可以对用户资料进行修改。完成效果如图5.2所示。图5.2购车建档页面设计效果 增加、保存、修改按钮实现在码如下:SqlConnection conn = getdate.GyDATE(); conn.Op
21、en(); string strSql = string.Format("选择相应表操作"); SqlCommand cmd = new SqlCommand(strSql, conn); int i = cmd.ExecuteNonQuery(); conn.Close(); if (i > 0) MessageBox.Show("操作成功"); else MessageBox.Show("操作失败"); 查询按钮的实现代码如下:private void button4_Click(object sender,
22、 EventArgs e) SqlConnection conn = getdate.GyDATE(); string str = "select * from maiche " str += "where 用户姓名im() + "'and 国籍= '" + textBox18.Text.Trim() + "'and 车身颜色='" + comboBox7.Text.Trim() + "'and 车牌号='" + textBox19.Text.Trim()
23、+ "'and 厂牌型号='" + comboBox8.Text.Trim() + "'" SqlCommand Com = new SqlCommand(str, conn); SqlDataAdapter myda = new SqlDataAdapter(); myda.SelectCommand = Com; conn.Open(); DataSet myds = new DataSet(); MessageBox.Show(str); myda.Fill(myds, "baoxiandengji");
24、 conn.Close(); dataGridView1.DataSource = myds; dataGridView1.DataMember = "baoxiandengji" SqlCommand cmd = new SqlCommand(str, conn); 导出按钮实现代码如下:private void button6_Click(object sender, EventArgs e) try DataGridViewToExcel(dataGridView1); catch (Exception ex) MessageBox.Show(ex.M
25、essage); private void DataGridViewToExcel(DataGridView dgv) SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "Execl files (*.xls)|*.xls" dlg.FilterIndex = 0; dlg.RestoreDirectory = true; dlg.CreatePrompt = true; dlg.Title = "保存为文件; if (dlg.ShowDialog() = DialogResult.OK) Stream
26、 myStream; myStream = dlg.OpenFile(); StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0); string columnTitle = "" try /写入列标题 for (int i = 0; i < dgv.ColumnCount; i+) if (i > 0) columnTitle += "t" columnTitle += dgv.Columnsi.HeaderText; sw.Writ
27、eLine(columnTitle); /写入列内容 for (int j = 0; j < dgv.Rows.Count; j+) string columnValue = "" for (int k = 0; k < dgv.Columns.Count; k+) if (k > 0) columnValue += "t" if (dgv.Rowsj.Cellsk.Value = null) columnValue += "" else columnValue += dgv.Rowsj.Cellsk.Value.T
28、oString().Trim(); sw.WriteLine(columnValue); sw.Close(); myStream.Close(); catch (Exception e) MessageBox.Show(e.ToString(); finally sw.Close(); myStream.Close(); 打印按钮实现代码如下:在public partial class 购车建档公共类中写入以下代码:/打印文档 PrintDocument pdDocument = new PrintDocument(); /打印格式设置页面 PageSetupDialog d
29、lgPageSetup = new PageSetupDialog(); /打印页面 PrintDialog dlgPrint = new PrintDialog(); /实例化打印预览 PrintPreviewDialog dlgPrintPreview = new PrintPreviewDialog();在public 购车建档()函数中写入以下代码:this.dataGridView1.CellClick+=newDataGridViewCellEventHandler(dataGridView1_CellClick); pdDocument.PrintPage += new Prin
30、tPageEventHandler(OnPrintPage); btnPrint.Click += new EventHandler(btnPrint_Click); btnPrintView.Click += new EventHandler(btnPrintView_Click); btnPrintSetup.Click += new EventHandler(btnPrintSetup_Click); /页面设置的打印文档设置为需要打印的文档 dlgPageSetup.Document = pdDocument; /打印界面的打印文档设置为被打印的文档 dlgPrint.Document
31、 = pdDocument; /打印预览的文档设置为被打印的文档 dlgPrintPreview.Document = pdDocument;为打印功能写入实现代码,具体如下:private void btnPrintView_Click(object sender, EventArgs e) dlgPrintPreview.ShowDialog(); / 打印设置,此处需要添加一个打印设置的按钮 private void btnPrintSetup_Click(object sender, EventArgs e) dlgPageSetup.ShowDialog(); dlgPrint.Sh
32、owDialog(); / printDocument的PrintPage事件 ,实现打功|能 private void OnPrintPage(object sender, PrintPageEventArgs e) int iX = 60; int iY = 40; PrintDataGridView11.Print(dataGridView1, true, e, ref iX, ref iY); / 打印,此处需添加一个打印按钮 private void btnPrint_Click(object sender, EventArgs e) pdDocument.Print(); priv
33、ate void Form1_Load(object sender, EventArgs e) SqlConnection sqlcon = new SqlConnection(); sqlcon.Open(); SqlDataAdapter da = new SqlDataAdapter("select * from AdminInfor", sqlcon); DataSet ds = new DataSet(); da.Fill(ds); dataGridView1.DataSource = ds.Tables0; sqlcon.Close(); private voi
34、d button8_Click_1(object sender, EventArgs e) this.Close(); / 实现DataGridView的打印类 public class PrintDataGridView10 private static List<DataGridViewCellPrint> CellPrintList = new List<DataGridViewCellPrint>(); / 打印的行数 private static int printRowCount = 0; / 是否要打印 private static bool IsPrin
35、t = true; / 设置的起始位置是否大于默认打印的边框 private static bool IsRole = true; / X坐标 private static int PoXTmp = 0; / Y坐标 private static int PoYTmp = 0; / 列间距 private static int WidthTmp = 0; / 行间距 private static int HeightTmp = 0; / 列数 private static int RowIndex = 0; / 打印DataGridView控件 / DataGridView控件 / 是否包括列
36、标题 / 为ment.PrintPage 事件提供数据。 / 起始X坐标 / 起始Y坐标 public static void Print(DataGridView dataGridView, bool includeColumnText, PrintPageEventArgs eValue, ref int PoX, ref int PoY) try if (PrintDataGridView10.IsPrint) PrintDataGridView10.printRowCount = 0; PrintDataGridView10.IsPrint = false; PrintDataGrid
37、View10.DataGridViewCellVsList(dataGridView, includeColumnText); /获取要打印的数据 if (0 = PrintDataGridView10.CellPrintList.Count) return; if (PoX > eValue.MarginBounds.Left) /如果设置的起始位置大于默认打印的边框, IsRole为true PrintDataGridView10.IsRole = true; else PrintDataGridView10.IsRole = false; PrintDataGridView10.P
38、oXTmp = PoX; PrintDataGridView10.PoYTmp = PoY; PrintDataGridView10.RowIndex = 0; WidthTmp = 0; HeightTmp = 0; if (0 != PrintDataGridView10.printRowCount)/换页后确¨定打印的初始位置 if (IsRole) /如果设置的起始位置大于默认打印的边框,起始位置为默认打印边框 PoX = PoXTmp = eValue.MarginBounds.Left; PoY = PoYTmp = eValue.MarginBounds.Top; el
39、se PoX = PoXTmp; PoY = PoYTmp; while (PrintDataGridView10.printRowCount < PrintDataGridView10.CellPrintList.Count) DataGridViewCellPrint CellPrint = CellPrintListPrintDataGridView10.printRowCount; if (RowIndex = CellPrint.RowIndex)/一行一行打印,CellPrint.RowIndex为adatagridview1的行号 PoX = PoX + WidthTmp;
40、 /如果数据Y在一行,坐标右移 else /换行后y坐标下移,X坐标回到初始位置? PoX = PoXTmp; PoY = PoY + HeightTmp; if (PoY + HeightTmp > eValue.MarginBounds.Bottom)/分页 HeightTmp = 0; eValue.HasMorePages = true; return; /重新触发OnPrintPage事º?件t using (SolidBrush solidBrush = new SolidBrush(CellPrint.BackColor) RectangleF rectF1 =
41、new RectangleF(PoX, PoY, CellPrint.Width, CellPrint.Height); eValue.Graphics.FillRectangle(solidBrush, rectF1); using (Pen pen = new Pen(Color.Black, 1) eValue.Graphics.DrawRectangle(pen, System.Drawing.Rectangle.Round(rectF1);/画出单个数据的方框格子 solidBrush.Color = CellPrint.ForeColor; eValue.Graphics.DrawString(CellPrint.FormattedValue, CellPrint.Font, solidBrush, new System.Drawing.Point(PoX + 2, PoY + 3);/在方框中画出数据 WidthTmp = CellPrint.Width; HeightTmp = CellPrint.Height; RowIndex = CellPrint.RowIndex; PrintDataGridView10.printRowCount+; PoY = PoY + HeightTmp; /全部打印完后不再分页 eV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业品牌推广与营销策略优化项目
- 项目的可行性研究报告主要包括哪些内容
- 园林绿化可行性报告
- 高效工作策略与实践指南
- 通信行业物联网与5G通信方案
- 摄影摄像技术与器材操作作业指导书
- 家务服务员初级练习试题及答案
- 供应商筛选制度
- 三农项目资源整合优化指南
- 影视剧后期剪辑制作方案和预案
- 《冠心病护理》课件
- 江苏省苏州市2023-2024学年八年级上学期期末语文试题及答案
- ECharts数据可视化课件 第3章 柱状图和散点图
- 老年人护理安全风险管理
- 建筑施工企业成本控制管理制度
- GB/T 44823-2024绿色矿山评价通则
- 音乐课《咏鹅》教案7篇
- 中学校园广播听力系统管理制度
- 《马说》说课课件-2023-2024学年统编版语文八年级下册
- 圆锥型套筒冠义齿修复工艺(可摘局部义齿修复工艺课件)
- 智鼎在线测评的题
评论
0/150
提交评论