C++程序设计实践报告.docx

  • 格式:docx
  • 大小:129.96 KB
  • 文档页数:16

中南大学《C++ 课程设计》设计报告学生姓名学号专业班级指导老师******院2011 年 6 月1、实验目的、内容 (3)2、题目一 : 比赛求平均分2.1 程序内容 (3)2.2 实验程序设计及结构 (3)2.3 设计过程 (3)2.4 运行结果 (4)3、题目二 : 火柴游戏3.1 程序内容 (5)3.2 实验程序设计 (5)3.3 设计过程 (5)3.4 运行结果 (6)4、题目三 : 足球比分4.1 设计内容 (6)4.2 设计方案 (7)5、设计的特点与心得................................................7 参考文献...........................................................7附录题目一实验源代码...............................................8 题目二实验源代码...............................................10 题目三实验源代码.. (12)1、实验目的、内容通过课程设计 ,能够熟练运用 C++ 进行面向对象编程 ,建立对象模型 ,降低软件的复杂性 , 改善软件的重用性和维护性 ,提高软件的生产效率 ,全面掌握面向对象编程技术 .要求学生在指导老师的指导下,独立完成实习课题的全部内容,包括 :(1)通过调查研究和上机实习 ,收集和调查有关技术资料 ;(2)掌握设计课题的基本步骤和方法;(3)根据课题的要求进行上机实验调试.2、题目一 : 比赛求平均分2.1 程序内容在体育、文艺比赛及选举等打分类项目中,为了公平起见,往往n 个评委打出分数后,要去掉一个最高分和一个最低分,然后求取平均得分。

当n 较大时(本题设为9),则应取掉两个最高分和两个最低分,然后求取平均分。

编程实现该算法。

2.2 实验程序设计及结构(1)需求分析 :输入 9 个评委所打分数,程序运行最后结果为去掉最高分和最低分后的平均分.(2)设计结构 :总体结构数据结构从a[0] 到 a[9] 依次为 9 位评委的打分 .2.3 设计过程(1) 建立 iostream/ofstream/fstream 、输入、输出、输入输出流对象,建立ifndef,define 预编命令, STRUCT数据 .(2)根据流程图 , 建立 main 函数 , 并运用 for 循环 .(3)运行 main 函数进行调试 .2.4 运行结果3、题目二 : 火柴游戏3.1 程序内容 :23根火柴游戏 : 两个游戏者开始拥有 23 根火柴 (或小棒 )。

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

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

3.2 实验程序设计(1)需求分析 :运行程序能使人与计算机进行23 根火柴游戏。

(2)设计思路 :使计算机能最先使火柴变成 4 或 4 以下计算机就能赢了。

3.3 设计过程(1) 建立 iostream/ofstream/fstream 、输入、输出、输入输出流对象,建立ifndef,define 预编命令, STRUCT数据 .(2)根据设计思路运用 if 判断语句设计(3)建立 main 函数(4)运行 main 函数调试3.4 运行结果4、题目三 : 足球比分4.1 设计内容:问题描述足球联赛采用主客场双循环赛制,胜一场得 3 分,平局各得 1 分,负一场得0 分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。

试编一程序统计最近一轮比赛后,各队积分及排名。

基本要求设积分表结构如下:队名(不超过 15 个字符),已比赛的场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。

积分表放在正文文件中。

最近一轮的结果从键盘输入,其形式为:主队名(可用代码),客队名(可用代码),主队得分(即进球数),客队得分(即进球数)。

程序应根据此轮结果修改各队的积分和名次,所得的最新记分表仍在原积分文件中并同时在屏幕上显示。

测试数据可选择我国当年的甲 A 或甲 B 联赛的数据输入,并检查与报章公布的数据是否一致。

4.2 设计方案:定义一个球队类和对象数组,每个球队均是球队类的对象。

由于联赛中参赛队伍数目是固定的,因此将每个球队存放在对象数组的一个数组元素中。

每输入两个队的比赛成绩,则相应的队的有关数据(比赛场数,赢得场数,进球数等等)即可进行修改,比赛成绩录入完成,调用联赛排序方法(对象数组作为参数,积分为排序元素)排出名次并输出。

5、设计的特点与心得:经过一个学期的学习和上机实践,使我对C++语言有了更认识和和了解,要想学好它要重在实践,要通过不断的上机操作才能更好的学习它,通过实践,我也发现我的好多不足之处,对各种控制结构及语句、数组的基本与高级应用、指针数组、字符数组、动态数组、函数的定义、调用方式;函数在编程中的具体应用;以及变量存储特征与标识符的作用域,通过实践,使我在这些方面有了认识和提高。

课程设计它是一项任务,更是一种挑战和历练。

在课程设计中,为了使用时方便,着重对不足方面的知识进行了分析与理解,在这一过程中对文件的操作有了很大的提高。

通过实际的演练,可以增强对知识的理解和运用能力。

