城市公交查询系统

文档

代码压缩包

 

摘要

出行是人类生活的基本活动之一。城市的快速发展、科技的发展以及环保意识的增强,对城市公共交通的发展趋势的快速性、舒适性、便捷性、环保等方面提出更高要求。先进的信息技术也促进了公共交通技术的发展,从而为乘客提供了良好的出行条件,并且能够逐渐满足市民出行多样化的交通需求。为城市的进-步发展提供便捷条件,对于城市公共交通来说,必然要优先发展公交,因此,公共交通的地位也不断得到提升。
  2005年以来,中国先后印发了关于优先发展城市公共交通的意见等系列文件正式确立了公交优先发展的战略思想,为优先发展城市公共交通指明了方向,有力推动了中国城市公交事业的发展。截止2009年底到全国公共汽电车运营线路网总长度28.9万公里公交专用车道里程达7452公里,10余个城市开通运营快速公交路线,公交运输总量达到780亿人次。随着时代发展,需要更便捷的生活,因此乘客需要实时的查询公交系统的信息以便出行,在此背景下,本文最主要采用vs2010来实现公交查询系统的设计采用SQLServer2008数据库来实现系统所需的数据需求。
  在公交查询系统设计过程中考虑用户查询的模块为:线路查询、站点查询、换乘查询,管理员模块则应该包括对数据增、删、查、改等操作,对于数据库设计应该体现出数据之间明确的联系关系。

关键词:数据库、vs2010、公交查询、管理员

 

 

软件系统设计实习报告

 

第1章 绪论

 

1.1应用背景​

随着交通工具的不断革新,距离已经不再是人们足迹的羁绊,庞大复杂的交通网几 乎覆盖了世界的每一个角落,使人们可以到达任何一个想去的地方,然而当人们面对交 通网时却会因为它本身的复杂而显得不知所措,从而感觉到出行的麻烦。

在过去,当人们在一个不熟悉的城市时,或不清楚本城市的公交线路时,只能采用 打电话咨询,看交通地图,向熟人打听等传统方式查询公交信息,这样会浪费大家很多 时间、精力和财力,而且得到的信息也不一定是可靠的。这是还没有公交线路查询系统 时所出现的情况。

在互联网普及的今天,交通信息服务的电子化、网络化是已经是必然的趋势,而提 供良好的公交服务是建设和谐社会的基本要求。以信息化为基础,促进乘客、车辆、站 点设施以及交通环境等要素之间的良性互动,能有效推动公交系统建设。为了能够为市 民特别是为外来旅游、出差、就医、求职等急需了解本地的公交路线的人提供高效、快 捷的公交信息查询,让他们可以方便的在网络上得到自己所需要的各种相关信息,以便 减少各种可能产生的不必要的交通流量,提高公交的运作效率,节约出行时间。因此, 开发一个供人们快速查找公交线路的网络程序是势在必行的。

 

 

1.2发展前景

随着公交查询系统的不断发展完善,各种新技术的不断涌现,未来的公交查询系统 将基于B/S架构,通过浏览器查询,通过计算机网络全面联网,实现中心控制、自动更 新、异地查询等功能,同时可添加电话服务、语音服务、在线服务等功能,帮助用户更 好的使用公交查询系统。还可以开发手机版本的公交线路查询系统,使用手机上网的用户可以轻松的随时随地进行公交查询。

 

     

1.3系统目标

随着科学技术的迅猛发展,计算机已经得到了广泛的应用。几乎各行各业都有关于 计算机的使用,这使得计算机已成为社会中普遍存在的事物。由于计算机的使用,使得 人们在管理、应用及服务等各个领域使用数据方面变得更加简洁,更加方便,大大提高 了工作效率,产生了以计算机为主体,以人为辅助的局面。在此所设计的公交车查询系 统就是为了方便人员在数据查询方面的操作,使得他们在日常生活中都会达到事半功倍 的效果,减轻了人力的负担,方便了数据的存储,增加了安全性。本系统能够使用户 简单的查询出他们自己想要的车次经过哪些站点,在哪一站可以转乘,然后继续换乘哪 路车;也可以预先知道可以通过哪些车次可以到达目的地

 

1.4系统开发环境及简介

系统开发环境分为两部分 1. 硬件部分、2. 软件部分

硬件部分:一般电脑配置即可

软件部分:SQL Server 2008 数据库、Microsoft Visual Studio 2010

(一)数据库采用SQL Server 2008数据库
数据库可以理解为存储数据的仓库。他是按照一定的组织方式存储的相互有关的数
据的集合,这些数据不仅彼此关联而且可以动态变化。它具有以下几个特点:

