汽车销售管理系统

上传人:艳*** 文档编号:108904925 上传时间:2022-06-16 格式:DOCX 页数:46 大小:565.64KB
返回 下载 相关 举报
汽车销售管理系统_第1页
第1页 / 共46页
汽车销售管理系统_第2页
第2页 / 共46页
汽车销售管理系统_第3页
第3页 / 共46页
点击查看更多>>
资源描述
郑州科技学院C#程序设计课程设计题 目 汽车销售管理系统 姓 名 李鑫钰 专 业 计算机科学技术二班 学 号 2012一五056 指导教师 黄于欣 郑州科技学院信息工程学院 二一五年十一月目录摘 要11 前 言21.1 研究背景21.2 国内现状31.3 研究内容41.4 本人所做的工作42 需求分析52.1 开发设计思想52.2 系统目标53 概要设计73.1 系统总体结构73.2 员工行为分析73.3 经理行为分析83.4 管理员行为分析83.5 数据库概念设计图93.6 数据库物理机构设计图104 主要模块详细设计一三4.1 登录模块分析一三4.2 购车建档模块分析一三5主要模块的实现145.1 开发工具的选取145.2 公共类的编写一五5.2.1 widows窗体.Config文件的配置一五5.3 主要模块的实现165.3.1登录页面设计165.3.2 购车建档设计一八6 安装与系统测试376.1 安装Microsoft Visual Studio 2010376.2 系统测试386.2.1 测试计划386.2.2 测试结果38参考文献39编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第43页 共46页汽车销售管理系统的设计与实现摘 要随着计算机技术的广泛应用,为了使计算机更高效、更科学地管理汽车销售市场,基于目前汽车销售的现状,利用C#开发的一个汽车管理系统,并对该系统整个开发过程就行详细论述。该系统在设计方面采用B/S模式,使用C#技术和SQL Server 2005数据库进行基本页面的设计与功能实现,本系统的设计实施为销售管理系统的运行做基础,为销售管理系统管理工作提供良好的条件。关键字:NET(C#);汽车销售管理系统;汽车销售1 前 言1.1 研究背景该系统是基于汽车销售公司的系统,汽车销售公司都是以汽车营销为主,且大多数汽车销售公司在全国都设有连锁机构,随着企业的不断扩大规模,业务量日益增多,企业管理层通过自己的方式解决个地区之间在销售过程中遇到的种种问题。根据各销售地区业务流量,系统基于中文版SQL Server 2005 设计,采用较先进的.Net(C#)技术进行开发,具有良好的稳定性和可靠性。 该销售管理系统,它可以完成对车辆信息的浏览、查询、修改及销售表单打印等功能,大大方便了销售员的管理。而且它对传统的手工劳动冲击不大,备有的用户手册使用户不至于不适应,这样操作起来,用户也能快速的接受。此系统是为了满足用户方便对该公司销售的汽车信息的查询,同时方便企业对汽车的各种管理与操作。1.2 国内现状 汽车销售管理系统是销售行业的主要业务之一,汽车信息、用户信息日常工作管理成为及保存工作日趋繁重、复杂,且在日趋激烈的社会竞争中,客户量的多少是衡量一个企业在社会上的竞争力度,为此迫切需要一个能有效管理客户信息和对用户提出的需求做出快速反应的系统。目前国内现状是:国内众多中小企业迫切需要信息化管理,但是自己处于初步需求阶段,无法承受大型ERP、财务销售仓储一体信息化管理的中级阶段,自主开发的管理系统平台较低且功能单一,无法充分考虑到具体每一个单位、具体部分的实际需求。销售数据标准化程度差,难以保证数据的唯一性和权威性。忽略了对销售数据的分析,使得销售经理需查询账单,才能了解销售情况,在一定程度上影响了对市场的判断。没有注重对客户的管理,严重影响了企业对客户需求的了解,难以把握市场动态。因此,开发一款功能全面操作简单的汽车销售管理系统是很有必要的,实现企业员工的集中管理、分散操作、信息共享,是传统的管理系统朝智能化,综合化得发展,并为近一步完善销售管理市场。1.3 研究内容汽车销售管理系统是典型的信息管理系统,其开发主要包括前端应用程序的开发及数据库的建立。前端得的应用程序要求应用程序功能完备、易使用等特点。对于数据库的建立要求数据一致性和完整性强,业务逻辑紧凑的数据库机构及操作方法。给予这些要求,我对SQL Sever 2005 数据库管理系统、SQL语言原理、C#程序设计语言、visual Studio 2010等进入了深入的学习和应用。最终顺利完成了汽车销售管理系统的设计与实现1.4 本人所做的工作为设计和实现汽车销售管理系统,针对该系统做了需求分析、功能划分、数据库模式分析、并为此设计了数据库结构和应用程序。实现了本系统的基本功能:登录管理员的权限判断,员工信息、车辆信息、用户信息的管理,保险、税费、活动等服务信息的管理。2 需求分析2.1 开发设计思想(1) 减少系统对硬件的要求。本系统在装有操作系统的计算机上均可使用。(2) 节约了人力资源。传统的手工式收集用户资料方式被计算机取代。(3) 使用性:为汽车信息、用户信心、员工信息管理提供便捷的方法。(4) 操作简单:保证系统适合于任何计算机水平的员工,尽可能的简单。(5) 代码可读性好:系统机构清晰,代码简洁可读,方便日后的扩展。2.2 系统目标本系统主要实现以下目标:a) 员工管理。增加、修改和删除分类及员工权限管理。b) 用户管理。对已在本公司购车的用户信息管理。c) 用户选车、购车。根据用户需求查找适合用户需求的车辆。d) 代办车务。在用户购车时,帮助用户代办汽车业务。e) 管理员及公司员工登陆。f) 管理员管理。3 概要设计3.1 系统总体结构图3-1汽车销售系统功能结构图3.2 员工行为分析图3-2 销售员工工作流程图3.3 经理行为分析图3-3经理工作流程图3.4 管理员行为分析下面是看管理员的工作,其行为主要包括对用户权限的管理。如图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(一五)Yes证件类型nchar(10)Yes证件号码nchar(一八)Yes工作单位varchar(50)Yes联系地址varchar(50)NOxnchar(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, 主键姓名nchar(10)NO性别nchar(10)NO贯籍nchar(10)NO生日datetimeYES身份证号nchar(一八)NOxnchar(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)NOuser_pswdvarchar(50)NOuser_powernchar(10)NO4 主要模块详细设计4.1 登录模块分析图4-1登录模块分析4.2 购车建档模块分析图4-2购车建档模块分析5主要模块的实现5.1 开发工具的选取.NET(c#)技术是开发软件的技术之一,它继承了Microsoft的两项主要技术:Active Server Page(ASP)和.NET Framework。利用. NET Framework提供的强大类库和预定义控件,.NET开发windows窗体应用程序非常的方便。其优点如下:优良的性能。C# windows 窗体程序是在服务器上运行的编译好的代码。利用早期绑定、实时编译、本机优化和缓存服务来提高程序的性能。强大的功能。由于 .NET技术基于公共语言运行库,因此 C# windows窗体应用程序开发人员可以利用整个平台的威力和灵活性。简易性。C# Windows 窗体使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署。自定义性和扩展性。C#随附了一个设计周到的结构,它使开发人员可以在适当的级别插入代码。安全性。借助内置的 Windows 身份验证和基于每个应用程序的配置,可以保证应用程序是安全的。虽然.NET可以支持多种开发语言,但只有C#是为. NET Framework量身定做的,它拥有所有. NET Framework提供的优点,如资源回收、内存自动管理等,能够最完美地体现. NET 的功能。正是基于以上原因,本系统采用.NET(C#)技术来实现。5.2 公共类的编写5.2.1 widows窗体.Config文件的配置以下是本系统与数据库建立连接的源代码:public static SqlConnection GyDATE()return new SqlConnection(xData Source=PC20110314一八pts;Initial Catalog=汽车销售管理;Integrated Security=True;Pooling=False;); 5.3 主要模块的实现5.3.1登录页面设计汽车销售管理系统有一个严格的身份验证,不同身份的用户有不同的操作权限。用户权限分为员工、经理、管理员三种,其中员工只能操作极少的页面,经理可以查看员工销售统计和管理员工信息。管理员具有最高权限,可以进行一切页面的操作。登录用户登录系统后可以修改密码,在登录界面需输入用户名和密码并且选择身份,此三项若有一项不正确均不能登录到操作页面。改页面具体实现过程如下:图5-1 登录界面设计登录按钮添加代码如下:private void button1_Click(object sender, EventArgs e) if (textBox2.Text.Trim() = string.Empty) MessageBox.Show(请输入用户名); return; if (textBox3 .Text .Trim ()=string .Empty ) MessageBox.Show(请输入密码?); return; using (SqlConnection con = new SqlConnection(xData Source=PC20110314一八pts;Initial Catalog=汽车销售管理;Integrated Security=True;Pooling=False;) 用户登录.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() + ; 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(登录失败); /comboBox1.Text = string.Empty; textBox2.Text = string.Empty; textBox3.Text = string.Empty; 5.3.2 购车建档设计其中主要任务利用DateGridView显示数据库表中当前用户信息和建立新用户信息,也可对也有用户数据进行查询,也可打印当前构建的用户信息让用户确认,若有错误或资料不完整,可以对用户资料进行修改。完成效果如图5.2所示。图5.2购车建档页面设计效果5.3.2.1 增加、保存、修改按钮实现在码如下:SqlConnection conn = getdate.GyDATE(); conn.Open(); string strSql = string.Format(选择相应表操作); SqlCommand cmd = new SqlCommand(strSql, conn); int i = cmd.ExecuteNonQuery(); conn.Close(); if (i 0) MessageBox.Show(操作成功); else MessageBox.Show(操作失败); 5.3.2.2 查询按钮的实现代码如下:private void button4_Click(object sender, EventArgs e) SqlConnection conn = getdate.GyDATE(); string str = select * from maiche ; str += where 用户姓名= + textBox14.Text.Trim() + and 国籍= + textBox一八.Text.Trim() + and 车身颜色= + comboBox7.Text.Trim() + and 车牌号= + textBox19.Text.Trim() + 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); conn.Close(); dataGridView1.DataSource = myds; dataGridView1.DataMember = baoxiandengji; SqlCommand cmd = new SqlCommand(str, conn); 5.3.2.3 导出按钮实现代码如下:private void button6_Click(object sender, EventArgs e) try DataGridViewToExcel(dataGridView1); catch (Exception ex) MessageBox.Show(ex.Message); 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 myStream; myStream = dlg.OpenFile(); StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0); string columnTitle = ; try /写入列标题 for (int i = 0; i 0) columnTitle += t; columnTitle += dgv.Columnsi.HeaderText; sw.WriteLine(columnTitle); /写入列内容 for (int j = 0; j dgv.Rows.Count; j+) string columnValue = ; for (int k = 0; k 0) columnValue += t; if (dgv.Rowsj.Cellsk.Value = null) columnValue += ; else columnValue += dgv.Rowsj.Cellsk.Value.ToString().Trim(); sw.WriteLine(columnValue); sw.Close(); myStream.Close(); catch (Exception e) MessageBox.Show(e.ToString(); finally sw.Close(); myStream.Close(); 5.3.2.4 打印按钮实现代码如下:在public partial class 购车建档公共类中写入以下代码:/打印文档 PrintDocument pdDocument = new PrintDocument(); /打印格式设置页面 PageSetupDialog dlgPageSetup = new PageSetupDialog(); /打印页面 PrintDialog dlgPrint = new PrintDialog(); /实例化打印预览 PrintPreviewDialog dlgPrintPreview = new PrintPreviewDialog();在public 购车建档()函数中写入以下代码:this.dataGridView1.CellClick+=newDataGridViewCellEventHandler(dataGridView1_CellClick); pdDocument.PrintPage += new PrintPageEventHandler(OnPrintPage); btnPrint.Click += new EventHandler(btnPrint_Click); btnPrintView.Click += new EventHandler(btnPrintView_Click); btnPrintSetup.Click += new EventHandler(btnPrintSetup_Click); /页面设置的打印文档设置为需要打印的文档 dlgPageSetup.Document = pdDocument; /打印界面的打印文档设置为被打印的文档 dlgPrint.Document = 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.ShowDialog(); / 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(); private 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 void button8_Click_1(object sender, EventArgs e) this.Close(); / 实现DataGridView的打印类 public class PrintDataGridView10 private static List CellPrintList = new List(); / 打印的行数 private static int printRowCount = 0; / 是否要打印 private static bool IsPrint = 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控件 / 是否包括列标题 / 为System.Drawing.Printing.PrintDocument.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; PrintDataGridView10.DataGridViewCellVsList(dataGridView, includeColumnText); /获取要打印的数据 if (0 = PrintDataGridView10.CellPrintList.Count) return; if (PoX eValue.MarginBounds.Left) /如果设置的起始位置大于默认打印的边框, IsRole为true PrintDataGridView10.IsRole = true; else PrintDataGridView10.IsRole = false; PrintDataGridView10.PoXTmp = 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; else PoX = PoXTmp; PoY = PoYTmp; while (PrintDataGridView10.printRowCount eValue.MarginBounds.Bottom)/分页 HeightTmp = 0; eValue.HasMorePages = true; return; /重新触发OnPrintPage事?件t using (SolidBrush solidBrush = new SolidBrush(CellPrint.BackColor) RectangleF rectF1 = 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; /全部打印完后不再分页 eValue.HasMorePages = false; PrintDataGridView10.IsPrint = true; catch eValue.HasMorePages = false; PrintDataGridView10.IsPrint = true; throw;/抛出异常 / 将DataGridView控件内容转变到 CellPrintList / DataGridView控件 / 是否包括列标题 private static void DataGridViewCellVsList(DataGridView dataGridView, bool includeColumnText) CellPrintList.Clear(); try int rowsCount = dataGridView.Rows.Count; int colsCount = dataGridView.Columns.Count; /最后一行是供输入的行时,不用读数据。 if (dataGridView.RowsrowsCount - 1.IsNewRow) rowsCount-; /包括列标题 if (includeColumnText) for (int columnsIndex = 0; columnsIndex colsCount; columnsIndex+) if (dataGridView.ColumnscolumnsIndex.Visible) DataGridViewCellPrint CellPrint = new DataGridViewCellPrint(); CellPrint.FormattedValue = dataGridView.ColumnscolumnsIndex.HeaderText; CellPrint.RowIndex = 0; CellPrint.ColumnIndex = columnsIndex; CellPrint.Font = dataGridView.ColumnscolumnsIndex.HeaderCell.Style.Font; CellPrint.BackColor = dataGridView.ColumnHeadersDefaultCellStyle.BackColor; CellPrint.ForeColor = dataGridView.ColumnHeadersDefaultCellStyle.ForeColor; CellPrint.Width = dataGridView.ColumnscolumnsIndex.Width; CellPrint.Height = dataGridView.ColumnHeadersHeight; CellPrintList.Add(CellPrint); /每次添加一个数据 /读取单元格数据 for (int rowIndex = 0; rowIndex rowsCount; rowIndex+) for (int columnsIndex = 0; columnsIndex colsCount; columnsIndex+)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!