淮 阴 工 学 院
PROJECT1
课 程 设 计 报 告
课程设计选题表
中文摘要
外文摘要
目 录
1 引言………………………………………………………………………………… 1
2 可行性分析……………………………………………………………………………2
3 总体设计………………………………………………………………………………2
3.1需求分析……………………………………………………………………………2
3.2文字游戏的设计……………………………………………………………………………2
3.3通讯录的设计…………………………………………………………………………3
4 详细设计………………………………………………………………………………5
4.1 文字游戏的实现……………………………………………………………………5
4.1.1 答题游戏…………………………………………………………………………5
4.1.2 文字游戏…………………………………………………………………………7
4.2通讯录的实现………………………………………………………………………8
5 测试与运行结果……………………………………………………………………10
5.1文字游戏的测试与结果……………………………………………………………………10
5.2通讯录的测试与结果………………………………………………………………………11
结论 ……………………………………………………………………………………………… 13
致谢 ………………………………………………………………………………… 14
参考文献………………………………………………………………………………15
附录A 文字游戏的设计与实现…………………………………………………… 16
附录B 通讯录的设计与实现……………………………………………………… 29
1引言
随着网络与信息技术的发展,人们的消费观和娱乐观都在发生着重大的变化,人们越来越多地使用电脑、手机等电子设备,通过这些设备,人们的信息传播水平发展越来越迅速!而随着这些电子产品的推出,人们的生活环境也变得和以前不同起来。
首先在娱乐方面,人们已经从以前的对游戏的新鲜和入迷转变成了一种可有可无的态度,换句话说就是人们现在的游戏体验要求明显提高了!现在要改变人们对游戏的新认知,我们必须努力开发出吸引人而且不落时代的游戏!而对于这方面我们的这次实训课程将会非常有意义。
本课程我们设计了两个游戏,一个是计时抢答游戏,另一个是文字拼盘游戏!在计时抢答游戏里面设有当前时间和倒计时间的显示!让答题者有一种快速回答完成的压力感,或者说是一种“安全感”。在这个游戏里面设有10道题目,并有相对应的答案!回答正确加一分,回答错误不加分!10道题目答完之后显示总分,并与之前的答题者的分数对比,排下答题者当前的名次!10道题不固定,工作人员可以定期的增加新题,与时俱进!永不落伍!
在文字拼盘游戏当中,我们将一个单词拆解,答题者可随机抽取这些被拆解后的字母重新拼成新的单词,但这单词必须存在,如不存在将会报错!在这个游戏里面,答题者可在任何时间退出,但退出后分数将被置零!新的游戏体验,新的画面感受,让玩游戏的人爱不释手。
令一方面随着信息传播水平发展越来越迅速,人们的联系人越来越多,需要联系的人逐渐增多,需要记录的信息也逐渐增多。以前是将这些信息手写到通讯录中,但这很容易造成信息的丢失,而且查找起来十分不便。
而本课程实训主要实现对输入信息的管理,包括对信息的添加、修改、查询和删除,及一些辅助项目管理,如登录系统用户管理和用户组管理。
2可行性分析
2.1经济可行性
成本:
由于所用的所有的物资都是开源的,所以成本可以忽略不计,所以该设计是零投入。
收益:
如果本产品投放到市场,以目前的电脑在社会的普及率,文字游戏可以作为忙碌生活背后的一种放松方式,而通讯录更是经济实用,相信应该会有顾客使用。所以该设计是有一定的收益。
2.2技术可行性
由于如今网路的普遍,编译环境的多样性和普遍性,计算机编程也为越来越多的人了解并学习,编译环境也在与时俱进,功能也越来越强大,所以对于基本的C#文字游戏和基于C++通讯录的实现现在的技术完全可以满足。
2.3法律和社会可行性
由于该程序的资源都是开源的,而且并为涉及到任何国家法律所禁止的事项,也未曾盗用他人的版权,故而法律和社会是可行的。
2.4操作的可行性
两个程序分别是在Microsoft Visual Studio C#环境和Microsoft Visual C++6.0环境下编写,所以用户只要安装有这两个软件,并不需要联网,就可以进行简便的操作。所以安全性也有可靠的保证。
3总体设计
3.1 文字游戏的设计
3.1.1 需求分析
对于本游戏系统,我们作为编译者兼玩家。从玩家的角度来看,一个游戏进入系统,首先给人的印象是游戏的画面,那么就要更改游戏界面的背景。其次,作为一个新手,要考虑的是这个游戏该怎么玩。这就要求设计者要设计Help功能,来为玩家解释游戏规则。
在游戏的过程中,要考虑玩家的水平,并给与玩家选择游戏的难度(本设计由于时间限制所以没有设计这个功能),答题时不能无止境的浪费时间,所以需要设计倒计时[1],提醒用户时间。
在游戏结束后,玩家最关心的肯定是成绩,所以在程序中除了设计了Marks以外,还设计了一个排名功能,可以让玩家的心理得到一定的满足。也让游戏更为的有趣。
3.1.2 总体分析
设计一个游戏,就要求有导向。在该设计中有菜单栏,菜单栏中包含了两个游戏的进入界面,另外设计了一个帮助界面,要让那些初玩者了解游戏规则。还设计了一个退出界面,方便玩家退出。
3.1文字游戏总菜单设计结构图
3.2 通讯录的设计
3.2.1 需求分析
开发软件首先要进行的就是需求分析,对于本通讯录系统,我们可以先将自己作为通讯录的使用者,从自己的角度来考察需求。很显然,一个普通的通讯录系统,最基本的功能是记录一个联系人的信息,那么,联系人的信息需要有哪些呢?这是一个在需求分析中要特别注意的问题,一般而言,通讯录使用者可能需要的信息有以下这些:姓名、性别、工作单位、办公电话、住址、手机其他备注信息。
这样开发者了解了需要保存的每个联系人的基本信息有哪些,与记录联系人信息相关的操作很容易联想到有增加联系人、删除联系人和对联系人信息进行更新3钟。所以对联系人的操作的需求归纳为以下3点:增加新的联系人、删除已存在的联系人、修改已存在的联系人的信息。
软件形式的通讯录与传统纸面形式的通讯录比较起来,可以实现更为方便、有效的管理。
3.2.2 总体设计
根据通讯录的功能要求,设计的菜单中包含了创建通讯录文件,增加记录,查找信息,修改个人信息,删除信息等等功能,具体流程图如图3.2所示。
图3.2 通讯录管理系统模块结构图
4详细设计
4.1 文字游戏的实现
4.1.1 答题游戏
在答题游戏中,包含了众多的功能,多线程的运用[2~4],倒计时的实现,积分和排名系统的实现[5],保证了游戏的可运行,运行设计的IPO图如图4.1所示:
图4.1答题游戏模块结构图
1.倒计时与当前时间的实现
倒计时的创建是建立的系统休眠的状态下,利用循环和数字的自减,每次循环是让系统进行一秒的休眠,并对前面的数字进行一次清屏。那样一秒过后会输出一个比当前数字小1的数。当前时间是利用系统关键字,直接读取系统时间。当倒计时为0时,则答题结束。
int CursorLeft = Console.CursorLeft, CursorTop = Console.CursorTop ;
int T = 300;
while (T >= 0)
{
Console.SetCursorPosition(62, 0);
Console.Write("left time :" + T);
Console.SetCursorPosition(62, 0);
Console.SetCursorPosition(CursorLeft, CursorTop);
T--;
Thread.Sleep(1000);
}
IPO图如图4.2所示:
图4.2倒计时的实现
2.求分数和排名系统的实现
分数和名次是调动玩家积极性的重要因素,因此在这个系统中设有了答题分数和名次的计算,当系统调用题目时会要求玩家输入答案,如果答案和系统给定的答案匹配了,显示正确则marks加1,否则显示错误并跳到下一题,结束时marks会进入到一个数组,与数组中数字比较,并排出相应的名次。
IPO图如图4.3所示:
图4.3分数和排名
3.多线程的实现
由于时间的输出是需要每秒清屏一次,而题目的输出是要求由玩家所控制的,利用的也是清屏,两次刷控制台导致了不能同时输出。所以该设计中运用了多线程,将时间的输出和题目的输出分开,这样就保证了时间和答题互不干扰。
void DataTime()
{
System.Timers.Timer timer = new System.Timers.Timer(1000);
timer.Elapsed+= new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.AutoReset = true;
timer.Enabled = true;
}
4.1.2 文字游戏
相对于答题游戏来说,文字游戏的设计比较简单。要求玩家在系统所给定的几个字母中选出几个字母,组成英语单词,若正确则显示正确,否则显示错误。并对答对的个数进行统计,比较谁答的最多。
4.2 通讯录的实现
1.菜单的创建
菜单的创建是整个系统运行的关键,菜单是系统功能的展现,因此在菜单创建是要求对通讯录的需求要有全面的了解,通讯录所拥有的功能必须在菜单中表现。菜单中要求有对应的选项,根据选项提示进入到你所要操作的任务栏,菜单的IPO图如图4.4所示:
图4.4 菜单的IPO图
2.新通讯录的创建
本课题是要求创建通讯录[6],那么通讯录文件的创建就是必须的,一个通讯录需要有文件来保存它所存入的信息。所以需要创建空白的通讯录。
void Tel::Create ()
{
ofstream outData("pbook.txt", ios::app);
if (!outData)
{
cout < system("pause"); } else { outData << setiosflags(ios::left) << setw(17) << name <<" " << setw(16) << number <<" " << setw(18) << sex <<" " << setw(14) < << setw(20) << address < outData.close(); } } 3.查找信息 信息的查找,需要在菜单中输入查找命令,然后根据提示输入要查询的对象,系统将根据输入对象在文件中自动匹配[7],由于记录是整行输入的,然后输出整行字段,这样就完成了查找。查找的IPO图如图4.5所示: ifstream inData[8]("pbook.txt", ios::in); string Temp; cout<<"Enter the Name you want find."< cin>>Temp; fflush(stdin); string str; while (inData >>name) { getline(inData, str); if ((name==Temp) ) { cout < cout<<"Name"< cout < system("pause"); break; } 4.修改信息 信息修改是通讯录的一个重要功能,要求通讯录拥有修改功能,首先要在系统中搜索到需要修改的相关信息,然后删除,再添加。在C++中没有对整条记录进行删除(可能是由于本人没有学习到),所以在相关问题上我是在同一个文件中创建了temp文件,然后在对每条字段读取时,若不是自己需要搜寻的相关记录[8、9],就将这条记录读入到temp中,而对需要修改的记录则不进行录入,最后将temp中所有的记录都复制到原来的文档中[10~12],这样就完成了对原纪录的删除。再调用增加功能,对信息重新录入,这样就完成了对信息的修改。 ofstream outData[8]("temp.txt", ios::out); ifstream inData("pbook.txt", ios::in); while (inData>>name) { getline(inData, str); if (Temp==name) { cout < cout<<"Name"< cout < flag = false; break; } else { outData < < } } 图4.6 修改信息的IPO 5测试与运行结果 5.1文字游戏的测试与结果 文字游戏功能的实现,在文字游戏中只保留了对与错的判断,总体设计比较单一。如图5.1所示: 图5.1 文字游戏的实现 答题游戏中包含了多个功能,有倒计时5min,有计分功能,还有排名功能。在进入游戏之前,系统会有一个游戏说明,该游戏说明在Help菜单栏中也会有详细说明。如图5.2所示: 图5.2 答题游戏的设计 多线程的实现体现在了当前时间的调用,倒计时300秒的实现和答题模块的分开运行,保证了控制台在对倒计时和当前时间刷新的同时也能够运行游戏,在设计多线程之前,我们小组尝试了用多种方法来实现两个模块在同一界面运行,例如将时间的输出定点,用Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop)来定位,但是都没有起到应有的作用,最后经过认真的讨论和详细的分析,我们选择了应用多线程来实现这一模块,如图5.3所示:
图5.3 多线程的应用 5.2通讯录的测试与结果 通讯录菜单的实现比较容易,用一个选择语句调用应有的函数体,如图5.4所示:
图5.4 菜单的设计 通讯录修改信息的实现,修改在通讯录中应该比较困难,首先需要在文件中搜索到该字段[6],然后将不需要修改的字段放入到temp临时文本中[7],并对原来的文本进行删除,再将需要修改的信息录入到temp文本中,由于前面的操作都是基于原来的文本,所以需要将temp文本中的所有字段再复制到原来的文本中[8],这样就完成了对信息的修改,结果如图5.6所示:
图5.5修改信息 通讯录查询功能的实现需要从文件中读出,那么首先要定位文件,找到文件中匹配的的字段[9],并让其输出到屏幕上。如图5.5所示:
图5.6 查询信息 结 论 程设计是培养学生综合运用所学知识 ,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C又是最常见,功能最强大的一种高级语言,因此做好C课程设计是十分必要的。 本文对整个系统的开发过程,从可行性分析到事实部分基本实现了通讯录管理系统的基本功能:添加、查询、删除、修改等等的功能,而论文也按照老师既定的要求完成了。虽然是基本完成了,但还有很大改动空间,应该特别是最后的实施部分,本来可以做的更完美。由于时间的仓促,加之能力有限,希望过后能修改得更完美点。而对于答题游戏的题目设置部分,设计的比较简单。本来是打算做一个题库,并从题库中随机抽取题目,但是由于时间问题所以这个方面不够完善。 对于我们小组在本次的工作情况只能说达到良好。虽然在我自己实施部分之余还能对系统的分析规划设计提出意见,帮助小组成员完成一些工作,但还有很大的空间改进,在设计阶段应该给予更多的帮助,设计更加完美的系统。所以在实施部分还有很大的遗憾,系统不够完美,功能还是不够全面。希望这过后之余能利于业余时间去不断完善修改。 在工作中,我深刻体会到团队的力量以及协调合作的重要性,这将在以后的学习工作中给我以激励和指导。 致 谢 在本次设计中,我要特别感谢一下我的指导老师**,当我在设计程序的设计时候,两个老师都给与了非常大的帮助,才是我这次课题完成的这么顺利。同时我也要感谢我们小组的另一位成员**,在我们俩的齐心协力的设计下,设计完成的很顺利,很成功。 参 考 文 献 1 《Visual C#.NET数据库开发经典案例解析》王晟 著,清华大学出版社 2 《Visual C# 2005》从入门到精通 (英)夏普 著,周靖 译,清华大学出版社 3 《C# 编程典型实例解析/电脑编程实例导航丛书》 电脑编程技巧与维护杂志社 著,中国水利水电出版社 4 《C#编程实例与技巧评分》 刘浩 陈曙东 著,清华大学出版社 5 《Visual C# 2010入门经典》Scott Dorman 著,张? 译,人民邮电出版社 6 《C++从入门到精通》 徐兆元 著,化学工业出版社 7 《Visual C++程序员实用大全》(美)Charles Wrigh 著,邓劲生/张晓明 译, 中国水利水电出版社 8 《C++程序设计》(第二版) 谭浩强著,清华大学出版社 9 《C++Primer Plus(第五版)》 [美]普拉塔 著,孙建春、韦强译,人民邮电出 版社 10《C++面向对象程序设计》(第二版),陈维兴、林小茶著,中国铁道出版社 11《C++语言程序设计》(第四版)主编 郑莉 董渊 何江舟 清华大学出版社 12《C语言程序设计》(第三版)谭浩强著,高等教育出版社 附录A: 文字游戏的实现 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace WordGame { //游戏入口 class Game { int[] a = new int[3] { 0, 0, 0 }; public int Marks = 0; public static int cho; Game() { Console.ForegroundColor = ConsoleColor.Green; } //选择类 void choise() { Console.Clear(); Console.WriteLine(); Console.WriteLine("****************************** "); Console.WriteLine("Please enter the choise of these games;"); Console.WriteLine("1.Quiz game"); Console.WriteLine("2.Word game"); Console.WriteLine("3.Quit"); Console.WriteLine("4.Help"); Console.WriteLine("********************************"); switch (cho = Convert.ToInt32(Console.ReadLine())) { case 1: Console.Clear(); Quizgame(); break; case 2: Console.Clear(); Word_Game(); break; case 3: Quit(); break; case 4: Help(); break; default: Solve(); choise(); break; } Solve(); } //倒计时 void time() { int CursorLeft = Console.CursorLeft, CursorTop = Console.CursorTop ; int T = 300; while (T >= 0) { Console.SetCursorPosition(62, 0); Console.Write("left time :" + T); Console.SetCursorPosition(62, 0); Console.SetCursorPosition(CursorLeft, CursorTop); T--; Thread.Sleep(1000); } Console.WriteLine("Time is out ,you are lose and you can continue to watch you final Mark!!!!!"); Console.ReadLine(); } //获取当前时间 static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { int CursorLeft = Console.CursorLeft, CursorTop = Console.CursorTop; Console.SetCursorPosition(0, 0); //DateTime a = DateTime.Now; Console.Write(DateTime.Now); Console.SetCursorPosition(CursorLeft, CursorTop); } //善后文件 void Solve() { Console.WriteLine(); Console.WriteLine("Something error !Press Enter to continue!"); Console.ReadLine(); } //当前时间线程 void DataTime() { System.Timers.Timer timer = new System.Timers.Timer(1000); timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); timer.AutoReset = true; timer.Enabled = true; } //第一个游戏 void Quizgame() { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(); Console.WriteLine("Guidline for the Quize game."); Console.WriteLine("*******************************"); Console.WriteLine("1.there are 10 questions in the quiz"); Console.WriteLine("2.Each question carris 1 mark"); Console.WriteLine("3.there is no negative marking"); Console.WriteLine("4.the time to finish it is 5 minutes"); Console.WriteLine("*************************************"); Console.WriteLine("want you continue the quiz game ? ( yes or no )"); string Ch; Ch = Console.ReadLine(); if (Ch == "yes") { Console.WriteLine("Game start"); ThreadStart Ref = new ThreadStart(time); Thread ChildThread = new Thread(Ref); ChildThread.Start(); for (int k = 1; k <= 10; k++) { Console.Clear(); Console.WriteLine(" Marks is :" + Marks); Console.WriteLine(); Console.WriteLine(); questions(k); Console.WriteLine("Please enter the answer"); string ans = Console.ReadLine(); if (ans == answers(k)) { Marks++; Console.WriteLine("correct"); } else { Console.WriteLine("incorrect"); } } ChildThread.Abort(); Console.Clear(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("The total Marks is :" + Marks); Ranking(); Marks = 0; Console.ReadLine(); choise(); } else { choise(); } } //退出类 void Quit() { Console.ForegroundColor = ConsoleColor.Magenta; Console.Clear(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(" Bye-bye"); Console.ReadLine(); } //文字游戏 public void Word_Game() { Console.ForegroundColor = ConsoleColor.Yellow; string word; Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Please choose the word from 'h e a r t'"); string tmp; tmp = "yes"; while (tmp == "yes") { Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Enter the word"); word = Console.ReadLine(); if (word == "hear" || word == "heat" || word == "ear" || word == "art" || word == "her" || word == "eat" || word == "hare" || word == "heart" || word == "he" || word == "hera" || word == "reha" || word == "earth" || word == "at" || word == "the" || word == "are" || word == "hat") { Console.WriteLine(); Console.WriteLine("correct"); } else { Console.WriteLine("That is wrong ,Please Enter the other word."); } Console.WriteLine(); Console.WriteLine("Do you want continue(yes or no)."); tmp = Console.ReadLine(); Console.Clear(); } Quit(); } //答案 string answers(int j) { switch (j) { case 1: return "b"; case 2: return "a"; case 3: return "b"; case 4: return "a"; case 5: return "b"; case 6: return "a"; case 7: return "b"; case 8: return "a"; case 9: return "b"; case 10: return "a"; default: return "error"; } } //题目 void questions(int i) { switch (i) { case 1: Console.WriteLine("______1");// Check// Check Console.WriteLine(); Console.WriteLine(" Statement A: An object has state, exhibits some well-defined behavior and has unique identity."); Console.WriteLine(" Statement B: Two objects may have the same behavior, state and identity."); Console.WriteLine("a) Statement A & B both are false"); Console.WriteLine("b) Statement A is true, Statement B is false"); Console.WriteLine("c) Statement A & B both are true"); Console.WriteLine("d) Statement A is false, Statement B is true"); break; case 2: Console.WriteLine("______2");// Check Console.WriteLine(); Console.WriteLine("Which of the following is an invalid variable name?"); Console.WriteLine("a) My_Name"); Console.WriteLine("b) MyName"); Console.WriteLine("c) My Name"); Console.WriteLine("d) MyName1"); break; case 3: Console.WriteLine("______3");// Check Console.WriteLine(); Console.WriteLine("The using keyword is used to include"); Console.WriteLine("a) Classes"); Console.WriteLine("b) Namespaces and classes"); Console.WriteLine("c) Functions"); Console.WriteLine("d) Namespaces"); break; case 4: Console.WriteLine("______4");// Check Console.WriteLine(); Console.WriteLine("Which of the following is not an example of value type?"); Console.WriteLine("a) string"); Console.WriteLine("b) char"); Console.WriteLine("c) structure"); Console.WriteLine("d) float"); break; case 5: Console.WriteLine("______5");// Check Console.WriteLine(); Console.WriteLine("__________ is a set of one or more characters that is used for computations or comparisons."); Console.WriteLine("a) Operands"); Console.WriteLine("b) Operation"); Console.WriteLine("c) Operators"); Console.WriteLine("d) None of the above"); break; case 6: Console.WriteLine("______6");// Check Console.WriteLine(); Console.WriteLine("Statement A: Destructors are special methods that are used to release a class from memory."); Console.WriteLine(" Statement B: A class can have more than one destructor"); Console.WriteLine("a) Statement A & B both are false"); Console.WriteLine("b) Statement A is true, Statement B is false"); Console.WriteLine("c) Statement A & B both are true"); Console.WriteLine("d) Statement A is false, Statement B is true "); break; case 7: Console.WriteLine("______7");// Check Console.WriteLine(); Console.WriteLine("Which of the following loops is executed at least once?"); Console.WriteLine("a) if ? else"); Console.WriteLine("b) for"); Console.WriteLine("c) while"); Console.WriteLine("d) do ? while"); break; case 8: Console.WriteLine("______8");// Check Console.WriteLine(); Console.WriteLine("To which category of operators does the += belong?"); Console.WriteLine("a) Arithmetic Assignment Operators"); Console.WriteLine("b) Unary Operators"); Console.WriteLine("c) Comparison Operators"); Console.WriteLine("d) Assignment Operators"); break; case 9: Console.WriteLine("______9");// Check Console.WriteLine(); Console.WriteLine("What will be the output of the following code snippet?"); Console.WriteLine(" int x =10;"); Console.WriteLine(" int y = 100;"); Console.WriteLine(" while(x Console.WriteLine(" {"); Console.WriteLine(" x = y/x;"); Console.WriteLine(" Console.WriteLine(x);"); Console.WriteLine(" }"); Console.WriteLine("a) 10 will be printed ten times "); Console.WriteLine("b) Infinite Loop"); Console.WriteLine("c) 10 will be printed once"); Console.WriteLine("d) Compilation Error"); break; case 10: Console.WriteLine("______10");// Check Console.WriteLine(); Console.WriteLine(" Which access specifier allows a class to hide its member variables and member "); Console.WriteLine(" functions from other class objects and functions, except the child class."); Console.WriteLine("a) internal"); Console.WriteLine("b) protected internal"); Console.WriteLine("c) private"); Console.WriteLine("d) protected"); break; default: Console.WriteLine(); Console.WriteLine("end"); break; } } //分数统计 void Ranking() { if (a[2] < Marks) { if (a[1] < Marks) { if (a[0] < Marks) { a[2] = a[1]; a[1] = a[0]; a[0] = Marks; Console.WriteLine("Congratulations, your ranking for the first. " + Marks); } else { a[2] = a[1]; a[1] = Marks; Console.WriteLine("Congratulations, your ranking is second. " + Marks); } } else { a[2] = Marks; Console.WriteLine("Congratulations, your ranking for the third. " + Marks); } } else { Console.WriteLine("Sorry ,it is very Low... " + Marks); } Console.WriteLine("The highest score is " + a[0]); } //主函数 static void Main(string[] args) { Console.WriteLine(); Console.WriteLine(); Console.WriteLine(" ***************************************"); Console.WriteLine(" Welcome to Happy House"); Console.WriteLine(" ***************************************"); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Please Press 'Enter' to continue"); Console.ReadLine(); Game ga = new Game(); ga.DataTime(); ga.choise(); Console.ReadLine(); } void Help() { Console.Clear(); Console.WriteLine(); Console.WriteLine("1.Quiz game Help"); Console.WriteLine("2.Word game Help"); Console.WriteLine("3.Quit"); switch (cho = Convert.ToInt32(Console.ReadLine())) { case 1: Console.Clear(); Console.WriteLine(); Console.WriteLine("1.There are 10 questions in the quiz"); Console.WriteLine("2.Each question carris 1 mark"); Console.WriteLine("3.There is no negative marking"); Console.WriteLine("4.The time to finish it is 5 minutes"); Console.WriteLine(); Console.WriteLine("Back with Enter"); break; case 2: Console.Clear(); Console.WriteLine(); Console.WriteLine("1.Choose some letters from the five letters"); Console.WriteLine("2.Ensure the words you choose could spell a word"); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Back with Enter"); break; case 3: choise(); break; default: Solve(); choise(); break; } Console.ReadLine(); choise(); } } } 附录B: 通讯录的实现 /*6. 通讯录(7) 要求:第一个模块--主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 第二个模块--Menu()的功能是:显示英文提示选单。 第三个模块--Quit()的功能是:退出选单。 第四个模块--Create()的功能是:创建新的通讯录。 第五个模块--Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。 第六个模块--Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。 第七个模块--Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。 第八个模块--Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。 第九个模块--List()的功能是:显示通讯录中的所有记录。 人数:2人 要求:实用 */ #include #include #include #include #include using namespace std; class Tel { private: string number; string name; string sex; string address; string bc; public: Tel(); void Menu();//主菜单 void Quit();//退出 void Create();//保存 void Add();//添加 void Find();//查找 void Alter();//修改所指人的信息 void Delete();//删除所指人的信息 void List();//显示所有人的信息 void DEleteALL();//清除所有人的信息 }; Tel::Tel() { number="0"; name="0"; sex="0"; address="0"; bc="0"; } //第二个模块--Menu()的功能是:显示英文提示选单。 void Tel::Menu () { system("CLS"); cout<<" Address book software "< cout<<" ************************************"< cout<<" Menu "< cout<<" 1.Add the contact "< cout<<" 2.Alter the information "< cout<<" 3.Find the contact "< cout<<" 4.Delete the contact "< cout<<" 5.List All the information "< cout<<" 6.Delete all the information "< cout<<" 7.Quit "< cout<<" ************************************"< cout<<" please choose :"; int choose; cout<<"Enter the number form 1 to 6"< cin>>choose; switch(choose) { case 1: Add (); break; case 2: Alter (); break; case 3: Find (); break; case 4: Delete (); break; case 5: List (); break; case 6: DEleteALL(); break; case 7: Quit(); break; default: Menu(); break; } } //第三个模块--Quit()的功能是:退出选单。 void Tel::Quit () { cout<<"Bye-Bye!!!"< } //第四个模块--Create()的功能是:创建新的通讯录。 void Tel::Create () { ofstream outData("pbook.txt", ios::app); if (!outData) { cout < system("pause"); } else { outData << setiosflags(ios::left) << setw(17) << name <<" " << setw(16) << number <<" " << setw(18) << sex <<" " << setw(14) < << setw(20) << address < outData.close(); } } //第五个模块--Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。 void Tel::Add () { cout < <<"Name:" ; cin >>name; cout <<"Telephone: "; cin >>number; cout <<"Background : "; cin >>bc; cout <<"Sex: "; cin >>sex; cout <<"Address: "; cin >>address; Create(); cout < cout<<"do you want to continue ?(y/n)"< char ch; cin>>ch; if(ch=='y'||ch=='Y') { Add(); } else { Menu(); } } //第六个模块--Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。 void Tel::Find () { ifstream inData("pbook.txt", ios::in);//in 只读取文件中数据。 if(!inData) { cout< system("pause"); } string Temp; cout<<"Enter the Name you want find."< cin>>Temp; fflush(stdin); //string str1; /*bool flag = true;*/ string str; while (inData >>name) { getline(inData, str); if ((name==Temp) ) { cout < cout<<"Name"< cout < system("pause"); break; } else cout< cout< cout< } cout<<"Do you want continue."< char ch; cout<<"do you want to continue ?(y/n)"< cin>>ch; if(ch=='y'||ch=='Y') { Find(); } else { Menu(); } } //第九个模块--List()的功能是:显示通讯录中的所有记录。 void Tel::List () { ifstream inData("pbook.txt",ios::in); if (!inData) { cout < return; } bool flag = true; string record; while (getline(inData, record)) { if (flag) { cout < cout<<"Name"< } cout < flag = false; } if (flag) { cout < } else { cout < } char ch; cout<<"Want you to go to the Menu ?(y/n)"< cin>>ch; if(ch=='y'||ch=='Y') { Menu(); } else { Quit(); } } //第八个模块--Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。 void Tel::Delete () { ofstream outData("temp.txt", ios::out); ifstream inData("pbook.txt", ios::in); if (!outData || !inData) { cout < system("pause"); return; } string Temp; cout < cin >>Temp; bool flag = true; string str; while (inData>>name) { getline(inData, str); if (Temp==name) { cout < cout<<"Name"< cout < flag = false; break; } else { outData < < } } if (flag) { cout < } else { while (getline(inData, str)) { outData < } outData.close(); inData.close(); ofstream out("pbook.txt", ios::out); ifstream in("temp.txt", ios::in); if (!out || !in) { cout < return; } while (getline(in, str)) { out < } out.close(); in.close(); cout < } cout<<"do you want to continue ?(y/n)"< char ch; cin>>ch; if(ch=='y'||ch=='Y') { Delete (); } else { Menu(); } } //第七个模板——清除所有人的信息! void Tel::DEleteALL() { ofstream outData("pbook.txt", ios::out); outData.close(); cout<<"All the information has deleted!!!"< cout< cout<<"do you want to continue ?(y/n)"< char ch; cin>>ch; if(ch=='y'||ch=='Y') { Menu(); } else { Quit(); } } //第八个模块--Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。 void Tel::Alter () { ofstream outData("temp.txt", ios::out); ifstream inData("pbook.txt", ios::in); if (!outData || !inData) { cout < system("pause"); return; } string Temp; cout < cin >>Temp; //string str1; bool flag = true; string str; while (inData>>name) { getline(inData, str); if (Temp==name) { cout < cout < flag = false; break; } else { outData < < } } if (flag) { cout < } else { while (getline(inData, str)) { outData < } outData.close(); inData.close(); ofstream out("pbook.txt", ios::out); ifstream in("temp.txt", ios::in); if (!out || !in) { cout < return; } while (getline(in, str)) { out < } out.close(); in.close(); cout < } cout < <<"Name:" ; cin >>name; cout <<"Telephone: "; cin >>number; cout <<"Background : "; cin >>bc; cout <<"Sex: "; cin >>sex; cout <<"Address: "; cin >>address; Create(); cout < cout<<"do you want to continue ?(y/n)"< char ch; cin>>ch; if(ch=='y'||ch=='Y') { Alter(); } else { Menu(); } } void main() { system("color 4A"); Tel a; a.Menu (); }
图4.5 查找的IPO图
修改信息的IPO图如图4.6所示下: