当前位置:文档之家› 课程设计报告

课程设计报告

课程设计报告1、23根火柴游戏设计题目:2、通讯录管理学生姓名:专业:班级:学号:指导教师:完成日期:合肥工业大学计算机与信息学院目录一、23根火柴游戏—————————————————————2(一)需求和规格说明——————————————————————————2 (二)设计———————————————————————————————2 (三)用户手册—————————————————————————————2 (四)调试及测试————————————————————————————2 运行实例—————————————————————————————2源程序——————————————————————————————4二、通讯录管理——————————————————————8(一)需求和规格说明——————————————————————————8 (二)设计———————————————————————————————8 (三)用户手册—————————————————————————————8 (四)调试及测试————————————————————————————8 运行实例—————————————————————————————8源程序——————————————————————————————10一、23根火柴游戏(一)需求和规格说明23根火柴游戏: 两个游戏者开始拥有23根火柴(或小棒)。

每个游戏者轮流移走1根、2根或3根火柴,拿到最后一根火柴的就算输了。

编一程序与计算机玩这个游戏。

(二)设计通过算法与程序的设计,让电脑具备类似思考的能力,通过主函数的输出打印游戏界面,让玩家认识游戏,进行难度选择时通过getMin(a, b)、Smanvscpu()以及Dmanvscpu()的函数调用,在所选择的函数对象中插入相关的运算,并让电脑随即对应进行j = rand()%(getMin(num,3))+1或者j = (num%4 == 0)?3:num%4-1相关的运算,确定电脑所取的火柴数,从而实现该游戏的运行1.进行游戏之前需要通过输入数字确定游戏难度2.完成游戏后可以通过数字选择是否需要重玩(四)调试及测试运行实例(1)游戏开始(2)正常难度选择对战(3)继续游戏执行困难难度游戏(4)退出游戏源程序:#include <iostream>using namespace std;int getMin(int a,int b){return a<b?a:b;}//正常人机对战int Smanvscpu(){int i,j,num=23;cout<<"游戏开始"<<endl;while(num>0){cout<<"当前还剩下"<<num<<"根火柴,请玩家拿取火柴"<<endl;cout<<"1.一根火柴\t";if(num>=2) cout<<"2.两根火柴\t";if(num>=3) cout<<"3.三根火柴"<<endl;cin>>i;//人取的火柴,所得到剩下的火柴数switch(i){case 1:num=num-1;break;case 2:num=num-2;break;case 3:num=num-3;break;default:cout<<"请正确输入序号\n";continue;}//确定火柴是否取完if(num == 0){cout<<"游戏结束,玩家输掉了游戏"<<endl;break;}//电脑开始确定所取火柴数if(num > 5){j = rand()%3+1;}else{if(num%4 == 1){j = rand()%(getMin(num,3))+1; //求余结果1:拿火柴数1}else{j = (num%4 == 0)?3:num%4-1; //求余结果4:拿火柴数3 ;求余结果拿火柴数2:1、3:2}}cout<<"电脑拿走了"<<j<<"根火柴"<<endl;num=num-j;//判断电脑是否输if(num == 0){cout<<"游戏结束,电脑输掉了游戏"<<endl;break;}}return 0;}//困难人机对战int Dmanvscpu(){int i,j,num=23;cout<<"游戏开始"<<endl; //游戏开始while(num>0){cout<<"当前还剩下"<<num<<"根火柴,请玩家拿取火柴"<<endl;cout<<"1.一根火柴\t";if(num>=2) cout<<"2.两根火柴\t";if(num>=3) cout<<"3.三根火柴"<<endl;cin>>i;//人取的火柴,所得到剩下的火柴数switch(i){case 1:num=num-1;break;case 2:num=num-2;break;case 3:num=num-3;break;default:cout<<"请正确输入序号\n";continue;}//确定火柴是否取完if(num == 0){cout<<"游戏结束,玩家输掉了游戏"<<endl;break;}//电脑开始确定所取火柴数if(num%4 == 1){j = rand()%(getMin(num,3))+1; //4n+1时,随机}else{j = (num%4 == 0)?3:num%4-1; //4n时拿三根;4n+2、4n+3时分别拿1、2根}cout<<"电脑拿走了"<<j<<"根火柴"<<endl;num=num-j;//判断电脑是否输if(num == 0){cout<<"游戏结束,电脑输掉了游戏"<<endl;break;}}return 0;}int main(){int choose,range;cout<<"******************************************************************** "<<endl;cout<<"******************************************************************** "<<endl;cout<<"*******23根火柴游戏: 两个游戏者开始拥有23根火柴。