参考文献[1]、杨长兴、刘卫国,《C++ 程序设计》,中国铁道出版社, 2008 年附录题目一实验源代码:#include<stdio.h>#include<iostream.h>void main(){int a[9],i,j,temp,b=0,s;cout<<" 请打分 :"<<endl;for(i=0;i<9;i++){cin>>a[i];}for(i=0;i<9;i++)for(j=i;j<9;j++){if(a[i]<=a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}for(i=2;i<7;i++){b=b+a[i];}s=b/5;cout<<" 最后成绩为: "<<s; }题目二实验源代码:#include <stdio.h>#include <stdlib.h>#include <iostream>int getMin(int a,int b){return a<b?a:b;}int main(){printf(" 游戏开始 \n");int count = 23;int input;int computerInput;while(true){printf(" 当前还剩 %d 根火柴 ,请玩家拿取火柴:\n",count);printf("1. 一根火柴");if(count >= 2){printf("2. 两根火柴");}if(count >= 3){printf("3. 三根火柴 ");}printf("\n");while(true){std::cin >> input;if(input == 1||(input == 2&&count >= 2)||(input == 3&&count >= 3))break;elseprintf(" 请正确输入序号\n");}count -= input;if(count == 0){printf(" 游戏结束,玩家输掉了游戏\n");break;}if(count%4 == 1){computerInput = rand()%(getMin(count,3))+1;}else{computerInput = (count%4 == 0)?3:count%4-1;}printf(" 电脑拿走了 %d 根火柴 \n",computerInput);count -= computerInput;if(count == 0){printf(" 游戏结束,电脑输掉了游戏\n");break;}}system("pause");}题目三实验源代码:// 程序需要先在 d 盘建立 2 个文本文档teams.txt, teamlist.txt ,以保存球队信息和比分信息// #include <iostream>#include <string>#include <fstream>using namespace std;class Team{private:int goal;int cgoal;int pgoal;int win;int lost;int equal;int scorce;public:char name[20];Team(){goal=0;cgoal=0;pgoal=0;win=0;lost=0;equal=0;scorce=0;}void Display(){cout<<name<<' '<<goal<<' '<<cgoal<<' '<<pgoal<<' '<<win<<' '<<lost<<' '<<equal<<''<<scorce<<endl;}void goalchg(int a);void matchchg(int a,int b);void match(Team &t);void setIm();int getS();int getPG();};void Team::goalchg(int a){if(a>0)this->goal+=a;if(a<0)this->cgoal-=a;pgoal=goal-cgoal;}void Team::matchchg(int a,int b){ if(a>b){this->win+=1;this->scorce+=3;}if(a<b){this->lost+=1;}if(a==b){this->equal+=1;this->scorce+=1;}}void Team::match(Team &t){ int a,b;cout<<"press home's goal:"; cin>>a;if(a<0){cout<<"warning"<<endl;exit(1);}cout<<"press ihome's goal:"; cin>>b;if(b<0){cout<<"warning"<<endl;exit(1);}this->goalchg(a);this->goalchg(0-b);t.goalchg(b);t.goalchg(0-a);this->matchchg(a,b);t.matchchg(b,a);}void Team::setIm(){cout<<"team's name:"; cin>>this->name;}int Team::getS(){return this->scorce;}int Team::getPG(){return this->pgoal;}void getteamlist();fstream team("d:\\teams.txt",ios::in|ios::out|ios::binary);void main(){char name[20];Team t[5];int t1,t2;char n;int i;if(!team){cout<<"lost file"<<endl;exit(1);}while(1){cout<<"do you have set the team IM?(Y)"<<endl;cin>>n;if(n=='Y'||n=='y')break;for(int i=0;i<=4;i++){t[i].setIm();team.write((char*)&t[i],sizeof(t[i]));}break;}team.seekg(0,ios::beg);for(i=0;i<5;i++)team.read((char*)&t[i],sizeof(t[i]));while(1){cout<<"is any match now?(N)"<<endl;cin>>n;if(n=='N'||n=='n')break;do{cout<<"hometeam name:";cin>>name;for(i=0;i<5;i++){if(strcmp(name,t[i].name)==0){t1=i;break;}elsecontinue;}}while(i==5);do{cout<<"keteam name:";cin>>name;for(i=0;i<5;i++){if(strcmp(name,t[i].name)==0){t2=i;break;}elsecontinue;}}while(i==5);t[t1].match(t[t2]);}team.seekg(0,ios::beg);for(i=0;i<5;i++)team.write((char*)&t[i],sizeof(t[i]));getteamlist();}void getteamlist(){Team t1[5];Team hao;fstream gamelist("d:\\teamlist.txt",ios::in|ios::out|ios::binary);if(!gamelist){cout<<"wrong!!"<<endl;exit(1);}team.seekg(0,ios::beg);for(int i=0;i<5;i++){team.read((char*)&t1[i],sizeof(t1[i]));}for(int j=0;j<4;j++)for(int i=0;i<4-j;i++){if(t1[i].getS()<t1[i+1].getS()){hao=t1[i];t1[i]=t1[i+1];t1[i+1]=hao;}if(t1[i].getS()==t1[i+1].getS()){if(t1[i].getPG()<t1[i+1].getPG()){hao=t1[i];t1[i]=t1[i+1];t1[i+1]=hao;}}}cout<<" 球队"<<" 进球数"<<" 失球数"<<" 净胜球 "<<" 胜"<<" 负"<<" 平"<<" 积分"<<endl;for(i=0;i<5;i++){gamelist.write((char*)&t1[i],sizeof(t1[i]));t1[i].Display();}}。