2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  實 驗 報 告</b></p><p><b>  |</b></p><p><b>  |</b></p><p>  實驗名稱 網(wǎng)絡(luò)聊天室的實現(xiàn) </p><p>  課程名稱 計算機操作系統(tǒng)

2、 </p><p><b>  |</b></p><p><b>  |</b></p><p>  目 錄 </p><p>  設(shè)計原理———————————————————————4</p><p>  程序流程圖———————————

3、———————————9</p><p>  設(shè)計步驟———————————————————————10</p><p>  使用方法說明—————————————————————21</p><p>  實驗結(jié)果及分析————————————————————24</p><p><b>  設(shè)計原理</b></p

4、><p>  計算機網(wǎng)絡(luò)技術(shù)發(fā)展至今已經(jīng)大大超越了人們當(dāng)初的預(yù)想,無論是人們?nèi)粘5墓ぷ鬟€是學(xué)習(xí),我們都越來越多的依靠到互聯(lián)網(wǎng)。各種實時性的聊天娛樂軟件也同時誕生,而且為我們的即時通訊帶來了眾多的方便,比如說大家所熟知的騰訊QQ、微軟的MSN、移動的Fetion等,都是做的比較成功的實時聊天工具。隨著網(wǎng)絡(luò)的日益普及,各種聊天工具也層出不窮,接下來的課程設(shè)計就是針對一個簡單的網(wǎng)絡(luò)聊天程序,利用MFC為開發(fā)工具,實現(xiàn)基本的

5、通訊功能。</p><p>  此程序主要分為兩部分:服務(wù)器端和客戶端。服務(wù)器端用于提供一個網(wǎng)絡(luò)端口,等待客戶端發(fā)出請求,登錄到此服務(wù)端,然后進行網(wǎng)絡(luò)通訊和消息的轉(zhuǎn)發(fā);客戶端可通過服務(wù)器端的IP地址發(fā)送連接請求,然后登陸聊天室。在服務(wù)器端的成員列表欄中會顯示在線的所有人名單,有人退出聊天室,成員列表會自動除名。服務(wù)器端同時也提供了成員之間的私聊功能,此時服務(wù)器端作為一個轉(zhuǎn)發(fā)站,進行消息的轉(zhuǎn)發(fā)。整個程序的主體使用了

6、CSocket類的方法,實現(xiàn)了網(wǎng)絡(luò)通訊聊天。</p><p>  整個程序設(shè)計為兩個部分:服務(wù)器 (ChatServer)和客戶端 (Chat)</p><p>  多人聊天的關(guān)鍵在于要將每個客戶端發(fā)送過來的消息分發(fā)給所有其他客戶端,為了解決這個問題,在服務(wù)器程序中建立一個套接口鏈表,用來保存所有與客戶端建立了連接的服務(wù)端口。下面描述了多人聊天的實現(xiàn)原理:</p><p

7、>  當(dāng)客戶端Client N向?qū)?yīng)的服務(wù)端口N發(fā)送了消息Message,服務(wù)端口N將Message復(fù)制給所有套接口列表(USERLIST)中的套接口緩沖區(qū),然后向每個服務(wù)端口發(fā)送WRITE消息,使每個服務(wù)端口將Message發(fā)送給對應(yīng)的客戶端。這樣,所有客戶端就都獲得了Message消息,實現(xiàn)了多人聊天功能。</p><p>  BOOL CClientSocketList::Sends(char *bu

8、ff,int n)</p><p>  {CClientSocket *curr=Head;</p><p>  while (curr)</p><p>  {curr->Send(buff,n);</p><p>  curr=curr->Next;}</p><p>  return true;}&l

9、t;/p><p>  USERLIST表時多人聊天程序的核心,它是一個動態(tài)變化的鏈表,為空表示沒有客戶端建立了連接,不為空時每個元素就代表有一個客戶端與服務(wù)器建立了連接。</p><p>  以下程序是私聊功能的實現(xiàn):</p><p>  BOOL CClientSocketList::OnlySend(char *buff,int n,int who)</p&g

