【管理系統(tǒng)中計算機應用】實踐報告(總26頁)
《【管理系統(tǒng)中計算機應用】實踐報告(總26頁)》由會員分享,可在線閱讀,更多相關《【管理系統(tǒng)中計算機應用】實踐報告(總26頁)(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 中南林業(yè)科技大學 《管理系統(tǒng)中計算機應用》 實踐報告 姓 名:XXX 專 業(yè): 人力資源管理 院 (系): 中南林業(yè)科技大學成教學院 實習時間: 2013年4月18日 實習地點: XXXXXXXXXX 指導教師評語:
2、 成績: 簽名: 年 月 日 撰寫及批改注意事項 一、填寫信息 1、學生填寫信息齊全、字跡清晰、日期真實; 2、教師批改后的簽名和日期應完整; 3、報告中封面、圖、程序要求打印(封面與此頁要求正反雙面打印,教師評語要求手寫)。 二、實習報告的撰寫 1、實習報
3、告撰寫認真細致,數(shù)據(jù)計算正確、誤差分析準確、實驗結論 分析符合科學規(guī)律。 2、實習報告有繪制的圖形、圖表時,要求 (1)用電腦繪制; (2)應在報告中注明圖號、表號。 三、批改實驗報告 1、一律采用百分制; 2、批改時應對錯分明,錯誤之處應有文字說明或指出錯誤的標記; 3、指導教師評語的內容: (1)對本次認識實習完成情況的評語; (2)對本次認識實習報告的評語; 目 錄 1. 軟件編譯理論及實踐教程實習內容 4 2. 套接字編程 6 2.1 使用說明書 6 2.2 原理
4、說明書 7 2.3 程序注釋 7 3. 連接數(shù)據(jù)庫 19 3.1 使用說明書 19 3.2 原理說明書 20 3.3 程序注釋 20 4. 實習總結、體會與收獲 26 (正 文 部 分) 1.軟件編譯理論及實踐教程實習內容 一:我的電腦磁盤分析: 0000000000 管理節(jié)點1 000000003F 000000003F C盤(48.8GB) 00061AB827 00061AB827 管理節(jié)點
5、2 00061AB866 00061AB866 D盤(73.4GB) 000F48CDDA 000F48CDDA 分區(qū)間隙 000F48CE18 000F48CE18 管理節(jié)點3 000F48CE19 000F48CE19 E盤(73.4GB) 001876E38D 001876E38D 分區(qū)間隙 001876E3CB 001876E3CB 管理節(jié)點4 00
6、1876E3CC 001876E3CC F盤(102.4GB) 0025422D6C1 剩余扇區(qū) 二. PING.EXE十六進制源碼分析 在文件存儲空間中,ping.exe十六進制源碼分析如下: 2. 套接字編程 2.1.使用
7、說明書: 第一步:先打開服務器端(server.exe).根據(jù)提示輸入端口號,需要輸入大于5001小于65535的值,否則就是用默認的5001作為端口值 第二步:創(chuàng)建套接字并選擇協(xié)議。 第三步:打開客戶端(client.exe),根據(jù)提示,將客戶端(server.exe)所在的服務器的IP地址輸入進去。 第四步:輸入在服務器端(server.exe)中建立的端口號值。 第五步:選擇和服務器端(server.exe)中一樣的協(xié)議 第六步:收發(fā)數(shù)據(jù) 第七步:關閉連接。 2.2原理說明書 2.3程序注釋 /***
8、***************************************************\
* client.c - 簡單的 TCP/UDP 套接字客戶程序 windows環(huán)境 *
\******************************************************/
#include
9、2_32")//添加‘ws2_32’庫 int main(void) { unsigned short port = 5001; //端口號 int socket_type = SOCK_STREAM; //缺省使用TCP連接 char Buffer[1280]; //收發(fā)緩沖區(qū) unsigned int addr; //IP地址變量 int retval,i; //臨時變量 struct sockaddr_in server, from; //套接字地址結構變量 struct hostent *hp;
10、 //主機信息結構變量指針 WSADATA wsaData; //windows套接字信息 SOCKET conn_socket; //套接字變量 //先輸入客戶程序所需要的基本信息:服務器地址,端口號,套接字類型 printf("請輸入服務器地址:"); scanf("%s", Buffer); printf("請輸入端口號( >5000 ):"); scanf("%d", &i); if(i < 5000 || i > 65535) printf("不正確的端口號%d,用缺省端口號5001\n", i); els
11、e port = i; printf("請輸入套接字類型( 1,TCP; 2, UDP ):"); scanf("%d",&i); if(i == 1) socket_type = SOCK_STREAM;//設定為SOCK_STREAM else if(i == 2) socket_type = SOCK_DGRAM;//設定為SOCK_DGRAM else printf("不正確的輸入%d,使用TCP數(shù)據(jù)流\n", i); //在windows環(huán)境下,需要先初始化協(xié)議棧 if ((retval = WSAStartup(0x202,
12、 &wsaData)) != 0) //WSAStartup函數(shù)調用,用來初始//socket { printf("WSAStartup 失敗,錯誤號:%d\n",retval); WSACleanup();//當調用了WSAStartup之后,就需要調用WSACleanup函數(shù)釋放內存 return -1; } //取得主機IP地址 if (isalpha(Buffer[0])) //是域名或命名地址,用首字母的是否在A-Z,或者a-z來判斷是域名還是IP地址 hp = gethos
13、tbyname(Buffer);//從一個主機數(shù)據(jù)庫中提取出主機信息 else { addr = inet_addr(Buffer);//是點分地址 hp = gethostbyaddr((char *)&addr,4,AF_INET);//根據(jù)網(wǎng)絡地址,獲得主機信息,執(zhí)行成功,就返回一個指向主機信息的結構 } if (hp == NULL ) { printf("不能解析地址[%s]: 錯誤號%d\n", Buffer, WSAGetLastError());//用于獲取錯誤信息
14、 WSACleanup(); exit(1); } // 拷貝 解析的信息到sockaddr_in結構中 memset(&server,0,sizeof(server));//分配內存空間,由server返回 memcpy(&(server.sin_addr),hp->h_addr,hp->h_length);//信息的copy server.sin_family = hp->h_addrtype;//組協(xié)議初始化 server.sin_port = htons(port);//端口號初始化 //建立套接
15、字 conn_socket = socket(AF_INET,socket_type,0); if (conn_socket <0 ) { printf("socket()失敗,錯誤號:%d\n", WSAGetLastError()); WSACleanup(); return -1; } //對于流式套接字,需要先建立連接 //其實也可以使用connect(),send(),recv()等函數(shù)在windows里面一樣實現(xiàn)數(shù)據(jù)報套接字功能 if(socket_type != SOCK_D
16、GRAM) { printf("正在連接到: %s\n",hp->h_name); if (connect(conn_socket,(struct sockaddr*)&server,sizeof(server)) == SOCKET_ERROR) { printf("connect()失敗,錯誤號:%d\n",WSAGetLastError()); closesocket(conn_socket);//如果創(chuàng)建失敗,就關閉連接套接字 WSACleanup(); return -1; } } wh
17、ile(1) { //得到要發(fā)送的信息字符串 puts("\n輸入送到服務器的信息:"); gets(Buffer); if(!strlen(Buffer)) //如果沒有輸入信息,繼續(xù)循環(huán) continue; //發(fā)送網(wǎng)絡信息 if(socket_type != SOCK_DGRAM) retval = send(conn_socket, Buffer, strlen(Buffer)+1, 0); //面向tcp,類似BSD write() else retval = sendto(conn
18、_socket, Buffer, strlen(Buffer)+1, 0, //發(fā)送字符串的時候,須將字符串的結束符\0發(fā)送 (struct sockaddr*)&server, sizeof(server)); //面向UDP if (retval == SOCKET_ERROR) { printf("發(fā)送失敗,錯誤號: %d\n", WSAGetLastError()); break; } else printf("發(fā)送信息:%s\n", Buffer);
19、 //接收網(wǎng)絡信息 i = sizeof(from); if(socket_type != SOCK_DGRAM) retval = recv(conn_socket, Buffer, sizeof(Buffer), 0 );//面向tcp,類似BSD read() else retval = recvfrom(conn_socket, Buffer, sizeof(Buffer), 0, (struct sockaddr*)&from, &i); //面向UDP if (retval == SOCKET_ERRO
20、R) { printf("接收信息失敗,錯誤號:%d\n",WSAGetLastError()); break; } else if (retval == 0) // 對于面向連接的套接字,需要判斷對方是否關閉連接 { printf("服務器關閉連接\n"); break; } else //正確接收到網(wǎng)絡信息 printf("收到 %d 字節(jié)信息:%s \n", retval, Buffer); /
21、/程序的一個退出條件 if(!stricmp(Buffer, "quit")) break; } //關閉套接字 closesocket(conn_socket); WSACleanup(); return 0; } /*******************************************************\ * server.c - 簡單 TCP/UDP 套接字服務器程序 windows環(huán)境 * \*****************************************************
22、**/
#include
23、 int retval, fromlen, i, isconnected = 0; //臨時變量 struct sockaddr_in local, from; //套接字地址結構變量 SOCKET listen_socket, msgsock; //套接字變量 WSADATA wsaData; //windows套接字信息 //先輸入服務器程序所需要的基本信息:端口號,套接字類型 printf("請輸入端口號( >5000 ):"); scanf("%d", &i); if(i < 5000 || i > 65535)
24、 printf("不正確的端口號%d,用缺省端口號5001\n",i); else port = i; printf("請輸入套接字類型( 1,TCP; 2, UDP ):"); scanf("%d", &i); if(i == 1) socket_type = SOCK_STREAM; else if(i == 2) socket_type = SOCK_DGRAM; else printf("不正確的輸入%d,使用TCP數(shù)據(jù)流\n",i); //在windows環(huán)境下,需要先初始化協(xié)議棧 if ((retval = W
25、SAStartup(0x202, &wsaData)) != 0) //初始化套接字版本等信息 { printf("WSAStartup 失敗,錯誤號:%d\n", retval); WSACleanup();//在創(chuàng)建失敗,或者程序結束,都要調用 return -1; } //建立套接字 listen_socket = socket(AF_INET, socket_type, 0); if (listen_socket == INVALID_SOCKET) { pri
26、ntf("socket()失敗,錯誤號:%d\n", WSAGetLastError()); WSACleanup(); return -1; } // 拷貝 解析的信息到sockaddr_in結構中 local.sin_family = AF_INET; local.sin_addr.s_addr = INADDR_ANY; local.sin_port = htons(port); //邦定網(wǎng)絡地址到套接字 if (bind(listen_socket,(struct sockaddr
27、*)&local, sizeof(local) ) == SOCKET_ERROR) //綁定網(wǎng)絡地址 { printf("bind()失敗,錯誤號:%d\n", WSAGetLastError()); WSACleanup(); return -1; } //對于流式套接字,讓套接字處于監(jiān)聽狀態(tài),等待連接到來 if (socket_type != SOCK_DGRAM) { if (listen(listen_socket,5) == SOCKET_ERROR) //監(jiān)聽網(wǎng)絡
28、{ printf("listen()失敗,錯誤號:%d\n", WSAGetLastError()); WSACleanup(); return -1; } } printf("監(jiān)聽端口:%d, 使用協(xié)議:%s\n", port, (socket_type == SOCK_STREAM)? "TCP": "UDP"); while(1) { fromlen =sizeof(from); if (socket_typ
29、e == SOCK_DGRAM ) msgsock = listen_socket; else if( isconnected == 0) {//對于TCP連接,如果沒有連接,等待一個連接的到來 msgsock = accept(listen_socket,(struct sockaddr*)&from, &fromlen); if (msgsock == INVALID_SOCKET) { printf("accept()失敗,錯誤號:%d\n",WSAGet
30、LastError()); WSACleanup(); return -1; } isconnected = 1; printf("從%s收到連接, 端口是:%d\n", inet_ntoa(from.sin_addr), htons(from.sin_port)); } //等待接收網(wǎng)絡信息 if (socket_type != SOCK_DGRAM) retval = recv(msgsock
31、, Buffer, sizeof (Buffer), 0 ); //面向tcp,類似BSD read() else { retval = recvfrom(msgsock, Buffer, sizeof (Buffer), 0, (struct sockaddr *)&from, &fromlen); //面向UDP printf("從%s收到數(shù)據(jù)報,端口是:%d\n", inet_ntoa(from.sin_addr), htons(from.sin_port)); } //結
32、果判斷 if (retval == SOCKET_ERROR) { printf("recv()失敗,錯誤號:%d\n", WSAGetLastError()); closesocket(msgsock); continue; } else if (retval == 0) { printf("客戶端關閉連接\n"); closesocket(msgsock); cont
33、inue; } else //正常接收 { printf("收到 %d 字節(jié)的數(shù)據(jù):%s \n", retval, Buffer); if (socket_type != SOCK_DGRAM) {//對于TCP連接,我們收到"exit"有一個關閉連接的操作 if(!stricmp(Buffer, "exit")) { printf("關閉TCP 連接,等待下一次連接...\n"); closesocket(msgsock); isconnected = 0; conti
34、nue; } } } //信息回送 printf("將同樣的信息回送給客戶端...\n\n"); printf("please input the message:\n"); scanf("%s",Buffer); if (socket_type != SOCK_DGRAM) retval = send(msgsock, Buffer, strlen(Buffer)+1, 0); //面向tcp,類似BSD write() else ret
35、val = sendto(msgsock, Buffer, strlen(Buffer)+1, 0, (struct sockaddr *)&from, fromlen); //面向UDP if (retval == SOCKET_ERROR) { printf("send()失敗,錯誤號:%d\n", WSAGetLastError()); } //程序的一個退出條件 if(!stricmp(Buffer, "quit")) break; } WSACle
36、anup(); return 0; } 3.連接數(shù)據(jù)庫 3.1使用說明書 第一步:在開始菜單中找到SQL SERVER并打開 第二步:建立一個新的數(shù)據(jù)庫。在SQL SERVER中建立一個名為student的數(shù)據(jù)庫 第三步:在student庫下創(chuàng)建一個Stu_Info表,并在表中包含以下字段名:snum,sname,ssex,sage,smajor。輸入一些數(shù)據(jù),進行測試。 第四步:在安全性中設置密碼為123. 第三步:編譯生成可執(zhí)行的文件,點擊運行。根據(jù)提示框中的信息,輸入我們需要插入的數(shù)據(jù)。關閉程序。 第四步:在次點擊運行,查看我們插入的數(shù)據(jù)是否成功的插入
37、。 3.2原理說明 通過ADO訪問數(shù)據(jù)庫的技術進行數(shù)據(jù)庫編程。我們需要在計算機上配置數(shù)據(jù)源。配置數(shù)據(jù)源的過程,就是和讓數(shù)據(jù)庫的驅動程序來對數(shù)據(jù)庫進行操作,以便使我們再程序中,可以調用驅動程序來完成我們需要完成的工作。處理ADO訪問技術之外,還有ODBC(開放式數(shù)據(jù)庫互聯(lián))等。 3.3程序注釋 /******************************************************************* 利用ADO訪問MS SQL2000 要求: 【1】輸出Stu_Info表內的每一條記錄 【2】添加一條新記錄 【3】刪除名字為"李立"的記錄
38、
*****************************************************************/
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \//導入動態(tài)鏈接庫,使我們可以使用ADO編程
no_namespace rename("EOF", "EndOfFile") //為了防止命名沖突,不使用命名空間
#include
39、 std; class STU //定義學生類 { public: char snum[10]; //學號 char sname[10]; //姓名 char ssex[2]; //姓別 long sage; //年齡 char smajor[20]; //專業(yè) public: STU(){} ~STU(){} }; int main() { STU student; //定義學生對象 ::CoInitialize(NULL); // 初始化OLE/COM庫環(huán)境 ,為訪問ADO接口做準備
40、 _RecordsetPtr m_pRecordset("ADODB.Recordset"); //建立記錄集 _ConnectionPtr m_pConnection("ADODB.Connection"); //建立連接 _bstr_t bstrSQL("select * from stu_info"); //查詢語句 char * query_cmd = "DELETE FROM stu_info WHERE sname = 李立"; try //異常處理 { // 創(chuàng)建Connection對象 m_pConnection.Create
41、Instance("ADODB.Connection"); // 設置連接字符串,必須是BSTR型或者_bstr_t類型 _bstr_t strConnect= "Provider=SQLOLEDB;Server=(local);Database=student; uid=sa; pwd=123;"; //若數(shù)據(jù)庫在網(wǎng)絡上則Server為形如(192.168.1.5,3340) //用戶sa和密碼123只是針對我的庫 m_pConnection->Open(strConnect,"","",adModeUnknown); if(m_pConnection==
42、NULL) cerr<<"Lind data ERROR!\n"; // 創(chuàng)建記錄集對象 m_pRecordset.CreateInstance(__uuidof(Recordset)); // 取得表中的記錄 m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(), adOpenDynamic,adLockOptimistic,adCmdText); _variant_t vsnum,vsname,vsage,vssex,vsmajor; //對應庫中的snum,sname,sage,
43、ssex,smajor cout << "學號 姓名 年齡 姓別 專業(yè)"; cout << "\n----------------------------------------------------------------\n"; while (!m_pRecordset->EndOfFile) //如果記錄集沒有到記錄的尾端 { vsnum = m_pRecordset->GetCollect(_variant_t((long)0));//這兒給字段編號和字段名都可以 vsname = m_pRecordset->GetCollec
44、t("sname"); vsage = m_pRecordset->GetCollect("sage"); vssex = m_pRecordset->GetCollect("ssex"); vsmajor = m_pRecordset->GetCollect("smajor"); if (vsnum.vt != VT_NULL&&vsname.vt != VT_NULL&&vsage.vt != VT_NULL &&vssex.vt != VT_NULL&&vsmajor.vt != VT_NULL)//如果不為空 { cout.setf(ios
45、::left); //設置左對齊
cout << setw(14) << (char*)(_bstr_t)vsnum; //輸出學號
cout << setw(14) << (char*)(_bstr_t)vsname; //輸出姓名
cout << setw(8) << vsage.lVal; //輸出年齡
cout << setw(8) << (char*)(_bstr_t)vssex; //輸出性別
cout < 46、取消左對齊
cout << endl;
}
m_pRecordset->MoveNext(); ///移到下一條記錄
}
cout << "\n----------------------------------------------------------------\n"; //輸入將要插入的信息
cout << "\n請輸入你要添加的學生信息\n";
cout << "學號:";
cin >> student.snum;
cout << "\n姓名:";
cin >> student.sname;
cout << "\n 47、年齡:";
cin >> student.sage;
cout << "\n姓別:";
cin >> student.ssex;
cout << "\n專業(yè):";
cin >> student.smajor;
m_pRecordset->MoveFirst(); //移動到第一條記錄
m_pRecordset->AddNew(); ///添加新記錄
m_pRecordset->PutCollect("snum",_variant_t(student.snum)); //將數(shù)據(jù)添加進去輸入庫
m_pRecordset->PutCollect(" 48、sname",_variant_t(student.sname));
m_pRecordset->PutCollect("sage",_variant_t(student.sage));
m_pRecordset->PutCollect("ssex",_variant_t(student.ssex));
m_pRecordset->PutCollect("smajor",_variant_t(student.smajor));
m_pRecordset->Update();//更新操作,如果不更新,對數(shù)據(jù)庫的操作將沒有得到相應的操作
m_pConnection 49、->Execute(query_cmd,NULL,1); //用Execute執(zhí)行sql語句來刪除
m_pRecordset->Close(); // 關閉記錄集
}
// 捕捉異常
catch(_com_error e)
{
// 顯示錯誤信息
cerr << "\nERROR:" << (char*)e.Description();//拋出異常
}
if(m_pConnection->State)
m_pConnection->Close();
::CoUninitialize();
return 0;
}
4.實習總結、體會與收獲
通過這些天老師給我們講授實習課,我知道的我們專業(yè)的實用性,以及在軟件工程上我們應該怎么學,學些什么,光靠課堂上我們學習的東西十分有限,要充分利用課余時間,利用圖書館和互聯(lián)網(wǎng)。學習這個專業(yè),要求我們要深入進去,不能只學會些皮毛,要不斷跟進時代的步伐,不斷學習新的知識,開拓視野,才能在這個專業(yè)上有更好的作為,使我們走得更遠,這門課程的學習使我受益匪淺,為以后的學習打下了基礎,激發(fā)了我的學習興趣,使我明確了自己的專業(yè)方向。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。