版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
軟件學院課程設計報告書課程名稱軟件工程概論設計題目圖書電子商務網(wǎng)站建設專業(yè)班級學號姓名指導教師目錄TOC\o"1-4"\h\z\u1設計時間 設計時間2013年6月17日-2013年6月21日2設計目的《軟件工程課程設計》的目的是使學生掌握軟件工程的基本原理和基本方法,充分理解和掌握軟件工程學的概念、原理、方法和技術?,F(xiàn)在生活節(jié)奏越來越快,工作壓力也越來越大,真正能給自己學習充電的時間越來越少,所以,人們都在考慮怎么給自己開小灶,以免落后于時代。在這個大環(huán)境下,圖書在線購買迅速被人們所接受,從而也引發(fā)了圖書行業(yè)的大爆發(fā),競爭空前激烈。所以,把圖書銷售搬到網(wǎng)上進行,建立圖書行業(yè)電子商務網(wǎng)站是很有必要,也是很有市場的。3設計任務本課程設計要求學生運用軟件工程的思想,嚴格按照軟件生命周期各階段的目的和任務,完成對系統(tǒng)的分析和設計。4設計內(nèi)容4.1設計內(nèi)容概述4.1.1組織機構介紹構建書店電子商務網(wǎng)站,可以促使公司業(yè)務重組,使商品流、物流、資金流等有機結合,加速公司內(nèi)部的運作效率,并深刻地改變著企業(yè)的營銷方式,向網(wǎng)絡化轉(zhuǎn)變,節(jié)省經(jīng)營費用;同時,通過構建企業(yè)電子商務網(wǎng)站,不僅建立了公司的企業(yè)文化,而且能樹立公司形象,建立起了企業(yè)的品牌效應。公司對這些經(jīng)營管理效益的追求成為構建書店電子商務網(wǎng)站的內(nèi)部經(jīng)營管理需求因素。在傳統(tǒng)的購物方式四出尋找商品所化費的時間、付出的交通費用以及體力上的透支相對于越來越煩忙的人們來說是一種浪費,隨著Internet的普及以及人們生活質(zhì)量的提高,消費者漸漸意識到網(wǎng)上購物方便快捷的優(yōu)越性,成為一支新興的重要的不斷壯大的消費隊伍,因此,公司構建網(wǎng)上書店電子商務網(wǎng)站,是適應消費者消費方式轉(zhuǎn)變的需要。贏得消費者才能贏得市場,有市場的企業(yè)才能生存發(fā)展。因此,圖書公司構建網(wǎng)上書店電子商務網(wǎng)站是加強企業(yè)競爭力,開拓市場,贏取新的網(wǎng)絡經(jīng)濟制高點的重要舉措。4.1.2業(yè)務流程介紹與分析`會員會員會員信息修改信息查看會員信登錄是否會會員界面面購物車已買書籍瀏覽書籍搜索書籍查看訂單售后服務查看購物車購物車信息書籍信息添加到購物車是否存填寫訂單支付訂單信息確認收貨發(fā)表評論注冊圖4.1業(yè)務流程圖4.1.3系統(tǒng)開發(fā)計劃將整個系統(tǒng)劃分為前臺和后臺兩個部分,其中前臺包含了圖書展示、圖書搜索、會員注冊及登錄、會員中心、購物車、留言板6個模塊;后臺包含了圖書管理、訂單管理、新聞管理、留言管理5個模塊,確定了本系統(tǒng)所要實現(xiàn)的各項功能。本系統(tǒng)的購書流程圖如下圖所示。首頁首頁首頁首頁登錄注冊瀏覽圖書訂購圖書去購物車去收銀臺提交訂單繼續(xù)購書圖4.2購書流程圖4.2需求分析4.2.1總體目標隨著科學技術的不斷提高,計算機科學日趨成熟,其強大的功能已為人們所深刻認識,它已經(jīng)進入人類社會的各個領域并發(fā)揮著越來越重要的作用。作為計算機應用的一部分,使用計算機對線上銷售平臺進行管理,具有線下操作無法比擬的優(yōu)點。因此,開發(fā)一個網(wǎng)上銷售平臺就成為很有必要做的事情。而且只要系統(tǒng)的設計合理,就可以再開一條銷售道路,較少庫存堆積,利用網(wǎng)絡的共享、互動的優(yōu)點,結合地面銷售的優(yōu)點,借助數(shù)據(jù)庫管理技術,開發(fā)網(wǎng)上銷售平臺,實現(xiàn)圖書網(wǎng)上銷售規(guī)范化、個性化、人性化。4.2.2具體目標用戶模塊:對于非注冊用戶,只能瀏覽、搜索書籍,不能查看用戶信息,使用購物車功能;對于注冊用戶,除了非用戶功能外,還能使用購物車,訂單管理,用戶信息修改,發(fā)表評論等。書籍管理模塊:所有人員可以瀏覽書籍,搜索書籍。注冊用戶可以在購物車中增刪書籍;管理員可以增加、更新、刪除書籍信息。購物車模塊:購物車方便了用戶的購買行為。可以一次添加多種商品,統(tǒng)一結算等。訂單管理模塊:管理員通過此模塊來管理所有訂單,進入此模塊首先可看到所有訂單的金額、付款方式、時間及處理狀態(tài),通過“詳細”鏈接打開詳細訂單頁面,還可看到訂單的詳細情況,包括收件人的相關信息及購買圖書的相關信息等。倉庫管理模塊:通過對退貨單、出庫單以及庫中貨物信息的管理,來完成對倉庫中貨物數(shù)量的檢測,以保障貨物的供應。管理員功能模塊:這里管理員也充當了商家的功能可以查看、修改會員信息,刪除會員。對書籍的全部操作,對評論,訂單,庫存等的操作等。4.2.3系統(tǒng)數(shù)據(jù)建模(ER圖)用戶用戶用戶類別密碼聯(lián)系電話用戶名姓名性別郵政編號地址書籍類別作者原價名稱是否特價出版社上架時間購買?庫存信息庫存信息貨物名貨物號數(shù)量貨物類別訂單訂單編號地址付款方式郵政編碼總價聯(lián)系電話會員編號訂購存放入庫出庫退貨單貨物號貨物名數(shù)量出庫單貨物號貨物名數(shù)量圖4.3整體E-R圖4.2.4系統(tǒng)功能建模(數(shù)據(jù)流程圖)管理員管理信息管理員管理信息D5出貨信息D41退貨單訂貨單生成授權用戶訂購修改用戶信息注冊新賬戶用戶P1用戶管理P3書籍訂購管理管理操作生成管理員P2軟件資源管理庫存信息D11P4倉庫管理訂單信息D21退貨信息D31圖4.4數(shù)據(jù)流程圖4.2.5數(shù)據(jù)字典(1)數(shù)據(jù)流名字:庫存信息名字:庫存信息別名:庫存描述:倉庫中所有物品的信息定義:庫存信息=貨物號+貨物名+數(shù)量位置:倉庫管理模塊中名字:訂貨單別名:訂單描述:會員及所要購買書籍的信息定義:訂貨單=訂單編號+會員編號+聯(lián)系電話+地址+總價+郵政編號+付款方式位置:訂單管理模塊中名字:出庫單名字:出庫單別名:出庫描述:發(fā)送出去的貨物信息定義:出貨單=貨物號+貨物名+數(shù)量位置:倉庫管理模塊中名字:退貨單別名:退貨描述:用戶把不滿意的書籍退還倉庫的清單定義:退貨單=貨物號+貨物名+數(shù)量位置:倉庫管理模塊中(2)數(shù)據(jù)存儲名字:庫存信息名字:庫存信息姓名:庫存描述:倉庫中所有材料的信息定義:庫存信息=貨物號+貨物名+數(shù)量位置:倉庫管理模塊名字:訂單信息姓名:訂單描述:顧客購買書籍所填寫的信息定義:訂單信息=訂單編號+會員編號+總價+付款方式+郵政編碼+地址+聯(lián)系電話位置:訂單管理模塊名字:用戶信息姓名:用戶描述:用戶的所有個人信息定義:用戶信息=用戶名+密碼+用戶類別+姓名+性別+地址+聯(lián)系電話+郵政編碼位置:用戶模塊名字:書籍信息姓名:書籍描述:書籍的所有信息定義:書籍信息=名稱+類別+作者+出版社+上架時間+原價+是否特價位置:書籍管理模塊(3)數(shù)據(jù)元素名字:貨物號名字:貨物號姓名:貨物描述:倉庫中貨物的所有編號定義:貨物號=數(shù)字+字母位置:倉庫管理模塊名字:訂單編號姓名:訂單描述:用戶在購買中的編號定義:訂單號=數(shù)字+字母位置:訂單管理模塊名字:會員編號姓名:會員號描述:是購買者的唯一標識定義:會員編號=數(shù)字+字母位置:用戶模塊4.3總體設計(系統(tǒng)結構圖)4.3.1系統(tǒng)的總體結構設計原則(1)易用性:網(wǎng)站設計制作使用的技術不對瀏覽者使用的瀏覽器有特殊要求。方便各類操作人員,做到部分業(yè)務的完全或部分自動化處理。(2)高效性:網(wǎng)站頁面的設計簡潔、美觀,盡可能地提高瀏覽速度,突出主要信息。導航系統(tǒng)在層次清晰的同時方便瀏覽者對相關信息和服務的訪問。(3)結構合理:欄目設置要合理,符合人們的瀏覽習慣。網(wǎng)站層次設計要合理,讓瀏覽者可以通過盡可能少的點擊次數(shù)即可找到需要的信息。(4)宣傳完整性:能夠?qū)ζ放茝母鱾€角度進行周到的宣傳到位,及時反映出最新的動態(tài)信息。(5)可擴展性:系統(tǒng)設計要考慮到業(yè)務未來發(fā)展的需要,同時考慮網(wǎng)站建設的階段性,要盡可能地設計得簡明,各個功能模塊間的耦合度小,便于系統(tǒng)的擴展,平滑地與其它應用系統(tǒng)自動接口,如與現(xiàn)有的應用系統(tǒng)接口及與在線支付系統(tǒng)的接口。(6)安全、穩(wěn)定性:在充分考慮到站點訪問性能的同時,要格外重視站點的安全和穩(wěn)定性問題,采用會員的訪問權限控制、加密算法的使用、服務器在IDC環(huán)境的安全措施等。(7)并發(fā)性強:考慮到網(wǎng)站的使用者同時操作某一系統(tǒng)的情況,系統(tǒng)支持多入操作,建立高速緩沖機制,提供使用者的訪問速度。(8)可移植性、可延續(xù)性:采用的開發(fā)技術不僅滿足現(xiàn)在的應用需求,而且要適應未來的發(fā)展趨勢,在以后的升級、移植工作方便。降低用戶的二次開發(fā)成本,保證用戶的投資利益。(9)平臺無關:采用的開發(fā)技術要與操作系統(tǒng)和數(shù)據(jù)庫無關,或可以通過簡單的設置變更即可更換操作平臺或數(shù)據(jù)庫。(10)個性化:利用注冊用戶提供的相關信息,或利用COOKIE等技術,為顧客提供盡可能多的個性化服務。(11)訪問統(tǒng)計性強:網(wǎng)管可隨時查看指定頁的訪問次數(shù)、來訪路徑、訪客所在地區(qū)分布、訪問時段分布、訪客使用瀏覽器等信息,定期出具網(wǎng)站統(tǒng)計分析報告。(12)互動性:網(wǎng)站系統(tǒng)要求互動,建立前后臺系統(tǒng)的反饋機制,實現(xiàn)自動響應機制,實現(xiàn)高度互動。(13)創(chuàng)意性強:特色鮮明、獨具風格。(14)維護性強:網(wǎng)站系統(tǒng)提高后臺維護程序界面,管理人員完全可以自行維護網(wǎng)站的欄目內(nèi)容。4.3.2系統(tǒng)總體設計HIPO技術4.3.2.1系統(tǒng)層次圖查詢用戶信息查詢用戶信息修改用戶信息瀏覽圖書收藏圖書加入購物車發(fā)表評論刪除購物車結算支付論查看訂單刪除活動庫存管理評論管理會員管理用戶模塊書籍管理模塊購物車模塊訂單管理模塊管理員功能模塊圖書電子商務網(wǎng)站建設系統(tǒng)圖4.5系統(tǒng)層次圖4.3.2.2系統(tǒng)IPO圖IPO圖系統(tǒng):圖書網(wǎng)上訂購系統(tǒng)IPO圖系統(tǒng):圖書網(wǎng)上訂購系統(tǒng)作者:模塊:訂單模塊編號:輸入:書籍信息用戶信息輸出:訂單信息處理:用戶訂購書籍并下發(fā)訂單,管理員對訂單信息進行核實并處理。局部數(shù)據(jù)元素:訂單編號、會員編號、總價、付款方式、郵政編碼、地址、聯(lián)系電話IPO圖系統(tǒng):圖書網(wǎng)上訂購系統(tǒng)作者:模塊:書籍管理模塊編號:輸入:新上架的書籍信息輸出:訂單信息和庫存信息處理:管理員通過登錄倉庫管理模塊,將新上架的書籍信息添入到庫存信息中。局部數(shù)據(jù)元素:名稱、類別、作者、出版社、上架時間、原價、是否特價IPO圖系統(tǒng):圖書網(wǎng)上訂購系統(tǒng)作者:模塊:用戶模塊編號:輸入:用戶名和密碼書籍信息輸出:訂單信息處理:管理員通過登錄倉庫管理模塊,查看貨物情況,根據(jù)訂單信息,向用戶發(fā)貨處理。局部數(shù)據(jù)元素:用戶名、密碼、姓名、地址、聯(lián)系電話、郵政編碼IPO圖系統(tǒng):圖書網(wǎng)上訂購系統(tǒng)作者:模塊:購物車模塊編號:輸入:書籍信息用戶信息輸出:訂單信息處理:管理員通過登錄購物車管理模塊,將新上架的書籍信息添入到庫存信息中。局部數(shù)據(jù)元素:名稱、類別、作者、出版社、上架時間、原價、是否特價4.4詳細設計4.4.1倉庫模塊詳細設計4.4.1.1模塊定義(1)模塊編號:P1、P3、P4(2)模塊名稱:用戶管理、書籍訂購管理、倉庫管理(3)模塊功能:保證會員能根據(jù)自己的需求,購買自己所需書籍,并生成訂單。管理員通過對系統(tǒng)的管理,對倉庫信息進行修改。4.4.1.2輸入項目訂貨單、退貨單4.4.1.3輸出項目出庫單、入庫單4.4.1.4程序過程設計結束結束NY開始出庫出庫單修改庫存信息并出庫圖4.6倉庫模塊程序流程圖4.4.1.5測試要點主要測試方面有:倉庫管理模塊中倉庫管理員盤點貨物時查看是否有新的訂購單和退貨單,若有則根據(jù)訂貨單出貨,更具入庫單退錢,并更新庫存管理中貨物的新數(shù)據(jù)。4.4.2書籍管理模塊詳細設計4.4.2.1模塊定義(1)編號:P3(2)名稱:書籍管理模塊(3)功能:書籍管理模塊是本系統(tǒng)的核心部分,整個系統(tǒng)中所有書籍的管理都是出自此模塊進行操作。本模塊實現(xiàn)對書籍信息的查看、添加、修改和刪除,如某圖書被訂購或某圖書被退回或某圖書是特價圖書都可通過修改來實現(xiàn),不再銷售的書可以通過刪除來實現(xiàn),新上架的圖書可以通過添加來實現(xiàn)。4.4.2.2輸入信息圖書基本信息4.4.2.3輸出信息庫存數(shù)量4.4.2.4程序過程設計NNY開始訂購被訂購書籍信息瀏覽圖書結束圖4.7書籍模塊程序流程圖4.4.2.5測試要點主要測試方面有:根據(jù)訂單對庫中書籍進行出庫處理,查看出庫后,庫存量是否更改成功。并根據(jù)新進書籍更改庫存量。4.4.3訂單管理模塊詳細設計4.4.3.1模塊定義(1)編號:P1、P3(2)名稱:用戶管理模塊、書籍管理模塊(3)功能:書籍管理模塊是本系統(tǒng)的核心部分,整個系統(tǒng)中所有書籍的管理都是出自此模塊進行操作。本模塊實現(xiàn)對書籍信息的查看、添加、修改和刪除,如某圖書被訂購或某圖書被退回或某圖書是特價圖書都可通過修改來實現(xiàn),不再銷售的書可以通過刪除來實現(xiàn),新上架的圖書可以通過添加來實現(xiàn)。4.4.3.2輸入信息圖書基本信息4.4.3.3輸出信息訂單信息4.4.3.4程序過程設計是是否開始客戶填寫訂購信息結束查詢訂購信息是否修改修改信息圖4.8訂單模塊程序流程圖4.4.3.5測試要點主要測試方面有:訂單管理模塊中顧客的開臺和訂購書籍都是聯(lián)接系統(tǒng)的,系統(tǒng)根據(jù)數(shù)據(jù)庫中信息來出庫書籍并更改數(shù)據(jù)庫中庫存信息。顧客提交訂單后,管理員根據(jù)顧客所填寫的訂單發(fā)貨至客戶。并記錄管理員操作信息。5總結與展望通過兩周的上機實習時間,我對軟件開發(fā)中的需求分析有了進一步的認識,也了解需求分析對于一個程序開發(fā)有著特別重要的意義和不可缺少的作用。同時,我也復習系統(tǒng)流程圖和數(shù)據(jù)流圖,對它們有了更深的理解,也熟練的掌握了系統(tǒng)流程圖、數(shù)據(jù)流圖的畫法和步驟。在試驗中,正常使用時不應出錯,對于用戶的輸入錯誤應給出適當?shù)母恼崾尽H暨\行時遇到不可恢復的系統(tǒng)錯誤,也必須保證數(shù)據(jù)庫完好無損。這次實驗上機,我受益匪淺,雖然難免有一些困難和失誤,但是掌握了很多以前不甚熟悉的知識點,也深入了解需求分析。在實習中同學之間相互討論思考,將平日里所學的知識運用到實踐中來,并不斷的熟悉鞏固知識。該系統(tǒng)的優(yōu)點是通用性、可擴展性和靈活性,測試過程中,達到提高書店業(yè)務處理效率的目的。該系統(tǒng)設計和開發(fā)過程,也闡述了軟件工程知識和開發(fā)工具來解決實際的方法?;跁赇N售管理系統(tǒng)開發(fā)是一項復雜的系統(tǒng)工程。隨著技術的不斷發(fā)展和成熟,同時也隨著用戶需求的不斷提高和變化,相關功能還有許多需要不斷擴展和完善,系統(tǒng)的性能和技術指標也許提高,希望在以后的工作中能繼續(xù)完成以下方面的內(nèi)容:1、使系統(tǒng)開發(fā)更加工程化、標準化和系統(tǒng)化,對結構和功能的設計與開發(fā)達到更高的用戶友好性和靈活性,以利于系統(tǒng)的二次開發(fā)。2、對系統(tǒng)中的某些功能,如采購信息錄入、用戶和權限管理、操作人員的在線交互和數(shù)據(jù)庫共享等功能模塊都有進一步增強和完善。參考文獻[1]余芳.JSP動態(tài)網(wǎng)站開發(fā)案例指導[M],北京:電子工業(yè)出版社,2009[2]范立鋒,喬世權,程文彬.JSP程序設計[M],北京:人民郵電出版社,2009[3]徐建華,李玉林.Java入門與提高[M],北京:科學出版社,2008[4]張躍平,耿祥義.JSP程序設計[M],北京:清華大學出版社,2012[5]王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M].第4版,北京:高等教育出版社,2006[6]屈輝立,陳可明,石武信.JSP網(wǎng)站編程教程[M].第1版,北京:北京希望電子出版社,2005成績評定成績教師簽字綜合程序課程設計說明書課程設計名稱:綜合程序課程設計課程設計題目:萬年歷顯示程序?qū)W院名稱:信息工程學院專業(yè):電子信息科學與技術班級:學號:姓名:評分:教師:2016年3月13日綜合程序課程設計任務書20**-20**學年第2學期第1周-2周題目學生成績管理系統(tǒng)內(nèi)容及要求1)輸入任一年將顯示出該年的所有月份日期,對應的星期2)注意閏年情況其顯示格式要求如下:1)月份:中文英文都可以,2)下一行顯示星期,從周日到周六,中英文都可以3)下一行開始顯示日期從1號開始,并按其是周幾實際情況與上面的星期數(shù)垂直對齊進度安排20**年2月29日,分小組任選題目;20**年3月1日至3月9日,查閱資料并編寫程序?qū)崿F(xiàn)功能;20**年3月10日至3月13日,檢查。學生姓名:指導時間20**年2月29至20**年3月13日指導地點:綜合樓中505任務下達20**年2月29日任務完成20**年3月13日考核方式1.評閱□2.答辯□3.實際操作□4.其它□指導教師高建波系(部)主任摘要這次的綜合課程設計主要是讓同學們能夠?qū)W習到的軟件知識通過設計實際生活應用或者通過設計管理系統(tǒng)鞏固所學知識,同時也在設計過程中提升了學生們對軟件學習的信心和興趣。本課題包括4個模塊,分別是功能控制模塊、打印輸出模塊、日歷顯示模塊和鍵值獲取模塊。鍵值獲取模塊接受鍵盤操作,獲取鍵值,來進行輸入年份,月份,日期。功能控制模塊用于實現(xiàn)日期有效性檢查、判斷是否是閏年和返回指定日期對應的星期,月份第一天所對應的星期。打印輸出模塊主要是進行輸出顯示,包括打印指定個數(shù)的空格、打印分隔線、打印當前日期對應的星期以及打印給定的星期。日歷顯示模塊模塊是系統(tǒng)的核心模塊,是用來顯示指定年份所在月份的月歷。每個模塊地設立都是由子函數(shù)調(diào)用功能實現(xiàn)的,通過返回不同的數(shù)值來控制程序的下一步進行。萬年歷是生活必需品,本次設計的萬年歷在輸入年份后就可查詢該年中的所有月份,日期和相對應的星期,進一步輸入該年的某個日期就可顯示該日對應的星期。簡單便捷,實用性強可直接投入到現(xiàn)實生產(chǎn)應用中。關鍵詞:萬年歷的設計軟件分模塊子函數(shù)的調(diào)用目錄第一章設計要求及思路 51.1設計要求 51.2設計思路 5第二章分模塊介紹 62.1鍵盤輸入模塊 62.2功能控制模塊 62.2.1合法性校驗功能 62.2.2輸入日期為星期幾的處理 82.2.3每月1號星期值的處理 102.3打印輸出模塊 112.3.1指定空格的個數(shù)和分割線的打印 112.3.2打印當前日期對應的星期以及打印給定的星期 122.4日歷顯示模塊 12第三章調(diào)試過程 14第四章運行結果 15第五章實驗總結 18參考文獻 19附錄一 20設計要求及思路2.1設計要求1).輸入任一年將顯示出該年的所有月份日期,對應的星期2).注意閏年情況其顯示格式要求如下:1)月份:中文英文都可以,2)下一行顯示星期,從周日到周六,中英文都可以3)下一行開始顯示日期從1號開始,并按其是周幾實際情況與上面的星期數(shù)垂直對齊2.2設計思路在拿到題目時,有以下設計思路及整體設計大綱輸入年份,月份,日期設計公式判斷輸入的年份第一天是星期幾設計公式判斷該年是閏年還是平年設計子函數(shù)判斷每個月的有多少天,每個月的1號是星期幾,保留最后一天對應的日期,作為下次函數(shù)調(diào)用的時的傳出值設計子函數(shù)分析輸入的月份是月份日期,將得到的星期送到輸入界面顯示出來設計子函數(shù)并調(diào)用出子函數(shù)顯示輸出分割線,星期幾,日期,要整齊排列結束程序分模塊介紹2.1鍵盤輸入模塊鍵值獲取實現(xiàn)的是從鍵盤輸入日期。當在下面的功能模塊判斷出現(xiàn)錯誤返回輸入功能重新輸入。printf("inputtheyear:");scanf("%d",&year);//輸入年printf("\ninputthemonth:");scanf("%d",&month);//輸入月printf("\ninputtheday:");scanf("%d",&aa);//輸入日2.2功能控制模塊2.21.合法性校驗功能鍵盤輸入功能將輸入的值傳遞到功能控制模塊。功能控制模塊將對于傳遞來的值進行判斷。對該值進行合法性檢驗。當月份大于或等于十三時,報出錯誤提醒,鍵盤輸入月份值繼續(xù)傳遞到功能模塊,繼續(xù)進行合法校驗。當傳入月份合法時,鍵盤輸入日,傳遞到功能模塊繼續(xù)進行合法性校驗,其中包括輸入的月份是大月,小月,平月,若是輸入的月份是二月份還要進行輸入年份的閏年,平年判斷。輸入不合法時,報出錯誤提醒,返回輸入功能繼續(xù)輸入日,重回功能模塊,進行合法性檢驗。當輸入合法時,繼續(xù)下一步功能。例如輸入2008.2.29則會報出錯誤提醒,因為2008年是閏年,2月沒有29天,則會報出錯誤提醒重新輸入。當輸入重新輸入為2008.2.28時則進入下一步:if(month>=13)gotoerror1;error1:printf("\nERRORINPUTMONTH.\n");printf("****************************************\n");printf("inputtheyear:%d\n",year);gotoshuruyue;//月份輸入合法性檢驗,并報錯返回輸入月份界面if(year%4==0&&year%100!=0||year%400==0)//閏年,平年的判斷{if(month==2&&aa>=30)//對閏年二月輸入日期合法性檢驗gotoerror2;}else{if(month==2&&aa>=29)//對平年二月輸入日期合法性的檢驗gotoerror2;}if(month==1&&aa>=32)gotoerror2;if(month==3&&aa>=32)gotoerror2;if(month==4&&aa>=31)gotoerror2;if(month==5&&aa>=32)gotoerror2;if(month==6&&aa>=31)gotoerror2;if(month==7&&aa>=32)gotoerror2;if(month==8&&aa>=32)gotoerror2;if(month==9&&aa>=31)gotoerror2;if(month==10&&aa>=32)gotoerror2;if(month==11&&aa>=31)gotoerror2;if(month==12&&aa>=32)gotoerror2;//對十二個月份輸入的日期分別進行合法性校驗error2:printf("\nERRORINPUTDAY.\n");printf("****************************************");printf("\ninputtheyear:%d\n",year);printf("\ninputtheyear:%d\n",month);gotoshururi;//報錯程序并返回輸入日期界面2.22輸入日期為星期幾的處理將輸入的年份進行處理,可知年份的規(guī)律為十九年一次循環(huán),根據(jù)循環(huán)規(guī)律計算出每年的第一天為星期幾,設該星期值為dd,保存得到的星期值,將整年365或者366看成一個在星期一到星期日之間的循環(huán)。澤當輸入的月份分別為1,2,3,4等月份時,則若要計算某輸入日期的為星期幾。則判斷輸入的月份:當輸入為月份為1時,設日為rr輸入日的星期值為:(rr+dd-1)%7當輸入為月份為2時,設日為rr輸入日的星期值為:(31+rr+dd-1)%7當輸入為月份為3時,若該年是閏年輸入日的星期值為:(31+29+dd-1)%7若該年是平年輸入日的星期值為:(31+28+dd-1)%7以此類推。得到輸入值后將其返回輸入界面之后,輸出得到的星期值。dd=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;//判斷一年的第一天的星期值voidpanduan(intdd,intyuefen,intri,intyear)//設立子函數(shù)求得輸入日期的星期值{inti,j=0,sum=0,k[]={31,29,31,30,31,30,31,31,30,31,30,31};intb;inta[]={31,28,31,30,31,30,31,31,30,31,30,31};if(year%4==0&&year%100!=0||year%400==0){for(i=1;i<yuefen;i++,j++)sum=sum+k[j];}else{for(i=1;i<yuefen;i++,j++)sum=sum+a[j];}sum=sum+ri;b=(sum+dd-1)%7;if(b==0)printf("\n%d年%d月%d日是星期日",year,yuefen,ri);if(b==1)printf("\n%d年%d月%d日是星期一",year,yuefen,ri);if(b==2)printf("\n%d年%d月%d日是星期二",year,yuefen,ri);if(b==3)printf("\n%d年%d月%d日是星期三",year,yuefen,ri);if(b==4)printf("\n%d年%d月%d日是星期四",year,yuefen,ri);if(b==5)printf("\n%d年%d月%d日是星期五",year,yuefen,ri);if(b==6)printf("\n%d年%d月%d日是星期六",year,yuefen,ri);}2.23每月1號的星期值處理在下面的顯示界面我們將按月顯示,那么顯示每月第一天星期幾,如何銜接排列就至關重要。在這步功能的控制中,采用了調(diào)用子函數(shù)的功能。在2.22節(jié)中,求到了每年第一天也就是1月1號的星期值。利用循環(huán)的思路和求余的方法(31+dd-1)%7將一月的最后一天的星期值也保存下來,在計算下個月初時的星期值時再利用循環(huán)思路和求余方法將最后一天的星期值保存,將該值設置為aa。反復傳遞調(diào)用日期與星期轉(zhuǎn)換的子函數(shù)。最終將十二個月的功能都表達出來。intfun(inta,inttianshu)//定義一個月份日期和星期幾并顯示的子函數(shù){inti,k;{for(i=0;i<a;i++)printf("");//通過改變i和k的值改變循環(huán)次數(shù)和輸出的日期for(i=a+1,k=1;i<tianshu+a;i++){if(k<10)printf("%d",k);elseprintf("%d",k);k++;if(i%7==0)printf("\n");}//當i為7時,換行printf("\n");}a=(i-1)%7;//a為該月份結束時最后一個日期是星期幾returna;}2.3打印輸出模塊打印輸出模塊主要是進行輸出顯示,包括打印指定個數(shù)的空格、打印分隔線、打印當前日期對應的星期以及打印給定的星期。2.31指定空格的個數(shù)和分割線打印由于每個月的第一天所在的星期未必相同,所以在如下的格式顯示中:Sunmontuewedthrfrisat中會出現(xiàn)不同的變化,而這時需要通過控制輸出的空格鍵的個數(shù)來進行顯示。而這時輸出空格鍵的個數(shù)則是由aa的數(shù)值來控制的。若是aa的值為1,則輸出四個空格鍵,若是為2,則為輸出8個空格鍵,以此類推。打印分割線每當輸出一個月的月份時都會輸出一段如下的分割線:編程程序如下:ntfun(inta,inttianshu){inti,k;{for(i=0;i<a;i++)printf("");voidshuchu(chara[8])//定義一個顯示月份和分割線的子函數(shù){printf("\n");printf("%s\n",&a[0]);printf("SunMonTueWedThuFriSat\n");2.32打印當前日期對應的星期以及打印給定的星期在2.22節(jié)中,由求到的aa的值可將輸出的空格數(shù)后進行輸出從1~(30,31,29,28)的輸出。每當輸出的日期(rr+aa-1)%7時,進行換行輸出。到下一月時,重新輸出sunmontuewedthrfrisat再新起一行,輸出空格鍵,再重新由一號開始輸出。當日期<10時,輸出日期+3個空格當日期>=10時,輸出日期+2個空格for(i=a+1,k=1;i<tianshu+a;i++){if(k<10)printf("%d",k); elseprintf("%d",k); k++; if(i%7==0)printf("\n");}//當i為7時,換行printf("\n");}a=(i-1)%7;//a為該月份結束時最后一個日期是星期幾returna;}2.4日歷顯示模塊日歷顯示模塊模塊是系統(tǒng)的核心模塊,是用來顯示指定年份所在月份的月歷。將日歷上的日期按照如上排布顯示出來a=fun(a,30);elsea=fun(a,29);shuchu(b);/調(diào)用顯示月份和分割線的函數(shù)a=fun(a,32);//調(diào)用顯示月份全部排版的子函數(shù)shuchu(c);a=fun(a,31);shuchu(d);a=fun(a,32);shuchu(e);a=fun(a,31);shuchu(f);a=fun(a,32);shuchu(g);a=fun(a,32);shuchu(h);a=fun(a,31);shuchu(p);a=fun(a,32);shuchu(q);a=fun(a,31);shuchu(s);a=fun(a,32);gotojieshu;通過反復調(diào)用子函數(shù)顯示出一年十二個月份的月歷。調(diào)試過程調(diào)試過程中,發(fā)現(xiàn)日期不能正常按照規(guī)律的顯示,總會有錯位解決方法:在反復檢查過程中發(fā)現(xiàn),日期的顯示開始時在數(shù)字后面加了三位空格,當數(shù)字大于等于10時,其有兩個字符。而當數(shù)字小于10時,只有一個字符,后面也跟三位空格。所以造成了錯位的顯示。后來在當數(shù)字大于等于10時,后面跟兩位空格。在調(diào)試時,發(fā)現(xiàn)當月的最后一天的星期值與下月第一天的星期值不能相對應。解決方法:經(jīng)過同學幫助檢查算法時反復驗算,發(fā)現(xiàn)算法出現(xiàn)錯誤。經(jīng)過更改將算法調(diào)整為(rr+aa-1)%7,得到了正確的結果。算法不能對應地求出該日對應的星期值解決方法:在老師的提醒和指導下,將程序進一步完善,當輸入年月日之后對應地在下面一行顯示出該日在該年中為星期幾,并新添了報錯功能,雖然結構并沒有復雜很多,但進一步地完善了萬年歷的功能,更具有顯示實用意義運行結果當輸入的值是2012年時程序判斷出來該年為閏年,2月有29天,且該年的第一天剛好為星期日。輸入2月29日,經(jīng)過調(diào)用panduan函數(shù),在屏幕上顯示出來2012年2月29日剛好為星期三。后經(jīng)過反復調(diào)用顯示程序和月份處理fun函數(shù),得到月份的正常輸出。輸出值如圖4.1,4.2圖4.12012年的日歷圖4.22012年日歷當輸入的值是2013年時程序判斷出來該年為平年,2月有28天,且該年的第一天剛好為星期二。輸入2月29日,經(jīng)過后面的判斷日期輸入的合法性,經(jīng)過合法性檢驗發(fā)現(xiàn)日期輸入錯誤。在屏幕上提示“ERRORINPUTDAY”,重新輸入2月21日。在屏幕上顯示出來2012年2月21日為星期四。后經(jīng)過反復調(diào)用顯示程序和月份處理fun函數(shù),得到月份的正常輸出。輸出值如圖4.3,4.4圖4.32013年日歷顯示圖4.42013年日歷顯示當輸入年月是2013.13時,經(jīng)過程序后面的合法性校驗,發(fā)現(xiàn)13為不合法的月份值,在屏幕上顯示出“ERRORINPUTMONTH”,程序重新進入輸入,再進行合法性校驗。在屏幕上顯示出來2013年12月2日為星期一。后經(jīng)過反復調(diào)用顯示程序和月份處理fun函數(shù),得到月份的正常輸出。輸出值如圖4.5,4.6圖4.52013年日歷顯示圖4.62013年日歷顯示實驗總結此次課設所選取的課設題目不是很難,然而經(jīng)歷了這次設計和制作的整個過程,才發(fā)現(xiàn)平日里知識的貧乏和知識面的狹窄,原本以為不就是一個小小的課程設計,很容易就可以搞定,可是到了后來實際的操作的時候可是花費了我九牛二虎之力,不說其他的,只說時間上面,就花費了大把的時間,當然也從中體會了很多平時不能收獲的東西。經(jīng)過兩個星期的自己設計和編程,經(jīng)過查閱書籍,上網(wǎng)查詢等各種途徑,完成了這次的編寫。其中遇到了很多問題,一一解決的過程并學會了很多。然在這次課設中對C語言有了更深的了解,使用起來也更加的熟練。其次,找了不少的資料,找專業(yè)的書籍、上網(wǎng)找各方面的資料,學到了一些書本中學不到的知識,增長了見識。這次的課程設計收獲具體如下,一方面鞏固了C語言知識,是一次原來所學的課程的溫故而知新。另一方面,在這次的課程設計中,有多次遇到不會的難題時,積極向同學們求助。眾人拾柴火焰高,很多原來覺得棘手的問題在與同學們的討論中變得簡單,由此可見,積極請教與團結互助的重要性。通過這次的設計,經(jīng)過自己親自動手編程設計增加了對軟件學習的興趣與信心,更是增加了自己那么點小小的成就感,雖然也有不足之處,但是也是及時改正了過來,圓滿完成了老師交代的任務。參考文獻[1]譚浩強.C程序設計(第四版).北京:清華大學出版社,2010.6[2]姜仲秋.C語言程序設計.南京:南京大學出版社,1998年1月[3]譚浩強.C語言程序設計題解與上機指導.北京:清華大學出版社,2000.11[4]劉振安.C語言程序設計.北京:機械工業(yè)大學出版社,2004[5]張長海.C語言程序設計.北京:高等教育出版社,2006[6]于帆.程序設計基礎.北京:清華大學出版社,2006[7]譚明金.C語言程序設計實例精粹:電子工業(yè)出版社,2009[8]譚宗璞.C語言程序設計.徐州:中國礦業(yè)大學出版社,2007.1[9]路俊維.C語言程序設計:中國鐵道工業(yè)出版社,2009.06[10]李麗娟.C語言程序設計教程.北京:人民郵電出版社,2013.9附件一:源程序代碼#include<stdio.h>#include<math.h>intfun(inta,inttianshu)//定義一個月份日期和星期幾并顯示的子函數(shù){inti,k;{for(i=0;i<a;i++)printf("");//通過改變i和k的值改變循環(huán)次數(shù)和輸出的日期for(i=a+1,k=1;i<tianshu+a;i++){if(k<10)printf("%d",k); elseprintf("%d",k); k++; if(i%7==0)printf("\n");}//當i為7時,換行printf("\n");}a=(i-1)%7;//a為該月份結束時最后一個日期是星期幾returna;}voidshuchu(chara[8])//定義一個顯示月份和分割線的子函數(shù){printf("\n");printf("%s\n",&a[0]);printf("SunMonTueWedThuFriSat\n");}voidpanduan(intdd,intyuefen,intri,intyear){inti,j=0,sum=0,k[]={31,29,31,30,31,30,31,31,30,31,30,31};intb;inta[]={31,28,31,30,31,30,31,31,30,31,30,31};if(year%4==0&&year%100!=0||year%400==0){for(i=1;i<yuefen;i++,j++)sum=sum+k[j];}else{for(i=1;i<yuefen;i++,j++)sum=sum+a[j];}sum=sum+ri;b=(sum+dd-1)%7;if(b==0)printf("\n%d年%d月%d日是星期日",year,yuefen,ri);if(b==1)printf("\n%d年%d月%d日是星期一",year,yuefen,ri);if(b==2)printf("\n%d年%d月%d日是星期二",year,yuefen,ri);if(b==3)printf("\n%d年%d月%d日是星期三",year,yuefen,ri);if(b==4)printf("\n%d年%d月%d日是星期四",year,yuefen,ri);if(b==5)printf("\n%d年%d月%d日是星期五",year,yuefen,ri);if(b==6)printf("\n%d年%d月%d日是星期六",year,yuefen,ri);}voidmain(){intyear,month,i=0,j=0,k=1,a=0,m;intaa,bb,cc,dd;charn[]="Feb2",b[]="Mar3",c[]="Apr4",d[]="May5",e[]="Jun6",f[7]="Jul7",g[7]="Aug8",h[7]="Sep9",p[7]="Oct10",q[7]="Nov11",s[7]="Dec12";printf("****************************************\n");printf("input
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石河子大學《園藝通論》2023-2024學年第一學期期末試卷
- 洞穴奇案讀書分享
- 石河子大學《跆拳道》2021-2022學年第一學期期末試卷
- 石河子大學《模擬電子技術》2021-2022學年期末試卷
- 石河子大學《教育網(wǎng)站設計與開發(fā)》2023-2024學年第一學期期末試卷
- 沈陽理工大學《體能與營養(yǎng)》2023-2024學年第一學期期末試卷
- 沈陽理工大學《機械設計學》2021-2022學年第一學期期末試卷
- 沈陽理工大學《高等代數(shù)》2021-2022學年第一學期期末試卷
- 沈陽理工大學《城市設計》2021-2022學年第一學期期末試卷
- 沈陽理工大學《材料成型工藝與裝備》2023-2024學年第一學期期末試卷
- 《剪映專業(yè)版:短視頻創(chuàng)作案例教程(全彩慕課版)》 課件 第6章 創(chuàng)作生活Vlog
- 重大事故隱患判定標準與相關事故案例培訓課件
- 火龍罐綜合灸療法
- 深圳市中小學生流感疫苗接種知情同意書
- 數(shù)據(jù)、模型與決策(運籌學)課后習題和案例答案007
- 644523009畢業(yè)設計(論文)小型反應釜控制系統(tǒng)的仿真設計
- 縣教育局道路交通安全情況匯報
- 四年級上學期道德與法治期末質(zhì)量分析【六篇】
- 北師大版初中數(shù)學七年級上冊《探索與表達規(guī)律》說課稿
- 西師大版一年級上冊數(shù)學第二單元測試試題及答案
- 大小額支付系統(tǒng)題庫
評論
0/150
提交評論