10、t;<p><b>  {</b></p><p>  CClientSocket *curr=Head;</p><p>  while (curr && who>0)</p><p>  {curr=curr->Next;</p><p><b>  who--;}

11、</b></p><p>  curr->Send(buff,n);</p><p>  return true;}</p><p>  以下是此程序的效果截圖:</p><p><b>  服務(wù)器端的效果截圖</b></p><p>  用戶“yq”的登錄界面</p>

12、;<p>  用戶“zxl”的登錄界面</p><p><b>  功能描述</b></p><p>  多人會話。此程序分為服務(wù)器端和客戶端,當(dāng)客戶端要進入聊天室的時候,就必須通過網(wǎng)絡(luò)連接到服務(wù)端,以實現(xiàn)和其它客戶端的通訊功能。其中最簡單的一種通訊方式就是多人會話,運用多線程同時對多個用戶的信息進行監(jiān)聽,服務(wù)器通過轉(zhuǎn)發(fā)消息,讓所有人都可以得到消息,實現(xiàn)

13、多人會話。</p><p>  一對一會話。此程序的服務(wù)器端除了能夠提供多人會話的功能外,還提供了私人聊天功能,可以實現(xiàn)一對一的聊天。就是在消息轉(zhuǎn)發(fā)的時候,私聊的消息只發(fā)給私聊的對象,而其他人看不到此消息,但是此消息會通過服務(wù)器端轉(zhuǎn)發(fā),然后再到達目的客戶端。</p><p>  個性化的昵稱。為了區(qū)別用戶,此程序還允許用戶可以自定義個性化的昵稱。在用戶登錄的時候,用戶可以為自己設(shè)定一個昵稱

14、,以便在多人會話的時候作為身份識別。同時服務(wù)器端也會以此昵稱作為客戶端的登錄身份,服務(wù)器管理員,同樣也顯示在其他用戶的在線列表欄中。</p><p>  服務(wù)器登陸。服務(wù)器端開啟之后處于監(jiān)聽狀態(tài),多線程工作,接受每一個用戶的連接請求。而客戶端只需輸入服務(wù)器端的IP地址即可,端口在服務(wù)器端自動生成。</p><p><b>  操作系統(tǒng)關(guān)鍵字:</b></p>

15、;<p><b>  進程間通信;</b></p><p><b>  同步互斥;</b></p><p><b>  多線程操作</b></p><p><b>  設(shè)計步驟:</b></p><p>  本聊天程序?qū)崿F(xiàn)工具為Visual

16、C++ 6.0 MFC,主要利用其中用于網(wǎng)絡(luò)編程的CSocket類實現(xiàn)網(wǎng)絡(luò)通訊功能。主要程序分為兩部分:</p><p>  服務(wù)器端,界面如下圖所示:</p><p><b>  主要代碼如下所示:</b></p><p> ?。?)、CChatRoomServerDlg函數(shù)用來對服務(wù)器端進行初始化</p><p> 

17、 void CChatServerDlg::OnPaint() </p><p>  {if (IsIconic())</p><p>  {CPaintDC dc(this); // device context for painting</p><p>  SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc

18、(), 0);</p><p>  int cxIcon = GetSystemMetrics(SM_CXICON);</p><p>  int cyIcon = GetSystemMetrics(SM_CYICON);</p><p>  CRect rect;</p><p>  GetClientRect(&rect);<

19、;/p><p>  int x = (rect.Width() - cxIcon + 1) / 2;</p><p>  int y = (rect.Height() - cyIcon + 1) / 2;</p><p>  dc.DrawIcon(x, y, m_hIcon);}</p><p><b>  else</b>

20、;</p><p>  {CDialog::OnPaint();}</p><p><b>  }</b></p><p>  HCURSOR CChatServerDlg::OnQueryDragIcon()</p><p>  {return (HCURSOR) m_hIcon;}</p><p&

21、gt;<b>  //開始服務(wù)器按鈕</b></p><p>  void CChatServerDlg::OnButtonStart() </p><p>  {m_IDC_BUTTON_START.EnableWindow(FALSE);//讓開啟按鈕失效</p><p>  if (!ListenSocket.Create(6400))/