每个游戏者轮*******"<<endl;cout<<"*******流移走1根、2根或3根火柴,拿到最后一根火柴的就算输了*******"<<endl;cout<<"******************************************************************** "<<endl;cout<<"******************************************************************** "<<endl;while(true){cout<<"游戏开始:"<<endl;cout<<"请选择游戏难度:\t1.正常\t2.困难"<<endl;cin>>range;if(range == 1||range == 2){switch(range){case 1:Smanvscpu();break;case 2:Dmanvscpu();break;}}else{cout<<"输入数字无效,请重新输入"<<endl;cin>>range;}cout<<"是否还需要继续游戏?yes(输入数字1)\tno(输入其他非1的数字)"<<endl;cin>>choose;if(choose == 1){continue;}elsebreak;}return 0;}二、通讯录管理(一)需求和规格说明通讯录管理问题描述编写一个简单的通讯录管理程序。

通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。

基本要求程序应提供的基本基本管理功能有:1)添加:即增加一个人的记录到通信录中2)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。

3)存储:即将通讯录信息保存在一个文件中。

4)装入:即将文件中的信息读入程序。

5)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。

6)修改:可修改一个人的除姓名外其它信息。

测试数据程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。

实现提示程序可用一个单向链表来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个类Cperson来实现,作为链表的值指针指向这些Cperson类对象,通过链表的遍历可以操作这些数据。

(二)设计定义一下函数cntacts(){n=0;}void add();//添加联系人void display();//显示联系人void search();//查找联系人void revise();//修改联系人void delet();//删除联系void out();//退出通过各个函数各自的算法以单链表的方式解决所需要的问题(三)用户手册请运行时注意屏幕上所显示的字(四)调试及测试运行实例以某一个人资料为例添加联系人显示联系人查找联系人修改联系人删除联系人退出源程序#include <iostream>#include <string>using namespace std;struct contacts{public:contacts(){n=0;}void add();//添加联系人void display();//显示联系人void search();//查找联系人void revise();//修改联系人void delet();//删除联系人void out();//退出private :int n;string name;//联系人姓名string sex;//联系人性别string age;//联系人年龄string phonenumber;//联系人电话号码string qqnumber;//联系人QQ号码string birthday;//联系人生日string address;//联系人地址string postalcode;//联系人邮政编码string email;//联系人电子邮箱}con[100];//定义一个类contactsvoid contacts::add()//添加联系人{loop:cout<<"新建联系人:"<<endl;cout<<"联系人姓名:";cin>>con[n].name;cout<<"性别:";cin>>con[n].sex;cout<<"年龄:";cin>>con[n].age;cout<<"电话号码:";cin>>con[n].phonenumber;cout<<"QQ号码:";cin>>con[n].qqnumber;cout<<"生日:";cin>>con[n].birthday;cout<<"地址:";cin>>con[n].address;cout<<"邮政编码:";cin>>con[n].postalcode;cout<<"电子邮箱:";cin>>con[n].email;cout<<endl;cout<<"添加成功!"<<endl;n++;cout<<"是否继续添加?"<<endl;cout<<"选择1 键返回上一步;输入其他内容后按ENTER键返回主菜单"<<endl;int number;cin>>number;if(number==1)goto loop;else;}void contacts::display()//显示联系人{cout<<"显示联系人:"<<endl;cout<<"联系人姓名性别年龄电话号码QQ号码生日地址邮政编码电子邮箱"<<endl;for(int i=0;i<n;i++){cout<<con[i].name<<" "<<con[i].sex<<" "<<con[i].age<<" "<<con[i].phonenumber<<" "<<con[i].qqnumber<<" "<<con[i].birthday<<" "<<con[i].address<<" "<<con[i].postalcode<<" "<<con[i].email<<endl;}}void contacts::search()//查找联系人{cout<<"查找联系人:"<<endl;cout<<"1 按姓名查找"<<endl;cout<<"2 按电话号码查找"<<endl;cout<<"3 按QQ号码查找"<<endl;cout<<"请选择你需要的查询方式:";int select,number,i;cin>>select;switch(select){case 1://按姓名查找{loop:cout<<"请输入想要查询的姓名:"<<endl;string name;cin>>name;for( i=0;i<=n;i++)if(con[i].name==name){cout<<"联系人姓名性别年龄电话号码QQ号码生日地址邮政编码电子邮箱"<<endl<<con[i].name<<" "<<con[i].sex<<" "<<con[i].age<<" "<<con[i].phonenumber<<" "<<con[i].qqnumber<<" "<<con[i].birthday<<" "<<con[i].address<<" "<<con[i].postalcode<<" "<<con[i].email<<endl;break;}if(con[i].name!=name){cout<<"该姓名不存在。

相关主题