第一篇:C語言課程設(shè)計(jì)報(bào)告 火車售票查詢系統(tǒng)(完)
湖北工業(yè)大學(xué)
工程技術(shù)學(xué)院
課程設(shè)計(jì)報(bào)告書
課程名稱:
C語言課程設(shè)計(jì)
班
級:
物聯(lián)網(wǎng)一班
小組成員: 范立恒、陳根、聶俊豪、麥燦文、黃文康
組
長:
范立恒
指導(dǎo)教師:
楚惟善
二○一三 年 六 月
C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告 課程題目及要求及要求
題目一:火車售票系統(tǒng)
任務(wù):結(jié)合C語言中相關(guān)知識,設(shè)計(jì)出火車售票系統(tǒng)。錄入北京西站車次信息; 2 旅客按車次買票; 統(tǒng)計(jì)某日火車票銷售金額。
程序要求:
? 貫徹結(jié)構(gòu)化的程序設(shè)計(jì)思想。
? 用戶界面友好,功能明確,操作方便。
? 用戶界面中的菜單至少應(yīng)包括“車次信息錄入”、“旅客買票”、“統(tǒng)計(jì)某
日銷售 金額”、“退
出”4項(xiàng)。
? 代碼應(yīng)適當(dāng)縮進(jìn),并給出必要的注釋,以增強(qiáng)程序的可讀性 ? 為了保證所有的數(shù)據(jù)可以長期被使用,要求程序能將相關(guān)數(shù)據(jù)存儲(chǔ)在外部數(shù)據(jù)文件中,具體數(shù)據(jù)格式和文件名、路徑等自定;
? 根據(jù)所設(shè)計(jì)的算法,定義相應(yīng)函數(shù)分別實(shí)現(xiàn)系統(tǒng)的各子功能模塊,同時(shí)由主程序提供友好的用戶界面,使用戶可通過選擇主菜單來調(diào)用課程設(shè)計(jì)中要求完成的各個(gè)功能模塊,子程序執(zhí)行完后可返回到主菜單,繼續(xù)選擇其他功能執(zhí)行。源程序要求書寫規(guī)范,結(jié)構(gòu)清晰。重點(diǎn)函數(shù)的重點(diǎn)變量,重點(diǎn)功能部分均要求給出清晰的程序注釋。
? 程序編譯、鏈接成功后,自己設(shè)計(jì)實(shí)現(xiàn)程序功能的一組或多組測試數(shù)據(jù),并嚴(yán)格按照此測試數(shù)據(jù)進(jìn)行測試,然后分析測試結(jié)果。如果程序不能正常運(yùn)行或結(jié)果不正確,則需對程序進(jìn)行單步調(diào)試,在調(diào)試過程中認(rèn)真查找算法實(shí)現(xiàn)中存在的問題,并加以分析和 程序分設(shè)計(jì)說明
經(jīng)過對程序設(shè)計(jì)題目的分析可知,整個(gè)程序的設(shè)計(jì)實(shí)現(xiàn)大致分為八個(gè)模塊,每一個(gè)模塊對應(yīng)一個(gè)函數(shù)。在這些函數(shù)當(dāng)中,添加車次數(shù)據(jù)函數(shù),售票函數(shù),查詢總額函數(shù)的實(shí)現(xiàn)嚴(yán)格按照題目的要求,而顯示時(shí)間函數(shù)和顯示車次函數(shù)屬于附加功能。讀取文件函數(shù)和保存信息函數(shù)對其它函數(shù)的實(shí)現(xiàn)起輔助作用,主函數(shù)及菜單函數(shù)控制程序的整體運(yùn)行。1.添加車次函數(shù)
主要實(shí)現(xiàn)程序最初運(yùn)行時(shí)車次的錄入;
C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
(1)添加學(xué)生數(shù)據(jù)函數(shù)add 真以追加方式打開E盤student.txt文件成功?假假輸出文件打開失敗以追加方式打開E盤student.txt文件成功?真輸入添加學(xué)生數(shù)量n循環(huán)變量i=1當(dāng)i<=n時(shí)輸入學(xué)號、姓名和三門成績學(xué)生信息寫入文件 i++關(guān)閉文件圖2 添加學(xué)生數(shù)據(jù)函數(shù)
返回
(2)讀取學(xué)生數(shù)據(jù)函數(shù)reads 真以讀方式打開E盤student.txt文件成功?假循環(huán)變量i=0當(dāng)文件未結(jié)束時(shí)讀取學(xué)生信息到數(shù)組元素stu[i]中i++關(guān)閉文件返回學(xué)生人數(shù)i圖3讀取學(xué)生數(shù)據(jù)
輸出文件打開失敗返回
(3)刪除學(xué)生記錄函數(shù)del
C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
n=reads(stu)循環(huán)變量i=0當(dāng)i j++圖5按總分排 4.程序清單 本程序主要由九個(gè)自定義函數(shù)和一個(gè)主函數(shù)組成,其中主函數(shù)以菜單的形式調(diào)用其它函數(shù)來實(shí)現(xiàn)要求的所有功能。在這些函數(shù)當(dāng)中,添加學(xué)生數(shù)據(jù)函數(shù)、刪除數(shù)據(jù)函數(shù)和排序函數(shù)是程序中較為核心的部分,下面分別進(jìn)行說明。1.錄入車次信息函數(shù) 錄入車次信息,首先由程序創(chuàng)建一個(gè)新文件,并將錄入的車次信息寫入該文件(e: rain.txt)當(dāng)中。具體的程序段如下: if((fp=fopen(“e: rain.txt”,“a”))==NULL)//如果文件已經(jīng)存在,可以追加車次信息 { if((fp=fopen(“e: rain.txt”,“w”))==NULL)// 文件不存在時(shí),創(chuàng)建新文件,輸入車次信息 { C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告 scanf(“%d”,&j); tra[i].maipiao=tra[i].maipiao+j; printf(“n購買成功n”); printf(“n%12d%11d%11s%11s%11d%11.2fn”,tra[i].num,tra[i].date,tra[i].from,tra[i].ter,tra[i].maipiao,tra[i].tickeprice); save(tra,n);3.查詢銷售總額 對于也使用比較日期的方法實(shí)現(xiàn)的,這部分程序仍然調(diào)用了reads函數(shù),整個(gè)排序過程在文件中實(shí)現(xiàn),然后用for循環(huán)進(jìn)行運(yùn)算,把查詢這一天的總額算出。 具體程序如下: if((fp=fopen(“e: rain.txt”,“r”))==NULL) { printf(“讀取錯(cuò)誤,不能打開該文件!n”); return;} else for(i=0;i fscanf(fp,“ %d %d %s %s %d %fn”,&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice); printf(“請輸入你要查詢的日期:n”); scanf(“%d”,&temp.date); for(i=0;i C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告 知識并在此基礎(chǔ)上對數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)和算法有了更深的了解,C語言是計(jì)算機(jī)程序設(shè)計(jì)的重要理論技術(shù)基礎(chǔ),它不僅是計(jì)算機(jī)科學(xué)的核心課程,而且已經(jīng)成為其他理工專業(yè)的熱門選修課。在計(jì)算機(jī)的研究和應(yīng)用中已展現(xiàn)出強(qiáng)大的生命力,它兼顧了諸多高級語言的特點(diǎn),是一種典型的結(jié)構(gòu)化程序設(shè)計(jì)語言,它處理能力強(qiáng),使用靈活方便,應(yīng)用面廣,具有良好的可移植性,同時(shí)這兩周的學(xué)習(xí)也提高了我適應(yīng)實(shí)際,實(shí)踐編程的能力.黃文康:首先這一周的學(xué)習(xí),使我在鞏固了原有的理論知識上,培養(yǎng)了我靈活運(yùn)用和組合集成所學(xué)過知識及技能來分析、解決實(shí)際問題的能力,使我體會(huì)到自身知識和能力在實(shí)際中的應(yīng)用和發(fā)揮。其次,激發(fā)了我創(chuàng)新意識,開發(fā)創(chuàng)造的能力和培養(yǎng)溝通能力。另外,讓我進(jìn)一步熟悉了數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)應(yīng)用。每一處編碼都是在反復(fù)的熟悉數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)特性,及其語法、函數(shù)和程序設(shè)計(jì)思想的過程,對我數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)和提高很有益處,并且使我明白了程序設(shè)計(jì)過程有如解決一實(shí)際問題,從解決實(shí)際問題的角度,我們可以這樣來看:第一要了解這個(gè)問題的基本要求,即輸入、輸出、完成從輸入到輸出的要求是什么;第二,從問題的要害入手,從前到后的解決問題的每個(gè)方面,即從輸入開始入手,著重考慮如何從輸入導(dǎo)出輸出,在這個(gè)過程中,可確定所需的數(shù)據(jù)結(jié)構(gòu)的基本類型——線性表、棧、隊(duì)列、串、數(shù)組、樹和二叉樹以及圖等,然后確定處理過程——算法,可得最后結(jié)論。最后,在這次課程設(shè)計(jì)過程中,我們深刻的認(rèn)識到了自己在學(xué)習(xí)方面的不足之處,我們知道我們還有太多的基本的思想沒有真正的理解,當(dāng)然我們不會(huì)灰心,我們會(huì)在以后的日子里努力彌補(bǔ)我們的不足。 麥燦文:一個(gè)禮拜的課程設(shè)計(jì)讓我們受益匪淺。要學(xué)好一門學(xué)科,沒有刻苦鉆研的精神是不行的,只有在不斷的嘗試中,不斷經(jīng)歷失敗,然后又不斷的嘗試才能獲得成功。兩個(gè)多禮拜中,我們有過山窮水盡的困惑;有過柳暗花明的驚喜;有過唇槍舌劍的辯論;有過相互鼓勵(lì)的安慰。一個(gè)禮拜的時(shí)間我們經(jīng)歷了很多,也收獲了很多。與其說它是體力與腦力的作業(yè),不如說它是合作精神和毅力的考驗(yàn)。經(jīng)過這次課程設(shè)計(jì),我們不僅學(xué)到了很多知識和技能,更重要的是我們學(xué)會(huì)了如何運(yùn)用所學(xué)知識去解決實(shí)際問題。 對于我本人來講這次課程設(shè)計(jì)的總體表現(xiàn),我自己還比較滿意,每天做到了按時(shí)的出勤,上機(jī)遵守機(jī)房的管理規(guī)定,遵循指導(dǎo)老師的安排并能適時(shí)地與老師進(jìn)行溝通,覺得不足的是不能熟練地掌握c語言的設(shè)計(jì)技巧使編程的結(jié)果缺乏效率,不過我相信這只是我的一個(gè)開始,我更應(yīng)該注重的是這次過程,我堅(jiān)信我會(huì)在以后的學(xué)習(xí)和訓(xùn)練中不斷地彌補(bǔ)自己的不足之處,不斷的完善自己的編程能力,因?yàn)槌晒π枰稽c(diǎn)一點(diǎn)積累。 0 C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告 } void menu(){ printf(“ ************************* 武昌站火車訂票系統(tǒng)************************ ”); printf(“n 顯示當(dāng)前時(shí)間”); printf(“n 車次信息錄入”); printf(“n 顯示”); printf(“n 旅客買票”);printf(“n 統(tǒng)計(jì)某日銷售金額”); printf(“n 退出”);} int reads(struct train tra[N])// 讀取車次中的內(nèi)容 { FILE *fp; int i=0; if((fp=fopen(“e: rain.txt”,“r”))==NULL){ printf(“文件打開失??!n”); return 0;} else { for(i=0;!feof(fp);i++) fscanf(fp,“%d %d %s %s %d %fn”,&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice); } fclose(fp); return i;} void save(struct train tra[N],int n)// 車次信息改變后更新文件 { FILE *fp; int i=0; if((fp=fopen(“e: rain.txt”,“w”))==NULL){ printf(“文件打開失??!n”); return;} else { for(i=0;i C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告 getch();} void sell()// 按顧客要求對車次信息賣票 { struct train tra[N]; int num,n,j; int i; n=reads(tra); printf(“n請輸入待查詢的車次號,按回車鍵確認(rèn):n”); scanf(“%d”,&num); for(i=0;i if(num==tra[i].num)break; if(i>=n) { printf(“沒有找到該車次信息!n”); return; } else printf(“n請輸入所買票數(shù),按回車鍵確認(rèn):n”); scanf(“%d”,&j); tra[i].maipiao=tra[i].maipiao+j; printf(“n購買成功n”); printf(“n%12d%11d%11s%11s%11d%11.2fn”,tra[i].num,tra[i].date,tra[i].from,tra[i].ter,tra[i].maipiao,tra[i].tickeprice); save(tra,n);} void all()//統(tǒng)計(jì)銷售金額 { struct train tra[N],temp;float sum=0;FILE *fp;int i,j=0;if((fp=fopen(“e: rain.txt”,“r”))==NULL) { printf(“讀取錯(cuò)誤,不能打開該文件!n”); return;} else for(i=0;i fscanf(fp,“ %d %d %s %s %d %fn”,&tra[i].num,&tra[i].date,tra[i].from,tra[i].ter,&tra[i].maipiao,&tra[i].tickeprice); printf(“請輸入你要查詢的日期:n”); C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告 4、調(diào)試與測試:調(diào)試方法,測試結(jié)果的分析與討論,測試過程中遇到的主要問題及采取的解決措施 5、源程序清單和執(zhí)行結(jié)果(光盤):清單中應(yīng)有足夠的注釋 二、具體安排: 學(xué)生以2—6人為一組,共同完成一個(gè)題目,選出一個(gè)組長負(fù)責(zé)分工和管理,共同完成總體框架設(shè)計(jì),然后每個(gè)學(xué)生分工獨(dú)立完成各自的功能模塊的編程,最后要能集成并測試通過。 每組要以光盤形式上交C源文件和可執(zhí)行文件(放在組長文件袋中,其他成員在報(bào)告本中寫明源程序在哪個(gè)同學(xué)的文件袋中) (注:課程設(shè)計(jì)報(bào)告統(tǒng)一使用學(xué)院規(guī)定的課程設(shè)計(jì)報(bào)告本和文件袋) 三、備注 每個(gè)人可自行附加模塊設(shè)計(jì)心得 及所發(fā)現(xiàn)的問題及解決方法 《C語言課程設(shè)計(jì)報(bào)告 火車售票查詢系統(tǒng)(完)》的word文檔中1.、2、3、4、7是統(tǒng)一一樣的 你們需要另外說明 哪個(gè)版塊是你設(shè)計(jì)的OK) 數(shù)據(jù)結(jié)構(gòu)與算法課程實(shí)驗(yàn)報(bào)告 班級:學(xué)號: 課程設(shè)計(jì)一:火車售票系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)姓名: cll 一、實(shí)驗(yàn)內(nèi)容: 火車售票系統(tǒng)在現(xiàn)實(shí)中的應(yīng)用已經(jīng)非常普遍,目前通常使用可視化的方法實(shí)現(xiàn),例如采用C/S模式下的程序設(shè)計(jì)或者采用B/S模式下的程序設(shè)計(jì),通常都具有較為友好的界面和較為完善的功能?;疖囀燮毕到y(tǒng)的實(shí)現(xiàn)過程中,主要涉及到數(shù)據(jù)格式的設(shè)計(jì),也就是數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)。通常在采用數(shù)據(jù)庫的情況下,可以運(yùn)用數(shù)據(jù)庫的設(shè)計(jì)來實(shí)現(xiàn)。在沒有采用數(shù)據(jù)庫情況下需要,單獨(dú)設(shè)計(jì)相應(yīng)數(shù)據(jù)結(jié)構(gòu)和算法。 二、實(shí)驗(yàn)?zāi)康模?/p> 按給定需求,通過查找相關(guān)資料,完成火車售票系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn),在設(shè)計(jì)過程中充分運(yùn)用數(shù)據(jù)結(jié)構(gòu)與算法課程中所學(xué)知識,從而熟練地掌握和應(yīng)用線性表、單鏈表等重要數(shù)據(jù)結(jié)構(gòu)和常用算法。提前熟悉軟件需求分析,軟件測試等環(huán)節(jié),運(yùn)用相應(yīng)程序設(shè)計(jì)語言實(shí)現(xiàn)該系統(tǒng),從而進(jìn)一步提高程序設(shè)計(jì)能力。 三、問題描述 (1)此系統(tǒng)可以實(shí)現(xiàn)售票、退票、車票剩余情況查詢等功能。 (2)每張車票包含車次、座位信息。在售票、退票、查詢剩余票等環(huán)節(jié)中,都必須顯示出車票的信息,即車次、座位情況。 (3)退票時(shí),必須是車站售出的車票才能退,否則視為無效票,不能退票。(4)演示程序以用戶和計(jì)算機(jī)的對話方式進(jìn)行,即在計(jì)算機(jī)終端上顯示“提示信息”之后,由用戶在鍵盤上輸入程序中規(guī)定的運(yùn)算命令;相應(yīng)的輸入數(shù)據(jù)(濾去輸入中的非法字符)和運(yùn)算結(jié)果顯示在后。 (5)由訂票系統(tǒng)的主要功能使程序的命令包括: 1)查詢;2)訂票;3)退票 4)退出訂票系統(tǒng) 四、問題的實(shí)現(xiàn) 4.1所用的數(shù)據(jù)結(jié)構(gòu)(包括所用數(shù)據(jù)結(jié)構(gòu)的抽象數(shù)據(jù)類型定義和說明)typedefstructLNode{ //數(shù)據(jù)域 char name[10];//訂票姓名 intdnum;//訂票數(shù)量 char dj[50];//證件編號 intzhekou;//1代表折扣對象 float pay;//付費(fèi) structLNode *next;//指針域 intzuohao[200];}LNode,*LinkList;//構(gòu)造單鏈表(已訂票) typedefstructTickets{ char *endname;//終點(diǎn)站名 char *hnum;//車次名 intfnum;//票價(jià) float discut;//折扣 int day;//日期 intwholenum;//總票額 intlastnum;//余票量 inttuipiao[100];//退票處理,記錄退票的座位號 inttpcs;//記錄目前退票次數(shù) intmcps;//記錄賣出去的票數(shù)(包括退票)LinkList la;//已訂票鏈表 }Tickets;//構(gòu)造結(jié)構(gòu)類型(火車票) typedefstruct{ struct Tickets *elem;//存儲(chǔ)空間的基址 int length;intlistsize;//當(dāng)前分配的存儲(chǔ)容量(以sizeof(Tickets)為單位)}SqList;//構(gòu)造順序表 4.2主要實(shí)現(xiàn)思路 1、火車站的火車票采用順序表表示。每趟火車出售的票用鏈表表示。 2、查詢:輸入終點(diǎn)站信息,輸出該趟火車的票價(jià),日期,余票數(shù)等信息; 訂票:輸入終點(diǎn)站信息,確認(rèn)有該趟車之后,輸入該趟車的基本信息,之后輸入購票數(shù),系統(tǒng)查詢是否有余票,確認(rèn)之后,輸入個(gè)人基本信息;系統(tǒng)查詢是否有退票,若有退票則,先售出退票。插入新的結(jié)點(diǎn)。 退票:輸入終點(diǎn)站的信息,輸入個(gè)人信息,1、若退出所有票,則刪除該結(jié)點(diǎn),若,只退部分票,則更改該結(jié)點(diǎn)的購票信息。 退出:退出系統(tǒng); 【程序演示】 輸入2 訂票,購買到溫州的火車票十張,姓名:a;證件號:a; 退票:輸入3退票,輸入終點(diǎn)站溫州,姓名:a;證件號:a; 退票之后,繼續(xù)訂票3張 【實(shí)現(xiàn)代碼】 intInitList_L(LinkList *h){//初始化帶頭結(jié)點(diǎn)的單鏈表 *h =(LinkList)malloc(sizeof(LNode));//生成頭結(jié)點(diǎn) if(!h){ printf(“初始化鏈表錯(cuò)誤!n”); return 0;} (*h)-> next = NULL;return 1;} intCreate_Sq(SqList *L){//初始化并創(chuàng)建順序表 L->elem=(Tickets *)malloc(ListInitSize*sizeof(Tickets));if(!L->elem){ printf(“存儲(chǔ)分配失敗!”);// 存儲(chǔ)分配失敗 return 0;} L->length=5;//賦值 L->listsize=ListInitSize;int j;for(j = 0;j < L->length;j++){ L->elem[j].mcps=0;//初始化,記錄買出去的票 L->elem[j].tpcs=0;//記錄退票數(shù) } inti;for(i = 0;i < L->length;i++){ InitList_L(&L->elem[i].la);} L->elem[0].endname=“北京”;//終點(diǎn)站名 L->elem[0].hnum=“G2378”;//車次名 L->elem[0].day=1;//日期 L->elem[0].fnum=346;//票價(jià) L->elem[0].discut=0.5;L->elem[0].wholenum=L->elem[0].lastnum=10; L->elem[1].endname=“溫州”;L->elem[1].hnum=“K351”;L->elem[1].day=2;L->elem[1].fnum=254;L->elem[1].discut=0.5;L->elem[1].wholenum=L->elem[1].lastnum=10; L->elem[2].endname=“合肥”;L->elem[2].hnum=“G782B”;L->elem[2].day=3;L->elem[2].fnum=224; L->elem[2].discut=0.5;L->elem[2].wholenum=L->elem[2].lastnum=10;L->elem[3].endname=“武漢”;L->elem[3].hnum=“D2903”;L->elem[3].day=4;L->elem[3].fnum=200;L->elem[3].discut=0.5;L->elem[3].wholenum=L->elem[3].lastnum=10;L->elem[4].endname=“廈門”;L->elem[4].hnum=“T112”;L->elem[4].day=5;L->elem[4].fnum=450;L->elem[4].discut=0.5;L->elem[4].wholenum=L->elem[4].lastnum=10;return 1;}//創(chuàng)建順序表 void Demand(SqList L){ int n1;do{ char endstop[100]; printf(“*******查票窗口********n”); printf(“請輸入終點(diǎn)站名:n”); do{ gets(endstop);} while(!endstop[0]);inti;for(i=0;i printf(“tt杭州-->%sn”,endstop);printf(“tt車次:%sn”,L.elem[i].hnum);printf(“tt日期:%d日n”,L.elem[i].day);printf(“tt票價(jià):%dn”,L.elem[i].fnum);printf(“tt折扣價(jià)(學(xué)生/軍人等5折):%fn”,L.elem[i].fnum*L.elem[i].discut);printf(“tt總票量:%dn”,L.elem[i].wholenum);printf(“tt余票量:%dn”,L.elem[i].lastnum);} } break;if(i==L.length-1){ printf(“沒有找到%s的車票!n”,endstop);} printf(“1.返回主菜單;2.繼續(xù)n”); scanf(“%d”,&n1);}while(n1==2);} void GetTicket(SqList *L){//訂票 int n2=2,zhekou;//n2=1,繼續(xù)訂票;n2=2,返回主菜單;n2=0,確定,即訂票成功 intnum;//訂票數(shù) float money;//存儲(chǔ)應(yīng)付的總票額 char endstop[100];//記錄終點(diǎn)站名 char name[100];char ID[100];//記錄證件號 do{ printf(“*******訂票窗口********n”);printf(“終點(diǎn)站名:”); do{ gets(endstop);} while(!endstop[0]);inti = 0;for(i=0;i printf(“tt杭州-->%sn”,endstop);printf(“tt車次:%sn”,L->elem[i].hnum);printf(“tt日期:%d日n”,L->elem[i].day);printf(“tt票價(jià):%dn”,L->elem[i].fnum);printf(“tt折扣價(jià)(學(xué)生/軍人等5折):%fn”,L->elem[i].fnum*L->elem[i].discut);printf(“tt總票量:%dn”,L->elem[i].wholenum);printf(“tt余票量:%dn”,L->elem[i].lastnum);printf(“請輸入訂票數(shù):”); scanf(“%d”,&num); if(L->elem[i].lastnum == 0){ printf(“對不起,到%s的車票已賣完!n”,endstop);printf(“nt1.繼續(xù)訂票;2.返回主菜單;n”); scanf(“%d”,&n2);}else if(num> L->elem[i].lastnum){ printf(“對不起,到%s的車票只剩%d張。n”,endstop);printf(“n1.繼續(xù)訂票;2.返回主菜單;n”);scanf(“%d”,&n2);}else{ printf(“購票請輸入個(gè)人信息:n”); printf(“姓名:”); do{ gets(name);}while(!name[0]); printf(“是折扣對象嗎?若是,請輸入相關(guān)證件號,不是請輸入身份證號(1.是;0.不是)n”); scanf(“%d”,&zhekou);while(zhekou!= 1 &&zhekou!= 0){ printf(“不合法輸入,請重輸!n”); scanf(“%d”,&zhekou);} printf(“證件號碼:”);//fflush(stdin);do{ gets(ID);}while(!ID[0]);//輸出訂票信息,待客戶確認(rèn) printf(“t請核對您的訂票信息:n”);printf(“t姓名:%sn”,name);printf(“t證件號碼:%sn”,ID);printf(“t杭州--%s:n”,endstop);printf(“t車次:%sn”,L->elem[i].hnum);printf(“t日期:12月%d日”,L->elem[i].day);//輸出票價(jià)(兩種情況) if(zhekou==1){ printf(“折扣價(jià)(學(xué)生/軍人等5折):%fn”,L->elem[i].fnum*L->elem[i].discut); money=L->elem[i].fnum*L->elem[i].discut*num;//money用于暫時(shí)存儲(chǔ)應(yīng)付的總票額 }else{ printf(“票價(jià):%dn”,L->elem[i].fnum); money = L->elem[i].fnum*num; } printf(“訂票數(shù):%dn”,num); printf(“座位號: ”); //如果有退票,優(yōu)先賣退票 int k=0; //k用于記錄買到的票是退票的數(shù)目 int data[100];//臨時(shí)記錄座位號,用于后面的保存 int j;//只用于for循環(huán)的參數(shù),不保存數(shù)據(jù); for(j=L->elem[i].tpcs-1;j>=0;j--){//只需要num張就夠了,L.elem[i].jishu1為退票總數(shù) printf(“%dt”,L->elem[i].tuipiao[j]);//退票的座位號tuipioa[j] k++;//買到退票數(shù)目+1 if(k>=num)break;//說明買的全部都是退票 } //退票數(shù)目不夠<買票數(shù)目 if(k 此時(shí)賣出的票數(shù)即為座位號 L->elem[i].mcps += 1;//賣出去票的數(shù)目+1(包括退票) data[j]=L->elem[i].mcps; printf(“%dt”,L->elem[i].mcps); } } printf(“n總票額:%fn”,money); printf(“n 0.確認(rèn);1.取消;2.返回主菜單n”); scanf(“%d”,&n2);if(n2==0){ printf(“訂票成功!n”); L->elem[i].lastnum-=num;//更新余票的數(shù)目 //在鏈表中插入新結(jié)點(diǎn) LinkListp,s;//已訂票鏈表的指針類型 p = L->elem[i].la;//第i趟車的已訂票列表(頭結(jié)點(diǎn)) s =(LinkList)malloc(sizeof(LNode));//新的結(jié)點(diǎn) if(!s){ printf(“內(nèi)存分配失?。 ?; }else{ s->next=p->next;//在頭部插入 p->next=s; s->dnum=num;//訂票數(shù)量 s->pay=money;//票價(jià) s->zhekou=zhekou;//折扣信息 strcpy(s->name,name);//姓名 strcpy(s->dj,ID);//證件號 //將座位號記入客戶信息 int flag=0; for(j=L->elem[i].tpcs-1;j>=0;j--){//只需要num張就夠了,L.elem[i].jishu1為可買退票的張數(shù) } } s->zuohao[flag]=L->elem[i].tuipiao[j];flag++; k++;//買到退票數(shù)目+1 if(k>=num)break;//說明買的全部都是退票 } //退票數(shù)目不夠<買票數(shù)目 if(k s->zuohao[flag]=data[j]; flag++;} } } } break; if(i==L->length-1){ printf(“沒有到%s的車票!n”,endstop); n2=2; } } }while(n2==1);} void ReturnTicket(SqList *L){ int n3=2,k; //n3=1,繼續(xù)退票;n3=2,返回主菜單;n3=0,確定,即退票成功,k記錄要退的票的數(shù)目 LinkList p;char name[100];char ID[100]; char endstop[100];do{ printf(“*******退票窗口********n”); printf(“終點(diǎn)站:”); do{ gets(endstop);} while(!endstop[0]);inti; for(i=0;i printf(“姓名:”); do{ gets(name);}while(!name[0]);printf(“證件號:”);do{ gets(ID);}while(!ID[0]); p = L->elem[i].la;if(!p->next){ printf(“沒有客戶!”); p->next){ }else{ p = p->next;while(!(strcmp(p->name,name)==0 p=p->next;} &&strcmp(p->dj,ID)==0)&& if(strcmp(p->name,name)==0 &&strcmp(p->dj,ID)==0){ printf(“您的車票信息如下:n”); printf(“t姓名:%sn”,p->name); printf(“t證件號碼:%sn”,p->dj); printf(“t杭州-->%sn”,L->elem[i].endname); printf(“t車次:%sn”,L->elem[i].hnum); printf(“t日期:12月%d日n”,L->elem[i].day); if(p->zhekou==0){//非折扣對象 printf(“t票價(jià):%dn”,L->elem[i].fnum); }else{//折扣對象 printf(“t 折價(jià):%fn”,L->elem[i].fnum*L->elem[i].discut); } printf(“t訂票數(shù):%dn”,p->dnum); printf(“t座位號為:”); int flag; for(flag = 0;flag dnum;flag++){ printf(“%dt”,p->zuohao[flag]); } printf(“總票額:%fn”,p->pay); printf(“退幾張?n”); scanf(“%d”,&k);//k用來記錄退票的張數(shù) if(k > p->dnum){ printf(“您只有%d票,請重新確認(rèn)!n”,p->dnum); printf(“1.重新確定;2.返回主菜單n”); scanf(“%d”,n3); }else{ printf(“0.確認(rèn);1.取消;2.返回主菜單n”); scanf(“%d”,&n3); if(n3==0){ printf(“退票成功!n”); int i1 = L->elem[i].tpcs; L->elem[i].tpcs+=k;//更新退票數(shù) for(flag=p->dnum;flag>p->dnum-k;flag--,i1++){ L->elem[i].tuipiao[i1] = p->zuohao[flag-1]; } L->elem[i].lastnum+=k;//更新余票 if(k==p->dnum){ //票全部退完的情況,刪除鏈表中的結(jié)點(diǎn) LinkList q = L->elem[i].la; while(q->next!=p){ 扣 q = q->next; } q->next = p->next;free(p);//釋放資源 n3=2;//返回主菜單 折扣票 }else{ if(p->pay == p->dnum*L->elem[i].fnum){ //判斷是否是 } p->pay-=L->elem[i].fnum*k;}else{ p->pay-=L->elem[i].fnum*k*L->elem[i].discut; p->dnum-=k; printf(“你還有%d張票”,p->dnum); n3=2; } }//if(n3==0) }// else }else{// if(strcmp(p->name,name)==0&&strcmp(p->zhengjian,zhengjian)==0) printf(“沒有該客戶買票的信息!請重新確認(rèn)!”);//最后一個(gè)結(jié)點(diǎn)也不是要找的結(jié)點(diǎn)的情況 n3=2; } } break; }//if(strcmp(L.elem[i].endstop,endstop)==0)if(i==L->length-1){ //查找到了最后一個(gè) printf(“不是本站售出的票,請重新確認(rèn)!n”); n3=2; } } }while(n3==1);} void Quit(){ printf(“成功退出系統(tǒng)!感謝您的支持!n”);} void main(){ LinkList L0;InitList_L(&L0);SqList L; //順序表,用于存放車票信息 Create_Sq(&L); //初始化并創(chuàng)建順序表 int n;do{ printf(“n **************杭州火車站訂票系統(tǒng)***************n”); printf(“n ******************本站車票信息******************n”); printf(“ * 車次目的地日期票價(jià) *nn”); inti;for(i=0;i * %s %s 12月%d日 %d * n”,L.elem[i].hnum,L.elem[i].endname,L.elem[i].day,L.elem[i].fnum); } printf(“n * 1.查詢 3.退票 *n”);printf(“n * 2.訂票 4.退出 *n”); printf(“ ***************************************************n”); printf(“n請按菜單提示輸入:n”); } scanf(“%d”,&n); switch(n){ case 1 : Demand(L); break; case 2 :GetTicket(&L); break; case 3 :ReturnTicket(&L); break; case 4 : Quit(); break;} }while(n!=4); 車 售 票 系 統(tǒng) 需 求 規(guī) 格 說 明 書 作者:李艷亮 2013年11月 火 目錄 1.引言.............................................................................................................................................3 1.1編寫目的.............................................................................................................................3 1.2項(xiàng)目背景.............................................................................................................................3 1.3定義.....................................................................................................................................3 1.4參考資料.............................................................................................................................3 2.任務(wù)概述.....................................................................................................................................3 2.1目標(biāo).....................................................................................................................................3 2.2運(yùn)行環(huán)境.............................................................................................................................4 2.3條件與限制.........................................................................................................................4 3.?dāng)?shù)據(jù)描述.....................................................................................................................................4 3.1靜態(tài)數(shù)據(jù).............................................................................................................................4 3.2動(dòng)態(tài)數(shù)據(jù).............................................................................................................................4 3.3數(shù)據(jù)庫介紹.........................................................................................................................5 3.4數(shù)據(jù)詞典.............................................................................................................................5 3.5數(shù)據(jù)采集.............................................................................................................................9 4.功能需求.....................................................................................................................................9 4.1功能劃分.............................................................................................................................9 4.2功能描述...........................................................................................................................10 5.性能需求...................................................................................................................................10 5.1數(shù)據(jù)精確度.......................................................................................................................10 5.2時(shí)間特性...........................................................................................................................10 5.3適應(yīng)性...............................................................................................................................10 6.運(yùn)行需求...................................................................................................................................11 6.1用戶界面...........................................................................................................................11 6.2硬件接口...........................................................................................................................11 6.3軟件接口...........................................................................................................................11 6.4故障處理...........................................................................................................................11 7.其它需求...................................................................................................................................11 1.引言 1.1編寫目的 本需求分析報(bào)告的目的是規(guī)范化本軟件的編寫,旨在于提高軟件開發(fā)過程中的能見度,便于對軟件開發(fā)過程中的控制與管理,同時(shí)提出了本火車售票系統(tǒng)的軟件開發(fā)過程,便于程序員與客戶之間的交流、協(xié)作,并作為工作成果的原始依據(jù),同時(shí)也表明了本軟件的共性,以期能夠獲得更大范圍的應(yīng)用。 1.2項(xiàng)目背景 1、.項(xiàng)目的委托單位:中國鐵路局 2、開發(fā)單位:湖南安全技術(shù)職業(yè)學(xué)院 3、軟件名稱:火車售票系統(tǒng) 1.3定義 1、鐵路售票應(yīng)用系統(tǒng)軟件:基本元素為構(gòu)成鐵路售票及相關(guān)行為所必須的各種部分。 2、需求:用戶解決問題或達(dá)到目標(biāo)所需的條件或功能;系統(tǒng)或系統(tǒng)部件要滿足合同、標(biāo)準(zhǔn),規(guī)范或其它正式規(guī)定文檔所需具有的條件或權(quán)能。 3、需求分析:包括提煉,分析和仔細(xì)審查已收集到的需求,以確保所有的風(fēng)險(xiǎn)承擔(dān)者都明其含義并找出其中的錯(cuò)誤,遺憾或其它不足的地方。 4、模塊的獨(dú)立性:是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他的模塊的接口是簡單的。 1.4參考資料 1、《實(shí)用軟件工程》(第二版)鄭人杰,殷人昆,陶永雷,清華大學(xué)出版社,1997 2、《JAVA網(wǎng)絡(luò)高級編程》金勇華,曲俊生,人民郵電出版社,2001 3、《JBUILDER培訓(xùn)教程》Borland software corporation,機(jī)械工業(yè)出版社,2002 2.任務(wù)概述 2.1目標(biāo) (1)完善目前火車售票系統(tǒng),使之能跟上時(shí)代的發(fā)展。同時(shí)通過實(shí)踐來提高自己的動(dòng)手能 (2)應(yīng)用范圍:理論上能夠?qū)崿F(xiàn)于鐵路部門的售票系統(tǒng),其目的在于在原有的系統(tǒng)基礎(chǔ) 使得火車售票便捷化,以期實(shí)現(xiàn)完善日常生活中火車售票的各種缺陷。 (3)可實(shí)現(xiàn)旅客對于火車票的查詢與購買功能,售票員則可實(shí)現(xiàn)查詢、添加和刪除等功能;對于所查詢的車次結(jié)果提供列表顯示輸出;有一定的安全機(jī)制,普通旅客不能對車次信息隨意刪改,只有授權(quán)的售票員可通過密碼識別進(jìn)行維護(hù)。 2.2運(yùn)行環(huán)境 操作系統(tǒng):Microsoft Windows 2000 Advanced Server 支持環(huán)境:IIS 5.0 數(shù) 據(jù) 庫:Microsoft SQL Server 2000 2.3條件與限制 一個(gè)更完善的火車售票系統(tǒng),應(yīng)提供更為便捷與強(qiáng)大的查詢購買功能,如相應(yīng)的網(wǎng)絡(luò)操作及服務(wù),由于開發(fā)時(shí)間和計(jì)算機(jī)數(shù)量有限,該系統(tǒng)并未提供這一功能,對于信息的保護(hù)手段僅限制于設(shè)置用戶級別,以記名提供數(shù)據(jù)文件的備份,比較簡單,不能防止惡意的破壞,安全性能有待進(jìn)一步完善。 3.?dāng)?shù)據(jù)描述 3.1靜態(tài)數(shù)據(jù) 火車票:列車車號 (int SerialNumber) 列車始發(fā)時(shí)間(struct time SetOut) 列車始發(fā)站(char DeparturePoint) 列車終點(diǎn)站(char TerminalPoint)票務(wù):列車車號 (int SerialNumber) 已售出車票票數(shù)(int FixedNumber) 額定載量(int FixNumber)售票員:用戶名(char name) 密碼(char password)3.2動(dòng)態(tài)數(shù)據(jù) 輸入數(shù)據(jù):根據(jù)界面提示,鍵盤輸入操作; 查詢方式:查詢車次、查詢始發(fā)站; 旅客購買時(shí)的票務(wù)信息,售票員添加、購票、退票時(shí)的票務(wù)信息; 售票員備份數(shù)據(jù)恢復(fù)所需的數(shù)據(jù)備份文件; 售票員操作需密碼,旅客操作受限; 輸出信息:查詢車次確定的數(shù)據(jù)庫記錄的子集; 統(tǒng)計(jì)結(jié)果; 車次信息錄入、刪除(成功或失?。?/p> 車次信息查詢、購買的操作結(jié)果; 數(shù)據(jù)備份輸出的數(shù)據(jù)備份文件; 內(nèi)部數(shù)據(jù):查詢操作建立的索引; 3.3數(shù)據(jù)庫介紹 數(shù)據(jù)庫采用Microsoft Access數(shù)據(jù)庫 3.4數(shù)據(jù)詞典 《火車售票系統(tǒng)》的總體功能如下: 車票的售出; 車票的退還; 車票信息的查詢; 車票的增刪改; 售票員查詢統(tǒng)計(jì)車票信息; 售票系統(tǒng)數(shù)據(jù)備份; 售票管理者口令修改; 1.售票員登陸系統(tǒng): (1)數(shù)據(jù)流圖 售票退票選擇檢驗(yàn)錯(cuò)誤售票員選擇用戶名密碼身份驗(yàn)證售票員信息密碼正確登陸系統(tǒng)選擇選擇選擇授權(quán)信息表查詢錄入新的班次信息 (2)數(shù)據(jù)詞典 ? 數(shù)據(jù)源點(diǎn)及匯點(diǎn)描述: ① 名稱:售票員 簡要描述:管理售票員信息 有關(guān)數(shù)據(jù)流:用戶名、密碼、系統(tǒng)選擇:售票系統(tǒng)、退票系統(tǒng)、查詢系統(tǒng)、錄入信息系統(tǒng) 數(shù)目:1 ? 加工邏輯詞條描述: ① 加工名:身份檢驗(yàn) 加工編號:1 簡要描述:檢驗(yàn)用戶身份 輸入數(shù)據(jù)流:用戶名、密碼 輸出數(shù)據(jù)流:密碼正確、身份驗(yàn)證錯(cuò)誤 加工邏輯: IF 用戶名為空 THEN 發(fā)出“用戶名為空錯(cuò)誤” ELSE IF 密碼為空 THEN 發(fā)出“密碼為空錯(cuò)誤” ELSE IF 用戶名和密碼不符 THEN 發(fā)出“用戶名和密碼不匹配錯(cuò)誤” ENDIF ENDIF ENDIF ENDIF ? 數(shù)據(jù)流名詞條描述: ① 數(shù)據(jù)流名:用戶名 說明:售票員姓名 數(shù)據(jù)流來源:售票員 數(shù)據(jù)流去向:身份檢驗(yàn) 數(shù)據(jù)流組成:用戶名=字符型字符串 ② 數(shù)據(jù)流名:密碼 說明:與用戶名相匹配的密碼 數(shù)據(jù)流來源:售票員 數(shù)據(jù)流去向:身份檢驗(yàn) 數(shù)據(jù)流組成:密碼=短整型字符串 每個(gè)數(shù)據(jù)量流通量: ③ 數(shù)據(jù)流名:出錯(cuò)信息 說明:用于指示身份驗(yàn)證錯(cuò)誤的信息 數(shù)據(jù)流來源:身份檢驗(yàn) 數(shù)據(jù)流去向:售票員 數(shù)據(jù)流組成:出錯(cuò)信息=任意字符串 ④ 數(shù)據(jù)流名:系統(tǒng)名稱 說明:系統(tǒng)的名稱 數(shù)據(jù)流來源: 數(shù)據(jù)流去向:選擇 數(shù)據(jù)流組成: ? 數(shù)據(jù)文件詞條描述: ① 數(shù)據(jù)文件名:授權(quán)信息表 簡述:存放售票員信息 輸入數(shù)據(jù): 輸出數(shù)據(jù):售票員信息 數(shù)據(jù)文件組成:授權(quán)信息表由“售票員信息”組成 2.售票員相關(guān)操作(售票、退票、查詢、錄入) 票務(wù)信息表車票信息車票信息售票退票檢驗(yàn)錯(cuò)誤選擇選擇用戶名售票員密碼身份驗(yàn)證密碼正確登陸系統(tǒng)選擇售票員信息選擇選擇授權(quán)信息表查詢錄入新的班次信息車票信息車票信息列車信息表(2):數(shù)據(jù)詞典: ? 數(shù)據(jù)源點(diǎn)及匯點(diǎn)描述: ○1 名稱:售票員 簡要描述:管理售票員信息 有關(guān)數(shù)據(jù)流:用戶名、密碼 數(shù)目:1 ? 加工邏輯詞條描述: ○1加工名:身份檢驗(yàn) 加工編號:1 簡要描述:檢驗(yàn)用戶身份 輸入數(shù)據(jù)流:用戶名、密碼 輸出數(shù)據(jù)流:密碼正確、身份驗(yàn)證錯(cuò)誤 ○2加工名:售票 加工編號:2 簡要描述:根據(jù)所讀入的操作信息,售出火車票 輸入數(shù)據(jù)流:操作信息,火車票信息 輸出數(shù)據(jù)流:火車票信息 加工邏輯:根據(jù)所讀入的操作信息,售出火車票 ? 數(shù)據(jù)流名詞條描述: ○1 數(shù)據(jù)流名:用戶名 說明:售票員的姓名 數(shù)據(jù)流來源:售票員 數(shù)據(jù)流去向:身份檢驗(yàn) 數(shù)據(jù)流組成:用戶名=字符型字符串 ○2數(shù)據(jù)流名:密碼 說明:與職工名稱相匹配的密碼 數(shù)據(jù)流來源:售票員 數(shù)據(jù)流去向:身份檢驗(yàn) 數(shù)據(jù)流組成:密碼=短整型字符串 每個(gè)數(shù)據(jù)量流通量: ○3數(shù)據(jù)流名:車票信息 說明:車票信息 數(shù)據(jù)流來源:售票員 數(shù)據(jù)流去向:列車信息表 ? 數(shù)據(jù)文件詞條描述: ① 數(shù)據(jù)文件名:列車信息表 簡述:車票信息 輸入數(shù)據(jù):車票信息 輸出數(shù)據(jù): 數(shù)據(jù)文件組成:列車信息表由“車票信息”組成 存儲(chǔ)方式:關(guān)鍵碼 存取頻率:頻繁 ○2數(shù)據(jù)文件名:票務(wù)信息表 簡述:票務(wù)信息 輸入數(shù)據(jù):票務(wù)信息 輸出數(shù)據(jù): 數(shù)據(jù)文件組成:票務(wù)信息表由“列車號、已售票、剩余票”組成存儲(chǔ)方式:關(guān)鍵碼 存取頻率:頻繁 3.旅客查詢購票過程:(1)數(shù)據(jù)流圖 旅客 登錄系統(tǒng)選擇選擇選擇選擇訂票退票查詢(2)數(shù)據(jù)詞典: ● 數(shù)據(jù)源點(diǎn)及匯點(diǎn)描述: 名稱:旅客 簡要描述:訂票,退票,查詢 有關(guān)數(shù)據(jù)流:系統(tǒng)選擇:訂票系統(tǒng)、退票系統(tǒng)、查詢系統(tǒng) ●數(shù)據(jù)流名詞條描述: ⑤ 數(shù)據(jù)流名:系統(tǒng)名稱 說明:系統(tǒng)的名稱 數(shù)據(jù)流來源: 數(shù)據(jù)流去向:選擇 數(shù)據(jù)流組成: 3.5數(shù)據(jù)采集 數(shù)據(jù)采集采用鍵盤輸入 4.功能需求 4.1功能劃分 該軟件具有如下主要功能: 1.瀏覽功能 2.查詢功能 3.添加功能 4.修改功能 5.刪除功能 6.授權(quán)功能 4.2功能描述 1.瀏覽功能 列出當(dāng)前數(shù)據(jù)庫文件中車票的所有記錄 可選定一項(xiàng)紀(jì)錄,顯示說有域 2.查詢功能 車次信息匹配查詢 始發(fā)站信息匹配查詢 3.添加功能 增加一條車票的信息 4.修改功能 修改某一已存在的記錄內(nèi)容,提供確認(rèn)機(jī)制 5.刪除功能 刪除一條記錄,提供確認(rèn)機(jī)制 6.授權(quán)功能 授權(quán)票務(wù)管理人員修改數(shù)據(jù)的權(quán)限 5.性能需求 5.1數(shù)據(jù)精確度 查詢時(shí)應(yīng)保證查全率,所有在相應(yīng)域中包含查詢車次的記錄都應(yīng)能查到,同時(shí)保證查準(zhǔn)率。 5.2時(shí)間特性 一般操作的相應(yīng)時(shí)間應(yīng)在1~2秒內(nèi) 5.3適應(yīng)性 滿足運(yùn)行環(huán)境在允許操作系統(tǒng)之間的安全轉(zhuǎn)換和雨其它又能夠用軟件的獨(dú)立運(yùn)行要求。 6.運(yùn)行需求 6.1用戶界面 采取對話框方式,多功能窗口運(yùn)行 6.2硬件接口 (1)硬件接口:支持x86系列PC機(jī) (2)網(wǎng)絡(luò)硬件接口要求:現(xiàn)實(shí)中要求具有高速以太網(wǎng)組網(wǎng)一實(shí)現(xiàn)聯(lián)網(wǎng)銷售,但是在理論實(shí)驗(yàn)驗(yàn)證軟件本身的目的來看,無需網(wǎng)絡(luò)通訊接口。 6.3軟件接口 運(yùn)行于Windows2000及更高版本并裝有JAVA虛擬機(jī)的操作系統(tǒng)之上。 6.4故障處理 正常使用時(shí)不用出錯(cuò),對于用戶的輸入錯(cuò)誤應(yīng)及時(shí)給出適當(dāng)?shù)母恼畔⑻崾?,若運(yùn)行遇到不可恢復(fù)的系統(tǒng)錯(cuò)誤,也必須保證數(shù)據(jù)庫完好無損。 7.其它需求 (1)可用性:該軟件也可以通過單步跟蹤的操作進(jìn)行檢查處理。 (2)安全性:由于軟件運(yùn)行數(shù)據(jù)放在數(shù)據(jù)庫中,所以參數(shù)不容易被錯(cuò)改、破壞,萬一參數(shù)受到破壞也不會(huì)影響源程序。 (3)可維護(hù)性:該軟件利用數(shù)據(jù)庫進(jìn)行編程,系統(tǒng)結(jié)構(gòu)由程序基本確定,大量的參數(shù)及文本內(nèi)容全部放于數(shù)據(jù)庫中。修改、更新數(shù)據(jù)只要在數(shù)據(jù)庫進(jìn)行修改添加,而不需要對系統(tǒng)結(jié)構(gòu)進(jìn)行修改,這樣系統(tǒng)維護(hù)性、升級都十分方便。 (4)兼容性:由于尚未測試,故無法對兼容性進(jìn)行評析。 #include int number;//航班號 int Number;//飛機(jī)號 int week;//星期幾飛行 int day;//日期 int left;//余票額 int n;//與數(shù)組flag一起確定客戶訂票狀態(tài) public: int flag[20];//訂票狀態(tài)數(shù)組,-1為預(yù)訂票,1為已定票,0為初始化狀態(tài) Plane()//構(gòu)造函數(shù) { name[0]='
第二篇:課程設(shè)計(jì)一:火車售票系統(tǒng)
第三篇:火車售票系統(tǒng)需求規(guī)格說明書
第四篇:航空售票系統(tǒng)+C++課程設(shè)計(jì)源代碼