版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 一般的企事業(yè)單位的辦公系統(tǒng)都運行在局域網(wǎng)內(nèi),遇到人員出差等可以利用公網(wǎng)電子郵件,但無法通過內(nèi)部辦公系統(tǒng)及時處理工作。該設(shè)計通過特定的數(shù)據(jù)格式,使用電子郵件作為通信通道,實現(xiàn)遠程辦公,可以突破目前辦公軟件局域網(wǎng)的限制。突破局域網(wǎng)限制還可以從網(wǎng)絡層入手,但一般需要特殊網(wǎng)絡設(shè)備,對于小型公司來講,成本上不合理。</p&g
2、t;<p> 本設(shè)計分為兩大部分,第一部分為一個簡單的公司內(nèi)部辦公系統(tǒng),形式為網(wǎng)站。第二部分為一個windows窗口程序,用辦公郵箱登陸。利用第三方的郵件服務,實現(xiàn)第一部分和第二部分間的相互通信。運用C#可以方便的實現(xiàn)郵件發(fā)送與接收,asp.net能快速的開發(fā)出小型企業(yè)網(wǎng)站。系統(tǒng)實現(xiàn)了工作任務的申請、布置、提交、審核等等。員工在外出差時,利用windows窗口程序可以進行任務的處理和申請。當然網(wǎng)站端還有基本的賬戶管理。&
3、lt;/p><p> 本設(shè)計是針對具體的辦公系統(tǒng),實現(xiàn)的遠程辦公,雖然失去了一定的通用性,但其實用性大大提高。同時,作為畢業(yè)設(shè)計,其最重要的功能是可以熟悉使用C#進行電子郵件編程,熟悉使用asp.net開發(fā)簡單的公司的辦公系統(tǒng)。提升自己的分析問題、解決問題、動手實踐的能力。</p><p> 關(guān)鍵詞:遠程辦公;小型企業(yè)網(wǎng)站;SMTP協(xié)議;郵件客戶端</p><p>
4、<b> ABSTRACT</b></p><p> Most of the company's office system can only run at the LAN which they in. When someone of them is on a business trip, they can use public email, but couldn’t get w
5、ork done efficiently. This design through the particular data format, use email as a communication channel, to realize the remote office, can break through the limits of the LAN. We can also breakthrough the limit from n
6、etwork layer, but that need special network equipment, for the small company terms, the cost is not reasonable. </p><p> This design has two parts. The first part is a web site, as the office system. The se
7、cond part is a Window Application Program, with office E-mail landed. It uses other mail service to connect the first part and the second part. C# can realize mail sending and receiving conveniently. Asp.net can develop
8、small web site rapidly. It can apply, layout, submit, examine mission and so on. When employees on business trips, they can use the second part apply for and processing the task. Of course, the w</p><p> Th
9、is design is for the specific office system, although lost some generality, but the practicality is greatly increased. At the same time, as the graduation design, the most important function is that it let me learn more
10、about C# for email programming and familiar with use asp.net develop company's office system. Improve myself to analyze and solve problems, and improve the ability of practice.</p><p> Key words:Telecom
11、muting; Small business site; The SMTP protocol; Mail client</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> ABSTRACTII</p><p><b>
12、; 1 前言1</b></p><p> 1.1 選題背景與意義1</p><p> 1.2相關(guān)技術(shù)介紹1</p><p><b> 2需求分析3</b></p><p> 2.1 系統(tǒng)中存在的角色3</p><p> 2.2 分角色分析3</p>
13、<p> 2.3 輸入輸出要求4</p><p> 2.4 遠程通信要求5</p><p><b> 3概要設(shè)計6</b></p><p> 3.1 系統(tǒng)簡介6</p><p> 3.2 網(wǎng)站和windows窗口程序的關(guān)系6</p><p> 3.3 網(wǎng)站部分介紹
14、6</p><p> 3.4 窗口程序部分介紹7</p><p> 4數(shù)據(jù)庫部分的設(shè)計8</p><p> 4.1 E-R簡圖8</p><p> 4.2 基本表與參照關(guān)系8</p><p> 4.3 工具類14</p><p> 5網(wǎng)站詳細設(shè)計15</p>
15、<p> 5.1 工程文件結(jié)構(gòu)15</p><p> 5.2 按模塊介紹16</p><p> 5.2.1 登陸模塊16</p><p> 5.2.2 員工增刪改18</p><p> 5.2.3 個人信息維護24</p><p> 5.2.4 任務申請25</p>
16、<p> 5.2.5 任務布置27</p><p> 5.2.6 任務提交29</p><p> 5.2.7 任務審核32</p><p> 5.2.8 任務匯總查看33</p><p> 5.3 母版頁使用介紹34</p><p> 5.3.1 基本使用34</p>&
17、lt;p> 5.3.2 相對路徑與絕對路徑的問題35</p><p> 5.4 獨立小功能介紹36</p><p> 5.4.1 運用javascript關(guān)閉當前頁36</p><p> 5.4.2 判斷當前機器是否聯(lián)網(wǎng)36</p><p> 5.4.2 輸入日期時彈出日歷控件36</p><p&
18、gt; 6窗口程序詳細設(shè)計39</p><p> 6.1 工程文件結(jié)構(gòu)39</p><p> 6.2 模塊介紹40</p><p> 6.2.1 任務查看40</p><p> 6.2.2 任務申請41</p><p> 6.2.3 任務提交42</p><p> 6.
19、3 補充介紹43</p><p> 7遠程通信設(shè)計45</p><p><b> 7.1 簡介45</b></p><p> 7.2 網(wǎng)站端發(fā)送消息45</p><p> 7.2.1 布置任務時同時發(fā)送45</p><p> 7.2.2 刷新任務池時,取出符合條件的發(fā)送46&
20、lt;/p><p> 7.3 窗口程序接消息48</p><p> 7.4 窗口程序發(fā)消息49</p><p> 7.4.1 申請時發(fā)送49</p><p> 7.4.2 提交時發(fā)送49</p><p> 7.5 網(wǎng)站端解析消息49</p><p> 8一個簡單的流程測試52
21、</p><p><b> 8.1 簡介52</b></p><p><b> 8.2 測試52</b></p><p><b> 結(jié) 論60</b></p><p> 參 考 文 獻61</p><p><b> 致
22、 謝62</b></p><p><b> 1 前言</b></p><p> 1.1 選題背景與意義</p><p> 目前市場上有很多實現(xiàn)遠程辦公的商業(yè)軟件。當公司內(nèi)部信息系統(tǒng)在internet 上無法訪問時,這些軟件就大有用武之地,軟件相當于一個小工具,突破局域網(wǎng)限制,安裝運行方便快捷,成本低,目前有:GoToMy
23、Cloud、51Mypc遠程辦公等等,其中也有免費版本,不過作為一個公司,考慮到安全性商業(yè)保密等等,一般會選擇使用付費、有后期維護及升級的軟件。所以從市場需求這方面考慮,此選題很有意義。解決遠程辦公有很多思路,用電子郵件作為通信通道是一個傳統(tǒng)的解決方案,但其中又不乏創(chuàng)新。傳統(tǒng)的使用電子郵件通信不能夠讓員工及時處理任務,郵件客戶端與公司的工作流程又有一定的區(qū)別,聯(lián)系不夠緊密。本設(shè)計是針對具體的辦公系統(tǒng),實現(xiàn)的遠程辦公,雖然失去了一定的通用
24、性,但其實用性大大提高。同時,作為畢業(yè)設(shè)計,其最重要的功能是可以熟悉使用C#進行電子郵件編程,熟悉使用asp.net開發(fā)簡單的公司的辦公系統(tǒng),提升自己的分析問題、解決問題、動手實踐的能力。</p><p><b> 1.2相關(guān)技術(shù)介紹</b></p><p> 基于電子郵件傳輸?shù)倪h程辦公系統(tǒng)設(shè)計采用的開發(fā)集成環(huán)境為Visual Studio 2010,F(xiàn)ramew
25、ork版本為.NET Framework 4.0 ,數(shù)據(jù)庫使用的是集成的Microsoft SQL Server2005。本設(shè)計中Visual Studio 2010運行的操作系統(tǒng)環(huán)境為Windows7專業(yè)版。開發(fā)效率和用戶體驗都屬一流。</p><p> Visual Studio是微軟公司推出的開發(fā)環(huán)境。是目前最流行的Windows平臺應用程序開發(fā)環(huán)境。Visual Studio 2010版本于2010年4
26、月12日上市,其集成開發(fā)環(huán)境(IDE)的界面被重新設(shè)計和組織,變得更加簡單明了。Visual Studio 2010同時帶來了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview--CTP),并且支持開發(fā)面向Windows 7的應用程序。除了Microsoft SQL Server,它還支持 IBM DB2和Oracle數(shù)據(jù)庫。
27、目前有五個版本:專業(yè)版、高級版、旗艦版、學習版和測試版。</p><p> 我使用的是旗艦版,完整版售價11899美元,升級版售價3799美元。鑒于經(jīng)濟實力,我使用的處在免費試用期的版本。</p><p> a.網(wǎng)站采用asp.net技術(shù),開發(fā)工具為Visual Studio 2010,此集成開發(fā)環(huán)境功能異常強大,有豐富的服務器控件,還有集成的數(shù)據(jù)庫開發(fā)界面,設(shè)計基本表,存儲過程,表間
28、參照,視圖等等都十分方便。數(shù)據(jù)庫的連接字符串可以自動生成,粘貼到web.config文件中。數(shù)據(jù)庫文件放在專門的App_Data文件夾中。</p><p> (1)賬戶管理采用GridView控件還用Session對象技術(shù)。</p><p> (2)工作空間采用GridView控件,DropDownList控件,文件上傳下載技術(shù),Session對象技術(shù),郵件的收發(fā)技術(shù)。</p&g
29、t;<p> ?。?)整體網(wǎng)站采用了母版頁技術(shù)、JavaScript技術(shù),還有外部樣式表,也可以采用主題技術(shù)。</p><p> b.窗口程序部分,也是用Visual Studio 2010開發(fā),語言選擇都是C#,其提供的控件也豐富方便。</p><p> (1)任務處理部分使用TreeView控件,webBrowser控件,contextMenuStrip控件技術(shù),文件
30、上傳下載技術(shù),郵件接收技術(shù)。</p><p> ?。?)任務申請部分使用了openFileDialog控件,文件上傳技術(shù),郵件發(fā)送技術(shù)。</p><p> (3)整體窗體間通信使用自定義的類,來記住當前用戶信息。</p><p><b> 2需求分析</b></p><p> 2.1 系統(tǒng)中存在的角色</p&
31、gt;<p> 本系統(tǒng)是一個整合的小型企業(yè)辦公系統(tǒng),包含內(nèi)部的信息系統(tǒng),和外部的遠程辦公小工具。這個企業(yè)是虛擬出的企業(yè),他是一家服務性企業(yè),產(chǎn)品除了服務以外也有實物產(chǎn)品,經(jīng)營形式較靈活。目標客戶人群主要是大中城市的退休人員。這個企業(yè)名字為《暢享有限責任公司》。在本設(shè)計中用的是其別名怡然部落有限責任公司。具體詳情不做過多介紹,它的來源為:第七屆“挑戰(zhàn)杯”濟南大學學生創(chuàng)業(yè)計劃大賽,本人也是其中的參與者之一,在此要感謝他們。&
32、lt;/p><p> 系統(tǒng)中角色簡單的分為:系統(tǒng)管理員、總經(jīng)理、部門經(jīng)理、員工。還有一個“任務”實體。當公司業(yè)務擴展時,還可以增添角色類型。</p><p><b> 2.2 分角色分析</b></p><p> a、員工可以對自己的賬戶信息進行維護,如修改聯(lián)系方式,密碼等等。對于其登陸所用的類似于工號的用戶名不允許修改。員工可以進行任務申請
33、,與自己相關(guān)的任務查看。</p><p> b、部門經(jīng)理,對自己部門下的員工進行管理,對他們申請的任務提交的任務進行審核,為他們布置任務,維護自己的賬戶信息。</p><p> c、總經(jīng)理,對所有的下屬提交的任務和申請的任務進行審核,對下屬反映上來的問題進行查看,對自己賬戶的管理,</p><p> d、管理員具有最高權(quán)限,但不是所有權(quán)限。作為管理員要對數(shù)據(jù)庫
34、基本表進行維護,對整個系統(tǒng)的賬戶進行維護,為員工分配工號等等。其不能修改員工的密碼,以及員工提交的任務。</p><p> e、任務的狀態(tài)有申請、建立、提交、審核、完成五種,按時間順序轉(zhuǎn)化如下圖</p><p><b> 工作流程圖如下:</b></p><p> 在辦公流程中,員工和部門經(jīng)理都可以申請和提交任務,總經(jīng)理和部門經(jīng)理可以審核
35、下屬提交或申請的任務,也可以為下屬布置任務。員工或部門經(jīng)理,登錄系統(tǒng)可以查看自己的已建立的任務,已建立意思就是需要完成之意。剛申請的任務必需要上級批準才能變成以建立狀態(tài)。處理任務時有時會關(guān)聯(lián)很多文件,所以系統(tǒng)要提供文件的上傳下載功能。</p><p><b> 2.3輸入輸出要求</b></p><p> 由于員工對數(shù)據(jù)的存儲的格式不了解,他們只是了解自己的辦公流
36、程,以及基本的windows操作系統(tǒng)的使用。所以在輸入時要對員工填入的數(shù)據(jù)進行格式調(diào)整或者驗證提示,例如,輸入日期的時候要輸入“yyyy-MM-dd”,當輸入不符合要求時,要有對話框提示,這個可以使用javascript實現(xiàn)。</p><p> 對于輸出,要求能對所有任務在網(wǎng)頁上查看,包括任務的狀態(tài),關(guān)聯(lián)的員工,起止時間等等。對于單個員工,要求他能查看自己的任務,查看自己任務的狀態(tài)。老板能夠看所有員工的情況,每
37、月完成的任務量,聯(lián)系方式等等。</p><p> 關(guān)于輸出的響應時間,由于系統(tǒng)規(guī)模較小,網(wǎng)站內(nèi)部的響應速度在目前主流企業(yè)小型服務器上基本不會出現(xiàn)問題。員工和老板的基本操作響應一般預計不會超過3秒</p><p><b> 2.4遠程通信要求</b></p><p> a、在網(wǎng)站端安排任務時,會同時發(fā)送相關(guān)郵件消息到員工工作郵箱,郵件延時取
38、決于郵件服務的狀態(tài)。一般不會出現(xiàn)大的延時。</p><p> b、windows程序端能夠根據(jù)員工登陸時的郵箱來從郵箱中提取出符合要求的郵件數(shù)據(jù)。</p><p> c、員工在外提交的郵件消息,網(wǎng)站可以用設(shè)定好的郵箱(Boss郵箱)接收,然后解析判斷,組合成記錄存入相應數(shù)據(jù)庫基本表。</p><p><b> 3概要設(shè)計</b></
39、p><p><b> 3.1系統(tǒng)簡介</b></p><p> 本設(shè)計分為兩大部分,第一部分為一個簡單的公司內(nèi)部辦公系統(tǒng),形式為網(wǎng)站。第二部分為一個windows窗口程序,用辦公郵箱登陸。利用第三方的郵件服務,實現(xiàn)第一部分和第二部分間的相互通信。運用C#可以方便的實現(xiàn)郵件發(fā)送與接收,asp.net能快速的開發(fā)出小型企業(yè)網(wǎng)站。系統(tǒng)實現(xiàn)了工作任務的申請、布置、提交、審核等
40、等。員工在外出差時,利用windows窗口程序可以進行任務的處理和申請。當然網(wǎng)站端還有基本的賬戶管理。</p><p> 3.2 網(wǎng)站和windows窗口程序的關(guān)系</p><p> 3.3 網(wǎng)站部分介紹</p><p> 網(wǎng)站部分分為“賬戶管理模塊”和“工作空間模塊”。賬戶管理有四種身份,分別是管理員、老板、部門經(jīng)理和員工。根據(jù)身份的不同,配置不同的操作權(quán)限
41、。例如老板和管理員有一切權(quán)限,而員工只能對自己某些的信息進行修改更新。工作空間中有任務申請、我的任務、任務布置、任務審核、任務池匯總等部分。不同的模塊針對不同的用戶,任務申請和我的任務是針對員工的,其余的是針對部門經(jīng)理和老板。具體結(jié)構(gòu)如下圖:</p><p> 3.4 窗口程序部分介紹</p><p> windows窗口程序部分分為兩大模塊,一個為“任務處理”,一個為“任務申請”。關(guān)
42、于賬戶的管理部分可以在后期添加。任務處理部分簡單地分為任務查看、任務編輯、任務提交、刪除過期任務。任務申請部分沒有子模塊。結(jié)構(gòu)如下圖:</p><p><b> 4數(shù)據(jù)庫部分的設(shè)計</b></p><p><b> 4.1 E-R簡圖</b></p><p> 公司內(nèi)部上級對下級是管理關(guān)系,公司所有成員與任務的關(guān)系是
43、處理關(guān)系,人員對部門的關(guān)系是隸屬。在后期的表設(shè)計中,一些實體合并了,具體見下一節(jié)表設(shè)計。</p><p> 上圖中的“人”,是員工和部門經(jīng)理、總經(jīng)理的合并。他們?nèi)叨即娣旁谝粡埍恚║sertable)中,上圖中實體的屬性已略去,詳見下一節(jié)表設(shè)計的截圖。</p><p> 4.2 基本表與參照關(guān)系</p><p> 本系統(tǒng)中使用了五張基本表,Department
44、(部門表)、 MissionPool(任務表) 、MissionStateTable(任務狀態(tài)表)、Usertable(用戶表)、RoleTable(角色表) 。數(shù)據(jù)庫名稱為yirandata,是怡然的拼音加上data構(gòu)成。數(shù)據(jù)庫中有一個查重的存儲過程,有兩張參照關(guān)系圖。如下:</p><p> 圖4.2 基本表、參照和存儲過程</p><p> a、Department(部門表)設(shè)計
45、截圖:</p><p><b> 圖4.3 部門表</b></p><p> 部門表只設(shè)計了兩個字段,一個是主鍵部門號(DepartmentNumber),一個是部門名稱(DepartmentName)。數(shù)據(jù)類型如上圖所示,主鍵DepartmentNumber為int型, DepartmentName為varchar(50)。</p><p&g
46、t; b、MissionPool(任務表)設(shè)計截圖:</p><p><b> 圖4.4 任務表</b></p><p> 此表未設(shè)主鍵,MissionId(任務號)可以被設(shè)置為主鍵。</p><p> * TargetStaff(目標員工)為外鍵,參照Usertable(用戶表)的Email字段。記錄的是此條任務關(guān)聯(lián)的執(zhí)行員工,在布置
47、任務時,領(lǐng)導必須指定期望執(zhí)行的員工。</p><p> * MissionSubject(任務主題),在系統(tǒng)中配合MissionState(任務狀態(tài))作為任務的標示,區(qū)分不同的任務。</p><p> * MissionName(任務名)是一個保留字段,為將來其他功能的擴充做準備。在本設(shè)計中可以去掉。</p><p> * MissionContent(任務內(nèi)
48、容)是任務的主體,員工通過瀏覽此內(nèi)容而進行辦公安排。</p><p> * MissionState(任務狀態(tài)),參照MissionStateTable(任務狀態(tài)表)的MisStateId字段。</p><p> * Attachmentpath(附件路徑),存放的是與任務相關(guān)聯(lián)的文件的文件名,注意是文件名,并不是文件在服務器上的完整路徑。在服務器上有個專門存放關(guān)聯(lián)文件的文件夾,詳細設(shè)
49、計里會提到。</p><p> * BuiltTime(建立時間)記錄的是任務建立的時間,為員工辦公提供參考。</p><p> * DeadlineTime(截止時間)記錄的是任務失效的時間或是提交截止時間,為員工辦公提供參考。</p><p> * IsPosted(發(fā)送標記)標記任務是否被發(fā)送到目標員工的辦公郵箱。當然,并不是所有任務都需要發(fā)送,任務池刷
50、新時,只會將符合條件的任務發(fā)到目標員工的辦公郵箱?!?”代表已發(fā)送,“0”代表未發(fā)送。</p><p> c、MissionStateTable(任務狀態(tài)表)設(shè)計截圖</p><p> 圖4.5 任務狀態(tài)表</p><p> MissionStateTable(任務狀態(tài)表)設(shè)計比較簡單,主鍵為MisStateId(任務狀態(tài)號),等二個字段為MisStateNa
51、me(任務狀態(tài)名),這個表的設(shè)計是為了顯示給用戶的時候更容易理解。而沒直接在將任務表中的狀態(tài)字段設(shè)計為文本是為了將來添加任務狀態(tài)功能擴展時更加方便??巩惓5姆€(wěn)定性也更好。有了這個表實現(xiàn)員工按任務狀態(tài)查詢與自己相關(guān)的任務也方便許多。</p><p> d、Usertable(用戶表)設(shè)計截圖</p><p><b> 圖4.6 用戶表</b></p>
52、<p> 此表的UserID字段在設(shè)計中也未被使用,用作其他功能添加的保留。</p><p> * UserName(用戶名),目前的主鍵,用以標識用戶,也是相應使用者的登陸名。</p><p> * DepartID(部門號),參照Department(部門表)的DepartmentNumber字段。</p><p> * UserType(用戶
53、類型),區(qū)別用戶為普通員工還是領(lǐng)導等等,用以確定其操作權(quán)限。</p><p> * PassWord(密碼),登陸公司辦公系統(tǒng)的密碼,密碼為空也可以登陸。注意這里的密碼和窗口程序端登陸用的密碼沒有關(guān)聯(lián)性,可以憑用戶自己設(shè)置。</p><p> * Email(辦公郵箱),存放員工辦公用的郵箱地址,用戶可以自己修改。</p><p> * PhoneNumber
54、(手機號碼),這個不用解釋。</p><p> * IsInService(登錄標記),可以利用此字段判斷此用戶有沒有登錄。</p><p> * RealName(真實姓名),方便使用,提升操作的可理解性。在布置任務時,選擇員工的名字就可以得到其辦公郵箱,而不用“領(lǐng)導”記住員工的郵箱。</p><p> * Remain(保留),為以后功能添加所保留,目前也
55、可以作為備注。</p><p> e、RoleTable(角色表)設(shè)計截圖</p><p><b> 圖4.7 角色表</b></p><p> 上表主鍵為RoleNumber(角色號),RoleName(角色名),目前有4條記錄,管理員的角色號為“0”.</p><p> f、Diagram1(參照圖一)設(shè)計截
56、圖:</p><p> 圖4.8 參照關(guān)系一</p><p> g、Diagram2(參照圖二)設(shè)計截圖</p><p> 圖4.9 參照關(guān)系二</p><p><b> h、存儲過程代碼:</b></p><p> ALTER PROCEDURE dbo.StoredProcedure
57、1</p><p> @user1 varchar(50)</p><p><b> AS</b></p><p> select count(*) from Usertable where UserName=@user1</p><p><b> RETURN</b></p>
58、<p><b> 4.3 工具類</b></p><p> 獲得數(shù)據(jù)庫字符連接串的類Tools:</p><p> namespace Public</p><p><b> {</b></p><p> public class Tools</p><p&
59、gt;<b> {</b></p><p> public Tools() {}</p><p> /// <summary></p><p> /// 獲得數(shù)據(jù)庫字符連接串</p><p> /// </summary></p><p> /// <re
60、turns></returns></p><p> static public string GetConnectionString()</p><p><b> {</b></p><p> return System.Configuration.ConfigurationManager.ConnectionStrin
61、gs["CorpMgrConnectionString"].ConnectionString;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 5網(wǎng)
62、站詳細設(shè)計</b></p><p> 5.1 工程文件結(jié)構(gòu)</p><p> 網(wǎng)站的名稱叫做怡然部落信息管理系統(tǒng),公司背景在上文中(2.1)有提到。本網(wǎng)站的開發(fā)由于大量使用服務器標準控件,于是沒有使用MVC開發(fā)模式。網(wǎng)站所在的解決方安中有三個項目,分別是網(wǎng)站本身(bishe1hao),KSMISUsers 和Net。后兩個項目是類庫輸出型項目,網(wǎng)站bishe1hao引用了他
63、們。</p><p> 項目KSMISUsers是指導老師提供的,我的設(shè)計對其內(nèi)部的類進行了少許修改,登錄功能依賴于此項目。在此項目中有一個User類,此類加session技術(shù)完成了網(wǎng)頁間的通信,也可以完成權(quán)限的判斷布置,具體見4.2.1。</p><p> 項目Net是從網(wǎng)上找到的免費開源的關(guān)于電子郵件編程的基礎(chǔ)類庫。當然其功能遠遠不止電子郵件編程,但本網(wǎng)站使用的只有其中接收郵件的類
64、,發(fā)送郵件在System.Net.Mail中本來就含有。</p><p> 當然后繼這兩個項目都可以在生成網(wǎng)站時移除,只需要將他們生成的.dll文件放入網(wǎng)站的Bin文件夾中即可。這樣.cs文件中對他們的引用就不會出現(xiàn)問題。</p><p> 下面我們來仔細看一下網(wǎng)站bishe1hao的文件組織結(jié)構(gòu),如下圖:</p><p> 圖5.1 網(wǎng)站文件結(jié)構(gòu)</p
65、><p> App_Code文件夾中有一個自定義類,用來獲取web.config中的數(shù)據(jù)庫連接字符串(見3.3)。App_Data文件夾中是數(shù)據(jù)庫文件,Bin文件夾是自動生成和添加的.dll文件。bosspages文件夾中是一系列的員工沒有權(quán)限的頁面,具體見圖4.2。css文件夾中是網(wǎng)站的外部樣式表,本系統(tǒng)中基本沒有使用。fileshare文件夾中是存放附件的服務器文件夾。images文件夾中的是網(wǎng)站的相關(guān)的圖片。
66、staffpages文件夾中是一系列的員工頁面,具體見圖4.3。。再往下面就是一個個的具體頁,在后文中會有介紹。</p><p> rilishiyan.aspx是測試頁面和Default.aspx是登陸頁面。</p><p> 圖5.2 bosspages文件夾 圖5.3 staffpages文件夾</p><p><b>
67、 5.2 按模塊介紹</b></p><p> 5.2.1 登陸模塊</p><p> 登陸界面采用簡明的設(shè)計如下圖:</p><p><b> 圖5.4 登陸頁</b></p><p> 這些控件都是服務器控件,他們被放在一個html table控件中,這個table又被放在一個div中。這樣方便
68、布局,可以指定合適的背景圖片。</p><p> 登錄的過程為,先new一個KSMISUsers.User類的user對象,用這個對象調(diào)用Login函數(shù),這個函數(shù)會返回一個枚舉值,反應登錄的結(jié)果。Login函數(shù)先將輸入的用戶名與數(shù)據(jù)庫中的Usertable(用戶表)中的記錄比對,看有沒有這樣的用戶名的用戶記錄,有的話就將之各個字段賦值給user對象的一些屬性。然后再將用戶輸入的密碼與user.Pwd對比,判斷密
69、碼是否正確。這樣就可以區(qū)分出到底是用戶名錯誤還是密碼錯誤。</p><p><b> 登錄相關(guān)代碼如下:</b></p><p> protected void btnLogin_Click(object sender, EventArgs e)</p><p><b> {</b></p><p
70、> KSMISUsers.User user = new KSMISUsers.User(true);//true代表會生成權(quán)限列表</p><p> KSMISUsers.LoginResult lr = user.Login(tbLoginName.Text,tbPwd.Text,Public.Tools.GetConnectionString());</p><p> i
71、f (lr == KSMISUsers.LoginResult.Success)</p><p><b> {</b></p><p> user.IsLogin = true;</p><p> Session["LoginUser"] = user;</p><p> KSHelper.U
72、I.JsScripts.Redirect("Mainpage.aspx", Response);</p><p><b> return;</b></p><p><b> }</b></p><p> if (lr == KSMISUsers.LoginResult.DbError || lr
73、== KSMISUsers.LoginResult.NoUser || lr == KSMISUsers.LoginResult.PwdErr)</p><p><b> {</b></p><p> KSHelper.UI.JsScripts.Prompt(user.GetLoginPrompt(lr), Response);</p><p&
74、gt;<b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p> 說明:登陸地具體過程基本上完全在KSMISUsers.User類中完成,LoginResult是命名空間下的一個枚舉變量,記錄登錄返回的結(jié)果。KSHelper.
75、UI.JsScripts類也是指導老師提供的.dll文件,整個設(shè)計中,我僅僅是在這個登錄按鈕事件中使用了它,在這里他起了頁面跳轉(zhuǎn)和輸出提示的作用。KSMISUsers.User類中Login函數(shù)代碼如下:</p><p> public LoginResult Login(string strLoginName, string strPwd, string strConnectionString)</p&
76、gt;<p><b> {</b></p><p> SqlConnection conn = new SqlConnection(strConnectionString);</p><p> string strSql = string.Format(@"Select * From Usertable Where UserName=
77、39;{0}' ", strLoginName);</p><p> SqlCommand cmd = new SqlCommand(strSql, conn);</p><p><b> try</b></p><p><b> {</b></p><p> conn.O
78、pen();</p><p> SqlDataReader sdr = cmd.ExecuteReader();</p><p> if (!sdr.Read())</p><p><b> {</b></p><p> sdr.Close();</p><p> conn.Close(
79、);</p><p> return LoginResult.NoUser;</p><p><b> }</b></p><p> ReadAUser(sdr);//將數(shù)據(jù)庫中讀到的符合條件的記錄存到User的相應的成員中。</p><p> if (!this.IsPasswordCorrect(strPwd
80、))</p><p> return LoginResult.PwdErr;</p><p> sdr.Close();</p><p> conn.Close();</p><p><b> }</b></p><p><b> catch{</b></p&
81、gt;<p> if (conn.State != ConnectionState.Closed)</p><p> conn.Close();</p><p> return LoginResult.DbError;</p><p> } </p><p> return LoginResult.
82、Success;</p><p><b> }</b></p><p> KSMISUsers.User類中Login函數(shù)中使用的其它函數(shù)如ReadAUser(sdr),IsPasswordCorrect(strPwd),不再一一介紹,具體參見工程文件,在畢業(yè)答辯結(jié)束后我將會在網(wǎng)上免費公開。</p><p> 5.2.2 員工增刪改<
83、;/p><p> 涉及到這個模塊的頁面有3個,分別是Add_staff.aspx,Delete_staff.aspx,Update_staffinfo.aspx,從頁面名稱可以看出其功能。</p><p> ?。?)、增加員工截圖如下</p><p><b> 圖5.5 增加員工</b></p><p> 手機和郵箱輸
84、入框加了服務器驗證控件RegularExpressionValidator,只需要設(shè)置ControlToValidate、ErrorMessage、ValidationExpression屬性即可,ValidationExpression屬性可以從網(wǎng)上獲得正則表達式,也可以直接在開發(fā)環(huán)境中選取。用戶名輸入框含有非空驗證,而且有一個焦點變化時數(shù)據(jù)庫查重操作,代碼如下:</p><p> protected voi
85、d user_name_TextChanged(object sender, EventArgs e)</p><p><b> {</b></p><p> string strConnectionString = Public.Tools.GetConnectionString();</p><p> SqlConnection co
86、nn = new SqlConnection(strConnectionString);-</p><p> conn.Open();</p><p> //使用存儲過程查重,不讓用戶名發(fā)生重復。</p><p> SqlCommand cmd = new SqlCommand();</p><p> cmd.CommandType
87、= CommandType.StoredProcedure;</p><p> cmd.CommandText = "StoredProcedure1"; //存儲過程參見4.2 h</p><p> cmd.Connection = conn;</p><p> SqlParameter parauser1 = n
88、ew SqlParameter("@user1", user_name.Text.Trim());</p><p> cmd.Parameters.Add(parauser1);</p><p> Int32 count = (Int32)cmd.ExecuteScalar(); //返回的是首行首列</p><p>
89、; if (count > 0)</p><p><b> {</b></p><p> Response.Write("<script language='javascript'>alert('你輸入的用戶名已被使用,請您換一個! ');history.back();</script>&q
90、uot;);</p><p><b> }</b></p><p> conn.Close();</p><p> conn.Dispose();</p><p><b> }</b></p><p> 添加按鈕click事件代碼如下</p><
91、p> protected void Button1_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> if (user_name.Text == "") </p><p><b> {</b></p>
92、<p> Response.Write("<script language='javascript'>alert('用®?戶¡ì名?不?能¨¹為a空?!ê?');location.href='Add_staff.aspx';</script>");</p>&l
93、t;p><b> }</b></p><p><b> int i, j;</b></p><p> i = Int32.Parse(department.Text);//部門DropDownList未與數(shù)據(jù)庫中的部門表綁定,但text和value與表中的記錄對應,department.Text得到的是value.</p&
94、gt;<p> j = Int32.Parse(role.Text);//和上面類似</p><p> string ConnectionString = Public.Tools.GetConnectionString();</p><p> SqlConnection conn = new SqlConnection(ConnectionString);&l
95、t;/p><p> string strSql = "insert into Usertable(UserName, DepartID, UserType, PassWord, Email ,PhoneNumber ,RealName) values('" + user_name.Text + "'," + i + "," + j + &q
96、uot;,'" + pass_word.Text + "','" + email_address.Text + "','" + phone_number.Text + "','" + real_name.Text + "')";</p><p> SqlCom
97、mand cmd = new SqlCommand(strSql, conn);</p><p><b> try</b></p><p><b> {</b></p><p> conn.Open();</p><p> if (cmd.ExecuteNonQuery() == 1)<
98、;/p><p><b> {</b></p><p> Response.Write("<script language='javascript'>alert('添¬¨ª加¨®成¨¦功|!ê?');location.href='
99、Add_staff.aspx';</script>");</p><p><b> }</b></p><p> conn.Close();</p><p><b> }</b></p><p><b> catch </b></p&
100、gt;<p><b> {</b></p><p> if (conn.State != ConnectionState.Closed)</p><p> conn.Close();</p><p><b> }</b></p><p><b> }</b&g
101、t;</p><p> ?。?)、刪除員工部分做的較簡潔,本來可以將修改和刪除都整合到一起用GridView實現(xiàn),但顯得較單調(diào)。</p><p><b> 圖5.6 刪除員工</b></p><p><b> 刪除相關(guān)代碼:</b></p><p> protected void Button
102、1_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> Response.Write("<script language='javascript'>confirm('are you sure to do this?'); </scri
103、pt>");</p><p> string ConnectionString = Public.Tools.GetConnectionString();</p><p> SqlConnection conn = new SqlConnection(ConnectionString);</p><p> string strSql = str
104、ing.Format("Delete From Usertable Where UserName='{0}'", TextBox1.Text.Trim());</p><p> SqlCommand cmd = new SqlCommand(strSql, conn);</p><p><b> try</b></p>
105、;<p><b> {</b></p><p> conn.Open();</p><p> if (cmd.ExecuteNonQuery() == 1)</p><p><b> {</b></p><p> Response.Write("<script
106、 language='javascript'>alert('刪除成功!');location.href='Delete_staff.aspx';</script>");</p><p><b> }</b></p><p><b> else</b></p>
107、;<p><b> {</b></p><p> Response.Write("<script language='javascript'>alert(‘未找到符合條件的員工!’);location.href='Delete_staff.aspx';</script>");</p>
108、<p><b> }</b></p><p> conn.Close();</p><p><b> }</b></p><p> catch(Exception ex)</p><p><b> {</b></p><p> if
109、 (conn.State != ConnectionState.Closed)</p><p> conn.Close();</p><p> Response.Write("<script language='javascript'>alert(‘操作失??!’);location.href='Delete_staff.aspx';
110、</script>");</p><p><b> }</b></p><p><b> }</b></p><p> (3)、Update_staffinfo.aspx頁面使用了GridView控件,效果截圖如下</p><p> 圖5.7 員工信息修改</p&
111、gt;<p> 這個修改是從“領(lǐng)導”的角度進行的,第一行處于編輯狀態(tài),可以看到一些能夠修改的項。部門和職位顯示的是聯(lián)合查詢出的字段,相關(guān)設(shè)置如下:</p><p> 數(shù)據(jù)源SELECT語句為</p><p> SELECT Usertable.UserName, Usertable.Email, Usertable.PhoneNumber, Usertable.Rema
112、in, Usertable.RealName, RoleTable.RoleName, Department.DepartmentName, Usertable.DepartID, Usertable.UserType FROM Usertable INNER JOIN RoleTable ON Usertable.UserType = RoleTable.RoleNumber INNER JOIN Department ON User
113、table.DepartID = Department.DepartmentNumber</p><p> 數(shù)據(jù)源的UPDATE語句為</p><p> UPDATE Usertable SET UserName = @UserName, RealName = @RealName, Email = @Email, PhoneNumber = @PhoneNumber, Remain =
114、 @Remain, DepartID = @DepartID, UserType = @UserType WHERE (UserName = @oril_UserName)</p><p> 上述語句都是在界面化的查詢生成器中自動生成的。也可以直接寫好,粘貼入相應的地方。</p><p> 數(shù)據(jù)源的要注意的屬性如下圖:</p><p> 圖5.8 數(shù)據(jù)源屬性&
115、lt;/p><p> 注意第二個變黑的屬性,他將與SQL語句中的@oril_UserName相對應。此處UserName是參數(shù)@UserName。在GridView中對應使用了原值作為篩選的必須要設(shè)置下圖屬性:</p><p> 圖5.9 GridView屬性</p><p> 原值使用了幾個,DataKeyNames中就需要幾個值,而且要對應上。</p&
116、gt;<p> 這樣員工信息的修改就十分方便了!</p><p> 5.2.3 個人信息維護</p><p> 本模塊涉及到兩個頁面Pwd_change.aspx以及Self_info_alter.aspx。這兩個頁面設(shè)計的都較簡單,頁面截圖如下</p><p> 圖5.10 個人信息修改 圖5.
117、11 密碼修改</p><p> 用戶名文本框Enabled屬性為false,這樣用戶名就不會被隨便修改了,當然實在想換用戶名可以聯(lián)系系統(tǒng)管理員修改。</p><p> 個人信息修改相關(guān)代碼如下:</p><p> private void get_user() </p><p><b> {</b></p
118、><p> KSMISUsers.User user = new KSMISUsers.User(false); //true代表需要導入權(quán)限List</p><p> user = (KSMISUsers.User)Session["LoginUser"];</p><p> (Master.FindControl("lblU
119、serName") as Label).Text = user.RealName.ToString();</p><p> TextBox1.Text = user.UserName;</p><p> TextBox2.Text = user.RealName;</p><p> TextBox3.Text = user.MobilePhone;&
120、lt;/p><p> TextBox4.Text = user.Email;</p><p><b> }</b></p><p> protected void Page_Load(object sender, EventArgs e)</p><p><b> {</b></p>
121、<p> if (IsPostBack) return;</p><p> get_user();</p><p><b> }</b></p><p> protected void Button1_Click(object sender, EventArgs e)</p><p><b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計--遠程測溫無線傳輸系統(tǒng)的設(shè)計與實現(xiàn)
- 畢業(yè)設(shè)計---基于plc的郵件分揀系統(tǒng)設(shè)計
- 畢業(yè)設(shè)計---企業(yè)郵件系統(tǒng)設(shè)計與實現(xiàn)
- 基于java的電子郵件收發(fā)系統(tǒng)的設(shè)計與實現(xiàn)【畢業(yè)設(shè)計】
- 畢業(yè)設(shè)計--- 遠程遙控系統(tǒng)的設(shè)計與實現(xiàn)
- 基于java_web的郵件管理系統(tǒng)的設(shè)計與實現(xiàn)-畢業(yè)設(shè)計
- qam傳輸系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- qam傳輸系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 郵件收發(fā)系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計-網(wǎng)上辦公系統(tǒng)的設(shè)計與實現(xiàn)
- 辦公郵件系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 基于c_實現(xiàn)的郵件管理系統(tǒng)畢業(yè)設(shè)計(含外文翻譯)
- 畢業(yè)設(shè)計(論文)--基于java的郵件系統(tǒng)
- 電子郵件系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計(論文)基于java mail的電子郵件收發(fā)系統(tǒng)的設(shè)計與實現(xiàn)
- 基于教學教務的協(xié)同辦公系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 郵件自動分揀系統(tǒng)的設(shè)計畢業(yè)設(shè)計
- 在線郵件收發(fā)系統(tǒng)畢業(yè)設(shè)計
- 基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計與實現(xiàn)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于無線傳輸?shù)臄?shù)據(jù)采集系統(tǒng)設(shè)計
評論
0/150
提交評論