1、数据结构化
2、数据共享
3、数据的独立性
4.数据的一致性与正确性
在数据库中最核心的一部分为DBMS即数据库管理系统他是使用户能够实现数据加工的数据管理系统,为用户提供以下几个功能:
1、建库功能
2、数据的操作功能:实现对数据的增、删、查、改等功能“]
(二)编程软件采用Microsoft Visual Studio 2010
Visual Studio是Window平台应用程序的开发环境,它是建立在IDE(统- -开发环境)的基础之上,可用于开发多种不同类型的应用程序。

 

 

 

第2章 需求分析及结构设计

2.1需求分析概述

 需求分析是软件定义时期的最后一个阶段,需求分析指的是在建立-一个新的或改变一个现存的电脑,系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法。

2.1.1需求分析的基本任务的一个阶段

   它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析的任务还不是确定系统怎样完成他的工作,而仅仅是确定系统必须完成那些工作,也就是对目标系统提出完整、准确、清晰、具体的要求“1。具体说需求分析的任务有以下几个方面:(一)、确定对系统的综合要求一-- 通常对软件系统有下述几个方面的综合要求:
1、功能需求:这方面的需求制定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能
2、性能需求:性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间、信息量速率)"]
3、可靠性和可用性需求:可靠性需求定量地指定系统是的可靠性,可用性与可靠性密切相关,它量化了用户可以使用系统的程度,例如:“在任何时候主机或备份机上的机场雷达系统应该至少有一个是可以用的,而且在一个月内在任何一台计算机上盖系统不可以用的时间不能超过总时间的2%。
4、出错处理需求.5、接口需求
6、约束
7、逆向需求
8、将来可能提出的要求

 

 

2.2 E-R图

2.2.1 E-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.1用户查询模块


  用户查询模块主要供用户使用其主要完成的对公交信息的查询,这些查询包括公交站点、公交线路以及公交站点到站点的额查询(公交换乘插叙)并将查询的结果通过一定的方式显示出来,并且需要制定一个“选择框”以便用户进行模糊查询。

2.5.2管理员模块

  管理员在公交查询系统中拥有最高的权限,它能够对公交信息进行增、删、查、改等一系列工作,当然对于管理员模块需要进行身份验证,当正确以后才能进行操作。

 

 

 

第3章 详细设计

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.5公交管理员信息数据库设计

公交管理员数据库的设计如表格 3-4管理员字段表所示:

 

表格3-5 管理员字段表

3.3.6 数据库关系图

通过上面的分析我们可以得出数据表 dbo、BusInfo.dbo、BusStation.dbo 之间存在疑点的关系,我们可将其关系画为如 图 3-9 关系图所示,通过这张图可以清晰的反应四张数据表之间的对应关系

 

图3-4 关系图

 

 

第4章 实现

 

4.1 系统界面实现

系统设计是新系统的物理设计阶段。根据系统分析阶段所确定的新系统的逻辑模型、功能要求,在用户提供的环境条件下,设计出一个能在计算机网络环境上实施的方案,即建立新系统的物理模型。对于公交查询系统主要涉及两个方面: 1、用户功能模块设计 2、系统管理员模块设计 ,

 

                         图4-1 系统界面

 

4.2用户功能模块实现

用户主界面是供用户进行数据的一系列操作所使用的, 其界面至少包含站点、 线路、换乘查询等部分。最终设计的界面如图

 

 图4-2 用户主界面

4.2.1 线路查询

 

对于一个公交查询系统, 在公交线路的查询中通常会知道某条线路或者是某条线路的部分名称,来查询这条线路所经过的站点名称,这时线路查询模块则会根据查询功能将所有的带有所输入数字的公交线路列,在单击查询后将结果列举出来(如图 4-3 公交线路查询结果)

 

 图4-3 线路查询

