1、辽 宁 工 业 大 学 C C/S程序设计 课程设计(论文)题目: 车队管理系统 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 起止时间:课程设计(论文)任务及评语院(系): 教研室: 学 号学生姓名专业班级课程设计(论文)题目车队管理系统课程设计(论文)任务课程设计任务及要求:1、掌握C程序设计语言的基础知识。2、设计所选择的题目,对具体功能进行详细的分析,根据系统的要求合理化设计Windows应用程序。3、了解C与数据库的连接方法。4、编写代码,实现系统的功能。5、通过调试程序,加深对面向对象程序设计及使用C语言开发Windows应用程序的基本技巧方法的理解。课程设
2、计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计论文。指导教师评语及成绩成绩: 指导教师签字: 2011年 7 月 11日辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)目 录第1章 课程设计目的与要求11.1 课程设计目的11.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章 课程设计内容22.1 系统功能设计22.2 系统详细设计42.3 数据库访问技术13第3章 课程设计总结17参考文献18第1章 课程设计目的与要求1.1 课程设计目的本课程的课程设计实际是学生学习完基于C/
3、S客户端程序设计课程后,进行的一次全面的综合训练,其目的在于加深对客户端程序设计基本知识的理解,掌握运用c开发应用程序的基本方法及基本技巧。1.2 课程设计的实验环境硬件要求能运行Windows 9.X以上操作系统的微机系统。软件: Microsoft Visual C# 2005SQL Server 20001.3 课程设计的预备知识熟悉C程序设计的基本语法知识及常用技巧。使用C连接数据库的方法。1.4 课程设计要求按课程设计指导书提供的课题,每个小组设计一个完整的管理系统应用程序。要求根据规定设计系统的具体要求,按照应用程序的设计步骤和C的基本知识应用程序的分析与实现。应根据基本学时分配合
4、理安排设计时间,并独立完成各方面的设计。选择同一题目的同学,可以共同协作完成一个应用程序的开发任务。要求书写详细的设计说明书,对有复杂的代码段和程序段的部分,应画出程序流程图,写出全部的代码。在界面设计中,需画出每个窗体的布局,进行属性说明,杜绝雷同。第2章 课程设计内容2.1系统功能设计2.1.1 系统功能分析随着计算机的普及和网络技术的发展,我国的运输行业信息化建设很早就已经在全国展开部署了。车队管理信息化就是其中之一。车队管理系统是为了规范管理整个车队运营的各个环节,确保车辆、司机和运营状况的有效进行,并且能够使车辆每天效益最大化的运营。通过实际研究,我了解了设计并开发一个车队管理系统的
5、必要性和迫切性。车队管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。本文对后台数据库设计采用SQL Server数据库开发,而对应前端应用程序的设计采用Microsoft Visual C# 2005来完成。我全面的对车队管理系统的需求分析、功能模块划分、数据库模式进行了分析,并由此设计了数据库结构和应用程序。本系统主要用于车队信息管理,总体任务是实现车队信息关系的系统化、规范化和自动化,其主要任务是用计算机对车队的各种信息进行日常管理,如查询、删除、添加,另外还考虑到记录操作,针对这些要求设计了车队管理系统。本系统界面友好,操作简单
6、,比较实用。由于管理信息系统本身及与其相应的计算机信息应用技术均非常成熟。国外公司的车队部门一般均建立了计算机信息系统,负责公司内部的车队管理信息。出租车,公共交通等的系统建设都非常的成熟和完善。所以,国外的车队管理信息系统的开发与应用己非常普及。同时,由于发达国家的车队管理信息系统已实现全国联网,因此,在社会经济发展领域中发挥着巨大的作用。在我国,由于资金以及对于信息系统的接受和使用等原因,使得很多车队都基本是靠人工或者半人工的方式来进行管理,不仅不方便,而且效率低下,这主要是因为我国的管理信息系统大发展比较晚。车队管理系统是一个运输单位不可缺少的部分,它的内容对于单位的决策者和管理者来说都
7、至关重要,所以车队管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。而管理信息系统使用系统思想建立起来的,以计算机为信息处理手段,以现代化通信设备为基本传输工具,能力管理决策者提供信息服务的人机系统,这无疑是将管理与现代化接轨,以科技提高管理质量的重大举措。车队管理系统将大量复杂的信息处理交给计算机,使人和计算机充分发挥各自的特长,组织一个和谐、有效的系统,为现代化管理带来便捷。对于小型车队,功能上的实用、够用,是车
8、队选择软件产品的重要条件,这里的实用性主要表现为软件的管理方式要符合车队本身的管理习惯。首先,根据日常工作需求,提供必要功能,如:员工、司机、车辆管理维护、托运过程管理维护、维修管理维护、报销申请审核管理等;其次,提供强大的查询功能,不同用户可以根据需求,以不同的项目为目标,完成对托运过程信息、司机信息以及报销统计等的查询;还有,进行必要的安全考虑,如权限管理、数据库备份恢复等;方便管理者对信息的掌控;最后,做到界面友好,操作方便。2.1.2 系统功能模块设计车队管理系统实现以下几项功能:基本信息包括:司机、车辆、职务、民族、员工管理三个部分。可以实现对司机信息和车辆信息的查询、添加、删除和修
9、改的功能。业务信息包括:托运管理、调度运输、完成登记、维修管理、报销申请和报销审核六个部分。来完成车队信息的添加、删除、更新功能。对车队的业务进行分类系统化的管理。查询信息包括:司机车辆查询、维修查询、车辆出车查询和车辆信息查询等。其中车辆查询是将所有的车辆进行编号,然后分配给司机。维修查询是对有损坏需要维修的车辆的管理,如果车辆正处于外出状态必须先归还才可以维修。按照结构化的系统设计方法,将整个系统分解成相对独立的若干模块,通过对模块的设计和模块之间关系的协调来实现整个软件系统的功能,从而得到系统的功能模块结构图。车队管理系统分为:用户密码管理,备份和恢复。系统管理基本信息管理:司机和车辆,
10、职务和民族,员工管理。业务信息管:托运管理,调度运输,完成登记,维修管理,报销申请,报销审核。查询信息管理:司机车辆查询,托运查询,报销查询,维修查询。系统帮助:系统关于,系统帮助。本系统的功能模块结构如图2.1所示。车队管理系统系统管理基本信息管理业务信息管理查询信息管理系统帮助用户密码管理备份和恢复司机和车辆职务和民族员工管理司机车辆查询托运查询报销查询维修查询系统关于系统帮助托运管理调度运输完成登记维修管理报销申请报销审核图2.1车队管理系统功能模块图2.2系统详细设计车队管理系统Microsoft Visual C# 2005前台系统界面信息:系统管理:登录、注册注销、退出;资料管理:
11、车辆信息、车辆生产、客户信息、司机信息;车辆使用信息:维修信息、回程单、派车信息;查询;帮助:内容、索引、搜索。图2.2车队管理系统主界面2.2.1 车辆信息模块设计1.界面设计此界面是添加、修改、删除车辆信息窗体,通过输入汽车的基本信息可以系统的添加、删除、修改汽车的信息。图2.3车辆生产窗体控件及属性:Label:本窗体共使用7个Label。 Label控件又称标签控件,标签通常用于显示静态文本信息,显示的文本不能编辑。通过Backcolor属性设置控件的背景颜色,Enabled属性设置或返回控件的状态。Button:本窗体共使用5个Button.Button控件又称按钮控件,通常用它来执
12、行命令。Click事件,当用户用鼠标左键单击按钮控件时,将发生该事件。Textbox:本窗体共使用8个Textbox。Textbox控件又称文本框控件,主要用于文本的输入、显示、编辑和修改。Textbox控件可以通过Maxlength属性设置文本框中允许输入的字符的长度,Readonly属性设置文本框的文本是否为只读。PictureBox控件又称图片框,常用于图形设计和图像处理应用程序。Image属性用来设置控件要显示的图像。DataGridView:使用DataGridView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据。DataGridView 控件具有极高的可配置性和可扩展性
13、,它提供有大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。如下图所示DataGridView的部分属性设置:图2.4 DataGridView属性2.代码设计通过输入厂商编号,厂商名称,联系人,手机,地址,电话,开户银行,账号来增加,修改,删除车辆生产的信息,厂商编号,厂商名称,联系人,手机,地址,电话,开户银行,账号都不能为空。private void producers_Load(object sender, EventArgs e) SqlConnection myconn = new SqlConnection(); myconn.ConnectionString =
14、server=.;database=车队;integrated security=true; SqlCommand mycmd = new SqlCommand(); mycmd.Connection = myconn; mycmd.CommandType = CommandType.Text; mycmd.CommandText = select * from producers; myconn.Open(); SqlDataAdapter myda = new SqlDataAdapter(); myda.SelectCommand = mycmd; DataTable mydt = ne
15、w DataTable(); myda.Fill(mydt); dataGridView1.DataSource = mydt; dataGridView1.ReadOnly = true; myconn.Close(); this.textBox1.Text = ; this.textBox2.Text = ; this.textBox3.Text = ; this.textBox4.Text = ; this.textBox5.Text = ; this.textBox6.Text = ; this.textBox7.Text = ; this.textBox8.Text = ; this
16、.textBox1.ReadOnly = false; this.textBox2.ReadOnly = false; this.textBox3.ReadOnly = false; this.textBox4.ReadOnly = false; this.textBox5.ReadOnly = false; this.textBox6.ReadOnly = false; this.textBox7.ReadOnly = false; this.textBox8.ReadOnly = false; private void btnexit_Click(object sender, EventA
17、rgs e) this.Close(); private void btnrefresh_Click(object sender, EventArgs e) producers_Load( sender, e); private void button1_Click(object sender, EventArgs e) if (this.textBox1.Text = ) MessageBox.Show(厂商编号不能为空!, 警告);this.textBox1.Focus; else if (this.textBox2.Text = ) MessageBox.Show(厂商名称不能为空!,
18、警告);this.textBox2.Focus(); else if (this.textBox3.Text = ) MessageBox.Show(联系人不能为空!, 警告);this.textBox3.Focus(); else if (this.textBox4.Text = ) MessageBox.Show(手机不能为空!, 警告);this.textBox4.Focus(); else if (this.textBox5.Text = ) MessageBox.Show(地址不能为空!, 警告);this.textBox5.Focus(); else if (this.textBo
19、x6.Text = ) MessageBox.Show(电话不能为空!, 警告);this.textBox6.Focus(); else if (this.textBox7.Text = ) MessageBox.Show(开户银行不能为空!, 警告);this.textBox7.Focus(); else if (this.textBox8.Text = ) MessageBox.Show(账号不能为空!, 警告);this.textBox8.Focus(); else SqlConnection myconn = new SqlConnection(); myconn.Connection
20、String = server=.;database=车队;integrated security=true; myconn.Open(); SqlCommand mycmd = new SqlCommand(); mycmd.Connection = myconn; mycmd.CommandType = CommandType.Text; mycmd.CommandText = insert into producers values(aa,bb,cc,dd,ee,ff,gg,hh); mycmd.Parameters.AddWithValue(aa, this.textBox1.Text
21、); mycmd.Parameters.AddWithValue(bb, this.textBox2.Text); mycmd.Parameters.AddWithValue(cc, this.textBox3.Text); mycmd.Parameters.AddWithValue(dd, this.textBox4.Text); mycmd.Parameters.AddWithValue(ee, this.textBox5.Text); mycmd.Parameters.AddWithValue(ff, this.textBox6.Text); mycmd.Parameters.AddWi
22、thValue(gg, this.textBox7.Text); mycmd.Parameters.AddWithValue(hh, this.textBox8.Text); int a = mycmd.ExecuteNonQuery(); if (1 = a) MessageBox.Show(增加操作成功执行!); myconn.Close(); this.textBox1.Text = ; this.textBox2.Text = ; this.textBox3.Text = ; this.textBox4.Text = ; this.textBox5.Text = ; this.text
23、Box6.Text = ; this.textBox7.Text = ; this.textBox8.Text = ;private void button2_Click(object sender, EventArgs e) if (this.textBox1.Text = ) MessageBox.Show(厂商编号不能为空!, 警告);this.textBox1.Focus(); else if (this.textBox2.Text = ) MessageBox.Show(厂商名称不能为空!, 警告);this.textBox2.Focus(); else if (this.textB
24、ox3.Text = ) MessageBox.Show(联系人不能为空!, 警告);this.textBox3.Focus(); else if (this.textBox4.Text = ) MessageBox.Show(手机不能为空!, 警告);this.textBox4.Focus(); else if (this.textBox5.Text = ) MessageBox.Show(地址不能为空!, 警告);this.textBox5.Focus(); else if (this.textBox6.Text = ) MessageBox.Show(电话不能为空!, 警告);this.
25、textBox6.Focus(); else if (this.textBox7.Text = ) MessageBox.Show(开户银行不能为空!, 警告);this.textBox7.Focus(); else if (this.textBox8.Text = ) MessageBox.Show(账号不能为空!, 警告);this.textBox8.Focus(); 2.2.2 查询模块设计1.界面设计此界面是通过车辆编号、厂商编号、客户编号、车位编号查询车辆、厂商、客户、车位的详细信息的窗体。通过输入编号查询信息。图2.5查询窗体控件及属性:DataGridView:使用DataGri
26、dView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据。DataGridView 控件具有极高的可配置性和可扩展性,它提供有大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。Label:本窗体共使用4个Label。 Label控件又称标签控件,标签通常用于显示静态文本信息,显示的文本不能编辑。通过Backcolor属性设置控件的背景颜色,Enabled属性设置或返回控件的状态。Button:本窗体共使用5个Button.Button控件又称按钮控件,通常用它来执行命令。Click事件,当用户用鼠标左键单击按钮控件时,将发生该事件。Textbox:本窗体共使用4个Tex
27、tbox。Textbox控件又称文本框控件,主要用于文本的输入、显示、编辑和修改。Textbox控件可以通过Maxlength属性设置文本框中允许输入的字符的长度,Readonly属性设置文本框的文本是否为只读。PictureBox控件又称图片框,常用于图形设计和图像处理应用程序。SizeMode属性用来决定图像的显示模式。Image属性用来设置控件要显示的图像。如下图所示PictureBox的部分属性设置:图2.6 PictureBox属性2.代码设计通过车辆编号、厂商编号、客户编号、车位编号查询车辆、厂商、客户、车位的详细信息。在TextBox控件中输入编号,通过DataGridView控
28、件显示出所查询的信息。private void button1_Click(object sender, EventArgs e) SqlConnection myconn = new SqlConnection(); myconn.ConnectionString = server=.;database=车队;integrated security=true; SqlCommand mycmd = new SqlCommand(); mycmd.Connection = myconn; mycmd.CommandType = CommandType.Text; mycmd.CommandTe
29、xt = select * from products where 车辆编号=aa; mycmd.Parameters.AddWithValue(aa, this.textBox1.Text); myconn.Open(); if (mycmd.ExecuteNonQuery() = 0) MessageBox.Show(数据库中没有该条记录!); SqlDataAdapter myda = new SqlDataAdapter(); myda.SelectCommand = mycmd; DataTable mydt = new DataTable(); myda.Fill(mydt); d
30、ataGridView1.DataSource = mydt; dataGridView1.ReadOnly = true; myconn.Close(); private void button2_Click(object sender, EventArgs e) SqlConnection myconn = new SqlConnection(); myconn.ConnectionString = server=.;database=车队;integrated security=true; SqlCommand mycmd = new SqlCommand(); mycmd.Connec
31、tion = myconn; mycmd.CommandType = CommandType.Text; mycmd.CommandText = select * from customers where 客户编号=aa; mycmd.Parameters.AddWithValue(aa, this.textBox3.Text); myconn.Open(); if (mycmd.ExecuteNonQuery() = 0) MessageBox.Show(数据库中没有该条记录!); SqlDataAdapter myda = new SqlDataAdapter(); myda.Select
32、Command = mycmd; DataTable mydt = new DataTable(); myda.Fill(mydt); dataGridView1.DataSource = mydt; dataGridView1.ReadOnly = true; myconn.Close(); private void button4_Click(object sender, EventArgs e) SqlConnection myconn = new SqlConnection(); myconn.ConnectionString = server=.;database=车队;integr
33、ated security=true; SqlCommand mycmd = new SqlCommand(); mycmd.Connection = myconn; mycmd.CommandType = CommandType.Text; mycmd.CommandText = select * from producers where 厂商编号=aa; mycmd.Parameters.AddWithValue(aa, this.textBox2.Text); myconn.Open(); if (mycmd.ExecuteNonQuery() = 0) MessageBox.Show(
34、数据库中没有该条记录!); SqlDataAdapter myda = new SqlDataAdapter(); myda.SelectCommand = mycmd; DataTable mydt = new DataTable(); myda.Fill(mydt); dataGridView1.DataSource = mydt; dataGridView1.ReadOnly = true; myconn.Close(); private void button5_Click(object sender, EventArgs e) this.Close(); 2.3数据库访问技术数据库建
35、立成功以后,在应用程序中能够访问到其中的数据。在Microsoft Visual C# 2005中是通过ADO.NET来进行数据的访问。ADO.NET是一组公开数据访问服务的类,是ADO(ActiveX Data Objects)的重大改进,由于它们是在.NET编程环境下使用的,因而称为ADO.NET。ADO.NET是.NET Compact Framework的组成部分,提供了对关系数据、XML文档和应用程序数据的访问能力,支持各种开发需求,包括创建应用程序、工具、语言或Internet浏览器使用的数据库客户端应用程序和中间层业务对象。数据库访问技术的发展历程专用于特定数据库系统的函数组OD
36、BC ADO ADO.NET。ADO.NET常用类和对象提供者对象专用于某一种类型的数据源,完成数据源中实际的读取和写入工作;用户对象则将数据库中的数据读入到内存中的某个对象中,通过该内存对象实现数据的访问和操纵。ADO.NET类定义在System.Data命名空间中,如果要在应用程序中使用ADO.NET类和对象,就必须使用using语句对该命名空间进行引用。然后为应用程序所使用的数据源引用.NET数据提供者。SQL Server .NET数据提供者 Oracle .NET数据提供者OLE DB.NET数据提供者 ODBC .NET提供者即在每一个.NET数据提供者中定义的对象,其名称前带有特
37、定提供者的名称,例如用于SQL Server .NET提供者的数据库连接对象是SqlConnection,用于OLE DB的命令对象OleDbCommand等。使用ADO.NET开发数据库应用程序一般分为以下几个步骤:1.根据使用的数据源,确定使用的.NET Framework数据提供程序。2.建立与数据源的连接,需要使用Connection对象。3.执行对数据源的操作命令,通常是SQL命令,需要使用Command对象。4.使用数据集对获得的数据进行操作,需要使用Datareader、Dataset等对象。5.向用户显示数据,需要使用数据控件。SQL车队管理数据库与C#窗体的连接:图2.7添加
38、链接SQL数据库与Microsoft Visual C# 2005窗体连接的部分代码:SqlConnection myconn = new SqlConnection(); myconn.ConnectionString = server=.;database=车队;integrated security=true; myconn.Open(); SqlCommand mycmd = new SqlCommand(); mycmd.Connection = myconn; mycmd.CommandType = CommandType.Text; mycmd.CommandText = insert into products values(aa,bb,cc,dd,ee); mycmd.Parameters.AddWithValue(aa, this.product.Text); mycmd.Parameters.AddWithValue(bb, this.productname.Text); mycmd.Parameters.AddWithValue(cc, this.productleibie.Text); mycmd.Parameters.AddWithValue(dd, this.productshuliang.Text