暨软件设计评审报告。
学号: 20071000684
姓名: 魏建辉。
班序号: 12307205
学院: 数学与物理学院。
专业:信息与计算科学。
指导老师: 李向老师。
实习时间: 08.8.22~28
目录。一、实习题目编号:
二、需求分析。
三、总体设计。
系统总体设计思路:
功能模块的分化:
四、详细设计。
运行结果:算法总结:
系统优缺点评估:
系统改进设想:
五、上机操作:
六、附录即源**:
七、心得与总结。
一、 实习题目。
编号05.一担挑游戏
要求]简单计算机模拟棋盘对弈。其中棋盘左上角坐标为(1,1),右下角坐标为(3,3)。游戏规则如下:
1) 计算机移动时,使用相应函数扫描棋盘矩阵,寻找未占单元:发现空单元后,置为“o”,未发现时,报告平局后退出。
2) 轮到对弈者时,使用相应函数要求对弈者回答想把“x”放到**。
3) 谁先三点连成一线了,则报告谁胜出。
4) 计算机与对弈者每下一步棋都会使相应位置变为“o”和“x”,便于在屏上显示矩阵。
[提示]棋盘位置用2维数组代表,初始状态每一位置均为“ ”空)。其分隔线(及棋盘线)可用—和|来分格。
二、 需求分析。
根据题目要求,由于程序要求计算机模拟简单棋盘对弈,所以系统涉及到了二维数组的引用;同时,在对弈期间,计算机移动时,系统要不停的扫描棋盘矩阵来寻找未占单元,所以程序提供了显示、浏览、查找、排序等操作:另外系统还能提供键盘式选择菜单来实现功能的选择。
三、总体设计
根据题意来看,此程序可分为棋盘输入、检查空挡和退出三大模块。
四、 详细设计。
1. 主函数程序设计; 此主函数设计的较为简洁,仅提供了数据输入、功能处理等函数的调用。
2. 以下是主函数程序。
流程图】主程序】
main主函数***
while(done对弈结果显示*/
if(done=='x')
printf("恭喜恭喜 you win!");
else printf("you lost! 下次加油");
disp退出***
getchar();
return 0; }
3. 各功能模块设计。
1) 棋盘输入模块。
【数据结构】
我们在此程序中使用的数据是二维数组来建造棋盘,并使用相应函数来移动棋子。
分析】用二维数组构造了棋盘,用间隔线分割棋盘后,就可以按自己意愿和计算机对弈了,此后每走一步,计算机都会调用相应函数扫描棋盘。而题目就是要求这样的棋盘。
【程序】棋盘输入模块。
char qi pan[3][3];
void init_qipan(void) ;九格棋盘*/
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
qipan[i][j]='
2) 对弈模块。
【问题分析】
该模块的功能是提供给用户模拟棋。
盘使用户按自己的思想来下棋,这期间涉及了两种情况1.用户输入错误,2.棋子位子错误。
程序】用户方面对弈。
void player_move(void)
int x,y;
printf("it's your turn,please:")
scanf("%d%*c%d",&x,&y);
x--;y--;
if(qipan[x][y]!=
printf("error, try again.");
player_move();
else qipan[x][y]='x';
计算机方面对弈。
void computer_move(void)
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(qipan[i][j]==
break;
if(qipan[i][j]==
break;
if(i*j==9)
printf("pingju");
exit(0);
else qipan[i][j]='0';
3) 显示模块。
需求分析】该模块的作用是显示对弈结果。即要求计算机调用相关的函数多次扫描棋盘,谁的棋优先连成一线了,计算机就判定谁胜出:这期间有三种情况;1.
用户是胜者,2.计算机胜出,3.二者打成平局。
程序】void disp(void)
int t;
for(t=0;t<3;t++)
printf("%c|%c|%c",qipan[t][0],qipan[t][1],qipan[t][2]);
if(t!=2)
printf("-|-n");
printf("");
char check(void)
int i;
for(i=0;i<3;i++)
if(qipan[i][0]==qipan[i][1]&&qipan[i][0]==qipan[i][2])
return qipan[i][0];
for(i=0;i<3;i++)
if(qipan[0][i]==qipan[1][i]&&qipan[0][i]==qipan[2][i])
return qipan[0][i];
for(i=0;i<3;i++)
if(qipan[0][0]==qipan[1][1]&&qipan[0][0]==qipan[2][2])
return qipan[0][0];
for(i=0;i<3;i++)
if(qipan[0][2]==qipan[1][1]&&qipan[1][1]==qipan[2][0])
return qipan[0][2];
return '
五、 上机操作。
1. 数据源。
2. 编译、连接和运行。
3. 结果。
下面是这个程序的运行界面图:
界面一即主函数显示:
界面二及移动一个棋子后:
界面三即移动两个棋子后:
界面四即移动了三个棋子后:
六、 附录即源**:
#include ""
#include ""
void init_qipan();
void player_move();
void computer_move();
void disp();
char check();
int main(void)
char done;
done='
init_qipan();
dodisp();
player_move();
done=check();
if(done!='
break;
computer_move();
done=check();
while(done=='
if(done=='x')
printf("恭喜恭喜 you win!");
elseprintf("you lost! 下次加油");
disp();
getchar();
return 0;
char qipan[3][3];
void init_qipan(void)
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
qipan[i][j]='
void player_move(void)
int x,y;
printf("it's your turn,please:")
scanf("%d%*c%d",&x,&y);
x--;y--;
if(qipan[x][y]!=
printf("error, try again.");
player_move();
else qipan[x][y]='x';
void computer_move(void)
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(qipan[i][j]==
break;
if(qipan[i][j]==
break;
if(i*j==9)
printf("pingju");
exit(0);
elseqipan[i][j]='0';
void disp(void)
int t;
for(t=0;t<3;t++)
printf("%c|%c|%c ",qipan[t][0],qipan[t][1],qipan[t][2]);
if(t!=2)
printf("-|-n");
printf("");
char check(void)
int i;
for(i=0;i<3;i++)
if(qipan[i][0]==qipan[i][1]&&qipan[i][0]==qipan[i][2])
return qipan[i][0];
for(i=0;i<3;i++)
if(qipan[0][i]==qipan[1][i]&&qipan[0][i]==qipan[2][i])
return qipan[0][i];
for(i=0;i<3;i++)
if(qipan[0][0]==qipan[1][1]&&qipan[0][0]==qipan[2][2])
return qipan[0][0];
for(i=0;i<3;i++)
if(qipan[0][2]==qipan[1][1]&&qipan[1][1]==qipan[2][0])
return qipan[0][2];
XX年暑期计算机实习报告
实习报告要求内容详实 层次清楚 侧重实际动手能力和技能的培养 锻炼和提高,这是对今后工作的经验积累,利于今后工作更顺利。为大家整理了暑假实习报告计算机,希望你能喜欢!参考借鉴。暑假实习报告计实习报告要求内容详实 层次清楚 侧重实际动手能力和技能的培养 锻炼和提高,这是对今后工作的经验积累,利于今后工...
选修计算机C语言作业答案
计算机等级考试 c语言程序设计。一 选择题 40分 下列各题a b c d 四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。c 1 程序流程图中指有箭头的线段表示的是 a 图元关系 b 数据流 c 控制流 d 调用关系 a 2 结构化程序设计的基本原则不包括 ...
2023年上计算机c试卷C语言
二级 c语言程序设计 一 单项选择题 每题1分,共40分 1 计算机可以与象棋大师进行下棋比赛,这属于计算机在 a 方面的应用。a 人工智能b 科学计算c 数据处理d 计算机辅助设计。2 计算机运算器的主要功能是 d a 实现算术运算b 实现逻辑运算。c 分析指令并进行译码d 实现算术运算和逻辑运算...