void 公交路线查询ToolStripMenuItemClick(object sender, EventArgs e)
        {
            pictureBox1.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公交换乘查询ToolStripMenuItemClick(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确定Click(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取消Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        
        void TextBox密码TextChanged(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修改2Click(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();
            pictureBox1.Visible=true;
            
            //
            // TODO: Add constructor code after the InitializeComponent() call.
            //
}

 

void 公交站点查询ToolStripMenuItemClick(object sender, EventArgs e)
        {
            panel公交路线.Visible=false;
            pictureBox1.Visible=false;
            panel公交站查询.Visible=true;
            comboBox站点查询.Text="";
            comboBox站点查询.Items.Clear();
            string sql = "select distinct Station from BusStation ";
            SqlDataReader dr = DataConnection.GetSqlDataReader(sql);
            while (dr.Read())
            {
                comboBox站点查询.Items.Add(dr["Station"]);
            }
            dr.Close();
        }

void 公交路线查询ToolStripMenuItemClick(object sender, EventArgs e)
        {
            pictureBox1.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 公交换乘查询ToolStripMenuItemClick(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站点查询Click(object sender, EventArgs e)
        {
            string station = comboBox站点查询.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路线查询Click(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公交换乘Paint(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确定Click(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取消Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        
void TextBox密码TextChanged(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修改1Click(object sender, EventArgs e)
        {
            if(button公交线路信息.Text=="修改")
            {
                //button修改1文本改为删除
                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修改2Click(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-9ULLRPDJ;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();
        }
    }
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13838.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交通变革中的ChatGPT:当智能交通遇见大型语言模型

✦ 最近爆火的ChatGPT 是由 OpenAI 开发的一种大型语言模型 (LLM) &#xff0c;拥有超过1750亿个参数&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;方面有着令人印象深刻的能力。ChatGPT的出现引爆各行各业&#xff0c;迅速催生出各种工程领域的应用场景。 那么…

实时公交api接口-车来了公交接口-API公交接口 -如何接入

全国200城市实时精准 接口功能&#xff1a; 公交线路查询、公交实时位置获取、获取附近的公交数据、获取附近的地铁数据 功能申请入口 功能申请入口 功能申请入口

只用2秒,轻松获取一线所有城市公交数据!

截止发文&#xff0c;北上广深一共有6510条公交线路 为了获取上面的这些线路信息&#xff0c;我写了一个爬虫&#xff0c;大概用了2秒左右就搞定&#xff0c;真爽&#xff01; 说出来你们可能不信&#xff0c;别着急&#xff0c;用代码说话&#xff0c;往下看&#x1f447; 先给…

全国各景点微博签到打卡带经纬度坐标系数据(正文在第二部分)

正文在第二部分&#xff0c;可直接跳过第一段引用的凑字文章。 我是一位数据分析师&#xff0c;很早就开始收集微博签到数据&#xff0c;并且通过自己的整理和分析&#xff0c;发现了这些数据隐藏的巨大商业价值。在此&#xff0c;我想向大家推荐一下这些数据的应用和价值。 微…

“CSDN 丨CDC领航者之夜”启航 AIGC 时代,助力技术管理者打造高效能研发团队

3月25日晚&#xff0c;由CSDN丨上海CDC&#xff08;城市开发者联盟&#xff09;和阿里云联合举办的“CDC城市领航者之夜”活动成功举办。 本次活动主题是“AIGC 时代&#xff0c;技术管理者如何打造高效能研发团队”&#xff0c;吸引了近三十位上海本地企业的CTO、技术负责人和…

长按组合键键盘事件(特殊交互界面可隐藏式)

2023.6.1 星期四 长沙 天气晴。在学校毕业的事情弄得差不多了&#xff0c;回到实习公司继续工作并期待转正&#xff0c;这周有一个任务就是在软件设计过程中&#xff0c;设计某些具有特殊功能的交互界面&#xff0c;该界面仅供软件设计内部人员等特殊人群使用&#xff0c;因此通…

开源启智,筑梦未来!第四届OpenI/O启智开发者大会开幕

2023年2月24日&#xff0c;第四届OpenI/O启智开发者大会在深圳顺利开幕。 本次活动由鹏城实验室、新一代人工智能产业技术创新战略联盟&#xff08;AITISA&#xff09;主办&#xff0c;OpenI启智社区、中关村视听产业技术创新联盟&#xff08;AVSA&#xff09;承办&#xff0c;…

AI落地应用困境,技术如何转化产业价值?

今年&#xff0c;Chat GPT的上线引起了巨大轰动&#xff0c;带来了对人工智能与大数据新的关注热潮。在互联网大数据时代&#xff0c;“AIX”是势不可挡的大趋势。在已有技术的基础上&#xff0c;如何发掘AI大模型背后更多的应用场景&#xff0c;探索AI在商业实践上新的发展可能…

隐私计算头条周刊(3.6-3.12)

开放隐私计算 隐私计算头条周刊 专注隐私计算&#xff0c;释放数据价值 Focus on privacy computing & data value 01 政策聚焦 1.数据最高管理部门——国家数据局成立&#xff01; 近日&#xff0c;根据国务院关于提请审议国务院机构改革方案的议案&#xff0c;组建国家数…

ChatGPT眼中的“特种兵旅游”

五一旅游季火爆收官&#xff0c;“特种兵旅游”风靡全国年轻人。这种旅游方式以不睡觉、不休息&#xff0c;在短时间内逛遍城市各个著名景点为主打&#xff0c;尽可能多地游览&#xff0c;尽可能充实行程&#xff0c;玩得更刺激更极限。作为年轻人的旅行选择&#xff0c;“特种…

城市C友会【官方牵头更多的线下交流的机会,你有怎样的期待?】

文章目录 &#x1f31f; 课前小差&#x1f31f; 长沙线下&#x1f31f; C友会你也可以是组织者&#x1f31f; 线下交流提升价值&#x1f31f; 官方与抖音合作&#xff1f;&#x1f31f; 23年动起来&#x1f31f; 写在最后 &#x1f31f; 课前小差 哈喽&#xff0c;大家好&…

双系统重装Ubuntu20.04及系统基本配置

文章目录 前言Ubuntu20.04换源安装chrome浏览器安装OneNote安装Wechat QQ Dingtalk参考 前言 笔者从2019年9月份去长沙智能驾驶研究院开始接触ubuntu18.04,在2020年4月份做本科毕业设计的时候也来来回回重装过几次ubuntu&#xff0c;始终没有把自己的重装过程记录下来&#xf…

ChatGPT、新必应让我秒变大神的技巧

最近经常有朋友问我&#xff1a;你使用 ChatGPT 这类大语言模型吗&#xff1f; 当然了&#xff0c;我目前最常用的是「新必应」。 说一说&#xff0c;我为什么使用新必应&#xff0c;原因就是新必应会提供生成内容的来源&#xff0c;这有利于我去自己判断并纠错。 我们都知道&a…

【Springboot系列】springboot扩展点大整理,赶紧收藏起来

&#x1f935;‍♂️ 个人主页&#xff1a;香菜的个人主页 ✍&#x1f3fb;作者简介&#xff1a;csdn 认证博客专家&#xff0c;游戏开发领域优质创作者,华为云享专家&#xff0c;2021年度华为云年度十佳博主&#xff0c;2021年度csdn博客之星十四名 &#x1f40b; 希望大家多多…

GitHub Copilot Labs 体验「收手吧,外面全是 ChatGPT」

本文正在参加 ✍&#x1f3fb; 技术视角深入 ChatGPT 征文活动 相信大家或多或少都体验过了 ChatGPT&#xff0c;或者更进一步&#xff0c;在 IDE 中也装上了对应的插件 不过真正在 coding 中用上的频率有多高呢&#xff1f;可能大多数人都只是尝个鲜然后就忘了&#xff0c;至…

最新ChatGPT GPT-4 NLU实战之文档问答类ChatPDF功能(附ipynb与python源码及视频)——开源DataWhale发布入门ChatGPT技术新手从0到1必备使用指南手册(五)

目录 前言最新ChatGPT GPT-4 自然语言理解NLU实战之文档问答类ChatPDF功能引言ChatGPT 接口Qdrant数据库Embedding存储核心代码测试 其它NLU应用及实战相关文献 参考资料其它资料下载 前言 最近&#xff0c;研究人员开始探索使用ChatGPT来进行文档问答&#xff08;QA&#xff…

最新ChatGPT GPT-4 自然语言理解NLU与句词分类技术详解(附ipynb与python源码及视频讲解)——开源DataWhale发布入门ChatGPT技术新手从0到1必备使用指南手册(四)

目录 前言最新ChatGPT GPT-4 自然语言理解NLU与句词分类技术详解1. NLU基础1.1 句子级别的分类1.2 Token级别的分类 2. 相关API2.1 LMAS GPT API2.2 ChatGPT Style 相关NLU应用及实战相关文献 参考资料其它资料下载 前言 自然语言理解&#xff08;NLU&#xff09;是人工智能&a…

新手小白利用chatgpt解决kali网络配置问题

在启动卡kali的时候发现没有网络 通过ifconfig -a发现没有获取到ip 经过一番查询&#xff0c;尝试用dhclient eth0去手动获取ip&#xff0c;发现成功了 但是每次重启kali都要手动获取一遍ip太麻烦&#xff0c;想着问题还是出在配置文件这里&#xff0c;无奈于小白不懂原理&…

chatgpt赋能python:Python怎么取消tab

Python怎么取消tab 在Python编程中&#xff0c;Tab键是一种重要的缩进方式&#xff0c;但在某些情况下&#xff0c;可能会遇到需要取消Tab缩进的情况。因此&#xff0c;了解如何取消Tab缩进是Python编程中的必经之路。本文将介绍Python的Tab缩进机制以及如何取消Tab缩进的方式…

为什么ClassPathResource可以读取到流?- 第465篇

历史文章&#xff08;文章累计460&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 S…