城市公交查询系统
文檔
代碼壓縮包
?
摘要
出行是人類生活的基本活動之一。城市的快速發展、科技的發展以及環保意識的增強,對城市公共交通的發展趨勢的快速性、舒適性、便捷性、環保等方面提出更高要求。先進的信息技術也促進了公共交通技術的發展,從而為乘客提供了良好的出行條件,并且能夠逐漸滿足市民出行多樣化的交通需求。為城市的進-步發展提供便捷條件,對于城市公共交通來說,必然要優先發展公交,因此,公共交通的地位也不斷得到提升。
??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();
????????}
????}
}
?
總結
- 上一篇: 时钟天气小插件显示没服务器,天气时钟小插
- 下一篇: 吴恩达深度学习第二周数据集