版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PAGE 58 VC课程设计报告课 程:VC+课程设计 系 别:计算机科学与计算机学院班 级:9121068406学 号:姓 名:选题1名称: 猜单词游戏选题1难易级别:B级选题2名称:个人财政支出管理(单向链表)选题2难易级别:A级自报成绩 良起止时间:指导教师:日期:2013年 12月 13日目 录课题1目标1.1 程序功能简介1.2 课程设计要求1.3 评定难易级别课题1具体实现2.1 程序总体方案2.1.1开发平台2.1.2程序结构或流程图2.2 所做改进 课题1调试报告课题2目标1.1 程序功能简介1.2 课程设计要求1.3 评定难易级别课题2具体实现2.1 程序总体方案2.1.1开
2、发平台2.1.2程序结构或流程图2.2 所做改进 课题2调试报告总体小结分工介绍一、课题1目标1.1 程序功能简介一个猜单词游戏。两人游戏时,由一个玩家给出一个单词,在人与计算机游戏时,由计算机给出一个单词,另一个玩家根据组成单词的字母个数猜出单词,猜的次数可以指定,若猜不中,显示一个上吊人形。1.2 课程设计要求(对应后面的改进)(1)将猜单词的函数与相应的数据封装到类中,并改写主程序,使程序简化。(2)根据所猜单词中的字母个数,给出指定几率的提示字母,显示于单词的正确位置。(3)在进入猜单词的过程中,首先显示菜单询问是开始猜单词还是修改设置,默认的修改次数为4,默认显示字符几率为20%。若
3、要修改这个设置,在显示菜单中选择设置选项进行修改。(4)在人人对抗时,一个玩家给出单词时,单词不显示在屏幕上,字符用“*”号显示。(5)猜单词时,输入一个单词,判断函数改为判断输入单词的字符是否与所猜单词一一对应,将猜中的字符显示出来。(6)在人机对抗时,可以选择随机读取单词,也可以选择向单词库输入单词,同时,将单词库中单词的个数显示出来,并根据单词库中单词个数的多少决定随机选取的范围。1.3 评定难易级别A级二、课题1具体实现2.1 程序总体方案2.1.1开发平台操作系统:Windows 7开发工具:VC+6.02.1.2程序结构或流程图(1)主函数的流程图:开始定义类的对象调用函数inst
4、ruction()调用函数 GetChoice()调用函数 subMenu ()Play()选择1 调用函数 subMenu ()Play()选择2选择3输出“再见”结束(2)子函数(usergame(int i))的流程图:开始第二名玩家输入玩家输入字母N调用函数drawman()lchosen()和test()是否全部猜出结束(3)子函数(compgame (int i))的流程图:开始从txt中随机选词玩家输入字母N调用函数drawman()lchosen()和test()是否全部猜出结束2.2 所做改进(根据书上课程设计要求所做改进)2.2.1改进一2.2.1.1 改进方案将人人对抗和
5、人机对抗,接收单词输入、显示猜单词结果及判断是否猜中的函数已经相应的数据封装到CGuess类中,使程序简化。2.2.1.2 具体实现class CGuessstring Word; /欲猜单词double Proba; /显示字符的频率int GuessNum; /可猜次数int WrongNum; /已猜错次数string DisplayWord; /欲显示的单词string GuessWord; /玩家二输入的单词int nLen;char selet;int choice;int option;public:int exit;int i;CGuess();void InitialSet(
6、); /修改设置值int GetChoice()return choice;void instruction(); void subMenu(); /选取哪一种模式void play();void usergame(int i);void compgame(int i);void drawman(int numguess,int numwrong,int i);void lchosen(char letter,string &letterchosen,int &check,int &chosencounter,int i);void test(string word,char letter,i
7、nt &numwrong,string &temp,int i);int SaveWordFile(); /向单词库添加新单词void rnd(string& word, int i);2.2.2改进二2.2.2.1 改进方案在进入猜单词的过程中,首先显示菜单询问是开始猜单词还是修改设置,默认的修改次数为4,默认显示字符几率为20%。若要修改这个设置,在显示菜单中选择设置选项进行修改。2.2.2.2 具体实现void CGuess:subMenu()if(choice=1)cout *人人对抗模式*endlendl;cout 按1开始猜单词endlendl;cout 按2修改设置值endlen
8、dl;cout 按3退出endlendl;cout *endlendl;if(choice=2) cout *人机对抗模式*endlendl;cout 按1开始猜单词endlendl;cout 按2修改设置值endlendl;cout 按3向单词库添加单词endlendl;cout 按4退出endlendl;cout *endlendl;coutoption;while(!cin)cerroption;system(cls);/显示菜单询问是开始猜单词还是修改设置CGuess:CGuess()Proba=20.0/100;GuessNum=4;WrongNum=0;exit=0;i=0;voi
9、d CGuess:InitialSet()coutendl;cout *修改默认设置值*endlendl;docoutGuessNum;coutendl;while(GuessNum10);coutProba;cout=a)&(ch=z)strj+=ch;cout=A)&(ch=Z)ch=ch+32;strj+=ch;cout*;else if(ch=n)break;elsecout endl 输入错误,请重新输入 ;cout.flush();ch=getch();strj=0;word=str;2.2.2改进四2.2.4.1 改进方案在人机对抗时,可以选择随机读取单词,也可以选择向单词库输入
10、单词, 同时,将单词库中单词的个数显示出来,并根据单词库中单词个数的多少决定随机选取的范围。2.2.4.2 具体实现if(choice=2) /进入人机对抗时的4个选项switch(option)case 1:compgame(i); /开始猜单词break;case 2:InitialSet(); /修改设置break;case 3:SaveWordFile(); /添加单词至单词库system(cls);break;case 4:cout 返回endl;system(cls);instruction(); /退出break;default:cerr 输入错误,请重新输入endl;int C
11、Guess:SaveWordFile() /添加单词的函数static int j=k-1;j+;ofstream out; /open for readingchar a20; out.open(words.txt,ios:app);/open for writingif(!out)cerr 无法打开words.txt文件endl;cout 单词库中的单词个数为:jendl;cout 请向words.txt中输入单词:a;outa=A)&(ch=Z)ch=ch+32;strj+=ch;cout*;四、课题2目标4.1 程序功能简介个人财政支出管理程序,将个人财务的目标及当前存款,支出保存下来
12、,可以随时更新,查看,比较盈余与目标的差距。4.2 课程设计要求1)将收支的数据与相应的函数封装到类中,并改写程序,是程序结构化。2)增加保存每笔收入的记录,并对每笔记录增加日期录入,按日期的顺序保存、查看记录。将所有记录放入一个文件中,每次运行程序时首先打开这个文件,程序完毕时将更新的记录放回文件中。3)完善程序,补充类中数据成员盈余的计算和输出,要求每笔输入和支出都要重新统计当前情况下的盈余数目。4)增加程序监控功能,当输入时间发生错误时,要求重新输入正确的时间,当结余的数目为负数,输出信息,警告已经超支!4.3 评定难易级别A级五、课题2具体实现5.1程序总体方案5.1.1开发平台Win
13、dows 7Microsoft Visual c+ 6.05.1.2程序结构程序结构:class CFinance int nYear,nMonth,nDay; /定义年、月、日double dlIncome,dlOutput; /定义收入、支出数目double dlBalance; /定义结余情况char szPurpose20; /定义用途、目的double dlGap; /据目标的差额public: /公有成员CFinance();CFinance(int,int,int); /根据日期生成结点,查找用 int Compare(CFinance &); /比较日期的大小,大于返回1,小于
14、返回-1,等于返回0void Show(); /输出记录void SetFinance(int,int,int,double,double,char *); /对象赋值double ShowPur(); /返回目标void Calculate(double dlBal); /计算结点的盈余情况double GetBalance(); /返回结点的盈余情况,计算下一结点用void ModifyData(); /修改结点数据记录void SetVal(int &,int &,int &,double &,double &,char *); /实现结点数据的输入/输出bool IsDateEqual
15、(int,int,int); /判断日期是否存在void ShowWithoutBalance(); /输出除收支情况以外的记录int GetDate(); /取时间,排序用;class CNodeCFinance *pData; /指向数据类的指针CNode *pNext; /指向链表的下一个结点的指针public:CNode(); /结点构造函数CNode(CNode &node); /用于拷贝的构造函数void InputData(CFinance *pdata); /输入数据void ShowNode(); /输出结点数据CFinance *GetData(); /返回数据friend
16、 class CList; /定义链表类为友元类;class Clist /定义链表类protected:CNode *phead; /链表头结点指针public:Clist()phead=0; /链表类的构造函数 Clist()deletelist(); /链表类的析构函数void AddNode(CNode *); /在首部添加结点void DeleteNode(CNode *); /删除一个指定的结点CNode *Lookup(CFinance &);/查找一个指定的结点,返回该结点的指针void Showlist(); /打印整个链表void Showlistdeposit(); /打
17、印整个链表的收入情况void Showlistwithdraw(); /打印整个链表的支出情况void deletelist(); /删除整个链表CNode *GetlistHead()return phead; /返回链表的首结点CNode *GetlistNextNode(CNode *p); /返回指定的结点的下一个结点void Insert(CNode *p); /插入排序CNode *GetlastNode(CNode *phead); /返回最后一个结点void Calculatebalance(); /计算链表的赢余情况void Savefile(); /保存文件void Ope
18、nFile(); /打开文件void Modify(CNode *); /修改链表的记录void CalculatedlGap(); /计算整个链表与目标的差额;Void main();5.2 所做改进5.2.1改进一5.2.1.1改进方案去掉类CFinance静态变量成员dlPurpose,避免在修改目标时引起对象之间dlPurpose的混乱,而把dlPurpose放到全局中。我们认为dlPurpose应该是一个全程的目标,而并不是说每次收入和支出都有一个目标,而且这样在修改的时候可以方便很多。5.2.1.2 具体实现static double dlPurpose=0.0; class CF
19、inance int nYear,nMonth,nDay; double dlIncome,dlOutput;double dlBalance; char szPurpose20; double dlGap; public: ;5.2.2改进二5.2.2.1 改进方案用for语句和continue语句替换掉goto语句。5.2.2.2 具体实现 for(;)coutt*n; cout 欢迎使用个人财政管理系统 n; cout 请选择以下功能 n; cout *1.输入收入记录 *n; cout *2.输入支出记录 *n; cout *3.查看收入记录 *n; cout *4.查看支出记录 *n
20、; cout *5.查看收支平衡状况 *n; cout *6.根据日期查找记录 *n; cout *7.根据日期修改记录 *n; cout *8.根据日期删除记录 *n; cout *9.输出现阶段财政目标 *n; cout *0.退出 *nn; coutt*n; coutn;coutselect; switch(select) case 1: system(cls);p=new CFinance();Deposit(p);pn=new CNode;pn-InputData(p);list.Insert(pn); list.CalculatedlGap(); p-calculatedlgap(
21、);list.Calculatebalance();list.Savefile(); continue; /返回主菜单 case 2:system(cls);p=new CFinance(); Withdraw(p);pn=new CNode;pn-InputData(p);list.Insert(pn);list.CalculatedlGap(); p-calculatedlgap();list.Calculatebalance();list.Savefile();continue; /返回主菜单 case 3:system(cls);list.Showlistdeposit();syste
22、m(pause);system(cls);continue; /返回主菜单 case 4: system(cls);list.Showlistwithdraw();system(pause);system(cls);continue; /返回主菜单 case 5: system(cls); list.CalculatedlGap();list.Showlist();list.Calculatebalance();system(pause);system(cls);continue; /返回主菜单 case 6: system(cls);int a,b,c;CNode *pp;cout输入你要寻
23、找的日期abc;CFinance t(a,b,c);pp=list.Lookup(t);if(pp)pp-ShowNode();elsecout没有记录endl;system(pause);system(cls);continue; /返回主菜单 case 7:system(cls);int a,b,c;coutabc;CFinance *pcf;pcf=new CFinance(a,b,c);CNode *pcn;pcn=new CNode;pcn-InputData(pcf);list.Modify(pcn);/修改结点 list.CalculatedlGap(); pcf-calcula
24、tedlgap(); list.Calculatebalance(); list.Savefile();system(pause);system(cls);continue; /返回主菜单 case 8:system(cls);int a,b,c;coutabc;CNode *pcn;CFinance *pt;pt=new CFinance(a,b,c); /输入一个日期pcn=new CNode;/产生新的动态的结点pcn-InputData(pt);list.Calculatebalance();list.DeleteNode(pcn); /删除结点 list.Savefile();sys
25、tem(pause);system(cls);continue; /返回主菜单 case 9: system(cls); cout现阶段财政目标为A.ShowPur()endl; system(pause);system(cls); continue; case 0: list.Calculatebalance(); list.CalculatedlGap(); list.Savefile(); exit(0); default: coutpnext=0;elseif(p-pData)-Compare(*(phead-pData)pnext=phead;phead=p;elsep2=p1=ph
26、ead;while(p2-pnext)&(p-pData-Compare(*(p2-pData)=0)p1=p2;p2=p2-pnext;if(p-pData-Compare(*(p2-pData)0)p2-pnext=p;p-pnext=0;elsep-pnext=p2;p1-pnext=p; 六、课题2调试报告大体完成后,发现会存在一些很多零碎的小问题,好在之后都一一解决了,完成了这次课程设计、分工介绍 独立完成。八、总体小结这次选的课题是良好组的题目.总体上而说,第一个课题猜单词游戏相对简单,而第二个课题收支管理系统相对要难一些。但两个程序的主要创建思路是一样的。主要是根据课程设计的要求
27、查书上的知识点,将之后所学的输入输出流以及模板的知识加入到程序里。在已经提供的程序代码的基础上,经过自己的修改和添加,完成整个程序的正常运行。在遇到不会的问题的时候,会寻求掌握的比较牢固的同学的帮助。在课程设计的过程中,让我认识到应该巩固自己的c+基础知识,将理论和实践学会有机的联系和统一。附录:猜单词源代码:#include #include #include #include /文件流#include /使用随机函数用#include /得到更好地随机数用#includeusing namespace std;class drawpublic:draw();/构造函数void rope()
28、; /绳子void head();/头void neck();/颈void leftarm();/左上肢void rightarm();/右上肢void waisttop();/腰void leftleg();/ 左腿void rightleg();/右腿; draw:draw()void draw:rope() / 绳子cout |; void draw:head() /头cout O;void draw:neck()/颈cout |; void draw:leftarm()/左上肢cout /; void draw:rightarm()cout ; /右上肢void draw:waistt
29、op()cout ; /腰void draw:leftleg()cout /; /左腿void draw:rightleg()/右腿cout ; class CGuessstring Word;/所要猜的单词double Proba;int GuessNum;/可猜的次数int WrongNum;/猜错次数string DisplayWord;string GuessWord;int nLen;/单词长度char selet;int choice;/主菜单选择int option;/子菜单选择public:int exit;int i;CGuess();void InitialSet();/修
30、改设置值得函数int GetChoice()return choice;void instruction();void subMenu();void play();void usergame(int i);/人人游戏void compgame(int i);/人机游戏void drawman(int numguess,int numwrong,int i);/画上吊人形void test(string word,char letter20,int &numwrong,string &temp,int i);/判断输入的字符是否是单词的一部分int SaveWordFile(); /输入单词vo
31、id rnd(string& word);/随机从文件中选取一个单词 /void lchosen(char letter20,string &letterchosen,int &check,int &chosencounter,int i);inline istream & Flush(istream &stream);/清理输入流CGuess:CGuess()Proba=20.0/100;GuessNum=4;WrongNum=0;exit=0;/主循环结束标识符i=0;/定义循环变量 int main() /主函数 CGuess g;g.instruction(); do /当exit!=
32、1循环 system(cls); /执行系统命令清屏 switch(g.GetChoice() case 1: g.subMenu(); g.play(); /调用人人对抗函数 break; case 2: g.subMenu(); g.play(); /调用人机对抗函数 break; case 3: coutGoodbyeendl; /退出游戏 exit(0); default: cerrInvalid-try agin!(输入错误,请重新输入=3=)endl; /输入错误,重新输入 while (g.exit!=1); system(pause);/执行系统命令:暂停 return 0;
33、/*/出现主菜单的函数void CGuess:instruction()cout -猜单词游戏- endl endl;cout 制作人:赵欣然 912106840611 endl endl;cout 规则如下:猜单词游戏主要分成人人游戏模式和人机游戏模式。endlendl;cout 人人模式下,由一个玩家给出一个单词。人机模式下,游戏由计endlendl;cout 算机给出一个单词。玩家自己根据组成单词的字母个数和屏幕上endlendl;cout 已显示出的部分字母猜出单词。猜的次数,游戏系统默认为4次,endlendl;cout 字母出现概率系统默认为20%,可以在设置里面自行更改.endl
34、endl;cout 若猜不中,则显示一个上吊的人形。endlendl;cout *endl;system(pause);system(cls);coutendl;cout *猜单词游戏*endl;cout * endl;cout endl;cout 按1进入人人对抗模式 endl;cout 按2进入人机对抗模式 endl;cout 按3退出 endl;cout endl;cout * endl endl;cout choice;/获得玩家选择while (!cin)/输入错误判断cerr 输入错误 endl choice;/结束判断system(cls);/结束主菜单/*子菜单*/void C
35、Guess:subMenu() /子菜单if(choice=1)cout *人人对抗*endlendl;cout 选择1开始猜单词endlendl;cout 选择2修改设置值endlendl;cout 选择3退出endlendl;cout *endlendl;if(choice=2) cout *人机对抗*endlendl;cout 选择1开始猜单词endlendl;cout 选择2修改设置值endlendl;cout 选择3向单词库添加单词endlendl;cout 选择4退出endlendl;cout *endlendl;/void CGuess:play() /开始玩游戏if(choic
36、e=1)/人人对抗的菜单 coutoption;while(!cin)cerroption;system(cls); switch(option)case 1:usergame(i);break;case 2:InitialSet();break;case 3:cout 返回endl;system(cls);instruction();break;default:cerr 您的输入错误,请您重新输入endl;if(choice=2)/人机对抗的菜单coutoption;while(!cin)cerroption;system(cls);switch(option)case 1:compgame
37、(i);break;case 2:InitialSet();break;case 3:SaveWordFile();system(pause);system(cls);break;case 4:cout 返回endl;system(cls);instruction();break;default:cerr 输入错误,请重新输入endl;void CGuess:InitialSet() /修改默认参数coutendl;cout *修改默认设置值*endlendl;docoutGuessNum;coutendl;while(GuessNum10);coutProba;coutendl;while(
38、!Proba) cerr抱歉,输入超出范围,请重新输入:Proba; system(cls);int CGuess:SaveWordFile()/文件输入ofstream outfile;char a20;outfile.open(words.txt,ios:app);if(!outfile)cerr 无法打开文件endl;cout 请向文档中输入单词:a;outfileaendl;cout录入成功!endl;static int j;outfile.close();j+;return 1;#define N 10void CGuess:usergame(int i) /人人游戏int wor
39、dcheck; int end = 0;/ 猜单词过程当中的循环结束标志符int chosencounter = 0;/选对的字符个数int m=0;int n=0;char letter20;/ 玩家输入的字符string word;/ 玩家要猜的单词string temp;/ 玩家看见的不断更新的输出cout =a)&(ch=z) /键入单词,统一是小写模式,并以*代替strj+=ch;cout=A)&(ch=Z)ch=ch+32;strj+=ch;cout*;else if(ch=n)break;else cout endl 输入错误,请重新输入 ;cout.flush();ch=get
40、ch();strj=0;word=str;do wordcheck = 0;/当玩家输入的是非法字符时for (int i = 0; i word.length(); i+)if (!isalpha(word.at(i)wordcheck = 1;if (wordcheck = 1)cout word; while (wordcheck = 1);temp = word;/将单词付给输出的单词变量for (m = word.length()*Proba; m word.length(); m+)temp.replace(m, 1, 1,*);system(cls);do if(word=tem
41、p)/单词猜对了coutendlendl;cout 猜对了,单词为:wordendlendl;WrongNum=0;system(pause);end=1;/结束循环标识符drawman(GuessNum, WrongNum,m);/根据猜错的次数画小人if(WrongNum=GuessNum)coutendlendl;WrongNum=0;system(pause);end=2;if (end = 0)/当以上条件不满足,循环未结束coutendlendlendl;/cout猜过的字母:letterchosenendlendl;/coutendlendlendl;cout你还能猜GuessN
42、um-WrongNum次endlendl;cout tempendlendl;coutletter;/lchosen(letter, letterchosen, check, chosencounter, i);/ 判断输入字符是否是之前输入过的字符if(n=0)test(word, letter,WrongNum, temp,i);/判断是否是其组成的字符else ; system(cls);system(cls); while(end != 1 & end != 2);if(end=2)cout正确的单词是:wordendlendl;WrongNum=0;system(cls);if(en
43、d=1)cout ;system(cls);subMenu();/*/人机游戏void CGuess:compgame(int i)/int check;int end=0;int n=0;int chosencounter=0;char letter20;string word;string temp;/string letterchosen= ;rnd(word);/调用rnd函数,从单词库提取单词temp = word;for (i = word.length()*Proba; i word.length(); i+)/用*代替字母 temp.replace(i, 1, 1, *);sy
44、stem(cls);do if(word=temp)coutendlendl;cout猜对了,单词为:wordendlendl;WrongNum=0;system(pause);end=1;drawman(GuessNum,WrongNum, i);if(WrongNum=GuessNum)coutendlendl; WrongNum=0;system(pause);end=2;if (end = 0)/当以上条件没有满足,即循环未结束coutendlendlendl;/cout猜过的字母:letterchosenendlendl;/coutendlendlendl;cout你还能猜Guess
45、Num-WrongNum次endlendl;cout tempendlendl;coutletter;/lchosen(letter, letterchosen, check, chosencounter, i);if(n=0)test(word, letter, WrongNum, temp,i);/如果不是判断是否是组成的字符else ; system(cls);system(cls); while(end != 1 & end != 2);if(end=2)cout正确的单词是: word endlendl;system(pause);if(end=1)cout ;system(cls)
46、; subMenu();/*void CGuess:lchosen(char letter20, string& letterchosen, int& check, int& chosencounter, int i)check = 0;for(int j=0;jstrlen(letter);j+)for (i = 0; i letterchosen.length(); i+)if (letterj=letterchosen.at(i) check = 1; if(check=0)letterchosen.replace(chosencounter, 1, 1, letterj);chosen
47、counter+;*/void CGuess:test(string word, char letter20, int& numwrong, string& temp, int i)/判断输入的字符是否为组成单词的字符for (i = 0; i word.length(); i+)if (letteri = word.at(i)/若单词中有该字符temp.replace(i, 1, 1, letteri);numwrong+;/没有该字符,错误数加1void CGuess:drawman(int numguess, int numwrong, int i)draw d;/类的对象for (i
48、= 0; i = numwrong; i+)if (numguess = 4)switch(i)case 1: d.rope();cout endl;d.head();cout endl;d.neck(); break;case 2:cout endl;d.leftarm();d.rightarm();break;case 3: cout endl; d.waisttop();break;case 4: cout endl;d.leftleg();d.rightleg();cout endl endl 你输了! endl;break;else if (numguess = 5)switch(i
49、)case 1:d.rope();break;case 2:cout endl;d.head();cout endl;d.neck();break;case 3:cout endl;d.leftarm(); d.rightarm(); break;case 4:cout endl;d.waisttop();break;case 5:cout endl;d.leftleg();d.rightleg();cout endl endl 你输了! endl;break;else if (numguess = 6)switch(i)case 1:d.rope();break;case 2: cout e
50、ndl;d.head(); cout endl;d.neck(); break;case 3:cout endl;d.leftarm();d.rightarm();break;case 4:cout endl;d.waisttop();break;case 5:cout endl;d.leftleg();break;case 6:d.rightleg();cout endl 你输了! endl;break;else if (numguess = 7)switch(i)case 1:d.rope();break;case 2:cout endl;d.head();cout endl;d.neck
51、();break;case 3:cout endl;d.leftarm();break;case 4:d.rightarm();break;case 5:cout endl;d.waisttop();break;case 6:cout endl;d.leftleg();break;case 7:d.rightleg();cout endl 你输了! endl;break;else if (numguess = 8)switch(i)case 1:d.rope();break;case 2:cout endl;d.head(); break;case 3:cout endl;d.neck();b
52、reak;case 4:cout endl;d.leftarm();break;case 5:d.rightarm(); break;case 6:cout endl;d.waisttop();break;case 7:cout endl;d.leftleg();break;case 8:d.rightleg();cout endl 你输了! endl;break;else if (numguess = 9)switch(i)case 1:d.rope();break;case 2:cout endl;d.head();break;case 3:cout endl;d.neck();break
53、;case 4:cout endl;d.leftarm();break;case 5:d.rightarm();break;case 6:cout endl; d.waisttop();break;case 7: break;case 8:cout endl;d.leftleg();break;case 9:d.rightleg(); cout endl 你输了! endl;break;else if (numguess = 10)switch(i)case 1:d.rope();break;case 2:cout endl;d.head();break;case 3:cout endl;d.
54、neck();break;case 4:cout endl;d.leftarm();break;case 5:d.rightarm();break;case 6:cout endl;d.waisttop();break;case 7:break;case 8:cout endl;d.leftleg();break;case 9: d.rightleg();cout One last chance. What do you want on your tombstone?;break;case 10:cout endl 你输了! endl;break;void CGuess:rnd(string
55、&word)int x;ifstream ins;/定义输入文件对象srand(time(NULL);/初始化随机数种子x=rand()%5;/得到随机值ins.open(words.txt);/将文件对象与输入文件联系 if(ins.fail()/若文件打开失败cout无法找到words.txt文件,请将其放入正确的文件夹endl中,并重新运行游戏。确保能访问到words.txt文件endl;system(pause);main();elsefor(i=0;iin_avail();return stream.ignore(chars_to_skip);收支管理源代码: /*单向链表个人财政支
56、出管理*/#include #include #include #include #include#includeclass Clist; class CFinance /数据类private: int nYear,nMonth,nDay; /年 月 日double dlIncome,dlOutput;/收入,支出数目double dlBalance; /结余char szPurpose20; /用途,目的static double dlPurpose; /目标double dlGap; /据目标的差额public: friend class Clist;friend ofstream& op
57、erator(ofstream&,CFinance*);CFinance()dlIncome=dlOutput=dlBalance=0;/缺省的构造函数CFinance(int a,int b,int c,double d,double e,char f,double g,double h)/带参数的构造函数nYear=a,nMonth=b,nDay=c;dlIncome=d,dlOutput=e;strcpy(szPurpose,f); dlBalance=g; dlGap=h;CFinance(int a,int b,int c,double d,double e,char g) /结构函
58、数nYear=a,nMonth=b,nDay=c;dlIncome=d,dlOutput=e;strcpy(szPurpose,g); CFinance(int a,int b,int c)nYear=a,nMonth=b,nDay=c;/根据日期生成结点,查找用int Compare(CFinance&);/比较时间的大小void SetFinance(int,int,int,double,double,char*);/对象赋值void Showdeposit();/输出收入的时间和目的,用途void Showwithdraw();/输出支出的时间和目的,用途void Show();/输出类
59、的成员void GetPurpose(double purs)dlPurpose=purs;/赋值目标double ShowPur()return dlPurpose;/返回目标 void calculatebalance(double dlBal)dlBalance=dlBal+dlIncome-dlOutput;/计算结点的赢余情况double GetBalance()return dlBalance;/返回与目标的差额,计算下一个结点用void calculatedlgap();/返回差额void ModifyData();/修改结点记录friend void Deposit(CFina
60、nce *);/输入收入记录friend void Withdraw(CFinance *);/输入支出记录friend void Savefile();/打开数据文件;double CFinance:dlPurpose=0.0;ofstream& operator(ofstream& out,CFinance *p) out(*p).nYear (*p).nMonth (*p).nDay (*p).dlIncome (*p).dlOutput (*p).dlBalance (*p).dlGap (*p).szPurposeabcdep;SetFinance(a,b,c,d,e,p);int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁名校联盟2025-2026学年高三下学期4月模拟政治试卷及答案
- 2025昆明医科大学海源学院教师招聘考试题目及答案
- 2025江西洪州职业学院教师招聘考试题目及答案
- 科目二教案音乐试题及答案
- 2026中智关爱通(上海)科技股份有限公司招聘1人建设笔试参考题库及答案解析
- 2026辽宁抚顺市部分市直单位公益性岗位人员招聘31人建设笔试备考题库及答案解析
- 2026年安徽皖信人力资源管理有限公司招聘怀宁某电力外委工作人员建设考试参考试题及答案解析
- 2026中国中医科学院西苑医院招聘国内高校应届毕业生24人(正式批)建设笔试备考试题及答案解析
- 2026中国地质调查局局属单位招聘182人(第二批)建设考试备考题库及答案解析
- 2026南京师范大学附属小学星河幼儿园招聘建设笔试参考题库及答案解析
- 2025年全国统一高考英语试卷(新高考Ⅱ)
- 2025年客运驾驶员从业资格证考试题库及答案
- 危化品甲类库房安全规范要求
- 高中数学公式大全(必修-+-选修)
- EPC总承包项目管理组织方案投标方案(技术标)
- 2025版银屑病常见症状及护理原则
- 【《发动机气缸体的加工工艺分析及专用夹具设计》14000字(论文)】
- 书香教师读书分享
- 五年(2021-2025)高考地理真题分类汇编:专题15 中国地理和世界地理(全国)(原卷版)
- 行车工考试题库及答案
- 2025年凉山州中考语文试题答案解析卷
评论
0/150
提交评论