22、/綁定端口</p><p>  {AfxMessageBox("綁定端口失?。?quot;);}</p><p>  if (!ListenSocket.Listen())//服務(wù)器偵聽</p><p>  {AfxMessageBox("偵聽失??!");}</p><p>  AfxMessageBox(&qu

23、ot;服務(wù)器開啟成功!");</p><p>  CString tTmep;</p><p>  tTmep="系統(tǒng)消息:服務(wù)器已開啟成功!";</p><p>  m_ChatList.AddString(tTmep);</p><p>  m_IDC_BUTTON_STOP.EnableWindow(TRU

24、E);//恢復(fù)停止按鈕}</p><p>  void CChatServerDlg::OnButtonStop() </p><p>  {m_IDC_BUTTON_STOP.EnableWindow(FALSE);</p><p>  char s[30]="聊天服務(wù)器停止工作了?。?quot;;</p><p>  Liste

25、nSocket.CCSL.Sends(s,30);//廣播聊天服務(wù)器停止消息</p><p>  CClientSocket *p=ListenSocket.CCSL.Head;</p><p><b>  while (p)</b></p><p>  {p->Close();</p><p>  ListenS

26、ocket.CCSL.Del(p);//釋放鏈表中的套接字</p><p>  p=ListenSocket.CCSL.Head;}</p><p>  ListenSocket.Close();</p><p>  m_USER.ResetContent();//清楚服務(wù)器在線用戶列表</p><p>  m_IDC_BUTTON_STAR

27、T.EnableWindow(TRUE);}</p><p>  void CChaServerDlg::OnButtonSend() </p><p><b>  {int n;</b></p><p>  char message[1000];</p><p>  UpdateData(TRUE);</p&g

28、t;<p>  if (m_IDC_BUTTON_MESSAGE=="")</p><p>  {MessageBox("請輸入消息??!","提示",MB_OK);}</p><p><b>  else</b></p><p>  {m_IDC_BUTTON_MESSA

29、GE="服務(wù)器端說:"+m_IDC_BUTTON_MESSAGE;</p><p>  n=m_IDC_BUTTON_MESSAGE.GetLength();</p><p>  sprintf(message,"%s",m_IDC_BUTTON_MESSAGE.GetBuffer(n));</p><p>  message

30、[n]=0;</p><p>  ListenSocket.CCSL.Sends(message,1000);}</p><p>  m_IDC_BUTTON_MESSAGE="";</p><p>  UpdateData(FALSE);}</p><p> ?。?)、CClientSocket函數(shù)用于管理用戶列表及會話

