課程設計---基于stmp與pop3協議的郵件發(fā)送與接收設計_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  網絡編程實訓報告</b></p><p>  題目: 基于STMP與POP3協議的郵件發(fā)送與接收 </p><p>  姓 名: </p><p>  學 院: </p><p><b>  專 業(yè):

2、 </b></p><p>  班 級: </p><p>  學 號: </p><p>  指導教師: </p><p>  完成日期: 年 月 日</p><p><b>  原創(chuàng)性聲明</b></

3、p><p>  本人鄭重聲明:上交的設計報告,是本人在導師的指導下,獨立進行研究工作所取得的成果。除文中已經注明引用的內容外,本文不包含任何其他個人或集體已經發(fā)表或撰寫過的作品成果。對本文的研究作出重要貢獻的個人和集體,均已在文中以明確方式標明。本人完全意識到本聲明的法律結果由本人承擔。</p><p><b>  作者簽名:</b></p><p&g

4、t;  日期: 年 月 日</p><p><b>  前言</b></p><p>  電子郵件指用電子手段傳送信件、單據、資料等信息的通信方法。電子郵件綜合了電話通信和郵政信件的特點,它傳送信息的速度和電話一樣快,又能象信件一樣使收信者在接收端收到文字記錄。電子郵件系統又稱基于計算機的郵件報文系統。它承擔從郵件進入系統到郵件到達目的地為止的全部處理過程。電子郵

5、件不僅可利用電話網絡,而且可利用任何通信網傳送。在利用電話網絡時,還可利用其非高峰期間傳送信息,這對于商業(yè)郵件具有特殊價值。由中央計算機和小型計算機控制的面向有限用戶的電子系統可以看作是一種計算機會議系統。</p><p>  SMTP 是一種提供可靠且有效電子郵件傳輸的協議。 SMTP 是建模在 FTP 文件傳輸服務上的一種郵件服務,主要用于傳輸系統之間的郵件信息并提供來信有關的通知。</p>&

6、lt;p>  POP 協議允許工作站動態(tài)訪問服務器上的郵件,目前已發(fā)展到第三版,稱為 POP3。POP3 允許工作站檢索郵件服務器上的郵件。POP3 傳輸的是數據消息,這些消息可以是指令,也可以是應答。</p><p>  本實踐是在SMTP和POP協議下設計的一個電子郵箱,能夠實現發(fā)送,接收郵件等功能。</p><p><b>  第一章 需求分析</b>&

7、lt;/p><p><b>  1.1 發(fā)送郵件</b></p><p>  發(fā)送端使用SMTP 發(fā)送郵件到郵件服務器</p><p><b>  發(fā)送郵件過程:</b></p><p>  輸入發(fā)件人郵箱、用戶名、密碼,當與郵件服務器建立連接后,編寫郵件主題和內容,若需要附件的話,就點擊添加附件按鈕

8、進行添加附件。最后點擊發(fā)送按鈕發(fā)送郵件</p><p><b>  1.2 接收郵件</b></p><p>  接收端使用POP3從郵件服務器上下載郵件,并在接收端上閱讀。</p><p><b>  接收郵件過程:</b></p><p>  輸入用戶名和密碼與郵件服務器連接,在文本框中顯示出服

9、務器上所接收的郵件,對需要的閱讀的郵件點擊閱讀下載到接收端進行閱讀。在狀態(tài)欄上顯示于郵件服務器的連接狀態(tài),以及顯示連接過程。若對于不需要的郵件,可在文本框選中,點擊刪除按鈕刪除。</p><p><b>  第二章總體設計</b></p><p>  2.1 總體設計原理</p><p>  電子郵件的工作過程遵循客戶-服務器模式。每份電子郵

10、件的發(fā)送都要涉及到發(fā)送方與接收方,發(fā)送方式構成客戶端,而接收方構成服務器,服務器含有眾多用戶的電子信箱。發(fā)送方通過郵件客戶程序,將編輯好的電子郵件向郵局服務器(SMTP服務器)發(fā)送。郵局服務器識別接收者的地址,并向管理該地址的郵件服務器(POP3服務器)發(fā)送消息。</p><p>  一個郵件系統的傳輸包含用戶代理User Agent傳輸代理TransferAgent 及接受代理DeliveryAgent三大部分

