还剩24页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
河北工业大学计算机软件技术基础VC课程设计报告学院信息工程学院班级通信121班姓名李小帅学号122208成绩
一、题目火车票信息管理系统19
二、设计思路
1、总体设计1分析程序的功能在火车票信息管理系统的主菜单界面中,顾客可选择不同的选项根据不同选项的提示操作,然后程序输出顾客进行操作的成果2系统总体构造该程序的过程可由这几部分构成显示系统主界面,录入火车时刻信息查询火车时刻信息,记录火车车次,排序火车时刻信息,浏览火车时刻信息,退出系统总共七个环节C:\ProgramFiles\MicrosoftVisualStudio\MyPrqjects\lalalala\Debug\lalalala.exe犍需瞿熟事选舞输间做为次关键字排序,请选择:22黄起点做力至关键袤、『开车时电段为次关键字挑序后是车次起点终点开车时间到底时间刍一..耳菜1245主---••••••••统串串3莘莘34J4J系选选..选选理请管‘,选1八—八—八三qi-z.1八息自QJ自■:兰堂一2三raj=aj=a车时时车时时选火WWW请用火火火火火,要询计算出迎录查富欢IC:\ProgramFiles\MicrosoftVisualStudio\MyPrqjects\lalalala\Debug\lalalala.exe薪O开车时间到达时间言息管理系统主菜单•主亭法,一整、,暑»C:\ProgramFiles\MicrosoftVisualStudio\MyPrqiects\lalalala\Debug\lalalala.exe言息管理系统主菜单•If,道谗择言队]青选择-遣选建:避三息造也举4且息请选揖5EKC:\ProgramFiles\MicrosoftVisualStudio\MyPrqjects\lalalala\Debug\lalalala.exe半:.一..耳【心息己士一目一|5查和次点车起照昭“自QJ自QJ自■:j=dj=dj三¥..请择,先面事一菜1245主---••••••••统串串3莘莘3U4JJ系选选.•选选理请管‘,选1P|八三frric车时时车时时选请江用火火火火火,要询计算出迎录查售欠灰■C:\ProgramFiles\MicrosoftVisualStudio\MyPrqiects\lalalala\Debug\lalalala.exePH心ij干5工皆询,请选择2刍一..耳菜1245主---••••••••统串串3莘莘34J4J系选选..选选理请管‘,选1八|八|八三qi-z.|八息自QJ自■:兰堂一2三己士一目一|5车时时车时时选火WWW请用火火火火火,使人询计蜃出1请输入查询车次6666无此车次?欢迎|回息管理系统主菜单-X-:11523请选择2昭的”次车举酎闻学一安安TVn-口心、9kR籍选翳馋亘星、噫您择4且息请选揖5车时时车时时选请用火火火火火,要询计算出迎录查欢半:■*C:\ProgramFiles\MicrosoftVisualStudio\MyProjects\lalalala\Debug\lalalala.exe怒,数,请选择:2按起点统计每日的按终点统4每日的.一..耳菜1245主---••••••••统串串3莘莘3U4JJ系选选.•选选理请请^{5请管、,建、|:.1P|八IC三frricIQ^J!!eJ=eJ=d-i=eJ=d是票簟时时车时时选次火WWW请车用火火火火火,询计算出每迎录查统排科is■C:\ProgramFiles\MicrosoftVisualStudio\MyPrqjects\lalalala\Debug\lalalala.exe.一..耳串串选选请请次次i.日日每每统统安安菜1245主---••••••••统串串3莘莘3U4JJ系选选.•选选理请请^{5请管、,建、|:.1P|八IC三frricIQ^J!!eJ=eJ=d-i=eJ=d是票簟时时车时时选次火WWW请车用火火火火火,询计序览出每迎录查统排科入为isl\lalalala.exe犍需瞿熟事选舞输间做为次关键字排序,请选择:26俞入错误请重就涉择—谭鬻翻泮至承iriiiIC:\ProgramFiles\MicrosoftVisualStudio\MyPrqjects\lalalala\Debug\lalalala.exe
三、程序清单1main函数//预定义解决#includeiostrearn.h#includestring.h#inc1udewindows.hconstintN=100;//构造体声明structtimeinput{charrainnumflO];»charstartp
[10];®charendp
[10];charstartt[101;charendt
[10];odoub1eprice;t[N]who;//定义构造体数组与构造体变量〃函数声明voidmenu;voidinput;voidsearch;voidstatistics;voidsort;voidview;voidSctColorunsigncdshortunsignedshort;〃主函数voidmainomenu;〃显示系统主界面intnum;tcin»num;for;num!=0systeinz,c1s;//清除屏幕数据gswitchnuni«case1input;break;//录入火车时刻信息»caso2:search;break;〃查询火车时刻信息case3:statistics;break;〃记录火车车次case4:sort;break;〃排序火车时刻信息«case5:view;break;//浏览火车时刻信息case0:break;〃退出系统defauIt cout输入错误!请重新选择!〃endl;break;menu;cinnum;2menu函数VOidmenu//显示系统主界面SetColor150;//数据是白色,背景是黑色cout«”欢迎使用火车票信息管理系统主菜单Vendl;cout/,录入火车时刻信息请选择:〃lush;SetCo1or100;//数据是绿色,背景是黑色ocoutz,1end1;SetColor150;coutVV〃查询火车时刻信息,请选择:f1ush;SetColor100;cout〃2end1;SetColor150;cout«H记录火车车次,请选择〃《flush;SetColor100;cout,,3«end1;SetColorl50;cout«z,排序火车时刻信息:请选择Vf1ush;6etColor100;cout«,z4,,«endl;®SetColor150;cout,z浏览火车时刻信息请选择〃Xflush;SetColor100;cout5,,endl;oSetColor150;ecout退出,请选择〃f1ush;oSetColor120;//数据是红色,背景是黑色cout/z0z/«end1;SetClor140;//数据是黄色背景是黑色3input函数voidinput〃录入火车时刻信息®forinti=0;iN;i++SetColorl20;coutV“输入车次为0时结束录入!〃《endl;8setColor150;coutV〃请输入车次〃VVendl;SetColor140;cin»t[i].trainnum;coutflush;ifstrcmpt[i].trainnum0==0break;SetColor150;cout”请输入起点:〃Vend1;SetColor140;cint[i].startp;coutf1ush;8setColor150;cout«n请输入终点H«end1;etColor140;cint[i].endp;coutflush;«SetColor150;cout”请输入开车时间:Vend1;etCo1or140;cint[i].startt;coutflush;etColor150;cout”请输入达到时间:Vend1;etCo1or140;cint[i].endt;coutflush;®SetCo1or150;cout请输入票价“VVendl;SetCo1or140;cint[i].price;coutf1ush;MR++;〃记录录入次数}search函数voidsearch//查询火车时刻信息oSetCo1or150;cout”按照车次查询,请选择:VVf1ush;SetColorl00;coutl,zend1;oSetColor150;cout“按照起点和终点查询,请选择f1ush;SetColor100;cout2H«endl;«intap=0;SetColor140;cina;coutf1ush;ifa==1{SetColor150;cout”请输入查询车次〃end1;SetColor140;cinwho.trainnuin;coutflush;0forinti=0;im;i++ifstrcmpwho.trainnumt[i]trainnum==08P=l;SetCo1or150;gcout«•车次〃起点\t〃终点cout〈V〃开车时间〃《\t〃”达到时间〃V〃\t〃V〃票价VVend1;SetColor90;//数据是蓝色,背景是黑色acoutt[i].trainnumzz\t,,«t[i].startp«*\tHt[i].endpgcoutt[i].starttz,\tz,,z\t,z«t[i].endt«\tV〃\t”t[i].price«endl;43ifp-0gSetCo1or120;gcout〃无此车次!endl;g}elseifa==2°SetCo1or150;coutV〃请输入查询起点Vendl;SetCo1or140;cin»who.startp;coutf]ush;对于每一次选择,关注的数据有六个车次,起点,终点开车时间,达到时间票价这组数据内部耦合度很高,因此考虑把他们封装为构造体数组和构造体变量车次,起点,终点,开车时间,达到时间票价时初值由顾客录入
2、各功能模块的设计阐明各功能模块的实现措施lmenu模块该函数是要输出火车票信息管理系统的主菜单界面,不需要返回值主菜单界面如下欢迎使用火车票信息管理系统主菜单录入火车时刻信息,请选择1查询火车时刻信息,请选择2记录火车车次,请选择3排序火车时刻信息:请选择4浏览火车时刻信息请选择5退出请选择:0代码参见menu函数SetCo1or150;coutV〈〃请输入查询终点:〃Vend1;SetColor140;cinwho.endp;coutflush;forinti=0;im;i++ifstrcmpwho.startpt[i].startp==0strcmpwho.endpt[i].endp==0叼二1;3setColor150;pout〃车次〃〃\t起点〃〃\tV•终点〃〃\t〃;00a〃开车时间〃〃\达到时间〃票价〃VVcndl;SetCo1or90;«»coutt[i].trainnumz/\t,zt[i].startp«z,\tz/«t[i].endp«\t;3couttCi].startt«z,\t”Vt[i].endt«\t〃〃\tt[i].priceendl;g}ifp==0°SetColor120;®coutV”无此车次!nd1;°oelse6{mSetCo1or120;coutV输入错误!请重新选择!end1;5statisties函数voidstatistics〃记录火车车次SetColor150;cou仅V”按起点记录每日的车次数,请选择〃VVflush;SetCo1or100;cout1endl;SetColor150;cout”按终点记录每日的车次数,请选择:«flush;SetColor100;cout/,2,,endl;intap=0;SetColor140;cina;coutf1ush;ifa==l»SetColor150;cout”请输入记录起点:Vcndl;SetCo1or140;cin»who.startp;coutflush;intn=0;forinti=0;im;i++ifstrcmpwho.startpt[i].startp-0n++;®SetCo1or150;00玳〃车次V〃\仁〃起点〃〃\t终点〃V〃\t”V〃开车时间〃;cout〈〃达到时间〃VV”\/«〃票价〃《11d1;»SetCo1or90;ocoutt[i].trainnum«,/\star[i].endpX\t;空out«t[i].start\t〃Vt[i].endt\tz«priceendl;SetColor150;cout起点为〃Vflush;»SetColor100;coutwho.startpflush;ooSetColor150;cout的J每日车次数是f1ush;SetColor120;coutnflush;SetColor150;cout次〃end1;elseifa-2SetColorl50;cout”请输入记录终点〈Vendl;^SetColor140;cinwho.endp;coutflush;«intn=0;forinti=0;im;i++ifstrcmpwho.endpt[i].endp==0O0{awon++;etColor150;wcout〃车次〃起点V\t〃V〃终点”V〃\t〃开车时间〃;oocoutV〃\t,z«达到时间〃v〃\t〃〃票价〃nd1;gSetCo1or90;cout«t[i].trainnum«z,\tstartpz,\tt[i].endp«//\t,/;®coutt[i].startt«,z\t,z\t«tCi]endt\tt[i]priceendl;oo}aSetCo1or150;coutVV〃终点为〃〈〈flush;SetColor100;cout«who.endpflush;gSetColor150;coutV〈〃股每日车次数是“Vflush;sSetColor120;cout«nflush;aoSetCo1or150;coutVV〃次〃Vendl;©elseSetCo1or120;outVV〃输入错误!请重新选择!endl;}6sort函数VOidsort〃排序火车时刻信息SetCo1or150;coutV“按开车时间排序,请选择“flush;SetColor100;coutVT«endl;SetColorl50;cout〈”按起点做为主核心字、开车时间做为次核心字排序cout〃请选择〃〈〈flush;SetColor100;cout,2,,end1;inta;SetColor140;cina;cout«flush;ifa==lorinti=0;im-1;i++dforintj=0;jm-l-i;j++oifstrcmpt[j].starttt[j+1].startt0°°®who=t[j];at[j]=t[j+1];0Mdet[j+1]=who;03SetColor150;^cout«按开车时间排序后是〃endl;ocout〈〃车次V\t〃〃起点〃\t〃终点〃\t〃〈〃开车时间〃;ocout〃\t〃V〃达到时间V\tV〃票价〃endl;gfori=0;im;i++»SetColor90;gcout«t[i].trainnum*\t,zt[i].startp,,\t,,t[i].endpz,\tH;gcoutt[i].startt,z\tn,z\tzt[i].endt\tX〃\t〃;coutt[i].priceendl;a}}oelseifa==2forinti=0;im-l;i++«»forintj=0;i;j++g«ifstrcmpt[j].startpt[j+1].startp03who=t[j];8t[j]=t[j+l];00[j+1]=who;8fori=0;im-l;i++«forintj=0;jm-1-i;j++ifstrcmpt[j].startpt[j+1].startp==0strcmpt[j].starttt[j+l].startt000{who=t[j];t[j]=t[j+1];[j+l]=who;SetColor150;ocout〈〃按起点做为主核心字、开车时间做为次核心字排序后是:〃endl;cout车次〃〃\tn«n起点〃终点〃V”\t”〃开车时间〃;coutC\t达到时间”V〃\t〃〈V〃票价“〈Vend1;wfori=0;im;i++£gSetColor90;«coutt[i].trainnum«11\t”t[i].startp\t,,«t[i].endp«\t«t[i].startt;cout\t\tt[i].endt\t〃V〃\t0t[i].priceendl;00}}elsetColor120;cout〃输入错误!请重新选择!,z«endl;}7view函数voidview//浏览火车时刻信息oSetColor150;ocoutV车次〃V〃\t”〃起点〃〈〃终点VV〃\t〃〈V开车时间〃”\t〃;ocoutV〃达到时间〃”\t、〃票价〃endl;forinti=0;im;i++SetColor90;coutt[i].trainnum«z,\t,zt[i].startp/,\t,,t[i].endp,,\tz,;coutt[i].startt\t[i].en\t/z«t[i].priceendl;}8SetColor函数voidSetColorunsignedshortForeCo1or=7unsignedshortBackGroundColor=0〃设立颜色HANDLEhCon=GetStdHand1eSTD^OUTPUT_HANDLE;SetConso1eTextAttributehConForeColor+BackGroundCo1or*0xl0;
四、对该设计题目有何更完善的方案
1、对自己完毕程序进行自我评价我的程序非常好的完毕了任务中规定的设计内容,并添加了自主创新设计内容,运营完全对时
2、对课题提出更完善的方案建议对火车时刻信息加入余票、学生票、成人票信息,并且对程序添加订票和退票功能
五、收获及心得体会收获学习并掌握了如何使用函数清除屏幕数据和给数据添加颜色的措施心得体会:对VC中的许多内容使用不太纯熟,后来应当多加练习巩固学到的知识并且积极学习新知识虽然自己编写的只是一种很小时程序,但还是耗费了很长的时间,深深地体会到编写程序时艰难与不易但是我相信,后来通过自己的努力奋斗,一定会把VC学好!日期6月28日2input模块该函数是要实现为车次起点,终点,开车时间,达到时间,票价赋初值,不需要返回值为了可以实现随时停止录入时功能,每当顾客输入车次时,都要进行判断,当输入车次为0时,则停止录入,返回系统主界面,否则继续录入代码参见input函数search模块该函数是要实现按两种不同方式查询火车时刻信息,不需要返回值选择的方式和判断有无该车次可使用查表的措施来解决表格如下输入其他选择时.即不是1或2输出“输入错误!请重新选择!”代码参见search函数statistics模块该函数是要实现按两种不同方式记录火车车次,不需要返回值选择的方式和记录火车的车次可使用查表口勺措施来解决表格如下输入其他选择时(即不是1或2)输出“输入错误!请重新选择!”代码参见statistics函数sort模块该函数是要实现按两种不同方式排序火车时刻信息,不需要返回值选择的方式和排序火车时刻信息可使用查表的措施来解决表格如下代码参见SOrt函数)view模块该函数是要输出顾客录入的火车时刻信息,不需要返回值代码参见view函数7)创新设计部分通过请教老师和查阅资料使用了SetColor函数使得输出的数据加上了颜色,变得更加醒目更加具有吸引力同步,使用了system(cIs”)语句实现了清除屏幕数据的功能,使得程序运营界面变得简洁代码参见SetColor函数
3、设计中的重要困难及解决方案在最开始的设计中只可以录入自己定义的火车时刻信息个数,且无法实现顾客随时停止录入的功能通过自己的修改和完善,使用变量m记录顾客录入的火车时刻信息个数,实现了顾客任意录入火车时刻信息个数;通过if判断条件判断录入车次与否为0实现了顾客随时停止录入的功能
4、你所设计的程序最后完毕的功能1)阐明你编制的程序能完毕的功能顾客通过不同的选项,实现对火车票时刻信息的录入、查询、记录、排序、浏览2)准备的测试数据及运营成果a.exe、---••••充举举}ZZ^4HJ3-J系选选..选选理请请请管、」»、.::ft息自少息士一旦一一日=a±laj一Is车时时车翳选火请用火火火火火,要询计岳出迎番_统^^C:\ProgramFiles\MicrosoftVisualStudio\MyProjects\lalalala\Debug\lalalala.exe请输入车次请题人起点:请吸入终点:谓输入开车时间:07:01请输入到达时间16:29请输入票价输入车次为❷时结束录入请输入车次请尊入起点:请吸入终点:情易入开车时间01:22请输入到达时间07:43半■C:\ProgramFiles\MicrosoftVisualStudio\MyPrqjects\lalalala\Debug\lalalala.exe请输入票价72输入车次为0时结束录入请输入车次4411请蹩入起点:奋必终点石彖庄请输入开车时间01:56请输入到达时间08:09请输入票价40短公帘芯极时结束录入请输入车次飕j入起点嵋入终点请藉人开车时间:18:35a.exe息管理系统主菜单•0-X-:11523n坐0点终入输2f:3输:5输输请请18请108请112请点起入为次车时时车时时选请用火火火火火,要询计算出迎录查欢口心、9kR籍选翳馋亘星、噫您择4且息请选揖5yects\lalalala\Debug\lalalala.exe扬照车然袁迪面也择1按照起点和终点皆询,请选择21请输入查询车次4481车次起点终点开车时间到达时间票价车时时车时时选火WWW请用火火火火火,笔询计算出迎录查富欢言息管理系统主菜单If,道谗择言队]青选择-遣选建:避三息造也举4且息请选揖5S1C:\ProgramFiles\MicrosoftVisualStudio\MyPrqjects\lalalala\Debug\lalalala.exe请选择2¥4J,先面学一票价票价到达时间开车时间口次安安2请天请瞿车次起点终点开车时间到达时间刍一..耳菜1245主---••••••••统串串3莘莘34J4J系选选..选选理请管‘,选1八—八—八三qi-z.1八息自QJ自■:兰堂一2三车时时车时时选火WWW请用火火火火火,笔询计算出迎录查富欢半:C:\ProgramFiles\MicrosoftVisualStudio\MyPrqjects\lalalala\Debug\lalalala.exeVW,偿终点统并每日的车次数,请选择21产鳖入统计起点:车次车次.一..耳菜1245主---••••••••统串串3莘莘3U4JJ系选选.•选选理请是票墨时时车时时选次火WWW请车用火火火火火,询计算出每迎录查统排科津一天一为一■C:\ProgramFiles\MicrosoftVisualStudio\MyProjects\lalalala\Debug\lalalala.exe半:■C:\ProgramFiles\MicrosoftVisualStudio\MyProjects\lalalala\Debug\lalalala.exe按开车时间排序,遭选择1按起百减为主关键臬开车时间做为次关键字排序,请选择2展车时时序后悬:
一、
一、/人车次起点点开车时间到达时间票价刍
一、1np菜1245主---••••••••统串串3莘莘3U4JJ系选选.•选选理请管‘,选1P|八IC三frricIQ自QJ自QJ自■:j=dj=dj三raj=aj=a车时时车时时选请用火火火火火,要询计算出迎录查欢模块函数名称显示系统主界面menu录入火车时刻信息input查询火车时刻信息search记录火车车次statistics排序火车时刻信息sort浏览火车时刻信息view退出系统表达信息成员名称车次trainnum起点startp终占endp开车时间startt达到时间endt票价prico构造体timeinput构造体数组t[]构造体变量who选择提示判断有无该车次1按照车次查询,请选择1有输出该车次火车时刻信息无输出“无此车次!”2按照起点和终点查询,请选择2有输出该车次火车时刻信息无输出“无此车次!”选择提示记录火车日勺车次1按起点记录每日的车次数请选择1输出该起点每日的车次数2按终点记录每口日勺车次数,请选择2输出该终点每日的车次数选择提示输出成果1按开车时间排序请选择1输出选择1的排序成果2按起点做为主核心字、开车时间做为次核心排序,请选择2输出选择2的排序成果输入其他选择时(即不是1或2)输出“输入错误!请重新选择!”起点然占开车时间到达时间票价起点然占开车时间到达时间票价起点然占
八、、开车时间到达时间票价。