31、</p><p>  void CClientSocket::OnReceive(int nErrorCode)</p><p>  {char buff[1000];</p><p>  char all_user[2000];</p><p>  char name[20];</p><p><b>  

32、int n;</b></p><p><b>  int m;</b></p><p>  n=this->Receive(buff,1000);</p><p>  buff[n]=0;</p><p>  char Flag[10];</p><p>  for (int i

33、=0;i<8;i++)</p><p>  {Flag[i]=buff[i];}</p><p>  Flag[8]=0;</p><p>  CChatRoomServerApp *pApp=(CChatRoomServerApp*)AfxGetApp();</p><p>  CChatRoomServerDlg *pDlg=(CC

34、hatRoomServerDlg*)pApp->m_pMainWnd;</p><p>  if (strcmp(Flag,"NEW_USER")==0)</p><p>  {CString sTemp;</p><p>  for (i=9;buff[i]!=0;i++)</p><p>  {buff[i-9]

35、=buff[i];}</p><p>  buff[i-9]=0;</p><p>  sTemp.Format("%s",buff);</p><p>  pDlg->m_USER.AddString(sTemp);</p><p>  m=pDlg->m_USER.GetCount();</p>

36、<p>  strcpy(all_user,"USERLIST");</p><p>  for (i=0;i<m;i++)</p><p>  {pDlg->m_USER.GetText(i,name);</p><p>  strcat(all_user,name);</p><p>  st

37、rcat(all_user,"|");}</p><p>  strcat(buff,"進入聊天室");</p><p>  List->Sends(all_user,strlen(all_user));}</p><p><b>  else</b></p><p>  {

38、if (strcmp(Flag,"CLOSEUSE")==0)</p><p>  {CString sTemp;</p><p>  for (i=9;buff[i]!=0;i++)</p><p>  {buff[i-9]=buff[i];}</p><p>  buff[i-9]=0;</p><

39、p>  sTemp.Format("%s",buff);//離線用戶昵稱</p><p>  m=pDlg->m_USER.GetCount();</p><p>  for (i=0;i<m;i++)</p><p>  {pDlg->m_USER.GetText(i,name);</p><p>

40、;  if (strcmp(name,buff)==0)</p><p>  {pDlg->m_USER.DeleteString(i);</p><p><b>  }</b></p><p>  //將新的在線用戶昵稱名單發(fā)給所有用戶</p><p>  m=pDlg->m_USER.GetCount()

41、;</p><p>  strcpy(all_user,"USERLIST");</p><p>  for (i=0;i<m;i++)</p><p>  {pDlg->m_USER.GetText(i,name);</p><p>  strcat(all_user,name);</p>&l

42、t;p>  strcat(all_user,"|");</p><p>  strcat(buff,"離開聊天室!");</p><p>  List->Sends(all_user,strlen(all_user));</p><p>  List->Del(this);}</p><p

43、>  else if (strcmp(Flag,"PrivChat")==0)//私聊</p><p>  {CString sTemp;</p><p>  for (i=9;buff[i]!='|';i++)</p><p>  {buff[i-9]=buff[i];}</p><p>  buf

44、f[i-9]=0;</p><p>  sTemp.Format("%s",buff);</p><p>  for (int k=i+1;buff[k]!=0;k++)</p><p>  {buff[k-i-1]=buff[k];}</p><p>  buff[k-i-1]=0;</p><p&g

45、t;  m=pDlg->m_USER.GetCount();</p><p>  for (i=0;i<m;i++)</p><p>  {pDlg->m_USER.GetText(i,name);</p><p>  if (strcmp(name,sTemp)==0)</p><p>  {List->OnlySe

46、nd(buff,strlen(buff),i);}</p><p><b>  }}</b></p><p><b>  else</b></p><p>  {List->Sends(buff,n);//將聊天信息群發(fā)給所有用戶}</p><p><b>  }</b>

47、</p><p>  CString sTemp;</p><p>  sTemp.Format("收到:%s",buff);</p><p>  pDlg->m_ChatList.AddString(sTemp);</p><p>  pDlg->m_ChatList.SetTopIndex(pDlg->

48、;m_ChatList.GetCount()-1);</p><p>  CSocket::OnReceive(nErrorCode);}</p><p>  (3)、一下代碼用于設(shè)定用戶的多人會話與一對一會話</p><p>  BOOL CClientSocketList::Add(CClientSocket *add)</p><p>

49、  {CClientSocket *tmp=Head;</p><p>  if (!Head)</p><p>  {Head=add;</p><p>  return false;}</p><p>  while (tmp->Next)</p><p>  {tmp=tmp->Next;}</

50、p><p>  tmp->Next=add;</p><p>  return true;}</p><p>  //從鏈表隊列中刪除Socket</p><p>  BOOL CClientSocketList::Del(CClientSocket *d)</p><p>  {CClientSocket *p1=

51、Head;</p><p>  CClientSocket *p2;</p><p>  if (!Head)</p><p>  {return false;}</p><p>  if (Head==d)</p><p>  {Head=p1->Next;</p><p>  p1-&

52、gt;Close();</p><p>  delete p1;</p><p>  return true;}</p><p>  for (;p1->Next!=NULL;p1=p1->Next)</p><p>  {if (p1->Next==d)</p><p>  {p2=p1->N

53、ext;</p><p>  p1->Next=p2->Next;</p><p>  p2->Close();</p><p>  delete p2;</p><p>  return true;}}</p><p>  return false;}</p><p>  /

54、/向所有用戶發(fā)送消息</p><p>  BOOL CClientSocketList::Sends(char *buff,int n)</p><p>  {CClientSocket *curr=Head;</p><p>  while (curr)</p><p>  {curr->Send(buff,n);</p>

55、<p>  curr=curr->Next;}</p><p>  return true;}</p><p>  //僅僅向私聊用戶who發(fā)送信息</p><p>  BOOL CClientSocketList::OnlySend(char *buff,int n,int who)</p><p>  {CClient

56、Socket *curr=Head;</p><p>  while (curr && who>0)</p><p>  {curr=curr->Next;</p><p><b>  who--;}</b></p><p>  curr->Send(buff,n);</p>

57、<p>  return true;}</p><p>  客戶端,截圖如下所示:</p><p><b>  主要代碼:</b></p><p>  void CChatDlg::OnConnectButton() //連接聊天室服務(wù)器</p><p>  {// TODO: Add your contr

