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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  C語(yǔ)言程序設(shè)計(jì)</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  課設(shè)題目: 車票管理系統(tǒng) </p><p>  專 業(yè): 自動(dòng)化(汽車工業(yè)電氣自動(dòng)化) </p><p

2、>  班 級(jí): </p><p>  姓 名: </p><p>  成 績(jī): </p><p>  完成日期:

3、 2012年6月18日-2012年6月22日 </p><p>  指導(dǎo)教師: </p><p><b>  目 錄</b></p><p>  1.課程設(shè)計(jì)目的2</p><p><b>  2.需求分析2</b><

4、;/p><p><b>  2.1要求2</b></p><p><b>  2.2任務(wù)描述2</b></p><p><b>  2.3運(yùn)行環(huán)境3</b></p><p><b>  2.4開(kāi)發(fā)工具3</b></p><p>

5、<b>  3.總體設(shè)計(jì)3</b></p><p>  3.1系統(tǒng)流設(shè)計(jì)3</p><p>  3.2系統(tǒng)模塊設(shè)計(jì)4</p><p><b>  4.詳細(xì)設(shè)計(jì)5</b></p><p>  4.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)5</p><p>  4.2模塊接口設(shè)計(jì)6</p

6、><p>  4.3 以下是幾個(gè)主要模塊的流程圖:7</p><p><b>  5.運(yùn)行結(jié)果10</b></p><p>  5.1主菜單界面:10</p><p>  5.2信息錄入界面:10</p><p>  5.3信息瀏覽界面:11</p><p>  5.

7、4 信息查詢界面:11</p><p>  5.5信息修改界面:12</p><p>  6.程序調(diào)試與測(cè)試12</p><p>  6.1程序調(diào)試12</p><p>  6.2程序測(cè)試12</p><p>  7.問(wèn)題與不足12</p><p><b>  8.建議1

8、2</b></p><p><b>  9.編程體會(huì)12</b></p><p>  10.程序源代碼:12</p><p>  11.參考文獻(xiàn)13</p><p>  12.用戶使用手冊(cè)13</p><p><b>  1.課程設(shè)計(jì)目的</b></

9、p><p>  通過(guò)課程設(shè)計(jì),加深對(duì)結(jié)構(gòu)化程序設(shè)計(jì)思想的理解,能對(duì)系統(tǒng)功能進(jìn)行分析,并設(shè)計(jì)合理的模塊化結(jié)構(gòu)。</p><p>  通過(guò)課程設(shè)計(jì),進(jìn)一步掌握C語(yǔ)言中重要的數(shù)據(jù)結(jié)構(gòu)。掌握并熟練運(yùn)用指針、鏈表、結(jié)構(gòu)體、文件等數(shù)據(jù)結(jié)構(gòu)。</p><p>  通過(guò)課程設(shè)計(jì),提高程序開(kāi)發(fā)能力,能運(yùn)用合理的控制流編寫(xiě)清晰高效的程序。</p><p>  通過(guò)課

10、程設(shè)計(jì),培養(yǎng)C語(yǔ)言知識(shí)運(yùn)用和自學(xué)能力,真正的把課堂上獲得的知識(shí)運(yùn)用起來(lái),培養(yǎng)自己對(duì)程序編寫(xiě)的興趣,并能獨(dú)立設(shè)計(jì)和實(shí)現(xiàn)一個(gè)小型系統(tǒng)。</p><p>  通過(guò)課程設(shè)計(jì),加強(qiáng)了自己的程序分析能力。</p><p><b>  2.需求分析</b></p><p><b>  2.1要求</b></p><p

11、>  遵循軟件開(kāi)發(fā)過(guò)程的基本規(guī)范;能靈活應(yīng)用,初步具備運(yùn)用C程序解決實(shí)際問(wèn)題的能力。</p><p>  運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)方法,按照課程設(shè)計(jì)題目要求,完成包括需求分析、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編寫(xiě)代碼、調(diào)試和測(cè)試C程序等過(guò)程。</p><p>  學(xué)會(huì)利用數(shù)組、結(jié)構(gòu)體、鏈表進(jìn)行相關(guān)信息表示。</p><p>  功能模塊劃分清晰,系統(tǒng)結(jié)構(gòu)圖符合功能

12、操作要求,且有詳盡的功能描述</p><p>  各主要功能模塊有詳盡的流程圖及描述,用函數(shù)的形式實(shí)現(xiàn),且調(diào)用入口、功能、出口等關(guān)系正確。</p><p>  所設(shè)計(jì)的C程序較好的可讀性和可靠性;程序書(shū)寫(xiě)風(fēng)格規(guī)范,注釋清晰。</p><p>  界面友好(良好的人機(jī)互交),凡需要輸入信息時(shí),都有較詳盡的提示信息,并對(duì)輸入信息有較完善的值域分析。</p>

