C++程序设计实践报告

时间:2024.4.5

中南大学

C++课程设计》设计报告

学生姓名                     

学    号                     

专业班级                     

指导老师                     

******

20##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++程序设计》,中国铁道出版社,20##年

附录

题目一实验源代码:

#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;

                     else

                            printf("请正确输入序号\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;

    }

    else

     continue;

   }

  }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;

    }

    else

     continue;

   }

  }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();

 }

}

更多相关推荐:
毕业设计实践报告

北京工商大学毕业设计实习报告院系:机械工程学院班级:学号:0503010232姓名:王洋指导教师:徐昌贵实践时间:2月x日-3月x日成绩:20xx年x月x日作为毕业设计前期调研和实践系列活动阶段,学院老师积极策…

20xx室内设计暑期实践报告

关于室内设计的专业社会实践报告实践地点:广西泰辰装饰工程有限公司实践时间:20xx年x月x日——9月x日摘要:室内设计是为了满足人们的生活、工作的物质要求和精神要求所进行的理想的环境设计,与人的生活密切相关,我…

艺术设计专业寒暑假实践报告

暑假社会实践报告报告题目广告公司实践报告院部名称美术学院学生姓名学号指导教师二0一二年八月今年暑假我参加了社会实践活动在这一个月的实践中我学到了很多知识对于我个人而言参加暑期社会实践活动的目的有很多社会实践活动...

程序设计实践报告

程序设计实践设计报告课题名称:_简单通讯录的实现学生姓名:班级:班内序号:学号:日期:_20XX年5月8日1.课题概述1.1课题目标和主要内容基于对MFC应用程序编程原理的掌握,以及学生管理系统的基本构架,用其…

平面设计专业社会实践报告

社会实践报告经过了3年的理论学习,使我们对平面设计有了基本掌握,对于平面设计这个专业也有了一个系统的学习和掌握。作为平面设计专业的毕业生,心中想得更多的是如何去做好一个平面设计师、如何更好的去完成每一个设计任务…

艺术设计专业寒暑假实践报告

暑假社会实践报告学院:设计学院专业:艺术设计姓名:黄庆学号:20xx134011xx年级:11级班级:环境艺术设计室内一班时间单位:来宾市兴宾区信义广告公司实践时间:20xx/7/16到20xx/8/30共天4…

室内设计社会实践报告

一、实习目的1、了解室内装潢设计的流程。2、进一步在装潢公司了解和学习在学校学不到的知识。3、尝试把学校里学习的室内设计知识与理论运用到实习过程中。4、初步做好认识室内设计师是一个怎样的行业,熟悉室内设计的方法…

面向过程程序设计实践报告模板

面向过程程序设计实践东北大学软件学院一程序实践概述1题目名称学生信息管理系统2时间进度第12学时的初步构思320周四晚第34学时以数组为基本数据结构建立总体框架320周四晚第58学时在老师的建议下以链表为数据结...

网络实践课程设计报告

计算机网络实践设计报告学院计算机班级成教20xx业余教师李领治学号姓名成绩实验目的掌握Winsock20套接字编程技术的基本方法实验要求运用TCPIPWinsock20套接字编程技术使用VC编写一个面向连接通信...

交通设计实践报告

交通设计实践课程实践综合报告课程名称交通设计实践学号20xx23180076姓名专业班级交通工程1003班指导老师孙泰屹朱晓宏杜胜品冉茂平何雅琴实践时间20xx61720xx621汽车与交通工程学院二0一三年六...

MFA实践报告表

MFA专业硕士专业设计实践报告姓名专业研究方向导师姓名填表时间填写说明1MFA专业学位研究生最迟应于第四学期末完成专业实践环节2MFA研究生所在学院及指导教师应根据我校全日制专业学生培养工作规定的要求妥善安排和...

程序设计基础实践报告

中南大学程序设计基础实践报告题目职工工资信息管理系统学生姓名张兰兰学院信息科学与工程学院专业班级物联网工程1301班完成时间20xx73指导教师汪杰计算机程序设计实践目录一课程设计目的和要求二课程设计基本内容三...

设计实践报告(52篇)