58、ol notification handler code here</p><p>  UpdateData(TRUE);</p><p>  char *nikename;</p><p>  char *address;</p><p><b>  int n;</b></p><p>  i

59、f (!myServerSocket->Create())</p><p>  {myServerSocket->Close();</p><p>  AfxMessageBox("網(wǎng)絡(luò)創(chuàng)建錯誤??!");</p><p><b>  return;}</b></p><p>  n=m_I

60、DC_EDIT_ADDRESS.GetLength();</p><p>  address=new char(n+1);</p><p>  sprintf(address,"%s",m_IDC_EDIT_ADDRESS.GetBuffer(n));</p><p>  address[n]=0;</p><p>  n

61、=m_IDC_EDIT_NIKENAME.GetLength();</p><p>  nikename=new char(n+1);</p><p>  sprintf(nikename,"%s",m_IDC_EDIT_NIKENAME.GetBuffer(n));</p><p>  nikename[n]=0;</p><

62、;p>  if (!myServerSocket->Connect(address,6767))</p><p>  {myServerSocket->Close();</p><p>  AfxMessageBox("網(wǎng)絡(luò)連接錯誤,請檢查服務(wù)器地址。");</p><p><b>  return; }</b&

63、gt;</p><p>  m_BNSend.EnableWindow(TRUE);</p><p>  m_BNExit.EnableWindow(TRUE);</p><p>  myServerSocket->NikeName=nikename;</p><p><b>  //發(fā)送新用戶昵稱</b><

64、/p><p>  char message2[20];</p><p>  strcpy(message2,"NEW_USER|");</p><p>  strcat(message2,myServerSocket->NikeName);</p><p>  if (myServerSocket->Send(me

65、ssage2,20))//——————————連接聊天室服務(wù)器</p><p>  {AfxMessageBox("連接成功??!");}</p><p><b>  else</b></p><p>  {AfxMessageBox("網(wǎng)絡(luò)傳輸錯誤?。?!");}}</p><p>

66、  void CChatRoomDlg::OnSendButton() </p><p>  {// TODO: Add your control notification handler code here</p><p><b>  int n;</b></p><p>  char message[1000];</p>&l

67、t;p>  CString to_name;</p><p>  UpdateData(TRUE);</p><p>  if (m_IDC_EDIT_MESSAGE=="")</p><p>  {MessageBox("請輸入要發(fā)送的消息!","提示",MB_OK);}</p>&l

68、t;p><b>  else</b></p><p>  {if (m_SL==TRUE)//私聊</p><p>  {if (m_USER.GetCurSel()>=0)</p><p>  {m_USER.GetText(m_USER.GetCurSel(),to_name);</p><p>  m_

69、IDC_EDIT_MESSAGE=myServerSocket->NikeName+m_IDC_EDIT_MESSAGE;</p><p>  m_ChatList.AddString(m_IDC_EDIT_MESSAGE);</p><p>  m_IDC_EDIT_MESSAGE="PrivChat|"+to_name+"|"+m_IDC_

70、EDIT_MESSAGE;</p><p>  n=m_IDC_EDIT_MESSAGE.GetLength();</p><p>  sprintf(message,"%s",m_IDC_EDIT_MESSAGE.GetBuffer(n));</p><p>  message[n]=0;}</p><p><b&

71、gt;  else</b></p><p>  {AfxMessageBox("沒有私聊對象!");</p><p><b>  return;}}</b></p><p><b>  else</b></p><p>  {m_IDC_EDIT_MESSAGE=my

72、ServerSocket->NikeName+m_IDC_EDIT_MESSAGE;</p><p>  n=m_IDC_EDIT_MESSAGE.GetLength();</p><p>  sprintf(message,"%s",m_IDC_EDIT_MESSAGE.GetBuffer(n));</p><p>  message[n

73、]=0;}</p><p>  if (myServerSocket->Send(message,n+1))</p><p>  {m_IDC_EDIT_MESSAGE="";</p><p>  UpdateData(FALSE);}</p><p><b>  else</b></p&

