文档
代码压缩包
摘要
旅行是人类生活的基本活动之一。城市的快速发展、科技的发展和环境保护意识的提高,对城市公共交通的快速、舒适、便利、环境保护的发展趋势提出了更高的要求。先进的信息技术也促进了公共交通技术的发展,为乘客提供了良好的出行条件,并能逐步满足市民多元化出行的交通需求。为城市的进步发展提供便利的条件,对于城市公共交通来说,必须优先发展公共交通,因此,公共交通的地位也在不断提高。 自2005年以来,中国发布了一系列关于城市公共交通优先发展的意见,正式建立了公共交通优先发展的战略思想,指出了城市公共交通优先发展的方向,有效促进了我国城市公共交通事业的发展。截至2009年底,全国公交电车运营线路网总长度为28.9万公里,公交专用车道里程为7452公里,10多个城市开通运营快速公交线路,总公交运输量为780亿。随着时代的发展,需要更方便的生活,乘客需要实时查询公交系统的信息,以便出行。在此背景下,本文主要采用vs2010设计SQLServer2008数据库,实现系统所需的数据需求。 在公交查询系统的设计过程中,用户查询的模块为:线路查询、网站查询、换乘查询,管理员模块应包括数据增加、删除、查看、更改等操作,数据库设计应反映数据之间明确的联系。
关键词:数据库,vs2010、公交查询,管理员
软件系统设计实习报告
第1章绪论
1.1应用背景
随着交通工具的不断创新,距离不再是人们脚印的羁绊,庞大而复杂的交通网络 它覆盖了世界的每一个角落,使人们能够到达任何他们想去的地方。然而,当人们面对交流时 然而,由于其自身的复杂性,它会显得不知所措,从而感受到旅行的麻烦。
过去,当人们在不熟悉的城市或不知道城市的公交线路时,他们只能使用它 打电话咨询,看交通地图,问熟人等传统方式查询公交信息,会浪费很多。 时间、精力和财力,获得的信息不一定可靠。没有公交线路查询系统 时间发生的情况。
如今,随着互联网的普及,电子化、网络化的交通信息服务已经成为必然趋势 建设和谐社会的基本要求是提供良好的公交服务。在信息化的基础上,促进乘客、车辆和车站 点设施与交通环境等因素之间的良性互动,可以有效地促进公交系统的建设。为了能够为市 特别是为急需了解当地公交路线的人提供高效、快速的服务、出差、医疗、求职等服务 查询捷的公交信息,方便他们在网上获取自己需要的各种相关信息,方便他们 减少不必要的交通流量,提高公交运行效率,节省出行时间。因此, 为人们快速找到公交线路开发一个网络程序势在必行。
1.2发展前景
随着公交查询系统的不断发展和完善,各种新技术的不断出现,未来的公交查询系统 基于B/S架构,通过浏览器查询,通过计算机网络全面连接,实现中心控制,自动更多 同时可以添加电话服务、语音服务、在线服务等功能,帮助用户更多 使用好公交查询系统。还可以开发手机版的公交线路查询系统,使用手机上网的用户可以随时随地轻松查询公交。
1.3系统目标
随着科学技术的快速发展,计算机得到了广泛的应用。几乎各行各业都有关系 计算机的使用使得计算机成为社会上常见的东西。由于计算机的使用, 人们在管理、应用、服务等各个领域使用数据变得更加简单、方便,大大提高 工作效率,以计算机为主体,以人为辅助。在这里设计的公交查询系 统一是为了方便人员在数据查询中的操作,使他们在日常生活中事半功倍 减轻人力负担,方便数据存储,提高安全性的效果。该系统可以使用户 简单查询他们想要的列车经过哪些站点,可以转乘哪些站点,然后继续转乘哪些站点 还可以提前知道可以通过哪些列车到达目的地
1.4系统开发环境及简介 系统开发环境分为两部分:1.硬件部分和2.软件部分
硬件部分:一般计算机配置
软件部分:SQLServer2008数据库,MicrosoftvisualStudio20100 (1)SQLServer2008数据库采用数据库 数据库可以理解为存储数据的仓库。它是一个相互关联的数据集,以一定的组织方式存储,不仅相互关联,而且可以动态变化。它具有以下特点:
1、数据结构化 2、数据共享 3、数据独立性 4.数据的一致性和正确性 数据库的核心部分是DBMS,即数据库管理系统,它是一个使用户能够实现数据处理的数据管理系统,为用户提供以下功能: 1、建库功能 2、数据操作功能:实现数据的增加、删除、检查、更改等功能 (2)MicrosoftvisualStudio201000编程软件 VisualStudio是Window平台应用程序的开发环境,基于IDE(统一开发环境),可用于开发各种不同类型的应用程序。
第二章需求分析及结构设计 2.1需求分析概述 需求分析是软件定义时期的最后阶段。需求分析是指在建立或改变现有计算机时,描述新系统的目的、范围、定义和功能。需求分析是软件工程中的一个关键过程。在此过程中,系统分析师和软件工程师确定客户的需求。只有在确定了这些需求之后,他们才能分析和寻找新系统的解决方案。 2.1.1需求分析的基本任务阶段 它的基本任务是准确回答“系统必须做什么?”"这个问题。需求分析的任务不是确定系统如何完成他的工作,而是确定系统必须完成这些工作,即对目标系统提出完整、准确、清晰和具体的要求。具体来说,需求分析的任务有以下几个方面:(1)、确定系统的综合要求1-软件系统通常有以下综合要求: 1、功能要求:系统在这方面必须提供的服务。应通过需求分析划分系统必须完成的所有功能 2、性能要求:性能要求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间、信息量速率)” 3、可靠性和可用性要求:可靠性要求定量指定系统的可靠性,可用性与可靠性密切相关,它量化了用户可以使用系统的程度,例如:“主机或备份机上至少应使用一个机场雷达系统,任何计算机上盖系统在一个月内不能使用的时间不得超过总时间的2%。 4、错误处理要求.5、接口需求 6、约束 7、逆向需求 8、未来可能提出的要求
2.2E-R图 2.2.1E-R图概述 为了清晰准确地描述用户的数据要求,系统分析师通常建立概念数据模型。概念数据模型是一种面向问题的数据模型,是根据用户的观点建立的数据模型。它描述了从用户的角度看到的数据,反映了用户的显示环境,与软件系统中的实现方法无关
2.2.2公交E-R图
图2-1公交E-R图
2.3层方框图
公交查询系统层次方框图如下:
图2-2公交查询系统层次方框
2.4 数据流图
图2-3公交DFD
2.5系统功能模块划分 一个系统可以看作是由多个小模块组成的。这些小模块应具有高内聚和低耦合的特点: 耦合:衡量软件结构中不同模块之间的互联程度。耦合程度取决于模块时间接口的复杂性、进入或访问模块点以及通过接口的数据。耦合包括以下几种:1、数据耦合2、控制耦合3、特征耦合4、公共耦合。 内聚:内聚标志着模块中各元素之间的相互结合。内聚包括以下几种:1、功能内聚2、顺序内聚3、通信内聚4、过程内聚5、时间内聚6、逻辑内聚7.偶然内聚。 公交查询系统可以看作是由用户查询模块和管理员模块两个大模块组成的。
2.5.用户查询模块
用户查询模块主要供用户使用主要完成的公交信息查询,包括公交车站、公交线路和公交车站到车站查询(公交换乘叙述),通过一定方式显示查询结果,需要制定“选择框”,使用户进行模糊查询。 2.5.2管理员模块 管理员在公交查询系统中拥有最高的权限,可以增加、删除、检查、更改公交信息等一系列工作。当然,管理员模块需要身份验证,才能正确操作。
第三章详细设计
3.1系统的详细设计
系统详细设计阶段的根本目标是确定如何实现所需的系统,即在这一阶段的设计工作之后,应准确描述系统,以便在编码阶段直接描述整个描述翻译成VS2010编写的程序代码,在这个阶段不是软件的具体代码编写 3.1.1系统整体功能设计 详细的系统功能设计主要表示系统的功能架构如图3-1所示:
图3-1 系统功能架构
3.1.详细设计2系统各功能模块 对于用户模块,完成信息查询功能并返回值如图3.1所示.2.1.管理员不仅可以查询公交信息,还可以增加、删除、检查和更改公交信息,如图3-2所示、图3-3所示:
图3-2 功能图 图3-3 功能图
3.2数据库设计
数据库设计是指对数据库模型和物理结构进行结构(设计)优化,建立数据库及其应用系统,有效存储和管理,满足各种用户的应用需求,包括数据管理需求和数据操作需求。
数据库设计的质量直接影响到系统的功能是否实现数据操作是否简单。数据库的设计部分很容易使用:以前足以保护数据的有效性,虽然设计不良的数据库可以起到相当大的作用,但可能会导致数据的无效、错误或丢失。
3.2.1数据库设计步骤
建立数据库的步骤:
数据库系统的生存期可分为:需求分析、概念结构设计、逻辑结构设计、对象
需求分析和概念结构设计可以分为七个阶段:理结构设计、实施和运行维护 进行数据库管理系统。DBMS的逻辑结构设计、物理结构设计和选择(database
management system)密切相关。前五个阶段通常被称为“数据库的分析和设计阶段” 后两个阶段称为“数据库实现与运行阶段”。 ”111
(1)需求分析:这一步的主要任务是收集数据库的所有信息内容并处理它们 并对其进行分析。
(2)概念结构设计:需求分析后,在这个阶段解释用户的需求并使用 概念模型(概念模型是从现实世界到信息世界的抽象,具有独立于特定数据库的优势 因此,它是用户和数据库设计师之间的交流语言。)表达.
(3)逻辑结构设计:本阶段的主要任务是利用数据库管理系统提供的工具将信息世界中的概念模型映射到计算机世界中支持数据库管理系统的数据模型中,并用数据描述语言表达。
(4)物理结构设计:数据库的物理设计是指数据库存储结构和存储路径的设计,即在实际物理存储设备上实现数据库的逻辑模型,建立性能良好的数据库。
(5)数据库实施:数据库实施和运行维护阶段的主要工作是:装入数据,投入使用 同时,根据数据库运行中存在的问题和用户提出的需求,不断改进和改进数据库 功能和性能。
3.3详细设计公交数据库
公交数据库的设计主要包括公交车站数据库的设计、公交线路的设计和城市的设计 在统一建立一个名为“公交数据库”的数据库后,计算、计算和其他设计分别建立 这些表分别设计了数据的分表。
3.3.1公交车站数据库设计
公交车站的设计如图3-1所示:
表格3-1 公交车站设计
3.3.2公交线路数据库设计
公交数据线路设计如图3-2公交线路字段表所示:
公交数据线路设计表3-2
3.3.公交线路信息数据库设计设计
公交数据线路信息的设计如表3-3公交线路信息字段表所示
公交数据线路信息表3-3
3.3.公交管理员信息数据库设计设计
公交管理员数据库的设计如表3-4管理员字段表所示:
3-5管理员字段表
3.3.6 数据库关系图
通过以上分析,我们可以得到数据表 dbo、BusInfo.dbo、BusStation.dbo 有疑问的关系,我们可以把它们的关系画成一个例子 图 3-9 如关系图所示,这张图可以清楚地反映四个数据表之间的对应关系
图3-4 关系图
第4章实现
4.1 实现系统界面
系统设计是新系统的物理设计阶段。根据系统分析阶段确定的新系统的逻辑模型和功能要求,在用户提供的环境条件下,设计一个可以在计算机网络环境中实施的方案,即建立新系统的物理模型。公交查询系统主要涉及两个方面: 1、设计用户功能模块 2、系统管理员模块设计 ,
4.2实现用户功能模块
用户主界面用于一系列数据操作, 其界面至少包括站点, 线路、换乘查询等。最终设计的界面如图所示
图4-2 用户主界面
4.2.1 线路查询
对于公交查询系统, 在公交线路查询中,通常会知道某条线路或某条线路的部分名称,以查询该线路通过的站点名称。此时,线路查询模块将根据查询功能列出所有输入数字的公交线路列,并在单击查询后列出结果(如图所示 4-3 公交线路查询结果)
图4-3 线路查询
void Toolstripmenuitemclick公交路线查询(object sender, EventArgs e) { pictureBox.Visible=false; panel公交车站查询.Visible=false; panel公交路线.Visible=true; 查询combobox路线.Text=""; 查询combobox路线.Items.Clear(); string sql = "select distinct BusLine from BusStation ";//order by BusLine asc"; SqlDataReader dr = DataConnection.GetSqlDataReader(sql); while (dr.Read()) { 查询combobox路线.Items.Add(dr["BusLine"]); } dr.Close(); }
4.2.4 查询公交车站
在公交车站查询中,您通常会知道一个车站的全部或一个车站的部分名称来查询通过该车站的所有线路。此时,车站查询模块将根据模糊查询功能列出所有带有“净水厂”的公交车站数据供用户选择(如图4-4所示),并单击查询。查询后列出结果.
图4-4站点查询
void公交车换乘查询TolStripmenuitemclick(object sender, EventArgs e) { panel公交路线.Visible=false; panel公交车站查询.Visible=true; string sql = "select distinct BusLine from BusStation order by BusLine asc"; SqlDataReader dr= DataConnection.GetSqlDataReader(sql); while (dr.Read()) { 查询combobox路线.Items.Add(dr["BusLine"]); } }
4.3 管理员功能模块
对于公交查询系统,公交线路、车站等信息不是一成不变的,过时的公交线路和车站信息对用户没有多大用处。因此,需要实时更新数据,即增加、删除和修改数据的操作功能,使软件查询具有实际意义,方便人们出行。当然,对于数字
不是所有的人都能更新,而是一些固定的人,即公交查询数据库中的表格 “admin“可以改变存在的人才,防止数据被随机改变 ,此时需要设计管理员模块。其模块可细分为以下小模块:
1、管理员登录模块
2、模块的信息修改
3、增加信息模块
4、模块的信息删除
当然,系统管理员也可以查询数据,其查询模块与用户查询模块处于同一位置,即
管理员的查询模块是用户的查询模块。
4.3.1 系统管理员登录界面设计
登录界面设计的意义是防止外人进入修改界面,对数据造成损坏。首先,在公交系统设计的主页上添加一个新的窗口,即管理员的登录窗口,将按钮分别添加到登录窗口(确定按钮和清空按钮-如果填写错误,可以清空输入内容并取消按钮)、标签(用于标注用户名和密码) 、文本(输入数据使用)如图所示 4-5 管理员登录所示:
图4-5 登陆界面
void button确定Clickclick(object sender, EventArgs e) { if (textbox用户名).Text != "") { if (textbox密码.Text != "") { DataConnection.getConn(); string id = textbox用户名.Text.Trim(); string pwd = textbox密码.Text.Trim(); string sql = "select count(*) from qadmin where adusers='" + id + "' and adpwd='" + pwd + "'"; int state = DataConnection.GetCountInfoBySql(sql); if (state == 0 || state > 1) { MessageBox.Show(用户名或密码错误!!!!"); } else { 管理员操作界面 f2 = new 管理员操作界面(); f2.Show(); this.Hide(); } DataConnection.CloseConn(); } else { MessageBox.Show(“密码为空!!!!请输入..."); } } else { MessageBox.Show(用户名为空!!!请输入..."); } } void button清空Click(object sender, EventArgs e) { textbox密码.Text=""; textbox用户名.Text=""; } void Button取消了Clickck(object sender, EventArgs e) { Application.Exit(); } void Textbox密码Textchaneded(object sender, EventArgs e) { textbox密码.PasswordChar='*'; }
4.3.2 添加路线和站点信息
在上一步中,当我们输入正确的用户名和密码时,我们可以进入系统管理员的操作界面,为“添加路线和站点”界面设计如图 4-6 信息增加界面:
图4-6 信息添加界面
void ToolStripmenuitemclick增加线路和网站信息(object sender, EventArgs e) { label公交线路.Text=“公交路线信息增加:”; label公交车站.Text=“增加公交车站点:”; label公交线路信息.Text=“公交线路信息增加:”; button修改1.Visible=false; button公交线路信息.Text ="增加"; button修改2.Visible=false; panel管理员.Visible=true; textBoxLineCode.Text=""; textBoxStart.Text=""; textBoxEnd.Text=""; textBoxBusInfoId.Text=""; textBoxStation.Text=""; textBoxStationIndex.Text=""; textBoxBusLineID.Text=""; textBoxBusInfoIndex.Text=""; textBoxFare.Text=""; textBoxSTime.Text=""; textBoxETime.Text=""; textBoxDistance.Text=""; } void button公交线路信息Click(object sender, EventArgs e) { if(button公交线路信息.Text=="修改") {string sql="delete from BusStation where Station='"+textBoxStation.Text+"' and BusLine='"+textBoxLineCode.Text+"'"; DataConnection.UpdateDate(sql); sql="delete frome BusInfo where BusLine='"+textBoxLineCode+"'"; DataConnection.UpdateDate(sql); sql="insert into BusInfo(BusLine,StartTime,EndTime,DepartureStation,TerminateStation,Fare,Distance) values ('"+textBoxLineCode.Text+"','"+textBoxSTime.Text+"','"+textBoxETime.Text+"','"+textBoxStart.Text+"','"+textBoxEnd.Text+"','"+textBoxFare.Text+"','"+textBoxDistance.Text+"')"; DataConnection.UpdateDate(sql); } else if(button公交线路信息.Text=="删除") { string sql="delete from BusStation where Station='"+textBoxStation.Text+"' and BusLine='"+textBoxLineCode.Text+"'"; DataConnection.UpdateDate(sql); //sql="delete from BusInfo where BusLine='"+textBoxLineCode.Text+"'"; //DataConnection.UpdateDate(sql); } else { string sql="insert into BusInfo(BusLine,StartTime,EndTime,DepartureStation,TerminateStation,Fare,Distance) values ('"+textBoxLineCode.Text+"','"+textBoxSTime.Text+"','"+textBoxETime.Text+"','"+textBoxStart.Text+"','"+textBoxEnd.Text+"','"+textBoxFare.Text+"','"+textBoxDistance.Text+"')"; DataConnection.UpdateDate(sql); } }
4.3.3 删除线路和站点
同样,系统的删除界面如图所示 4-7 界面设置删除:
图4-7 删除界面
if(button公交线路信息.Text=="删除") { string sql="delete from BusInfo where BusLine='"+textBoxLineCode.Text+"'"; DataConnection.UpdateDate(sql); sql="delete from BusStation where BusLine='"+textBoxLineCode.Text+"'"; DataConnection.UpdateDate(sql); }
4.3.4 修改路线站点信息
一个完整的管理员模块还需要修改数据信息, “修改路线站点信息”界面与增加界面大致一致 4-8 如修改界面所示
图4-7 修改界面
void Button修改2Clickck(object sender, EventArgs e) { if(button公交线路信息.Text=="修改") { string sql="update BusInfo set Fare='"+textBoxFare.Text+"' where BusLine='"+textBoxBusLineID.Text+"'"; DataConnection.UpdateDate(sql); }} 2
软件系统设计实习报告
参考文献
[1]郭海智,郭亮. 基于项目实践的ASP.探索NET课程教学改革[J]. 2018年19日(02)信息记录材料:247-248.
[2]王鲁米、曹永桃、黄虎文. ObjectARX.NET技术在地下管网属性管理中的应用[J]. 2018年16日(01)地理空间信息:104-106+9.
[3]宋宇辉、林春梅. 基于ASP.研究和实现NET大学教代会提案系统[J]. 2018年(01)信息与计算机(理论版):101-103.
[4]刘娟. 基于.NET社区物业管理系统的设计与实现[J]. 2018年15日(01)无线互联技术:130-131.
[5]李兴瑞. 《基于.新程序的设计与实现NET批量标准检验[J]. 2018年23日(01)办公自动化:35-37+29.
[6]赵福英、倪俊芳. 基于Visual C#.NET绗缝机智能控制软件系统的研发[J]. 2018年26日(02)现代纺织技术:85-89.
附录2-实现代码
关键代码操作用户界面:
Program DataConnection =new Program(); public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // DataConnection.getConn(); InitializeComponent(); pictureBox.Visible=true; // // TODO: Add constructor code after the InitializeComponent() call. // } void ToolStripMenuItemClick公交站点查询(object sender, EventArgs e) { panel公交路线.Visible=false; pictureBox.Visible=false; panel公交车站查询.Visible=true; combobobox站点查询.Text=""; combobobox站点查询.Items.Clear(); string sql = "select distinct Station from BusStation "; SqlDataReader dr = DataConnection.GetSqlDataReader(sql); while (dr.Read()) { combobobox站点查询.Items.Add(dr["Station"]); } dr.Close(); }void Toolstripmenuitemclick公交路线查询(object sender, EventArgs e) { pictureBox.Visible=false; panel公交车站查询.Visible=false; panel公交路线.Visible=true; 查询combobox路线.Text=""; 查询combobox路线.Items.Clear(); string sql = "select distinct BusLine from BusStation ";//order by BusLine asc"; SqlDataReader dr = DataConnection.GetSqlDataReader(sql); while (dr.Read()) { 查询combobox路线.Items.Add(dr["BusLine"]); } dr.Close(); } void Toolstripmenitemclick公交换乘查询(object sender, EventArgs e) { panel公交路线.Visible=false; panel公交车站查询.Visible=true; string sql = "select distinct BusLine from BusStation order by BusLine asc"; SqlDataReader dr = DataConnection.GetSqlDataReader(sql); while (dr.Read()) { 查询combobox路线.Items.Add(dr["BusLine"]); } } void button网站查询Clickclick(object sender, EventArgs e) { string station = combobobox站点查询.Text; if(station!="") { string sql = "select Station,BusLine from BusStation where Station = '"+station+"' order by BusLine asc"; dataGridview网站查询.DataSource = DataConnection.GetDataSuoce(sql).Tables[0]; } } void button路线查询Clickck(object sender, EventArgs e) { string BusLine = 查询combobox路线.Text; if(BusLine!="") { string sql = "select Station,BusLine,BusOrder from BusStation where BusLine ='"+BusLine+"' order by len(BusOrder)"; dataGridview路线查询.DataSource = DataConnection.GetDataSuoce(sql).Tables[0]; } } void Panel公交换乘Paintt(object sender, PaintEventArgs e) { } void ButtonmanagerClick(object sender, EventArgs e) { 管理员登录界面 f=new 管理员登录界面(); f.Show(); this.Hide(); }
操作系统管理员的关键代码:
using System; using System.Drawing; using System.Windows.Forms; using System.Data; using System.Data.SqlClient; namespace gongjiao { /// <summary> /// Description of 管理员操作. /// </summary> public partial class 管理员操作界面 : Form {Program DataConnection=new Program();public 管理员登录界面() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // } void button确定Clickclick(object sender, EventArgs e) { if (textbox用户名).Text != "") { if (textbox密码.Text != "") { DataConnection.getConn(); string id = textbox用户名.Text.Trim(); string pwd = textbox密码.Text.Trim(); string sql = "select count(*) from qadmin where adusers='" + id + "' and adpwd='" + pwd + "'"; int state = DataConnection.GetCountInfoBySql(sql); if (state == 0 || state > 1) { MessageBox.Show(用户名或密码错误!!!!"); } else { 管理员操作界面 f2 = new 管理员操作界面(); f2.Show(); this.Hide(); } DataConnection.CloseConn(); } else { MessageBox.Show(“密码为空!!!!请输入..."); } } else { MessageBox.Show(用户名为空!!!请输入..."); } } void button清空Click(object sender, EventArgs e) { textbox密码.Text=""; textbox用户名.Text=""; } void Button取消了Clickck(object sender, EventArgs e) { Application.Exit(); } void Textbox密码Textchaneded(object sender, EventArgs e) { textbox密码.PasswordChar='*'; } void ToolStripmenuitemclick修改线路和网站信息(object sender, EventArgs e) { label公交线路.Text="公交路线信息修改:"; label公交车站.Text=“修改公交车站:”; label公交线路信息.Text="公交线路信息修改:"; button修改1.Visible=true; button修改1.Text="修改"; button公交线路信息.Text ="修改"; button修改2.Visible=true; panel管理员.Visible=true; textBoxLineCode.Text=""; textBoxStart.Text=""; textBoxEnd.Text=""; textBoxBusInfoId.Text=""; textBoxStation.Text=""; textBoxStationIndex.Text=""; textBoxBusLineID.Text=""; textBoxBusInfoIndex.Text=""; textBoxFare.Text=""; textBoxSTime.Text=""; textBoxETime.Text=""; textBoxDistance.Text=""; } void ToolStripmenuitemclick删除线路和网站信息(object sender, EventArgs e) { label公交线路.Text=“公交路线信息删除:”; label公交车站.Text=“删除公交车站:”; label公交线路信息.Text=“公交线路信息删除:”; button修改1.Text="删除"; button修改2.Visible=false; button公交线路信息.Text ="删除"; button修改1.Visible=true; panel管理员.Visible=true; textBoxLineCode.Text=""; textBoxStart.Text=""; textBoxEnd.Text=""; textBoxBusInfoId.Text=""; textBoxStation.Text=""; textBoxStationIndex.Text=""; textBoxBusLineID.Text=""; textBoxBusInfoIndex.Text=""; textBoxFare.Text=""; textBoxSTime.Text=""; textBoxETime.Text=""; textBoxDistance.Text=""; } void ToolStripmenuitemclick增加线路和网站信息(object sender, EventArgs e) { label公交线路.Text=“公交路线信息增加:”; label公交车站.Text=“增加公交车站点:”; label公交线路信息.Text=“公交线路信息增加:”; button修改1.Visible=false; button公交线路信息.Text ="增加"; button修改2.Visible=false; panel管理员.Visible=true; textBoxLineCode.Text=""; textBoxStart.Text=""; textBoxEnd.Text=""; textBoxBusInfoId.Text=""; textBoxStation.Text=""; textBoxStationIndex.Text=""; textBoxBusLineID.Text=""; textBoxBusInfoIndex.Text=""; textBoxFare.Text=""; textBoxSTime.Text=""; textBoxETime.Text=""; textBoxDistance.Text=""; } void button公交线路信息Click(object sender, EventArgs e) { if(button公交线路信息.Text=="修改") {string sql="delete from BusStation where Station='"+textBoxStation.Text+"' and BusLine='"+textBoxLineCode.Text+"'"; DataConnection.UpdateDate(sql); sql="delete frome BusInfo where BusLine='"+textBoxLineCode+"'"; DataConnection.UpdateDate(sql); sql="insert into BusInfo(BusLine,StartTime,EndTime,DepartureStation,TerminateStation,Fare,Distance) values ('"+textBoxLineCode.Text+"','"+textBoxSTime.Text+"','"+textBoxETime.Text+"','"+textBoxStart.Text+"','"+textBoxEnd.Text+"','"+textBoxFare.Text+"','"+textBoxDistance.Text+"')"; DataConnection.UpdateDate(sql); } else if(button公交线路信息.Text=="删除") { string sql="delete from BusStation where Station='"+textBoxStation.Text+"' and BusLine='"+textBoxLineCode.Text+"'"; DataConnection.UpdateDate(sql); //sql="delete from BusInfo where BusLine='"+textBoxLineCode.Text+"'"; //DataConnection.UpdateDate(sql); } else { string sql="insert into BusInfo(BusLine,StartTime,EndTime,DepartureStation,TerminateStation,Fare,Distance) values ('"+textBoxLineCode.Text+"','"+textBoxSTime.Text+"','"+textBoxETime.Text+"','"+textBoxStart.Text+"','"+textBoxEnd.Text+"','"+textBoxFare.Text+"','"+textBoxDistance.Text+"')"; DataConnection.UpdateDate(sql); } } void Button修改1clickck(object sender, EventArgs e) { if(button公交线路信息.Text=="修改") { ///button修改文本,删除文本 string sql="update BusInfo set DepartureStation='"+textBoxStart.Text+"' where BusLine='"+textBoxLineCode.Text+"'"; DataConnection.UpdateDate(sql); //string sql="delete from BusStation where Station='"+textBoxStation.Text+"' and BusLine='"+textBoxLineCode.Text+"'"; //DataConnection.UpdateDate(sql); //sql="delete frome BusInfo where BusLine='"+textBoxLineCode+"'"; //DataConnection.UpdateDate(sql); //sql="insert into BusInfo(BusLine,StartTime,EndTime,DepartureStation,TerminateStation,Fare,Distance) values ('"+textBoxLineCode.Text+"','"+textBoxSTime.Text+"','"+textBoxETime.Text+"','"+textBoxStart.Text+"','"+textBoxEnd.Text+"','"+textBoxFare.Text+"','"+textBoxDistance.Text+"')"; //DataConnection.UpdateDate(sql); } else if(button公交线路信息.Text=="删除") { string sql="delete from BusInfo where BusLine='"+textBoxLineCode.Text+"'"; DataConnection.UpdateDate(sql); sql="delete from BusStation where BusLine='"+textBoxLineCode.Text+"'"; DataConnection.UpdateDate(sql); } } void Button修改2Clickck(object sender, EventArgs e) { if(button公交线路信息.Text=="修改") { string sql="update BusInfo set Fare='"+textBoxFare.Text+"' where BusLine='"+textBoxBusLineID.Text+"'"; DataConnection.UpdateDate(sql); } } } }
关键操作代码的数据库连接和添加和删除:
using System; using System.Windows.Forms; using System.Data; using System.Data.SqlClient; namespace gongjiao { /// <summary> /// Class with program entry point. /// </summary> internal sealed class Program { /// <summary> /// Program entry point. /// </summary> ///[STAThread] public static string peocontact = @"data source =LAPTOP-9ULRPDJ;initial catalog =BusStationQuery;integrated security=true"; public SqlConnection con = new SqlConnection(peocontact); private static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } public void getConn() { try { con.Open(); } catch (Exception e) { MessageBox.Show(数据库连接错误); Application.Exit(); } } public int GetCountInfoBySql(string s) { SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText=s; SqlDataAdapter sda=new SqlDataAdapter(cmd); DataSet dataset=new DataSet(); sda.Fill(dataset); int count = Convert.ToInt32((dataset.Tables[0]).Rows[0][0].ToString()); return count ; //return cmd.ExecuteNonQuery(); } public void UpdateDate(string s) { SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText=s; cmd.ExecuteNonQuery(); } public string GetDataString(string s) { SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText=s; SqlDataAdapter sda=new SqlDataAdapter(cmd); DataSet dataset=new DataSet(); sda.Fill(dataset); return (dataset.Tables[0]).Rows[0][0].ToString() ; } public SqlDataReader GetSqlDataReader(string s) { SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText=s; SqlDataReader dr=cmd.ExecuteReader(); return dr; } public DataSet GetDataSuoce(string s) { SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText=s; SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds,"hahah"); return ds; } public void CloseConn(){ con.Close(); } } }