11、。</p><p>  用戶代理是一個用戶發(fā)信和收信的程序, 負責將電子郵件按照一定的標準包裝, 然后送至郵件服務器, 或由郵件服務器收回。傳輸代理負責信件的交換和傳輸。將信件傳送至適當的郵件主機, 再由接受代理將信件分發(fā)至不同的郵件信箱。傳輸代理必須要能夠接受用戶郵件程序送來的信件, 解讀收信人的地址, 根據SMTP 協議將它正確無誤地傳遞到目的地?,F在一般的傳輸代理已采用Sendmail程序完成工作。電子郵件

12、到達郵件主機后, 在經接收代理POP協議被用戶讀取至自己的主機。</p><p>  電子郵件在發(fā)送與接收過程中都要遵循SMTP、POP3等協議,這些協議確保了電子郵件在各種不同系統之間的傳輸。其中,SMTP負責電子郵件的發(fā)送,而POP3則用于接收Internet上的電子郵件。</p><p>  SMTP(Simple Mail Transfer Protocol, SMTP)即簡單郵件

13、傳輸協議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來控制信件的中轉方式。SMTP協議屬于TCP/IP協議族,它幫助每臺計算機在發(fā)送或中轉信件時找到下一個目的地。通過SMTP協議所指定的服務器,我們就可以把E-mail寄到收信人的服務器上</p><p>  POP3(Post Office Protocol 3)即郵局協議,目前已發(fā)展到第三版,稱POP3。它規(guī)定怎樣將個人計算機連接到Internet的郵

14、件服務器和下載電子郵件的電子協議。它是因特網電子郵件的第一個離線協議標準,POP3允許用戶從服務器上把郵件存儲到本地主機(即自己的計算機)上,同時刪除保存在郵件服務器上的郵件,而POP3服務器則是遵循POP3協議的接收郵件服務器,用來接收電子郵件的??偟膩碚fPOP3協議是讓用戶把服務器上的信收到本地來所需要的一種協議。</p><p>  本程序為一個基于SMTP和POP3協議的小型EMAIL收發(fā)程序,簡單的實現

15、了郵件的收發(fā)功能。</p><p>  第三章詳細設計與實現</p><p><b>  3.1設計思路</b></p><p>  本次設計主要基于POP3協議的基礎上實現的,首先詳細了解一下POP3協議</p><p><b>  POP3協議</b></p><p>

16、  1. POP適用于C/S結構的脫機模型的電子郵件協議,目前已發(fā)展到第三版,稱POP3。脫機模型即不能在線操作。</p><p>  2.當客戶機與服務器連接并查詢新電子郵件時,被該客戶機指定的所有將被下載的郵件都將被程序下載到客戶機,下載后,電子郵件客戶機就可以刪除或修改任意郵件,而無需與電子郵件服務器進一步交互。</p><p>  3. POP3客戶向POP3服務器發(fā)送命令并等待響

17、應,POP3命令采用命令行形式,用ASCII碼表示。服務器響應是由一個單獨的命令行組成,或多個命令行組成,響應第一行以ASCII文本+OK或-ERR指出相應的操作狀態(tài)是成功還是失敗。</p><p>  4. 在POP3協議中有三種狀態(tài),認可狀態(tài),處理狀態(tài)和更新狀態(tài)。當客戶機與服務器建立聯系時,一旦客戶機提供了自己身份并成功確認,即由認可狀態(tài)轉入處理狀態(tài),在完成相應的操作后客戶機發(fā)出quit命令,則進入更新狀態(tài),

18、更新之后最后重返認可狀態(tài)。如下圖</p><p>  等待連接身份確認quit命令</p><p>  ——|認可|—————|處理|——————|更新|</p><p><b>  重返認可狀態(tài)</b></p><p>  5.認可狀態(tài)的命令語句。一般情況下,大多數現有的POP3客戶與服務器執(zhí)行采用ASCII明文發(fā)送用