13、<p>  程序經(jīng)上機(jī)調(diào)試通過(guò),不應(yīng)出現(xiàn)語(yǔ)法型、功能型錯(cuò)誤,并獲得滿意的結(jié)果。</p><p>  學(xué)會(huì)通過(guò)各功能性測(cè)試用例測(cè)試程序的能力,盡可能避免原則性錯(cuò)誤的出現(xiàn)。</p><p>  掌握編寫(xiě)、調(diào)試和測(cè)試C語(yǔ)言程序的基本技巧,充分理解結(jié)構(gòu)化程序設(shè)計(jì)的基本方法。</p><p>  C語(yǔ)言課程設(shè)計(jì)報(bào)告的內(nèi)容反應(yīng)實(shí)際設(shè)計(jì)過(guò)程,且符合格式要求,無(wú)抄襲現(xiàn)象

14、。</p><p><b>  2.2任務(wù)描述</b></p><p><b>  車票管理系統(tǒng)</b></p><p><b>  題目描述</b></p><p>  一車站每天有n個(gè)發(fā)車班次,每個(gè)班次都有一班次號(hào)(1、2、3…n),固定的發(fā)車時(shí)間,固定的路線(起始站、終點(diǎn)

15、站),大致的行車時(shí)間,固定的額定載客量。如</p><p>  班次 發(fā)車時(shí)間 起點(diǎn)站 終點(diǎn)站 行車時(shí)間 額定載量 已定票人數(shù) 票價(jià)</p><p>  1 8:00 十堰 丹江 3 45 30 36</p><p>  2

16、 6:30 十堰 鄖縣 1 40 40 48</p><p>  3 7:00 十堰 鄖西 4 40 20 47</p><p>  4 10:00 十堰 竹山 3

17、 40 2 27 </p><p>  試設(shè)計(jì)車票管理系統(tǒng),使之能提供以下功能:</p><p>  錄入班次信息(信息用文件保存),可不定時(shí)地增加班次數(shù)據(jù)</p><p>  瀏覽班次信息,可顯示出所有班次當(dāng)前狀總(如果當(dāng)前系統(tǒng)時(shí)間超過(guò)了某班次的發(fā)車時(shí)間,則顯示“此班已發(fā)出

18、”的提示信息)。</p><p>  查詢路線:可按班次號(hào)查詢 ,可按終點(diǎn)站查詢</p><p><b>  售票和退票功能</b></p><p>  A:當(dāng)查詢出已定票人數(shù)小于額定載量且當(dāng)前系統(tǒng)時(shí)間小于發(fā)車時(shí)間時(shí)才能售票,自動(dòng)更新已售票人數(shù);</p><p>  B:退票時(shí),輸入退票的班次,當(dāng)本班車未發(fā)出時(shí)才能退票,

19、自動(dòng)更新已售票人數(shù);</p><p>  所有數(shù)據(jù)符合實(shí)際應(yīng)用要求</p><p><b>  題目要求</b></p><p>  按分析、設(shè)計(jì)、編碼、調(diào)試和測(cè)試的軟件開(kāi)發(fā)過(guò)程完成這個(gè)應(yīng)用程序。</p><p>  班次信息應(yīng)該包括:班次、發(fā)車時(shí)間、起點(diǎn)站、終點(diǎn)站、行車時(shí)間、額定載量、已定票人數(shù)等。</p>

20、<p>  為各項(xiàng)操作功能設(shè)計(jì)一個(gè)菜單。應(yīng)用程序運(yùn)行后,先顯示這個(gè)菜單,然后用戶通過(guò)菜單項(xiàng)選擇希望進(jìn)行的操作項(xiàng)目。</p><p>  每個(gè)功能操作中,不應(yīng)有原則性的錯(cuò)誤出現(xiàn);</p><p>  對(duì)輸入值用測(cè)試用例測(cè)試,不應(yīng)有錯(cuò)誤出現(xiàn);</p><p>  界面應(yīng)友好,操作應(yīng)流暢。</p><p><b>  輸入要

21、求</b></p><p>  應(yīng)用程序運(yùn)行后,在屏幕上顯示一個(gè)菜單。用戶可以根據(jù)需求,選定相應(yīng)的操作項(xiàng)目。進(jìn)入每個(gè)操作后,一般應(yīng)有相應(yīng)的子菜單,或有相應(yīng)的提示信息,根據(jù)提示信息的要求,從鍵盤(pán)或文件輸入相應(yīng)的信息。</p><p><b>  輸出要求</b></p><p>  應(yīng)用程序運(yùn)行后,要在屏幕上顯示一個(gè)菜單。</p