74、gt;<p>  {AfxMessageBox("網(wǎng)絡(luò)傳輸錯誤!");}}}</p><p>  void CChatRoomDlg::OnExitButton() </p><p>  {// TODO: Add your control notification handler code here</p><p>  char

75、message2[20];</p><p>  strcpy(message2,"CLOSEUSE|");</p><p>  strcat(message2,myServerSocket->NikeName);</p><p>  if (myServerSocket->Send(message2,20))//————————離開聊

76、天室</p><p><b>  {}</b></p><p><b>  else</b></p><p>  {AfxMessageBox("網(wǎng)絡(luò)傳輸錯誤!");}</p><p>  CDialog::OnOK();}</p><p>  BOOL

77、CChatRoomDlg::GetMessage()//顯示聊天信息</p><p>  {char buff[2000];</p><p>  char name[20];</p><p>  int count;</p><p>  count=myServerSocket->Receive(buff,2000);</p>

78、;<p>  buff[count]=0;</p><p>  char Flag[10];</p><p>  for (int i=0;i<8;i++)</p><p>  {Flag[i]=buff[i];}</p><p>  Flag[8]=0;</p><p>  if (strcmp(

79、Flag,"USERLIST")==0)//新用戶昵稱列表</p><p>  {m_USER.ResetContent();//清空列表</p><p>  CString sTemp;</p><p><b>  int j=8;</b></p><p>  for (i=8;buff[i]!=0

80、;i++)</p><p>  {if (buff[i]=='|')//昵稱分隔符號</p><p>  {for (int m=0;j<i;j++,m++)</p><p>  {name[m]=buff[j];}</p><p>  name[m]='\0';</p><p>

81、  sTemp.Format("%s",name);//昵稱</p><p>  m_USER.AddString(sTemp);</p><p>  j=i+1;}} }</p><p>  else//聊天信息</p><p>  { m_ChatList.AddString(buff);}</p>&l

82、t;p>  return true;}</p><p><b>  設(shè)計使用說明:</b></p><p>  此聊天程序的實現(xiàn)主要通過兩部分實現(xiàn),一個是客戶端,一個是服務(wù)器端。服務(wù)器端可開啟服務(wù),等待用戶登錄,實現(xiàn)消息的中轉(zhuǎn)發(fā)送;客戶端可以通過服務(wù)器端的IP地址登陸到聊天室,從而接入聊天網(wǎng)絡(luò),實現(xiàn)局域互通。接下來就介紹一下此程序的使用過程:</p>

83、<p>  首先,服務(wù)器端應(yīng)該開啟監(jiān)聽服務(wù),等待客戶端的連接請求,并實時的給予響應(yīng)。</p><p>  此時服務(wù)器端口處于監(jiān)聽狀態(tài),可以接受來自任何一個客戶端的連接請求。于是開啟客戶端進行連接。在客戶端口里面,可選項有:用戶昵稱,服務(wù)器IP地址,在線用戶列表,用戶私聊選項,消息發(fā)送窗口,消息接收窗口。用戶可輸入服務(wù)器端的IP地址進行連接請求,加入聊天室。同時也可以為自己創(chuàng)建一個個性化的昵稱,作為身

84、份標識。</p><p>  若在在聊天途中服務(wù)器出現(xiàn)異常或者斷開,在用戶端有如下的提示:</p><p>  下圖是用戶之間的聊天界面,注意在用戶聊天時,首先要選擇聊天的對象,然后發(fā)送消息,才可以與用戶之間進行私聊。</p><p><b>  結(jié)果及分析:</b></p><p>  此程序的功能達到了之前預(yù)想的可能

85、,通過服務(wù)器端的消息轉(zhuǎn)發(fā),實現(xiàn)了多用戶之間的群聊,和單個用戶之間的私聊,完整了一個簡單的網(wǎng)絡(luò)聊天軟件的功能。通過此次的實驗,也同時讓我對于CSocket網(wǎng)絡(luò)聊天類的使用有了更深入的了解,在關(guān)于網(wǎng)絡(luò)編程的方面也有了新的認識。雖然此程序的功能還比較的簡單,而且某些方面還沒能完善,但是,我相信我只是一個開始。</p><p>  現(xiàn)在就軟件自身還存在的問題羅列如下:</p><p>  成員列表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論