19、戶名和口令,在認可狀態(tài)等待客戶連接的情況下,客戶發(fā)出連接,并由命令user/pass對在網絡上發(fā)送明文用戶名和口令給服務器</p><p>  進行身份確認。一旦確認成功,便轉入處理狀態(tài)。為了避免發(fā)送明文口令的問題,有一種新的認證方法,命令為APOP,使用APOP,口令在傳輸之前被加密。當第一次與服務器連接時,POP3服務器向客戶機發(fā)送一個ASCII碼問候,這個問候由一串字符組成對每個客戶機是唯一的,與當時的時間

20、有關,然后,客戶機把它的純文本口令附加到從服務器接收到的字符串之后,然后計算出結果字符串的MD5單出函數消息摘要,客戶機把用戶名與MD5消息摘要作為APOP命令的參數一起發(fā)送出去。目前,大多數windows上的郵件客戶軟件不支持APOP命令,qpopper支持。</p><p>  6.POP3命令碼如下:</p><p><b>  命令參數狀態(tài)描述</b><

21、/p><p>  假設用C表示客戶端(Client),S表示服務器端(Server)。</p><p><b>  1) 授權狀態(tài)</b></p><p>  客戶端首先與POP3服務器建立TCP連接,服務器接收后發(fā)送一個單行的確認信息。此時POP3會話就進入了授權狀態(tài)。在授權狀態(tài),客戶需要向服務器發(fā)送用戶名和密碼進行確認,具體命令如下: <

22、;/p><p><b>  1>發(fā)送用戶名:</b></p><p>  語法形式:USER <用戶名></p><p>  功能:將客戶的用戶名發(fā)送到服務器。</p><p>  服務器返回:+OK正確的用戶名;-ERR錯誤的用戶名。</p><p>  示例:C:USER myn

23、ame@126.com</p><p>  S:+OK welcome on this server.</p><p>  2>用戶名確認成功后,需要輸入密碼:</p><p>  語法形式:PASS <密碼></p><p>  功能:將客戶的密碼發(fā)送給服務器。</p><p>  服務器返回:+O

24、K正確的用戶名;-OK錯誤的用戶名。</p><p><b>  2) 操作狀態(tài)</b></p><p>  授權成功后, POP3會話將進入操作狀態(tài),客戶就可以執(zhí)行POP3命令進行相應的操作。對于每個命令,服務器都會返回應答信息。下面是在操作狀態(tài)中使用的命令:</p><p><b>  1>STAT命令</b>

25、</p><p><b>  語法形式:STAT</b></p><p>  功能:從服務器中獲郵件總數和總字節(jié)數。</p><p>  服務器返回:郵件總數和總字節(jié)數。</p><p><b>  示例:C:STAT</b></p><p>  S:+OK 2 320<

26、;/p><p><b>  2>LIST命令</b></p><p><b>  語法形式:LIST</b></p><p>  功能:從服務中獲得郵件列表和大小。 </p><p>  服務器返回:列出郵件列表和大小。</p><p><b>  示例:C

27、:LIST</b></p><p>  S:+OK 2 messages (320 octets)</p><p><b>  S:1 120</b></p><p>  S:2 200 </p><p><b>  3>RETR命令</b></p>

28、;<p>  語法形式:RETR <郵件的序號> </p><p>  功能:從服務器中獲得一個郵件。</p><p>  服務器返回:+OK成功;-ERR錯誤。</p><p>  示例:C: RETR 1</p><p>  S:+OK 120 octets</p><p>  S

29、:<服務器發(fā)送信件1內容></p><p><b>  S: .</b></p><p>  注意,這里的“.”是單獨發(fā)送的。 </p><p><b>  4>DELE命令</b></p><p>  語法形式:DELE <郵件的序號> </p><

30、;p>  功能:服務器將郵件標記為刪除,當執(zhí)行QUIT命令時才真正刪除。</p><p>  服務器返回:+OK成功;-ERR錯誤。</p><p>  示例:C:DELE 1</p><p>  S:+OK 1 Deleted</p><p>  示例:C:PASS ***** </p><p>  S:+OK

