程序设计实践报告

时间:2022-12-11 07:42:20 社会实践报告 我要投稿
  • 相关推荐

程序设计实践报告


本文是关于《程序设计实践报告》范文,详情请您对下文进行参考:

程序设计实践报告


本文编辑:yjbys.com


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

【程序设计实践报告】相关文章:

寒假实践报告寒假的实践报告06-08

关于实践实习报告 实践报告范文03-07

寒假实践活动实践报告11-10

答辩程序设计05-08

暑期实践报告范文关于暑假实践报告11-17

销售暑期实践报告(暑期销售实践报告)07-21

kfc实践社会实践报告07-09

个人实践报告12-09

寒假实践报告09-25

暑期实践报告11-01