22、><p>  要求用戶輸入數(shù)據(jù)時(shí),要給出清晰、明確的的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。</p><p><b>  提示`</b></p><p>  設(shè)計(jì)一個(gè)結(jié)構(gòu)體類型和一維數(shù)組類型,用來(lái)存放班次信息。</p><p><b>  擴(kuò)展功能</b></p><p&g

23、t;  將所有班次信息存儲(chǔ)在一個(gè)文件中,并實(shí)現(xiàn)文件讀寫(xiě)的操作。</p><p><b>  2.3運(yùn)行環(huán)境</b></p><p>  WindowsXP/7系統(tǒng)</p><p>  VC++6.0編譯環(huán)境</p><p><b>  2.4開(kāi)發(fā)工具</b></p><p>

24、;<b>  C語(yǔ)言</b></p><p><b>  3.總體設(shè)計(jì)</b></p><p><b>  3.1系統(tǒng)流設(shè)計(jì)</b></p><p>  本系統(tǒng)的功能模塊如圖1所示,主要有以下模塊</p><p><b>  3.</b></p>

25、;<p><b>  2.系統(tǒng)模塊設(shè)計(jì)</b></p><p>  課程名稱界面:主函數(shù)int main(),實(shí)現(xiàn)課程設(shè)計(jì)名稱以歡迎界面。</p><p>  主菜單界面:構(gòu)造函數(shù)void mainmenu(),實(shí)現(xiàn)系統(tǒng)主菜單的顯示。</p><p>  系統(tǒng)時(shí)間顯示:構(gòu)造系統(tǒng)時(shí)間函數(shù)int system_time()。實(shí)現(xiàn)系統(tǒng)時(shí)

26、間的顯示以及和車開(kāi)的時(shí)間比較式否以開(kāi)車。</p><p>  主菜單的選擇:構(gòu)造主菜單選擇函數(shù) void chose(),實(shí)現(xiàn)主菜單的選擇。</p><p>  班次信息的讀入:構(gòu)造主菜單讀入函數(shù)void load(void),實(shí)現(xiàn)文件信息的讀入。</p><p>  增加班次函數(shù):構(gòu)造增加班次函數(shù)void add(),實(shí)現(xiàn)班次的增加。</p><

27、;p>  班次信息的瀏覽:構(gòu)造主菜單瀏覽函數(shù) void show(),實(shí)現(xiàn)車票信息瀏覽界面的顯示。</p><p>  班次的查詢:構(gòu)造主菜單查詢函數(shù)void searsh(),實(shí)現(xiàn)車次的查詢界面的顯示,并通過(guò)對(duì)班次查詢函數(shù)void searsh1(),終點(diǎn)站瀏覽查詢函數(shù)void searsh2()的調(diào)用,實(shí)現(xiàn)相應(yīng)的查詢。</p><p>  按班次查詢:構(gòu)造按車次查詢函數(shù)void

28、searsh1(),實(shí)現(xiàn)按車次的查詢界面。</p><p>  按終點(diǎn)站查詢:構(gòu)造按終點(diǎn)站查詢函數(shù)void searsh2(),實(shí)現(xiàn)按終點(diǎn)站的查詢界面。</p><p>  售票:構(gòu)造主菜單售票函數(shù)void buy_system(),實(shí)現(xiàn)買票的界面。</p><p>  退票:構(gòu)造主菜單退票函數(shù)void back_ticket(),實(shí)現(xiàn)退票的界面</p>

29、<p>  時(shí)間比較:構(gòu)造時(shí)間比較函數(shù)int canpan(),實(shí)現(xiàn)時(shí)間比較功能,判斷車是否開(kāi)出。</p><p>  儲(chǔ)存當(dāng)前班次信息:構(gòu)造儲(chǔ)存函數(shù)void save(),實(shí)現(xiàn)自動(dòng)更新班次信息功能。</p><p><b>  4.詳細(xì)設(shè)計(jì)</b></p><p><b>  4.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b>&l

30、t;/p><p>  根據(jù)系統(tǒng)要求,系統(tǒng)中需要保存的數(shù)據(jù)信息,其結(jié)構(gòu)如下:</p><p>  為了能實(shí)現(xiàn)程序的操作性和修改性,采用鏈表的結(jié)構(gòu)保存車次信息,在車次的基本信息時(shí),創(chuàng)建一個(gè)車票的節(jié)點(diǎn),將其插入到鏈表中,示意圖如下。 </p><p>  為此,先聲明一個(gè)類型為struct ticket的結(jié)構(gòu)體,其成員為車次的基本信息。然后通過(guò)對(duì)指針、鏈表、文件等數(shù)據(jù)結(jié)構(gòu)的操

31、作,實(shí)現(xiàn)對(duì)車次基本信息的錄入,瀏覽,存盤(pán),等一系列操作。其中,結(jié)構(gòu)體定義如下:</p><p>  struct ticket //定義記錄車票信息的結(jié)構(gòu)體 </p><p><b>  {</b></p><p>  int number; //定義車

32、次</p><p>  int hour; //記錄發(fā)車時(shí)間包含小時(shí) </p><p>  int minute; //分鐘 </p><p>  char origin_station[20]; //起始站名稱數(shù)組</p><p>

33、  char last_station[20]; //終點(diǎn)站名稱數(shù)組</p><p>  float last_time; //持續(xù)時(shí)間</p><p>  int max_number; //車次最大運(yùn)載量</p><p>  int sold_ticket;

34、 //已售車票</p><p>  int piaojia ; //車票的價(jià)格</p><p>  struct ticket *next;</p><p><b>  };</b></p><p>  ; 4.2模塊接口設(shè)計(jì)</p><p

35、>  所有函數(shù)模塊聲明如下:</p><p><b>  /*函數(shù)聲明*/ </b></p><p>  int system_time(); //系統(tǒng)時(shí)間函數(shù)</p><p>  void mainmenu(); //主菜單函數(shù)</p><

36、;p>  void chose(); //主菜單選擇函數(shù)</p><p>  void load(void); //主菜單讀入函數(shù)</p><p>  void add(); //增加班次函數(shù)</p><p>  voi

37、d show(); //主菜單瀏覽函數(shù)</p><p>  void searsh(); //主菜單查詢函數(shù)</p><p>  void searsh1(); //按車次查詢函數(shù)</p><p>  void searsh2(

38、); //查詢函數(shù)</p><p>  void buy_system(); //主菜單售票函數(shù)</p><p>  void back_ticket(); //主菜單退票函數(shù)</p><p>  int canpan();

39、 //時(shí)間比較函數(shù)</p><p>  void save(); //儲(chǔ)存函數(shù)</p><p>  void timu(); //題目函數(shù)</p><p>  并定義九個(gè)全局變量:</p><p><b>  i

40、nt s;</b></p><p>  int flag = 1; </p><p>  int syshour; </p><p>  int sysminute; </p><p>  char file

41、name[50];</p><p>  struct ticket *head=NULL,*p1,*p2,*p3</p><p><b>  主要模塊的實(shí)現(xiàn)</b></p><p>  系統(tǒng)以主函數(shù)int main()為入,進(jìn)入系統(tǒng)歡迎界面。</p><p>  然后調(diào)用void mainmenu()函數(shù),進(jìn)入主菜單界面

42、。系統(tǒng)接收用戶輸入的選擇,調(diào)用相應(yīng)的函數(shù),進(jìn)入到下一級(jí)菜單進(jìn)行相關(guān)工作。</p><p> ?。?如果用戶選擇選擇1,則調(diào)用錄入班次函數(shù)void load(void)錄入班次信息。</p><p>  2如果用戶選擇選擇2,則調(diào)用增加班次函數(shù)void add()增加班次信息。</p><p>  3如果用戶選擇選擇3,則調(diào)用瀏覽班次函數(shù)void show()瀏覽班次

43、信息。</p><p>  4如果用戶選擇4,則條用查詢函數(shù)void searsh()進(jìn)入查詢界面菜單。系統(tǒng)接收用戶輸入的選擇,調(diào)用相應(yīng)的函數(shù),進(jìn)入到下一級(jí)菜單進(jìn)行相關(guān)工作。</p><p> ?。?如果用戶選擇1,則調(diào)用按班次查詢函數(shù)void searsh1()進(jìn)行班次查詢。</p><p>  2如果用戶選擇2,則調(diào)用按終點(diǎn)站查詢函數(shù)void searsh2()

44、進(jìn)行班次查詢。</p><p>  3如果用戶選擇3,則返回主菜單界面。</p><p>  5如果用戶選擇5,則調(diào)用售票void buy_system()進(jìn)行買票功能。</p><p>  6如果用戶選擇6,則調(diào)用退票void back_ticket()函數(shù)進(jìn)行退票功能。</p><p>  7如果用戶選擇7,則調(diào)用題目void timu(

45、)函數(shù)顯示題目信息。</p><p>  8如果用戶選擇8,則調(diào)用保存函數(shù)void save()函數(shù)保存對(duì)當(dāng)前班次信息到文件中。</p><p>  7如果用戶選擇0,則返回主菜單。</p><p>  4.3 以下是幾個(gè)主要模塊的流程圖:</p><p><b>  主菜單函數(shù):</b></p><

46、p><b>  圖1 主函數(shù)流程圖</b></p><p><b>  查詢班次函數(shù):</b></p><p><b>  圖2查詢班次流程圖</b></p><p><b>  退票函數(shù):</b></p><p><b>  否</

47、b></p><p><b>  是</b></p><p><b>  圖3訂票流程圖</b></p><p><b>  5.運(yùn)行結(jié)果</b></p><p><b>  5.1歡迎系統(tǒng)界面</b></p><p><

48、;b>  圖4</b></p><p><b>  5.2主菜單界面</b></p><p><b>  圖5</b></p><p><b>  5.3瀏覽班次界面</b></p><p><b>  圖6</b></p>

49、<p><b>  5.4查詢菜單界面</b></p><p><b>  6.程序調(diào)試與測(cè)試</b></p><p><b>  6.1程序調(diào)試</b></p><p><b>  1歡迎系統(tǒng)界面</b></p><p><b> 

50、 圖1主菜單界面</b></p><p>  按任意鍵,進(jìn)入主菜單界面。</p><p><b>  2主菜單界面:</b></p><p><b>  圖2 信息錄入界面</b></p><p>  等待用戶選擇,進(jìn)入相應(yīng)的功能界面。</p><p><b

51、>  3錄入班次界面:</b></p><p>  圖3 錄入班次信息成功</p><p>  圖4錄入班次信息失敗</p><p><b>  4增加班次信息</b></p><p>  圖5增加班次信息成功</p><p><b>  5 瀏覽班次界面</b&

52、gt;</p><p>  圖6顯示當(dāng)前所有班次信息</p><p><b>  5查詢班次界面</b></p><p>  圖7 等待用戶選擇,進(jìn)入相應(yīng)的查詢方案。</p><p><b>  圖8按班次查詢結(jié)果</b></p><p>  圖9 按終點(diǎn)站查詢結(jié)果</

53、p><p><b>  6售票界面</b></p><p>  圖10車已開(kāi)出。無(wú)法售票</p><p>  圖11票以賣完,無(wú)法買票</p><p><b>  圖12買票成功</b></p><p>  圖13更新當(dāng)前剩余車票</p><p><

54、b>  7退票界面</b></p><p><b>  圖14退票成功</b></p><p><b>  圖15退票失敗</b></p><p>  圖16退票成功后更新當(dāng)前剩余票數(shù)</p><p><b>  6.2程序測(cè)試</b></p>

55、<p>  各模塊測(cè)試用例數(shù)據(jù)的確定</p><p>  班次 發(fā)車時(shí)間 起點(diǎn)站 終點(diǎn)站 行車時(shí)間 額定載量 已定票人數(shù) 票價(jià)</p><p>  1 8:00 十堰 丹江 3.0 45 30 45</p><p>  2

56、6:30 十堰 鄖縣 1.0 40 40 56</p><p>  7:00 十堰 鄖西 4.0 40 20 67</p><p>  4 23:00 十堰 竹山 3.0 40

57、 40 46</p><p>  5 8:00 十堰 孝感 3.0 45 30 45</p><p>  6 6:30 十堰 襄樊 1.0 40 40 56</p>

58、<p>  7 7:00 十堰 鄂州 4.0 40 20 67</p><p>  8 23:0 十堰 漢川 3.0 40 40 46</p><p>  9 23:30 丹江

59、 仙桃 5.0 45 16 42</p><p><b>  測(cè)試結(jié)果</b></p><p>  測(cè)試中出現(xiàn)的問(wèn)題的原因和分析</p><p>  由于給定的數(shù)據(jù)有特定的格式。測(cè)試數(shù)據(jù)只能是按照程序編的格式寫(xiě)入,否者就會(huì)讀入錯(cuò)誤。無(wú)法正常顯示,不能隨便讀入一個(gè)測(cè)試文件。程序的讀入有

60、點(diǎn)局限性。</p><p><b>  7.問(wèn)題與不足</b></p><p>  總體上這個(gè)程序還是很嚴(yán)密,一些的小bug也防止,不會(huì)出現(xiàn)程序突然死機(jī)的情況。但是測(cè)試文件具有局限性,只能用給定的測(cè)試文件測(cè)試,不能隨便自己編一個(gè)文件測(cè)試,否者就會(huì)顯示錯(cuò)誤,要按照程序的格式編寫(xiě)文件,才能正確讀入,其他情況基本正常,總體上這個(gè)程序比較完美。</p><

61、p><b>  8.建議</b></p><p>  就我個(gè)人而言,我認(rèn)為本次課程設(shè)計(jì)的題目選擇還是比較公平的,但是時(shí)間安排還是有點(diǎn)欠缺的,到學(xué)期最后一些考試集中到一起了,時(shí)間比較少,天氣也比較熱,課程設(shè)計(jì)應(yīng)該提前很早就開(kāi)始準(zhǔn)備的。讓學(xué)生有個(gè)心理準(zhǔn)備和這個(gè)意識(shí),讓大家對(duì)課程設(shè)計(jì)更加重視,這個(gè)輔導(dǎo)由于人數(shù)太多,也不能全部都輔導(dǎo)到,只能大家有選擇性的問(wèn)一些問(wèn)題,老師只能簡(jiǎn)單為你解答,主要是

62、還是要靠自己的。老師是只是個(gè)輔導(dǎo)作用。</p><p><b>  9.編程體會(huì)</b></p><p>  本次c語(yǔ)言訓(xùn)練,讓我們獨(dú)立完成一個(gè)小系統(tǒng),我從頭到尾努力獨(dú)立完成,一方面對(duì)c語(yǔ)言有了更好的認(rèn)識(shí),對(duì)c語(yǔ)言語(yǔ)法上面的知識(shí)有了一個(gè)應(yīng)用性的復(fù)習(xí),同時(shí)對(duì)文件和鏈表操作有了更好的學(xué)習(xí),另一方面我對(duì)編程的一些良好習(xí)慣也有了認(rèn)識(shí),編程上的細(xì)節(jié)處理也有了了解,總之這次訓(xùn)練讓

63、我學(xué)到很多,這次課程設(shè)計(jì)讓我學(xué)到很多知識(shí),讓我對(duì)c語(yǔ)言又有了個(gè)全新的認(rèn)識(shí),這方面的知識(shí)有增加了不少,現(xiàn)在我的個(gè)人c語(yǔ)言水平有很大的提高,我覺(jué)得任何成果都是通過(guò)自己的努力得來(lái)的,對(duì)自己也是一個(gè)考驗(yàn)和鍛煉。</p><p><b>  10.程序源代碼:</b></p><p>  #include <stdio.h></p><p>

64、  #include <string.h></p><p>  #include <malloc.h></p><p>  #include <windows.h></p><p>  #include <stdlib.h></p><p>  #include <conio.h>&

65、lt;/p><p>  /*鏈表操作所用結(jié)構(gòu)體指針*/</p><p>  struct ticket *head=NULL,*p1,*p2,*p3; /*定義結(jié)構(gòu)體指針head 為頭指針p1 為輸入數(shù)據(jù)緩存空間指針p2 為尾指針*/</p><p>  struct ticket //定義記錄車票信息的結(jié)構(gòu)體 <

66、/p><p><b>  {</b></p><p>  int number; //定義車次</p><p>  int hour; //記錄發(fā)車時(shí)間包含小時(shí) </p><p>  int minute;

67、 //分鐘 </p><p>  char origin_station[20]; //起始站名稱數(shù)組</p><p>  char last_station[20]; //終點(diǎn)站名稱數(shù)組</p><p>  float last_time; //持續(xù)時(shí)間</p>

68、<p>  int max_number; //車次最大運(yùn)載量</p><p>  int sold_ticket; //已售車票</p><p>  int piaojia ; //車票的價(jià)格</p><p>  struct ticket

69、*next;</p><p><b>  };</b></p><p><b>  /*函數(shù)聲明*/ </b></p><p>  int system_time(); //系統(tǒng)時(shí)間函數(shù)</p><p>  void mainmenu();

70、 //主菜單函數(shù)</p><p>  void chose(); //主菜單選擇函數(shù)</p><p>  void load(void); //主菜單讀入函數(shù)</p><p>  void add(); /

71、/增加班次函數(shù)</p><p>  void show(); //主菜單瀏覽函數(shù)</p><p>  void searsh(); //主菜單查詢函數(shù)</p><p>  void searsh1(); //按車次查詢函數(shù)<

72、;/p><p>  void searsh2(); //查詢函數(shù)</p><p>  void buy_system(); //主菜單售票函數(shù)</p><p>  void back_ticket(); //主菜單退票函數(shù)</p><

73、p>  int canpan(); //時(shí)間比較函數(shù)</p><p>  void save(); //儲(chǔ)存函數(shù)</p><p>  void timu(); //題目函數(shù)</p><p>  /*定義全局變量*/

74、</p><p><b>  int s;</b></p><p>  int flag = 1; </p><p>  int syshour; //記錄系統(tǒng)時(shí)間小時(shí) </p><p>  int sysminute;

75、 //記錄系統(tǒng)時(shí)間分鐘 </p><p>  char filename[50]; //文件名數(shù)組 </p><p>  /*主函數(shù)*/ </p><p>  int main()</p><p><b>

76、;  { </b></p><p>  printf("\t\t\t\t*****歡迎使用車票管理系統(tǒng)*****\t\t\t\n");</p><p>  system("pause");</p><p><b>  while(1)</b></p><p><b

77、>  {</b></p><p>  mainmenu();</p><p><b>  chose();</b></p><p><b>  }</b></p><p><b>  return 0;</b></p><p><

78、;b>  }</b></p><p><b>  /*主菜單*/</b></p><p>  void mainmenu() </p><p><b>  { </b></p><p>  system(&qu

79、ot;cls");</p><p>  printf(" 當(dāng)前時(shí)間:"); </p><p>  system_time(); </p><p>  printf("\t*****

80、*******************************主菜單**************************************\n");</p><p>  printf("\t* ☆ 1.錄入班次信息 ☆*\n");</p><p&

81、gt;  printf("\t* ☆ 2.增加班次信息 ☆ *\n");</p><p>  printf("\t* ☆ 3.瀏覽班次信息 ☆ *\n"

82、);</p><p>  printf("\t* ☆ 4.查詢班次信息 ☆ *\n");</p><p>  printf("\t* ☆ 5.售票

83、 ☆ *\n");</p><p>  printf("\t* ☆ 6.退票 ☆ *\n");</p><p>  printf("\t* ☆

84、7.題目信息 ☆ *\n");</p><p>  printf("\t* ☆ 8.保存 ☆ *\n");</p><p>  printf("\t*

85、 ☆ 0.退出系統(tǒng) ☆ *\n");</p><p>  printf("\t********************************************************************************\n");</p>&l

86、t;p><b>  }</b></p><p>  /*系統(tǒng)時(shí)間函數(shù)*/</p><p>  int system_time() </p><p><b>  {</b></p><p>  SYSTEMTIME sys;</p>

87、<p>  GetLocalTime( &sys ); //調(diào)用系統(tǒng)時(shí)間</p><p>  printf( "%4d /%02d/%02d %02d:%02d:%02d 星期%1d\n",</p><p>  sys.wYear,</p><p>  sys.wMonth,</p>

88、<p><b>  sys.wDay,</b></p><p>  sys.wHour,</p><p>  sys.wMinute,</p><p>  sys.wSecond,</p><p>  sys.wDayOfWeek);</p><p>  syshour=sys.wHo

89、ur; </p><p>  sysminute=sys.wMinute; </p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  /*主菜單選擇函數(shù)*/</p><p>

90、  void chose()</p><p><b>  { </b></p><p><b>  int n;</b></p><p>  printf(" 請(qǐng)輸入您想做的操作(0~)8: ");</p><p&g

91、t;<b>  do{</b></p><p>  scanf("%d",&n);</p><p>  if(n<0||n>8)</p><p>  printf("\t\t\t您的輸入錯(cuò)誤請(qǐng)從新輸入(整數(shù)0~8):");</p><p>  rewind(st

92、din);</p><p>  }while(n<0||n>8);</p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1:load();</p><p>  system("cl

93、s"); //每次進(jìn)入主菜單清空</p><p>  mainmenu(); break;</p><p>  case 2:add();break;</p><p>  case 3:show();break;</p><p>  case 4:searsh();break;</p><

94、;p>  case 5:buy_system();break;</p><p>  case 6:back_ticket();break;</p><p>  case 7:timu();break;</p><p>  case 8:save();break;</p><p>  case 0:exit(0);

95、 //調(diào)用系統(tǒng)函數(shù)退出程序</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*主菜單讀入函數(shù)*/</p><p>  void load(void) //載入文件 <

96、/p><p><b>  {</b></p><p>  char n; //定義變量記錄輸入字符 </p><p><b>  FILE *fp;</b></p><p>  biaoji : printf("請(qǐng)輸入文件名或者文

97、件路徑名:"); //標(biāo)記當(dāng)前位置</p><p>  scanf("%s",filename); </p><p>  getchar();</p><p>  printf("您確定您輸入的文件路徑是否正確(y/n):"); //確定文件輸入正確</p><p>

98、;  scanf("%c",&n);</p><p>  if(n=='y') </p><p><b>  {</b></p><p>  if((fp=fopen(filename,"r"))==NULL) //判斷文件的存在,是否可讀</p&

99、gt;<p><b>  {</b></p><p>  printf("文件%s不可讀,請(qǐng)確認(rèn)文件%s存在或者文件路徑正確.\n\n",filename,filename);</p><p>  system("pause");//暫停顯示文件狀態(tài)</p><p><b>  r

100、eturn;</b></p><p><b>  }</b></p><p>  head=p1=(struct ticket *)malloc(sizeof(struct ticket));/*開(kāi)辟一個(gè)新單元*/</p><p>  p1->next =NULL;</p><p>  while

101、(!feof(fp))</p><p><b>  {</b></p><p>  fscanf(fp,"%03d", &p1->number);</p><p>  fscanf(fp, "%d%02d", &p1->hour, &p1->minute)

102、;</p><p>  fscanf(fp, "%s%s", p1->origin_station,p1->last_station);</p><p>  fscanf(fp, "%f%2d%2d%2d", &p1->last_time, &p1->max_number, &p1->so

103、ld_ticket,&p1->piaojia);</p><p>  if(p1->number<0) break;</p><p>  p2=(struct ticket *)malloc(sizeof(struct ticket));/*開(kāi)辟一個(gè)新單元*/</p><p>  p1->next =p2;</p>

104、<p><b>  p3=p1;</b></p><p><b>  p1=p2;</b></p><p>  p1->next =NULL;</p><p><b>  }</b></p><p><b>  free(p2);</b>&

105、lt;/p><p>  p3->next=NULL; </p><p>  fclose(fp); //關(guān)閉文件</p><p>  printf("\n");</p><p>  printf("文件錄入成功\t\t\t"); </p>

106、;<p>  system("pause");</p><p><b>  }</b></p><p><b>  else </b></p><p>  goto biaoji; //當(dāng)文件名輸入錯(cuò)誤時(shí),選擇'n'可返回標(biāo)記處重新輸入&l

107、t;/p><p><b>  }</b></p><p><b>  //增加班次信息</b></p><p>  void add()</p><p><b>  {</b></p><p>  int n=0,m,i;</p>&

108、lt;p><b>  p1=head;</b></p><p>  if(head==NULL) //空數(shù)據(jù)庫(kù)插入在第一個(gè)位置</p><p><b>  {</b></p><p>  getchar();</p><p>  printf("\t車次信息數(shù)據(jù)庫(kù)為空,只能

109、插入第一個(gè)位置,按任意鍵將繼續(xù)。:\n");</p><p>  getchar();</p><p>  printf("請(qǐng)按班次 發(fā)車時(shí)間 起點(diǎn) 終點(diǎn)行車時(shí)間(小時(shí)) 額定載量已訂票人數(shù) 票價(jià)(請(qǐng)輸入0)的形式輸入1條車次記錄(提示班次不與已存在班次相同):\n");</p><p>  head=(struct ticket

110、*)malloc(sizeof(struct ticket));/*開(kāi)辟一個(gè)新單元*/</p><p>  head->next=NULL;</p><p><b>  do{</b></p><p>  scanf("%d%d%2d%s%s%f%d%d%d",&head->number,&h

111、ead->hour,&head->minute,head->origin_station,head->last_station,&head->last_time,&head->max_number,&head->sold_ticket,&head->piaojia);</p><p>  if((head->number

112、<0)||(head->number<0)||((head->hour<0)||(head->hour>24))||((head->minute<0)||(head->minute>60))||(head->max_number<0)||(head->sold_ticket<0))</p><p>  printf(&quo

113、t;對(duì)不起您的輸入錯(cuò)誤,請(qǐng)從新輸入:\n");</p><p>  rewind(stdin);</p><p>  }while((head->number<0)||(head->number<0)||((head->hour<0)||(head->hour>24))||((head->minute<0)||(head

114、->minute>60))||(head->max_number<0)||(head->sold_ticket<0));</p><p>  printf("%03d\t%d:%02d\t\t%s\t%s\t %.1f\t \t%2d\t\t%2d%2d\n", head->number, head->hour, head->mi

115、nute, head->origin_station, head->last_station, head->last_time, head->max_number, head->sold_ticket,head->piaojia);</p><p>  printf("\t\t\t1項(xiàng)信息成功輸入完畢!\n");</p><p>  

116、system("pause");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  /*數(shù)據(jù)庫(kù)不為空時(shí),分插入第一個(gè)位置,中間位置,最后一個(gè)位置三種情況*/</p><p><b>  do{</b&

117、gt;</p><p><b>  n++;</b></p><p>  p1=p1->next;</p><p>  }while(p1!=0);</p><p>  printf("\t車次信息數(shù)據(jù)庫(kù)中共有%d條記錄,請(qǐng)輸入插入的位置n(n>=1&&n<=%d):\n&qu

118、ot;,n,n+1);</p><p><b>  do{</b></p><p>  scanf("%d",&m);</p><p>  if(m<1||m>n+1) printf("\t\t\t輸入范圍有誤,請(qǐng)重新輸入希望插入的正確位置(n>=1&&n<=%d)

119、:\n",n+1);</p><p>  rewind(stdin);</p><p>  }while(m<1||m>n+1);</p><p><b>  if(m==1) </b></p><p>  {/*插入在數(shù)據(jù)庫(kù)的第一個(gè)位置*/</p><p><b&

120、gt;  p1=head;</b></p><p>  getchar();</p><p>  printf("請(qǐng)按班次 發(fā)車時(shí)間 起點(diǎn) 終點(diǎn)行車時(shí)間(小時(shí)) 額定載量 已訂票人數(shù) 票價(jià)(請(qǐng)輸入0)的形式輸入1條車次記錄(提示班次不與已存在班次相同):\n");</p><p>  head=(struct ticket *)ma

121、lloc(sizeof(struct ticket));/*開(kāi)辟一個(gè)新單元*/</p><p><b>  do{</b></p><p>  scanf("%d%d%2d%s%s%f%d%d%d",&head->number,&head->hour,&head->minute,head->ori

122、gin_station,head->last_station,&head->last_time,&head->max_number,&head->sold_ticket,&head->piaojia);</p><p>  if((head->number<0)||(head->number<0)||((head->hou

123、r<0)||(head->hour>24))||((head->minute<0)||(head->minute>60))||(head->max_number<0)||(head->sold_ticket<0))</p><p>  printf("對(duì)不起您的輸入錯(cuò)誤,請(qǐng)從新輸入:\n");</p><p&

124、gt;  rewind(stdin);</p><p>  }while((head->number<0)||(head->number<0)||((head->hour<0)||(head->hour>24))||((head->minute<0)||(head->minute>60))||(head->max_number<0

125、)||(head->sold_ticket<0));</p><p>  printf("%03d\t%d:%02d\t\t%s\t%s\t %.1f\t \t%2d\t\t%2d%2d\n", head->number, head->hour, head->minute, head->origin_station, head->last_s

126、tation, head->last_time, head->max_number, head->sold_ticket,head->piaojia);</p><p>  head->next =p1;</p><p>  printf("\t\t\t1項(xiàng)信息成功輸入完畢!\n");</p><p>  syste

127、m("pause");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(m==n+1)/*插入在數(shù)據(jù)庫(kù)的最后一個(gè)位置*/</p><p><b>  {</b&g

128、t;</p><p><b>  p1=head;</b></p><p>  while( p1->next!=NULL)</p><p>  p1=p1->next;</p><p>  printf("請(qǐng)按班次 發(fā)車時(shí)間 起點(diǎn) 終點(diǎn)行車時(shí)間(小時(shí)) 額定載量已訂票人數(shù) 票價(jià)(請(qǐng)輸入0)的形

129、式輸入1條車次記錄(提示班次不與已存在班次相同):\n");</p><p>  p2=(struct ticket *)malloc(sizeof(struct ticket));/*開(kāi)辟一個(gè)新單元*/</p><p><b>  do{</b></p><p>  scanf("%d%d%2d%s%s%f%d%d%d

130、",&p2->number,&p2->hour,&p2->minute,p2->origin_station,p2->last_station,&p2->last_time,&p2->max_number,&p2->sold_ticket,&p2->piaojia);</p><p>  if(

溫馨提示

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

評(píng)論

0/150

提交評(píng)論