31、 myname logged in at 19:04響應</p><p><b>  3.2源代碼</b></p><p><b>  發(fā)送端:</b></p><p>  private void textBoxUserName_TextChanged(object sender, EventArgs e)</p

32、><p>  { labelUserName.Visible = !Regex.IsMatch(textBoxUserName.Text,</p><p>  @"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");</p><p><b>  }</b></p&

33、gt;<p>  private void textBoxPassword_TextChanged(object sender, EventArgs e)</p><p>  { labelPassword.Visible = !Regex.IsMatch(textBoxPassword.Text, @"^\w{5,20}$");</p><p><

34、;b>  }</b></p><p>  private void textBoxReceive_TextChanged(object sender, EventArgs e)</p><p>  { labelReceive.Visible = !Regex.IsMatch(textBoxReceive.Text,</p><p>  @&q

35、uot;^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");</p><p><b>  }</b></p><p>  private void textBoxSubject_TextChanged(object sender, EventArgs e)</p><p>  {

36、 labelSubject.Visible = !Regex.IsMatch(textBoxSubject.Text, @"^.{1,}$");</p><p><b>  }</b></p><p>  private void textBoxBody_TextChanged(object sender, EventArgs e)</p&

37、gt;<p>  { labelBody.Visible = !Regex.IsMatch(textBoxBody.Text, @"^.{1,}$");</p><p><b>  }</b></p><p>  private void buttonSend_Click(object sender, EventArgs e)&l

38、t;/p><p>  { string invalidString = "";</p><p>  if (labelUserName.Visible == true) invalidString += "用戶名、";</p><p>  if (labelPassword.Visible == true) invalidSt

39、ring += "口令、";</p><p>  if (labelReceive.Visible == true) invalidString += "收件人、";</p><p>  if (labelSubject.Visible == true) invalidString += "主題、";</p><

40、;p>  if (labelBody.Visible == true) invalidString += "郵件內容、";</p><p>  //if (invalidString.Length > 0)</p><p><b>  //{</b></p><p>  // MessageBox.Show

41、(invalidString.TrimEnd(' ') + "不合規(guī)定");</p><p><b>  //}</b></p><p><b>  else</b></p><p>  { MailAddress from = new MailAddress(textBoxUser

42、Name.Text);</p><p>  MailAddress to = new MailAddress(textBoxReceive.Text);</p><p>  MailMessage message = new MailMessage(from, to);</p><p>  message.Subject = textBoxSubject.Text;

43、</p><p>  message.SubjectEncoding = System.Text.Encoding.UTF8;</p><p>  message.Body = textBoxBody.Text;</p><p>  message.BodyEncoding = System.Text.Encoding.UTF8;</p><p&

44、gt;  if (listBox1.Items.Count > 0)</p><p><b>  {</b></p><p>  for (int i = 0; i < listBox1.Items.Count; i++)</p><p><b>  {</b></p><p>  At

45、tachment attachFile = new Attachment(listBox1.Items[i].ToString());</p><p>  message.Attachments.Add(attachFile);</p><p><b>  }</b></p><p><b>  }</b></p&g

46、t;<p><b>  try</b></p><p>  { SmtpClient client = new SmtpClient("smtp." + from.Host);</p><p>  SendMail(client, from, textBoxPassword.Text, to, message);</p>

47、<p>  MessageBox.Show("郵件發(fā)送出去");</p><p><b>  }</b></p><p>  catch (SmtpException err)</p><p>  { if (err.StatusCode == SmtpStatusCode.GeneralFailure)

48、</p><p><b>  {</b></p><p><b>  try</b></p><p>  { SmtpClient client = new SmtpClient(from.Host);</p><p>  SendMail(client, from, textBoxPasswo

49、rd.Text, to, message);</p><p>  MessageBox.Show("郵件發(fā)送出去");</p><p><b>  }</b></p><p>  catch (SmtpException err1)</p><p>  { MessageBox.Show(err1

50、.Message, "出錯");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  { MessageBox.Show(err.Message, "

51、出錯");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  private void Se

52、ndMail( SmtpClient client, MailAddress from, string password, MailAddress to, MailMessage message)</p><p><b>  {</b></p><p>  client.UseDefaultCredentials = false;</p><p&g

53、t;  client.Credentials = new NetworkCredential(from.Address, password);</p><p>  client.DeliveryMethod = SmtpDeliveryMethod.Network;</p><p>  try {client.Send(message);}</p><p><

54、;b>  catch</b></p><p><b>  { throw;</b></p><p><b>  }</b></p><p><b>  finally</b></p><p>  { message.Dispose();</p>

55、;<p><b>  }</b></p><p><b>  }</b></p><p>  private void buttonAddAttachment_Click(object sender, EventArgs e)</p><p><b>  {</b></p>

56、<p>  OpenFileDialog myOpenFileDialog = new OpenFileDialog();</p><p>  myOpenFileDialog.CheckFileExists = true;</p><p>  myOpenFileDialog.ValidateNames = true;</p><p>  myOpen

57、FileDialog.Multiselect = true;</p><p>  myOpenFileDialog.ShowDialog();</p><p>  if (myOpenFileDialog.FileNames.Length > 0)</p><p><b>  {</b></p><p>  lis

58、tBox1.Items.AddRange(myOpenFileDialog.FileNames);</p><p><b>  }</b></p><p><b>  }</b></p><p>  private void button1_Click(object sender, EventArgs e)</p&g

59、t;<p><b>  {</b></p><p>  this.Hide();</p><p>  FormReceiveMail re = new FormReceiveMail();</p><p>  re.Show();</p><p><b>  }</b></p&g

60、t;<p><b>  }</b></p><p><b>  }</b></p><p><b>  接收端:</b></p><p>  private void connect_Click(object sender, EventArgs e)</p><p&g

61、t;<b>  {</b></p><p>  //將光標置為等待狀態(tài)</p><p>  Cursor cr = Cursor.Current;</p><p>  Cursor.Current = Cursors.WaitCursor;</p><p>  //用110端口新建POP3服務器連接</p>

62、<p>  Server = new TcpClient(textBoxpop3.Text, 110);</p><p>  listBoxstatus.Items.Clear();</p><p><b>  try</b></p><p><b>  {</b></p><p>&l

63、t;b>  //初始化</b></p><p>  NetStrm = Server.GetStream();</p><p>  RdStrm = new StreamReader(Server.GetStream());</p><p>  listBoxstatus.Items.Add(RdStrm.ReadLine());</p>

64、;<p><b>  //登錄服務器過程</b></p><p>  Data = "USER " + textBoxuser.Text + CRLF;</p><p>  szData = System.Text.Encoding.UTF8.GetBytes(Data.ToCharArray());</p><p

65、>  NetStrm.Write(szData, 0, szData.Length);</p><p>  listBoxstatus.Items.Add(RdStrm.ReadLine());</p><p>  Data = "PASS " + textBoxpass.Text + CRLF;</p><p>  szData = Sy

66、stem.Text.Encoding.UTF8.GetBytes(Data.ToCharArray());</p><p>  NetStrm.Write(szData, 0, szData.Length);</p><p>  listBoxstatus.Items.Add(RdStrm.ReadLine());</p><p>  //向服務器發(fā)送STAT命令,

67、從而取得郵箱的相關信息:郵件數量和大小</p><p>  Data = "STAT" + CRLF;</p><p>  szData = System.Text.Encoding.UTF8.GetBytes(Data.ToCharArray());</p><p>  NetStrm.Write(szData, 0, szData.Lengt

68、h);</p><p>  listBoxstatus.Items.Add(RdStrm.ReadLine());</p><p><b>  //改變按鈕的狀態(tài)</b></p><p>  connect.Enabled = false;</p><p>  disconnect.Enabled = true;<

69、/p><p>  receive.Enabled = true;</p><p>  //將光標置回原來狀態(tài)</p><p>  Cursor.Current = cr;</p><p><b>  }</b></p><p>  catch (InvalidOperationException er

70、r)</p><p><b>  {</b></p><p>  listBoxstatus.Items.Add("Error: " + err.ToString());</p><p><b>  }</b></p><p><b>  }</b><

71、/p><p>  private void disconnect_Click_1(object sender, EventArgs e)</p><p><b>  {</b></p><p>  //將光標置為等待狀態(tài)</p><p>  Cursor cr = Cursor.Current;</p><

72、;p>  Cursor.Current = Cursors.WaitCursor;</p><p>  //向服務器發(fā)送QUIT命令從而結束和POP3服務器的會話</p><p>  Data = "QUIT" + CRLF;</p><p>  szData = System.Text.Encoding.ASCII.GetBytes(Da

73、ta.ToCharArray());</p><p>  NetStrm.Write(szData, 0, szData.Length);</p><p>  listBoxstatus.Items.Add(RdStrm.ReadLine());</p><p><b>  //斷開連接</b></p><p>  Ne

74、tStrm.Close();</p><p>  RdStrm.Close();</p><p><b>  //改變按鈕的狀態(tài)</b></p><p>  connect.Enabled = true;</p><p>  disconnect.Enabled = false;</p><p>

75、  receive.Enabled = false;</p><p>  //將光標置回原來狀態(tài)</p><p>  Cursor.Current = cr;</p><p><b>  }</b></p><p>  private void receive_Click(object sender, EventArgs

76、 e)</p><p><b>  {</b></p><p>  //將光標置為等待狀態(tài)</p><p>  Cursor cr = Cursor.Current;</p><p>  Cursor.Current = Cursors.WaitCursor;</p><p>  string s

77、zTemp;</p><p>  listBoxcontent.Items.Clear();</p><p><b>  try</b></p><p><b>  {</b></p><p>  //根據郵件編號從服務器獲得相應郵件</p><p>  Data = &qu

78、ot;RETR " + textBoxmailnum.Text + CRLF;</p><p>  szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());</p><p>  NetStrm.Write(szData, 0, szData.Length);</p><p>  sz

79、Temp = RdStrm.ReadLine();</p><p>  if (szTemp[0] != '-')</p><p><b>  {</b></p><p>  //不斷地讀取郵件內容,只到結束標志:英文句號</p><p>  while (szTemp != ".")

80、</p><p><b>  {</b></p><p>  listBoxcontent.Items.Add(szTemp);</p><p>  szTemp = RdStrm.ReadLine();</p><p><b>  }</b></p><p>  //若Ba

81、ckupChBox未選中,則收取郵件后,刪除保留在服務器上的郵件</p><p>  /*if(BackupChBox.Checked == false)</p><p><b>  {</b></p><p>  Data = "DELE" + MailNum.Text + CRLF;</p><p&g

82、t;  szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());</p><p>  NetStrm.Write(szData,0,szData.Length);</p><p>  Status.Items.Add(RdStrm.ReadLine());</p><p><b> 

83、 }*/</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  listBoxstatus.Items.Add(szTemp);</p><p&g

84、t;<b>  }</b></p><p>  //將光標置回原來狀態(tài)</p><p>  Cursor.Current = cr;</p><p><b>  }</b></p><p>  catch (InvalidOperationException err)</p><

85、p><b>  {</b></p><p>  listBoxstatus.Items.Add("Error: " + err.ToString());</p><p><b>  }</b></p><p><b>  }</b></p><p> 

86、 private void button1_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  this.Hide();</p><p>  FormSendMail sm = new FormSendMail();</p><p>  sm.S

87、how();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  第四章 測試</b></p><p><b>  發(fā)送郵件

88、主界面:</b></p><p>  發(fā)送郵件成功后實例:</p><p><b>  接收郵件主界面:</b></p><p>  接收郵件成功后實例:</p><p>  第五章 實訓設計體會</p><p>  通過這次C#網絡編程實訓,對本學期的與網絡有關的課程進行了一次總結和

89、吸收,使知識更加牢固,對課程有了進一步的理解,也從中找到今后學習和研究的方向。</p><p>  這次實訓的完成與老師的悉心指導是分不開的。感謝他在我學習遇到困惑時的指點,在這里向老師表示衷心的感謝!</p><p>  同樣還要感謝對本人做出幫助的同學,在此向他們表達我最真誠的謝意!</p><p><b>  參考文獻</b></p

溫馨提示

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

評論

0/150

提交評論