第一篇:UML課程設計報告+網絡教學系統的分析和設
統一建模語言UML 課程設計報告
指導老師: 姓名: 學號: 班級:
【設計名稱】 網絡教學系統-使用UML進行系統的分析和設計 【設計目的】1.掌握UML建模的基礎知識和其應用;
2.熟悉Rational Rose環境及功能,能夠設計出完整系統。
【設計要求】1.對系統功能進行必要的描述;
2.繪制系統的主要模型圖;
3.模型圖要有說明性文字解釋?!驹O計內容】1.網絡教學系統的需求分析;
2.網絡教學系統UML建模。
【設計步驟】
一: 網絡教學系統的需求分析
1、系統功能需求
(1)學生可以登陸網站瀏覽和查找各種信息以及下載文件。
(2)教師可以登陸網站給出課程見解、發布、修改和更新消息以及上傳課件。(3)系統管理員可以對頁面進行維護和批準用戶的注冊申請。滿足上述需求的系統主要包括下面幾個模塊
(1)數據庫管理模塊:提供使用者錄入、修改并維護數據的途徑。
(2)基本業務模塊:教師可以上傳文件、發布消息、修改和更新消息;學生可以下載文件;管理員可以維護頁面,批準注冊等。
(3)信息瀏覽、查詢模塊:主要用于對網站的信息進行瀏覽、搜索查詢。
圖 1.1系統功能需求
2、數據庫管理模塊
圖 1.2數據庫管理模塊
(1)教師信息管理:負責教師信息的管理。
(2)課程簡介信息管理:負責課程簡介信息的管理。(3)文件上傳信息管理:負責文件上傳信息的管理。
3、基本業務模塊
圖 1.3基本業務模塊
(1)文件上傳:教師可以使用此模塊將課程的數據上傳到網站服務器。(2)文件下載:學生可以使用此模塊從網站上下載課件及其他資料。
(3)消息發布:教師可以通過此模塊發布學習方法、課程重點等和教學相關的文章,以及和課程相關的通知等。
(4)消息修改和更新:教師可以通過此模塊對自己發布的信息進行修改和更新。(5)頁面維護:網站管理員可以使用此模塊對網站的頁面進行維護。(6)用戶注冊批準:網站管理員可以使用此模塊批準用戶注冊。
4、信息瀏覽、查詢模塊
圖 1.4信息查詢模塊功能
(1)網頁信息瀏覽:用戶瀏覽網站信息。
(2)文章信息搜索:用戶根據關鍵字搜索文章。
二: 系統的UML建模
1、系統的用例圖
創建用例圖之前首先需要確定參與者。① 在網絡教學系統中,需要學生和教師的參與。學生可以瀏覽課程簡介,教學計劃,學習方法等教師發布的文章,并可以根據關鍵字查詢文章。此外,學生可以從網站上下載課件。教師作為教學的主導者,使用此網站可以發布學習方法,課程重點等和教學相關的文章,以及和課程相關的通知等,還可以將某一門課程的課件上傳。② 網站需要一個專門的管理者進行日常維護與管理,所以需要有系統管理員的參與。(1)系統用戶參與的總的用例圖
教師和學生都可以從“網站用戶”這個參與者泛化而來,網站用戶是指網站的注冊用戶,注冊用戶可以登錄系統完成相應的操作。
系統用戶參與的總的用例圖如圖所示。從圖中可以清楚地看到泛化關系與各個參與者所參與的用例。
圖 2.1系統用戶參與的總的用例圖
抽象參與者注冊用戶的用例只有登錄系統(System Login)一個,學生和老師用戶除了包含這個用例以外,還各自有相對應的用例。(2)學生參與者的用例圖
學生參與者的用例圖如下圖所示。
圖 2.2學生參與的用例圖
① 文章瀏覽用例:學生可以瀏覽諸如課程簡介,教學計劃,學習方法等教師發布的文章。② 文章搜索用例:學生可以使用搜索功能根據關鍵字查詢相應的文章。
③ 文章下載用例:學生可以使用下載功能將網站上的課件以及資料信息下載到本地機器上?!加美龍D說明〗
① Download:文件下載用例。② Look through info:文章瀏覽用例。③ Article search:文章搜索用例。
④ Identify:權限認證用例。此用例用來認證文件下載是否具有下載文件的權限。
(3)教師參與者的用例圖
教師參與者的用例圖如下所示。
圖 2.3教師參與的用例圖 ① 添加課程簡介用例:教師可以為自己所教授的課程添加課程簡介。② 上傳課件用例:教師可以將課程的課件上傳到網站上供學生下載。③ 文章或消息發布用例:教師可以發布介紹學習方法,課程重點等和教學相關的文章,以及和課程相關的通知等。④ 文章或消息修改用例:教師可以修改自己發布的文章和通知?!加美龍D說明〗
① Course Intro:添加課程簡介用例。② Upload CAI:上傳課件用例。③ Message Issue:文章或消息發布用例。④ Message Update:文章或消息修改用例。
(4)系統管理員參與者的用例圖
系統管理員的用例圖如下所示。
圖 2.4系統管理員參與的用例圖
① 頁面維護。系統管理員可以對網站進行日常維護與管理。② 處理注冊申請。系統管理員可以處理學生或教師用戶的注冊申請?!加美龍D說明〗
① Page Maintenance:頁面維護。
② CAI Process:教師上傳的課件經過系統管理員的審批和處理。
③ Information Update:頁面更新。系統管理員負責網站的頁面更新,除了文章,消息,圖片等的更新,還包括頁面的美化和板塊的調整。
④ Process Registration:處理注冊申請。
2、系統的時序圖
網絡教學系統中的用例很多,所能畫出的時序圖也很多,在此不一一介紹。(1)系統管理人員管理網站的時序圖
圖 3.1 系統管理人員管理網站的時序圖 〖時序圖說明〗
① Login:登錄系統的函數。
② Add_or_delete_Article:添加或刪除的文章。③ UpdateCAI():更新CAI課件的函數。④ Add_or_delete_User:添加或刪除用戶。⑤ Show():刷新頁面的函數。⑥ Notify():通知用戶的函數。
系統管理人員通過與管理窗口的交互可以添加或刪除文章,更新CAI課件,添加或刪除用戶。具體的操作由管理窗口與數據庫交互完成,管理員操作后的結果會在頁面上顯示。(2)用戶登錄系統的時序圖
圖 3.2 用戶登錄系統的時序圖
〖時序圖說明〗
① Input(String,String):輸入用戶名和密碼的函數。
② Send(String,String):將用戶名和密碼發送給服務器的函數。
③ Query_and_Validate():查詢數據庫并驗證用戶名和密碼正確性的函數。
④ feedBack():發送反饋消息的函數,如果驗證通過,發送OK;如果驗證出錯,發送Error.⑤ ShowInformation():將反饋信息顯示給用戶的函數。
用戶要登錄系統,首先要和登錄窗口交互,輸入用戶名和密碼。登錄窗口負責和服務器交互,將用戶輸入的用戶名和密碼發送到服務器,服務器再與數據庫交互,以驗證用戶名和密碼的有效性,如果驗證成功,則返回OK,驗證失敗返回Error。服務器將通過登錄窗口將信息顯示給用戶。
(3)學生下載文件時序圖
圖 3.3 學生下載文件的時序圖
〖時序圖說明〗 ①Request:學生發送下載請求。
②Send(String,String):傳遞下載參數的函數。③Identity():驗證用戶權限的函。④authorize:返回認證信息的函數。
學生要下載文件,首先要向下載窗口發送請求,然后下載窗口的參數傳遞個服務器,服務器與數據庫交互以獲得用戶的權限認證,認證信息再通過服務器及下載窗口傳遞給學生。
3、系統的協作圖:、用戶登錄系統的協作圖
圖 4.1 用戶登錄系統的協作圖
〖協作圖說明〗
①Input(String,String):輸入用戶名和密碼的函數。
②Send(String,String):將用戶名和密碼發送給服務器的函數。
③Query_and_Validate():查詢數據庫并驗證用戶名和密碼正確性的函數。
④feedback():發送反饋消息的函數,如果驗證通過,發送OK,否則,發送Error。⑤ShowInformation():將反饋信息顯示給用戶的函數。
2、學生下載文件的協作圖
圖 4.2 學生下載文件的協作圖
〖協作圖說明〗
①Request:學生發送下載請求。
②Request(String,String):傳遞下載參數的函數。③Identity():驗證用戶權限的函數。
④showStatus():返回下載狀態的函數。如果認證成功,開始下載,不成功則報錯。
4、系統的狀態圖:
圖 5.1 系統的狀態圖
〖狀態圖說明〗
① HomePage:處于網站主頁。② Certify:登錄驗證狀態。③ SuccessPage:登錄成功頁面。④ UploadApplyPage:文件上傳頁面。⑤ Storing File:文件存儲狀態。⑥ OldPage: 頁面未更新狀態。⑦ NewPage:頁面更新狀態。
教師要上傳文件,首先要登錄網站,通過網站認證后轉入文件上傳頁面,上傳文件后處于文件存儲狀態。文件存儲后,要經過管理員的認證才可以在頁面上顯示,如果通過認證,則刷新頁面,如果未通過,頁面維持不變。
5、系統的活動圖:
(1)用戶登錄系統的活動圖
圖 6.1 用戶登錄系統的活動圖
〖活動圖說明〗 ①InputURL:輸入網站的URL。②Show HomePage:顯示網站主頁。③Input Login Information:輸入登錄信息。④Press ”OK” Button:單擊 “OK”按鈕。
⑤Certify UserInfo:用戶信息認證。⑥Show Success Page:顯示登錄成功界面。
用戶登錄系統時,首先要輸入登錄網站的URL,然后從首頁的登錄窗口中輸入信息登錄信息,如用戶名和密碼,點擊頁面上的登錄按鈕。用戶輸入的信息會與數據庫中的信息對比驗證,如果驗證成功返回登錄成功頁面,如果失敗,返回登錄失敗頁面。(2)教師上傳課件的活動圖
圖 6.2 教師上傳課件的活動圖
〖活動圖說明〗
①Apply File Upload:申請文件上傳。
②Certify Size And Other Aspact:驗證文件的大小和其他信息。③Store:文件存儲。
④Administrator Authorize:系統管理員認證。⑤Update Page:更新頁面。⑥Delete File:刪除文件。
教師要上傳文件,先要進入文件上傳頁面,然后驗證上傳文件的大小和其他信息是否符合要求。驗證成功后將文件存儲,當系統管理員認證通過,更新頁面;認證不通過刪除文件。(3)系統管理員維護網站的活動圖
圖 6.3 系統管理員維護網站的活動圖
〖活動圖說明〗
①Login:登錄系統。
②Process CAI:處理上傳的課件。③Update Information:更新頁面信息。④Modify Page:修改頁面。
6、系統中的類
(1)參與者相關的類
系統中和參與者相關的類的類圖如下:
圖 7.1 參與者相關的類
〖類圖說明〗 ①User類是所有類的父類,包括屬性有Account(登錄名)、Password(密碼)、email(用戶郵箱)等。方法有getEmail(獲取郵箱)、getAccount(獲取登錄賬戶名)以及changePass(修改密碼)。
②Student類是學生類,除了繼承父類的屬性和方法,還包括number(學號)、name(姓名)、sex(性別)、age(年齡)、class(班級)、和grade(年級)等屬性。
③Teacher類是教師類,除了繼承父類的屬性和方法,還包括name(姓名)、sex(性別)、Identity Card(身份證號)、course(教授的課程)、以及TelephoneNum(電話號碼)。
④Adminstrator是管理類,管理員有自己的屬性,TelephoneNum(電話號碼)。還有自己的方法:CertifyUpload(文件的上傳認證)、UpdatePageInformation(更新頁面信息)、AddUser(添加用戶)和DeleteUser(刪除用戶)等。
(2)各類之間的關系
類不是單獨一個模塊,各個類之間是存在聯系。網絡教學系統各個類之間的聯系如下圖:
圖 7.2 各類之間的關系
〖類圖說明〗
①CourseIntro類表示課程介紹類。此類的屬性有:courseName(課程名)、college(開課院校)、teacher(授課教師)、scorePoint(課程學分)、time(開課時間)、Place(上課地點)和teachingPlan(教學計劃)等,它有一個修改課程信息的方法Modify()。
②Article類表示發表的文章類,包括articleNum(文章序號)、articleTitle(文章標題)、teacherToIssue(發布教師)、create Time(創建時間)以及文章內容。方法有Issue(文章發布)、Delete(文章刪除)和Modify(修改)。③FileUploadOrDownload類表示上傳的文件信息類,屬性包括fileName(文件名)、fileType(文件類型)、fileSize(文件大?。?、shortIntro(文件的簡短介紹)、fileURL(文件地址)、create(文件的創建者)以及createTime(文件的創建時間)等。操作包括checkSize(檢查文件大?。?、Modify(修改文件信息)、Store(文件存儲)以及Cancle(取消上傳)等。
教師可以教授幾門課程,所以有幾門課程的課程簡介;教師可以發布多條信息,也可以不發布;教師可以不上傳文件,也可以上傳多個文件。一個學生可以下載一個文件,也可以不下載文件。
7、系統的組件圖
網絡教學系統的組件圖如下圖,組成Web應用程序的頁面包括:維護頁面(Maintenance Page)、文件下載頁面(File Download Page)、文件上傳頁面(FileUpload Page)、信息發布頁面(Message Issue Page)和登錄頁面(Login Page)。
圖 8.1 系統的組件圖
8、系統的配置圖
配置圖主要是用來說明如何配置系統的軟件和硬件。網絡教學系統的應用服務器負責保存整個Web應用程序,數據庫是負責數據庫管理。此外還有很多終端可以作為系統的客戶端。由于客戶端很多,在此只畫出3個客戶端,系統配置圖如下圖:
圖 9.1 系統的配置圖
【小結】
在建模過程中,遇到一些問題,諸如某些操作界面無法看到,一些修改影響了其他模圖的建立,通過詢問輔導老師和上網查找資料,得到了比較滿意的解決;在這次實驗中,關于UML的概念以前比較模糊的地方,我在實際操作中,變得更加清楚了,對Rational Rose的UML功能運用的更加系統,更加熟練;但是更讓我明白,UML的知識是十分豐富的,我現在的認識還不夠,我將會在以后的學習中,不斷提高自己的UML知識。
第二篇:uml課設心得
六月23號至六月27號,是我們班進行UML專用周課程設計的時間,雖然時間并不是很長,只有短短的一個星期而已,但是讓我受益匪淺,通過這次的UML課程設計,使我所學的書本知識得到了全面的檢驗,也讓我對這門課程有了更加深厚的體會。
這次課程設計我們沒有另外選題,而是在我們之前做過的系統之上加以完善和改進?,F在看看之前提交的作品,確實不近人意;但經過在網上的不斷查找資料,終于還是將它完成。之前我做的系統狀態圖和活動圖,為了鍛煉自己這次選擇了交互圖(也就是時序圖和協作圖)。雖然說自己沒有這方面的經驗,也不是特別熟悉其工作流程,但是有了在網上 查找資料得來的一些基礎和課本里的講解,自己對它也有了一定初步的認識,雖然不是很全面,但還是跌跌撞撞的完成。其中還因為和組員沒有溝通好導致用的類不同,費了好大勁才改回來。
最后,這次課設使我們發現考試真的并不是最重要,最重要的是能運用所學的知識。在整個UML課程的學習過程中,我們突破了傳統學習模式,把被動接受轉變為主動學習。不再是用學到的知識解題,而是在實際運用時遇到什么學什么,重在把知識應用于實際。立體的運用比死板的模仿更有效也更容易接受。下學期就大四了,也就是大學校園里的最后一年,而課設里學到的動手能力和分析問題解決問題的能力也將是我們畢業找工作的一大籌碼。
第三篇:UML JSP課程設計心得體會
在這次課程設計過程中,在這與代碼為伴的一個月里,我真的收獲了很多。這次軟件工程大型課程設計,既鞏固了這學期學的UML知識,又復習了關于數據庫和java的知識,更是學會了如何將所學知識運用到實際,真正的應用到軟件開發、網站開發中來。
這次課程設計還有一個額外收獲,就是初步學會了用JSP開發網頁。雖然做出來的網頁不是特別美觀,有些地方還存在一些瑕疵,但是從對網頁編程一竅不通到能做出一個功能基本完善的簡單的畢業設計選題系統,一步步走來,其中收獲的不僅僅是全新的知識,對于自學能力、動手能力、合作能力甚至接受挑戰的勇氣方面的影響,也都是巨大的。對于我來說,以前只接觸過用C語言在DOS界面下編程,用java編寫簡單的桌面應用程序,最多只是簡單的連接數據庫,所以一開始聽說要編網頁的時候,實在是缺乏信心,在編程過程中遇到一些棘手的問題的時候,甚至一度想要逃避,可最終還是堅持下來了。雖然這點小程序對于熟練掌握網頁編程語言的人來說不算什么,但對于我來說,沒有接觸過的東西,就是一個新挑戰,任何語言的學習,在入門的時候都是最困難的?,F在對于網頁編程已經有了一個初步的了解,對于有些概念的理解還不是很準確,不過會努力在以后的學習過程中慢慢理解,在以后的編程過程中慢慢熟悉這些概念。
除了學習新語言的收獲外,在編程過程中對于功能的實現、一些異常的處理還有界面的設計,也有著很深的感觸。既然要做畢業設計選題系統,那么就要先考慮到用戶的功能需求,分析不同的用戶都是要通過網站做什么,每個用戶都有哪些權限;對于數據庫的操作來說,是要向數據庫中插入數據,還是更新還是刪除。而且要考慮到各個方面異常的處理,比如用戶名、密碼錯誤怎么辦,輸入的信息錯誤怎么處理,成功更新數據庫信息后要彈出什么提示框,要轉入那個頁面等等。對于異常處理,我做的還不夠好,由于時間精力有限,有一些異常情況沒有考慮到,功能實現的還不夠完美,在以后的編程過程中我會在力所能及的范圍內盡量考慮周全,既然要做程序,那就要盡量做的完善。對于界面的設計,由于時間關系,沒有采用流行的Dreamweaver,感覺有點遺憾,網頁的背景圖片都是自己手工合成的,略顯簡陋了些,唯一值得欣慰的就是實現了我一直想要的布局效果,以后在美工方面也會努力的提高自己的能力。
另外對于實際應用中課程之間的融合也是有了一個初步的概念。一開始總覺得UML沒有什么實際的用處,但通過這次課程設計我發現,每門課程都是有它獨特的意義的,UML中畫出的類圖、順序圖、活動圖等等都對自己編程過程有著極佳的指導意義,這些圖能使編程思路變得更加清晰。
總而言之,這一個月的感受可謂五味雜陳,是三言兩語難以說清的,最明顯的還是感覺到自己知識的不足,對于一些東西還是缺乏一個系統的準確的理解。java是門很有用的語言,考試范圍之外的東西還有很多很多;JSP讓我接觸到了全新的網頁編程,也讓我知道,學無止境,想要全面深入的掌握一門語言,還是要付出很大的努力的。
第四篇:網絡課程設計報告
《計算機網絡課程設計報告》
學院:計算機科學學院 專業:計算機科學與技術 班級: 姓名: 學號:
小組成員:
2011-7-13
項目內容:基于Socket的文件傳輸服務設計與實現
實驗目的:基于Socket套接口,實現文件數據傳輸服務。目的使學生掌握網絡文件傳輸服務的設計方法。
實驗環境:操作系統:windowsXP或windows7;
內存:256M以上; Microsoft Visual C++ 6.0
設計方案:文件傳送是各種計算機網絡實現的基本功能,文件傳送協議是一種最基本的應用層協議按照客戶/服務器的模式進行工作,提供交互式的訪問,是INTERNET使用最廣泛的協議之一。文件傳輸協議的簡單設計與實現建立在計算機網絡實驗環境TCP/IP 網絡體系結構之上,使用socket 編程接口編寫兩個程序,分別為客戶程序(client.c)和服務器程序(server.c)首先,我們知道此應用軟件需實現網絡中多臺主機的信息互通,實現文件傳輸,因此涉及到主機網絡互聯的問題,所以必須會應用到網絡協議,可以用UDP或TCP。利用IP地址接受文件內容。
實現流程: 啟動電腦,打開能運行該程序的環境,必須保證代碼的正確性;
進行窗體框架的設計,實現網絡連接,并達到文件傳輸的功能;
在以上步驟的成功進行下達到設計要求的基于Sockets的局域網內文件傳輸的函數實現的目的。
源程序;
程序清單: 服務器:
#include “stdafx.h” #include “Server.h”
#include “ServerDlg.h”
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__;#endif
///////////////////////////////////////////////////////////////////////////// // CServerDlg dialog
CServerDlg::CServerDlg(CWnd* pParent /*=NULL*/): CDialog(CServerDlg::IDD, pParent){ //{{AFX_DATA_INIT(CServerDlg)
// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}
void CServerDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CServerDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP }
BEGIN_MESSAGE_MAP(CServerDlg, CDialog)//{{AFX_MSG_MAP(CServerDlg)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_LICSEN, OnButtonLicsen)ON_BN_CLICKED(IDC_BUTTON1, OnButtonOK)//}}AFX_MSG_MAP END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////// // CServerDlg message handlers
BOOL CServerDlg::OnInitDialog(){ CDialog::OnInitDialog();3
// Set the icon for this dialog.The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE);// Set big icon SetIcon(m_hIcon, FALSE);// Set small icon
// TODO: Add extra initialization here
return TRUE;// return TRUE unless you set the focus to a control }
// If you add a minimize button to your dialog, you will need the code below // to draw the icon.For MFC applications using the document/view model, // this is automatically done for you by the framework.void CServerDlg::OnPaint(){ if(IsIconic()){
CPaintDC dc(this);// device context for painting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x =(rect.Width()cyIcon + 1)/ 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);} else {
CDialog::OnPaint();} }
// The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CServerDlg::OnQueryDragIcon(){ 4
return(HCURSOR)m_hIcon;}
void CServerDlg::OnButtonLicsen(){ // TODO: Add your control notification handler code here CFileDialog Dlg(TRUE);if(Dlg.DoModal()!=IDOK)
return;
CFile myFile;if(!myFile.Open(Dlg.GetPathName(), CFile::modeRead | CFile::typeBinary)){
AfxMessageBox(“文件不存在!”,MB_OK|MB_ICONERROR);
return;}
CSocket sockSrvr;sockSrvr.Create(800);
sockSrvr.Listen();CSocket sockRecv;sockSrvr.Accept(sockRecv);
SOCKET_STREAM_FILE_INFO StreamFileInfo;WIN32_FIND_DATA FindFileData;
FindClose(FindFirstFile(Dlg.GetPathName(),&FindFileData));memset(&StreamFileInfo,0,sizeof(SOCKET_STREAM_FILE_INFO));strcpy(StreamFileInfo.szFileTitle,myFile.GetFileTitle());
StreamFileInfo.dwFileAttributes = FindFileData.dwFileAttributes;StreamFileInfo.ftCreationTime = FindFileData.ftCreationTime;StreamFileInfo.ftLastAccessTime = FindFileData.ftLastAccessTime;StreamFileInfo.ftLastWriteTime = FindFileData.ftLastWriteTime;StreamFileInfo.nFileSizeHigh = FindFileData.nFileSizeHigh;StreamFileInfo.nFileSizeLow = FindFileData.nFileSizeLow;
sockRecv.Send(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));
UINT dwRead=0;while(dwRead byte* data = new byte[1024];5 UINT dw=myFile.Read(data, 1024); sockRecv.Send(data, dw); dwRead+=dw;} myFile.Close(); sockRecv.Close();AfxMessageBox(“發送完畢!”);} void CServerDlg::OnButtonOK(){ // TODO: Add your control notification handler code here OnOK(); } 客戶機: // ClientDlg.cpp : implementation file // Download by http://www.codefans.net #include “stdafx.h” #include “Client.h” #include “ClientDlg.h” #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__;#endif ///////////////////////////////////////////////////////////////////////////// // CClientDlg dialog CClientDlg::CClientDlg(CWnd* pParent /*=NULL*/)6 : CDialog(CClientDlg::IDD, pParent){ //{{AFX_DATA_INIT(CClientDlg)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);} void CClientDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CClientDlg)// NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CClientDlg, CDialog)//{{AFX_MSG_MAP(CClientDlg)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_SEND, OnButtonSend)ON_EN_CHANGE(IDC_EDIT_IPADDRESS, OnChangeEditIpaddress)ON_BN_CLICKED(IDC_BUTTON1, OnButtonOK)//}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CClientDlg message handlers BOOL CClientDlg::OnInitDialog(){ CDialog::OnInitDialog(); // Set the icon for this dialog.The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE); // TODO: Add extra initialization here return TRUE;// return TRUE unless you set the focus to a control } // If you add a minimize button to your dialog, you will need the code below // to draw the icon.For MFC applications using the document/view model, // this is automatically done for you by the framework.void CClientDlg::OnPaint(){ if(IsIconic()){ // Set big icon // Set small icon CPaintDC dc(this);// device context for painting SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(), 0);// Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON); } CRect rect;GetClientRect(&rect);int x =(rect.Width()cyIcon + 1)/ 2;// Draw the icon dc.DrawIcon(x, y, m_hIcon);else { } } // The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CClientDlg::OnQueryDragIcon(){ return(HCURSOR)m_hIcon;} void CClientDlg::OnButtonSend(){ // TODO: Add your control notification handler code here AfxSocketInit(NULL);CSocket sockClient;sockClient.Create(); CString szIP;GetDlgItemText(IDC_EDIT_IPADDRESS,szIP);CDialog::OnPaint(); if(!sockClient.Connect((LPCTSTR)szIP, 800)){ AfxMessageBox(“連接到對方機器失敗!”); return;} SOCKET_STREAM_FILE_INFO StreamFileInfo;sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO)); CFile destFile(StreamFileInfo.szFileTitle,CFile::modeCreate CFile::modeWrite | CFile::typeBinary); UINT dwRead = 0;while(dwRead byte* data = new byte[1024]; memset(data,0,1024); UINT dw=sockClient.Receive(data, 1024); destFile.Write(data, dw); dwRead+=dw;} SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime,&StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime);destFile.Close(); | SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);sockClient.Close();AfxMessageBox(“接收完畢!”);} void CClientDlg::OnChangeEditIpaddress(){ // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog()// function and call CRichEditCtrl().SetEventMask()// with the ENM_CHANGE flag ORed into the mask.// TODO: Add your control notification handler code here CString szIpAddress; GetDlgItemText(IDC_EDIT_IPADDRESS,szIpAddress);if(szIpAddress.IsEmpty())GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(FALSE);else } void CClientDlg::OnButtonOK(){ // TODO: Add your control notification handler code here OnOK();} 安裝演示說明詳細步驟: GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(TRUE);11 服務器向客戶機發送文件:效果如圖 客戶器輸入服務器的IP地址并選擇接受來自服務器發送的文件,選擇接受。效果如下圖: 輸入IP地址 如果地址有誤則顯示 : 實驗總結: 通過本次計算機網絡課程設計,我更加充分的理解了課本上的知識,并能夠加以擴展,從而應用于實踐當中,這幾天的課程設計令我受益匪淺,很多平時模棱兩可的知識點都認真復習并實踐了。我意識到我們所學的東西將來都是要付諸實踐的,所以一切要 12 從實際情況出發,理論聯系實際,這樣才能真正發揮我們所具備的能力。經過此次課程設計,我向我成功的目標又邁進了一步 《電力系統分析》 課 程 設 計 指 導 書 適用專業:適用層次: 長春工程學院電氣與信息學院 電力教研室 一、方案的初選 分析原始資料,考慮可能的網絡連接方式,淘汰顯然不合理的方案。首先根據電力 系統的供電可靠性;其次可通過滿足備用情況的線路長度、高壓斷路器的數量及調度靈活性等指標來取舍,最后經過比較選出2個方案。 二、確定電力網的最佳接線方案 針對網絡方案初選結果的2個方案,分別計算它們的一次性總投資和年運行費,采用償還年限法進行經濟比較,最后確定其中之一為最佳接線方案。 1. 方案的總投資 ⑴線路的總投資: ① 確定線路的電壓等級 ②按經濟電流密度法確定導線的型號 ③計算投資 ⑵變壓器的總投資: ①選變壓器的臺數和型號 ②計算投資 2. 方案的總年運行費 (1)系統設備的運行維護管理費、小修費、折舊費 ① 線路取7% ② 變壓器取13% (2)系統的電能損耗費 ① 按最大負荷損耗時間法計算電能損耗 ② 計算費用(電價取為0.5元/度) 3. 確定最佳方案 償還年限法公式: T =(Z1 — Z2)/(F2 — F1) 式中:T —— 償還年限(年); Z1—— 方案1的投資(萬元); Z2—— 方案2的投資(萬元); F1—— 方案1的年運行費(萬元/年); F2—— 方案2的年運行費(萬元/年)。 如T≤10年,取投資大的方案;如T>10年,取投資小的方案。 三、最佳方案的潮流計算 1、要求計算:各節點運行電壓;各支路功率分布。 2、應考慮的運行方式: 1 ① 豐水期最大負荷、最小負荷; ② 枯水期最大負荷、最小負荷。 3、計算方式: 選擇一種運行方式計算。 四、電力系統無功平衡及調壓計算 1)無功平衡計算 ① 運行時應滿足: ∑QG =∑QD +∑ΔQL 式中:∑QG ——系統中所有無功電源發出的無功功率; ∑QD ——系統中所有負荷所需要的無功功率; ∑ΔQL —網絡元件中的無功功率損耗。 ② 全系統應有一定的無功功率儲備: QR =∑QN —∑QG 式中:∑QR ——系統的無功儲備; ∑QN ——系統無功電源設備容量。 說明:必須保證QR /∑QD max>(7~8)%,否則說明無功電源不足,將不能保證 系統運行中的電壓水平,甚至會危及到系統的電壓穩定性,造成極為嚴重的后果,此時就必須進行無功補償。 2)調壓計算 ① 可采用的調壓措施 i改變發電機端電壓調壓————調整發電機的勵磁電流; ii改變變壓器變比調壓—————選擇變壓器繞組的分接頭; iii改變系統無功功率分布調壓——并聯無功補償; iiii改變電網參數調壓——————線路中串入電容器或電抗器。 ② 調壓措施的應用 改變發電機端電壓調壓不需增加額外設備,簡便可行又經濟,既可保證機壓負 荷和近區負荷的電壓質量,又可作為系統的輔助性調壓措施,減輕其它調壓措施的負擔,應充分利用。 在系統無功儲備充足的前提下,因改變變壓器變比調壓不需增加額外設備且靈活有效,故應優先采用。如普通變壓器難以滿足要求,則可采用有勵磁調壓變壓器調壓。 在系統無功儲備不足或當有勵磁調壓變壓器也不能滿足調壓要求時,即應采用并聯無功補償調壓。補償設備可采用靜電電容器、同步調相機、靜止無功補償器,亦或采用最新的SVG裝置。 改變電網參數調壓的方法由于設計、運行等方面的原因,工程實際中很少有應用,故本次設計不擬采用。 參考資料:《電力系統分析》教材及《電力系統設計手冊》。 2第五篇:《電力系統分析》課程設計指導書