当前位置:文档之家› 程序设计与软件开发--项目设计PA1基本控制功能

程序设计与软件开发--项目设计PA1基本控制功能

程序设计与软件开发--项目设计PA1基本控制功能
程序设计与软件开发--项目设计PA1基本控制功能

程序设计与软件开发--项目设计

PA1:基本控制功能

在这一部分,我们开始正式编程,并控制小车的行动。

本次实验主要任务是编写C 语言程序实现智能小车的前进、转弯、暂停等功能;测量并绘制小车速度与PWM (脉冲宽度调制)平均值之间的关系。

小车控制原理

首先我们了解如何控制小车的车轮。在本实验平台中,我们采用脉冲宽度调制信号(PWM )来完成对电机的控制。

脉冲宽度调制信号(PWM )

微控制器产生PWM 信号给电机驱动芯片L298N 来控制电机的转速。方波高电平时间跟周期的比例叫占空比,不同占空比的PWM 信号如下:

这些脉冲期间电压加到电机两端

图1 占空比为50%的方波

平均电压

图2 占空比为90%的方波

PWM信号的周期是固定的,脉冲宽度在0%~100%之间变化,加在电机两端的电压就是脉冲宽度的函数。图2是占空比为90%的方波,加在电机两端的电压几乎在所有时间都存在,所以电机的转速几乎达到全速。

任务1:实现小车基本控制

硬件

智能小车全套组件,并按照文档1检查主要控制连线。

软件

●从网站上下载任务1的代码(c_ex.rar文件)

●解压c_ex.rar文件

●运行keil软件,点击工具栏工程-〉打开工程,选择c_ex.uvprojx文件

●编译,点击工程-〉build target。Build output 信息框显示无错误,并成功

编译出hex文件。

●通过ST-Link2将程序烧写到小车中

●打开小车电源开关,检查小车能否完成下述操作

1.全速前进3秒

2.全速后退2秒

3.半速右转1秒

4.停止

●程序的功能都是在“main.c”文件中的main函数中执行的,请仔细阅读程序

及注释。

注意备份程序。

1连线参考文档《小车连线》中,请逐条确认

2STLINK的驱动需要提前安装,并保证与核心控制板连线正确,下载程序的具体步骤参见keil使用文档第10页

任务

●编辑“main”函数驱动小车全速前进4秒,暂停1秒,然后全速后退4秒

●测量起点和终点的误差(假设小车起点坐标为(0,0),行驶方向为0°)●编辑“main”函数使用“while”循环驱动小车前进3秒,暂停1秒,然后后退

3秒,10次

●测量起点和终点的误差(假设小车起点坐标为(0,0),行驶方向为0°)●小车能直线行驶吗?如果小车向前行驶很长时间,所走的路线会是什么形状

的?行驶路线是这种形状的原因是什么?程序修改什么可以使小车按直线行驶。

●让实验室的工作人员查看你的代码,演示小车的运行并回答上述问题。

任务2:测量PWM信号占空比值和小车速度之间的关系

修改程序,使小车能直线行驶。控制小车以5种不同的速度直线行驶。测量PWM信号占空比值和小车速度之间的关系,并绘出它们的函数关系图。

任务

●编写程序驱动小车全速前进4秒

●固定一支笔在小车左轮上

●运行程序

●测量小车上的笔在纸上所画线的长度

●计算小车车轮速度

●重复3次取平均值

●对小车右轮重复上述实验

为了节省时间,也可以使用两支笔固定在两个车轮上,同时画两条线

●记录实验结果

●测量其他4种不同占空比值下小车每个车轮速度

●将这些值绘制到坐标是脉冲宽度和速度的图上

图 1 PWM信号占空比和小车速度的测量示意图

1. 使用查表法,将车轮的速度与对应的脉冲宽度制成表。可以通过小车车

轮速度与脉冲宽度的关系图计算出该表。

2. 将小车车轮速度与脉冲宽度的关系在图中拟合成直线,得出线性函数关

系:Power = k ×Speed + b ,并在程序中计算实现。

完成任务后,撰写实验报告,报告中包括以下内容: 1. PWM 原理和实现;

2.写出小车运动的方程,推导出小车直线运动或其他运动的模型。在这些运动模型中进行速度测量,比较实际测量结果验证运动模型;

3. 实验中遇到的问题以及解决这些问题的方法。

0102030405060

70800%

20%

40%

60%80%

100%

120%

速度(m m /s )

脉冲宽度

小车车轮速度与脉冲宽度的关系

第4章程序设计三种基本结构

第4章程序设计三种基本结构 一、选择题: 【例1】(2002年4月)下面的程序的输出结果是( )。#include main( ) { int i=010,j=10; printf("%d,%d",++i,j--); } A. 11,10 B. 9,10 C. 010,9 D. 10,9 【答案】B (i的值是以八进制定义的) 【例2】(2002年4月)以下的程序的输出结果是( )。main( ) { int a=5,b=4,c=6,d; printf(("d\n",d=a>b?)(a>c?a:c):(b)); } A. 5 B. 4 C. 6 D. 不确定 【答案】C 【例3】(2002年4月)以下程序的输出结果是( )。

{ int a=4,b=5,c=0,d; d=!a&&!b||!c; printf("%d\n",d); } A. 1 B. 0 C. 非0的数 D. -1 【答案】A 【例4】(2002年4月)以下程序的输出结果是( )。 main( ) { char x=040; printf("%o\n",x<<1); } A. 100 B. 80 C. 64 D. 32 【答案】A 【例5】(2002年9月)已知i,j,k为int型变量,若从键盘输入:1,2,3< 回车>,使i的值为1、j的值为2,k的值为3,以下选项中正确的输入语句是(C )。 A. scanf("---",&I,&j,&k); B. scanf("%d %d %d",&I,&j,&k); C. scanf("%d,%d,%d",&I,&j,&k); D. scanf("i=%d,j=%d,k=%d",&I,&j,&k);

C语言程序设计课程设计题目

1 一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2 成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式

进行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3 迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

《贪吃蛇游戏课程设计》报告资料整理

贪吃蛇游戏程序设计 一、课程设计任务 贪吃蛇小游戏程序设计 二、设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 (1).收集资料,分析课题,分解问题,形成总体设计思路; (2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍; (3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行; (4).完成课程设计报告,并进行答辩 三、需求分析 3.1、程序功能 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。

3.2、设计思想 程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。

3.3、流程图

四、设计的具体实现 (1)函数定义 函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用 #define N 200 #define M 200 #include"graphics.h" #include #include #include #include #include #include #include #define LEFT 97//A #define RIGHT 100//D #define DOWN 115//S #define UP 119//W #define Esc 0x011b int i,key; int score=0; int gamespeed=250;//游戏速度可根据实际情况自行调整 struct Food { int x;//食物的横坐标 int y;//食物的纵坐标 int yes;//判断是否要出现食物的变量 }food;//食物的结构体 struct Snake { int x[M]; int y[M]; int node;//蛇的节数 int direction;//蛇的移动方向 int life;//蛇的生命,0表示活着,1表示死亡 }snake; void Init();//图形驱动

作文布局三种基本结构

作文构思布局的三种基本结构 一.作文的构思(结构布局)法 构思是指在动笔作文前,对文章的内容、表达方式和结构层次的总体设计。就是我们平常所说的先写什么、后写什么、哪里详写、哪里略写的问题。它是作文过程中的一种创造性的复杂的思维活动。具体地说,文章构思就是对选材过程中所选的材料作分解和组装,使之有序化、审美化的思维过程,因为每个人的大脑的思维方式不同,所以分解和组装的方式也呈现多种多样,这里介绍几种大家常用的构思法,以打开同学们构思的路子。 1、一字(词)贯穿构思法 一字(词)贯穿,是提在构思文章时,选择一个和中心思想紧密相关的关键字或词连接文章的所有材料,从而形成文章的骨架。如《背影》一文,就是采用一词贯穿构思法,文章从始至终以“背影”一词不达意贯穿全文,使读者深深体会到一颗慈父心,体会到父子之间的深情。运用此法,要注意文章要扣紧一个字或词来写,只有这样,才有条件以此为辐射点,进行多角度的思维,才有利于有层次地、深入地进行描述或抒情,使文章丰满而有韵味。如微笑,目光,声音等类的写作。 2、排比组合构思法 排比组合,是指在题目规定的范围内,根据表达主题的需要,选择几个生动的典型的人物、事件或景物的片断排比组合成文来表现一个主题的构思方法。用这种方法构思的记人、叙事、写景的文章,可以在较短的篇幅内,多角度、多侧面地表现人物、叙述事件、描写景物。 运用排比组合的构思法需要注意的是: A、所组合的片断的形式要统一:或者是人物形象的一系列片断组合,或者是事件的一系列片断组合,或者是景物的一系列片断组合等。 B、片断本身的叙述必须是具体的、生动的、形象的。 C、片断可以是横向排列,也可以是纵向排列。横向的排列要安排好主次、实虚的关系,纵向的排列要注意时间的先后顺序。 格式分类: A并列式排比B递进式排比(如《感受自然》和《我读三国》)C小标题或镜头式排比 3、纵横对比构思法 纵横对比,是指将对立的人物、事件、景物放在同一篇文章中来叙写的一种构思方法。运用这种方法构思,形成鲜明的反差,给读者留下极深的印象。或动静对比,或美丑相映,或真假相衬,或善恶对立,或冬夏对比,或天地对照等等。如通过两篇日记或书信写同一件事中的两个不同人的相同或不同的感受。 我的视线 ――记一把蓝色的雨伞 我的视线,这么久以来都不得不为一把蓝色的雨伞所牵绊…… 那蓝色,明彻如天空。 小时候的那些下雨天,妈妈总撑着一把蓝色的雨伞来学校接我,我的头顶是一片蓝色,肩膀也笼罩于一片蓝色之中,触目所及都是一片蓝色的无雨的天空。 后来的一个下雨天,矮小的我抬头和妈妈说话,却发现妈妈的那一半天空是一片阴沉的灰色,风夹杂着雨滴,落入妈妈灰色的天空,妈妈的肩膀湿了,额前的头发也湿了,而我,依旧置身于一片蓝色的无雨的天空。

游戏24点课程设计报告

游戏24点课程设计报告 一.题目: 分析类: 计算24点:任意输入4位数字,利用+,-,*,/四则运算使之得到结果 24。输出所有不同算法的计算表达式,可为运算优先级而使用括号。 二.问题分析: 1.全面性: 此问题要求输出结果为24的计算表达式,并且要求输出要全面,我考虑用for循环与递归实现遍历来保证输出的全面性,考虑到递归的‘一归到底',每一次完整递归都代表一种算法(详情见算法)。 2.输出的判定和四位数字的类型: 在输出的时候对最后结果等于24的判别,因为考虑到有除法,有可能中途结果可能会出现不能整除的情况与小数,所以输出的四个数都设为float型,且输出判定的时候用近似判定法,而不直接写让最后结果等于24(详情见算法)。 3.重复性: 如果用循环与递归保证了输出24的表达式的全面性,但不可避免的会出现重复,才开始我想在遍历与递归时,加一些限定条件来消除重复但是这样做不但会出错,还不能保证它的输出全面性。于是我想在输出的时候加限定条件,使重复的只输出一遍。 但是对于输入的那4位数字中如果有重复的话,程序结果还是会出现重复的,此问题尚未解决.(详情见算法)。 4.括号问题的处理: 对于括号问题,我规定对每一步的计算表达式,除了*之外,+,-,\都加上括号,即让程序按自己规定的方向执行,输出的括号只是让人能看懂,其实在运算时不起作用(详情见算法)。 5.输出: 输出方面我以为用了遍历所以在每一层遍历都把运算表达式存到一个较大的数组中,在输出的时候如果满足输出条件(在遍历时纪录每次递归的第一次运算的结果,第一次运算的运算符,第二次运算的结果,第二次运算的运算符和第三次运算的运算符),就直接把那个数组里的内容输出,遍历会直接去寻找表达式里的表达式(详情见算法)。 三.算法描述(源代码里有更详尽解释): 1.主要方法: 遍历与递归。 2.主要思路: 把输入的四个数放在一个数组n[4]中,然后任取其中任意两个(不能取同一个--既不能出现自己和自己运算的情况),然后用一个for和一个switch语句来实现这两个数的加减乘除运算,然后把运算的结果放到另一个数组b[4]中并记录此运算的表达式(放到一个大一点的数组tm[4][25]中),同时把其他两个没用到的数也放到该数组中,然后重复以上过程(用遍历实现),最后先判定是不是最后一层运算,是的话在判定最后结果是不是等于24,等于24的话就把那个纪录运算式的数组输出。然后考虑到不能出现重复的(例如:1*2*3*4和2*4*3*1等等)我在遍历的同时记录了第一次运算的结果,第一次运算的运算符,第二次运算的结果,第二次运算的运算符和第三次运算的运算符,对输出的时候做限定(例如:对运算符全*的只输出一遍等等)。在有一次输出后我还定义了另外两个数组用来分别保存上一次输出的第一次运算的结果,第一次运算的运算符,第二次运算的结果,第二次运算的运算符和第三次运算的运算符,来解决重复输出的问题,不过此种做法有可能导致输出的时候不全。(此问题尚未解决)即还不能同时保证全面性与不重复性。 3.主要函数与数组:

C语言程序设计课程设计题目

1一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n 是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进

行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

C++课程设计报告---21点纸牌游戏程序

#include #include #include #include #include #include class Game { public: Game() { win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=100,bet=0; player=0,cpu=0; char answer1[]="123456"; strcpy(answer,answer1); char answer2[]="654321"; strcpy(daan,answer2); }; void rules();//显示规则 void BET(); //下注 void deal();//交易 void run(Game &);//进行异常处理 void hit1();//拿下一牌 void hit2();//确保庄家不会爆庄并且点数大于16 void print();//打印出最后结果 void results();//最后的胜利结果 void check();//检查是否爆庄 Game operator=(Game &d);//运算符重载 void replay(char &ans);//是否进行新一轮的游戏 void clean();//清屏 void wait(int); void pause(); int GetInt(int,int); int random(long,long); private: int playerturns,cputurns,money; int win,lose,draw,bet; float player,cpu; char answer[7]; char daan[7]; }; //--------------------------------------------------------------------------------------- void Game::wait(int milli) {

第二章_基本控制结构程序设计习题解答

第二章基本控制结构程序设计习题 一.基本概念与基础知识自测题 2.1 程序阅读题 2.1.1 设有说明: int a=3, b=100; 下面的循环语句执行(1)次,执行后a、b的值分别为(2)、(3)。 while(b/a>5){ if(b-a>25) a++; else b/=a; } 解答: 本题检查学生整除的概念。跟踪: (1)14 (2)17 (3)100 2.1.2 设有说明: int x,y,n,k; 下面程序段的功能是备选答案中的(1),当n=10,x=10打印结果是(2)。cin>>x>>n; k=0; do{ x/=2; k++; }while(k

A. n n x y )1(+= B. n n x y 2)21(+= C. n n x y )21(+= D. n n x y 21)2 1(++= 解答: 第一个循环使x 成为:n x 2;y 成为:n x 21+;第二个循环使y 成为:n n x 2)2 1(+; (1)B 考虑整除,当x 连除4次2以后即为0,所以: n x 2为0 (2)1 2.1.3 请看如下程序段: if (num==1) cout<<”Alpha”; else if (num==2) cout<<”Bata”; else if (num==3) cout<<”Gamma”; else cout<<”Delta”; 当num 的值分别为1、2、3时,上面程序段的输出分别为(1) 、(2) 、(3) 。 解答: 检查条件语句与字符串输出概念: (1)Alpha (2)Bata (3)Gamma 2.1.4 执行下面程序段后,m 和k 的值分别为 (1) 、 (2) 。 int m,k; for(k=1,m=0;k<=50;k++){ if (m>=10) break; if (m%2==0){ m+=5; continue; } m-=3; }

程序设计题目

程序设计题一:学生信息管理系统 【课题内容】 学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方面的管理。该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各种常规操作,如:排序、查找、计算、显示等功能。通过此课题,熟练掌握文件、数组、结构体的各种操作,在程序设计中体现一定的算法思想,实现一个简单的学生信息管理系统。 【基本要求】 (1)学生信息包括: 学生基本信息文件(student.txt)(注:该文件不需要编程录入数据,可用文本编辑工具直接生成)的内容如下: 学号姓名性别宿舍号码电话号码 01 张成成男 501 87732111 02 李成华女 101 87723112 03 王成凤女 101 87723112 04 张明明男 502 87734333 05 陈东男 501 87732111 06 李果男 502 87734333 07 张园园女 102 87756122 ………………… (2)学生成绩基本信息文件(score.dat)及其内容如下:((注:该文件内容需要编程录入数据,具体做法见下面的要求) 学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 01 B03 高等数学 4 45 -1 88 02 C01 VF 3 65 76 66

…………………… (3)需要实现的功能 1)数据录入和计算功能:对score.dat进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据,综合成绩、实得学分由程序根据条件自动运算。 综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70% 。 实得学分的计算:采用等级学分制,综合成绩在90-100之间,应得学分=学分*100%;综合成绩在80-90之间,应得学分=学分*80%;综合成绩在70-80之间 ,应得学分=学分*75%;综合成绩在60-70之间,应得学分=学分*60%;综合成绩在60以下 ,应得学分=学分*0%。 2)查询功能:分为学生基本情况查询和成绩查询两种 (1)学生基本情况查询: ①、输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出,格式如下: ②、输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。(格式如上所示) (2)成绩查询: ①、输入一个学号时,查询出此生的所有课程情况,格式如下: 学号:xx 姓名:xxxxx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx 课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx ………………… … 共修:xx科,实得总学分为: xxx (3)删除功能:

程序设计基础课程设计题目

“程序设计基础”课程设计候选题目 一、编写一个菜单驱动的学生成绩管理程序。功能实现如下: 1.能输入并显示n个学生的m门考试科目的成绩、总分和平均分。 2.按总分进行排序。 3.按学号进行排序. 4.能任意输入一个学号,能显示该学生的姓名、各门课的成绩。 5.将输入的学生成绩数据保存到文件中。 6.从文件中读出学生成绩数据。 二、图书管理程序的设计。功能要求如下: 1.借书 2。还书 3。图书维护:删除图书、增加图书等。 4。读者维护:包括新增读者、更改读者信息、查找读者、读者信息删除、读者信息输出等。 三、编写一个学生成绩文件管理的程序。功能要求如下: 1.定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩 2.从键盘输入10个学生的以上内容,存入文件stud.dat,关闭文件 3.打开stud.dat文件,将数据读出,查看是否正确写入,关闭文件。 4.打开文件stud.dat文件,读出数据,将10个学生按照平均分数从高到低进行排序, 分别将结果输出到屏幕上和另一文件studsort.dat中。 5.从studsort.dat 文件中读取第2,4,6,8,10个学生的数据。 四、编写一个用指针优化学生成绩排名的程序.功能要求如下: 1.定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现2.将数组stu[10]的内容输出到屏幕上,要求用指针实现 3.将成绩数组按照从高到低进行排序,要求用指针实现 4.将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单 5.采用指针方法,输入字符串“student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)

猜数字游戏课程设计报告

XXXX学校 《C程序设计》 课程设计报告 设计题目:猜数字游戏 附录完整源代码 专业: 班级: 学生: 学号: 指导教师: 起止时间: xxx.x.x -xxx.x.x xxxx-xxxx年 xx 学期

目录 1 、程序设计描述 1.1 程序设计目的: 1.2 程序设计要求: 1.3、猜数字游戏的简介: 2 、程序设计内容: 2.1、游戏主要框架图: 2.2、开始游戏框架: 2.3、最佳排行框架: 2.4、游戏操作说明模块: 2.5、退出游戏系统: 2.6、游戏系统总流程图: 3、猜数字游戏源代码: 3.1、void main()函数函数功能: 3.2、void game();//双人游戏 void pgame();//单人游戏 3.4、排行榜模块函数功能: 3.5、继续游戏模块函数功能: 3.6、操作说明模块函数功能: 4、调试与测试: 4.1、调试方法 4.2、测试结果的分析与讨论 4.3、测试过程中遇到的主要问题及采取的解决措施 5、程序具体说明书: 6、程序设计心得: 7、参考文献

1 、程序设计描述 1.1 程序设计目的: 综合使用所学过的C语言程序设计知识,掌握结构化程序设计的基本思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。 1.2 程序设计要求: 1、巩固和加强《C语言程序设计》课程的理论知识。 2、掌握C语言的基本概念、语法、语义和数据类型的使用特点。 3、掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。 4、进一步理解和运用结构化程设计的思想和方法;学会利用流程图。 5、掌握调试程序的基本方法及上机操作方法。 6、掌握书写程设计开发文档的能力,学会撰写课程设计总结报告。课程设计的思想和方法还可以作为做毕业论文时的参考资料。 7、通过查阅手册和文献资料,培养独立分析问题和解决问题的能力。为做毕业设计打好基础。 8、培养自己的创新能力和创新思维。可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。 9、培养自己良好的程序设计风格。在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。 1.3、猜数字游戏的简介: 猜数字游戏(又称 Bulls and Cows )是一种大概于20世纪中期兴起于的益智类小游戏。一般由两个人玩,也可以由一个人和电脑玩,在纸上、在网上都可以玩。这种游戏规则简单,但可以考验人的严谨和耐心。 2 、程序设计内容: 2.1、游戏主要框架图: 该模块为玩家提供猜数字游戏的主体功能,即开始游戏、继续游戏、最佳排行、操作说明、退出游戏。给用户一个清晰明了的操作界面!流程图如下:

三种基本结构流程图

三种基本结构流程图 1.顺序结构 图1 顺序结构N-S流程图 2.选择结构 if语句的三种形式 (1)形式一:if(表达式)语句; 该形式表示的是单分支选择结构,其N-S流程图如图2所示: 图2 形式一N-S流程图 (2)形式二:if(表达式)语句1; else 语句2; 该形式表示的是双分支选择结构,其N-S流程图如图3所示: 图3 形式二N-S流程图 (3)形式三:if(表达式1)语句1; else if(表达式2)语句2; else if(表达式3)语句3; …… else if(表达式n-1)语句n-1; else 语句n; 该形式表示的是多分支选择结构,其N-S流程图如图4所示: 图4 形式二N-S流程图

◆ switch 语句 多分支选择的问题,可以使用嵌套的if 语句解决。但在某些情况下,使用switch 语句可能更为方便。switch 语句的一般形式是: switch (表达式) { case 常量表达式E1: 语句组1; break ; case 常量表达式E2: 语句组2; break ; …… case 常量表达式En : 语句组n ; break ; default :语句组n+1; } 图5 switch 语句N -S 流程图 3.循环结构 ◆ while 语句 (1)一般形式 While (表达式) 循环体语句; (2)N -S 流程图如图6所示: 图6 while 语句N -S 流程图 ◆ do-while 语句 (1)一般形式 do{ 循环体语句; }while (表达式); (2)N -S 流程图如图7所示: 图7 do-while 语句N -S 流程图 ◆ for 语句

《C语言程序设计》项目实训指导书

安徽国防科技职业学院 C 语 言 课 程 设 计 指 导 书 学期:12-13第1学期 班级:软件121班 实训日期:第18周

指导教师:付贤政

《C语言程序设计》项目设计指导书 实训班级:软件111班 实训时间:第18周 一、设计目的与任务 C语言程序设计是软件技术专业的重要专业基础课。学生通过对C语言的学习,已经具备了使用C语言编写简单的程序的能力。为了加强程序设计基础,开设课程设计,使学生对C语言有更全面的理解,进一步提高运用语言编程解决实际问题的能力,同时,为后续课程的学习夯实基础。 本课程设计要求每组同学在一周时间内,独立分析、设计并完成,并上交课程设计报告。可选择如下任务之一: 任务一:题目:学生成绩管理系统 功能: 1.菜单提示:在系统初始化时能在屏幕上出现提示,根据提示选择相应的操作; 2.基本功能:能正常启动程序、退出程序,能在屏幕上正常显示提示和相关信息; 3.功能一:系统数据初始化。能按照要求输入每位学生的学号、姓名,性别、年龄以及政 治、语文、数学、计算机、体育五门课程的成绩; 4.功能二:按指定形式在屏幕上打印输出学生基本信息,可按照学号、成绩顺序在屏幕上 打印输出; 5.功能三:根据姓名、学号查询。按照屏幕提示输入你要查询学生的姓名(或者学号),从 原始的数据中找到该学生的信息,并在屏幕上打印输出; 6.功能四:统计学生平均成绩,并在屏幕上打印输出; 7.功能五:将现有学生数据写入磁盘文件,然后从文件中读取出来; 8.数据的删除(选做):根据输入的学号删除指定的数据记录。(可选) 9.数据的修改(选做):根据输入要修改的学生学号,返回该学生的信息后,再逐个修改每 个学生的基本信息,最后保存修改;(可选) 分步实施: 1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况功能。 3、进一步要求:完成计费和费用查询功能。 任务二:题目:酒店房间登记与计费管理系统 功能:

21点游戏课程设计

/*玩家最多可以要5张牌,但是如果牌的点数之和超过21,则自动出局,在不超过21点的情况下,玩与庄家比牌的点数大小,大者为赢家。*/ #include #include #include using name space std; class C Card { priv ate: int na Pip[5]; //定义一个数组,一共是5张牌。 int nNu mbe r; //发了多少张牌。 int nDol lar; //有多少钱 int nGa mble; //赌注 int nW in; //赢局数 int n Lose; //输局数 int nDraw; //输局数 public: C Card(); //构造函数 v oid FirstPla yTwo();//最初两张牌 int Ge tNumbe r();//返回牌张数

int Ge tPip(); //返回点数 v oid Displa yPip();//一次全部显示牌面点数。 v oid Displa yPip(int ); //除了第一张牌,一次全部显示牌面点数(针对计算机牌的显示) v oid TurnPla y();//出了一张牌 v oid Win();//赢了计算赌注 v oid Lose();//输了 v oid Draw();//平局 int se tGamb le(int );//设置赌注,赌本不够返回1 int ge tM one y();//返回钱数 v oid Displa yInfo();//打印必要的信息 int Ge tCurre ntCard();//返回当前牌点。 }; CCard::C Card() { nNu mbe r=0;//开始没有发牌 nDollar=100;//初始赌本为0 for(int i=0;i<5;i++) na Pip[i]=0; //五张牌全部为0 nGa mble=0;

三种基本语言结构

利用机器人平台认识三种基本语言结构 一、设计思路 信息技术基础模块中的“尝试程序开发”一节涉及到了程序设计的三种结构,程序设计的三种结构是程序设计中的基本知识点。程序的讲解是比较抽象的,学生听着也比较枯燥乏味。本节课的设计利用智能机器人仿真软件进行讲解,利用该软件既有图形化编程界面,又有相对应的代码窗口的特性,让学生在生动形象利于接受的学习活动中了解三种程序结构,能够使用图形化编程环境实现顺序、分支、循环三种控制结构。 仿真软件如图:左侧为模块库;中间为流程图编辑区;右侧为代码显示区。 二、教材分析 “尝试程序开发”一节是信息技术基础中的第四单元中的一节,这一节的内容是让学生能够认识程序设计的三中结构,了解三种程序结构执行的过程,读懂简单的程序,为后续开设算法与程序设计选修课程做知识铺垫。 三、学生情况分析 本节课之前,学生掌握了仿真软件的使用,对程序设计有了一定的了解,学会了使用仿真软件设计机器人走直线,转弯,停止,发音的设计,并同时可视化的界面看到了自己设计的成果。但是,程序设计中的抽象化和理论化会减淡学生对程序设计的热情,这就需要教师充分营造教学情境,合理安排任务,保持学生的学习热情和兴趣。 四、教学目标 知识与技能:能够清晰的绘制出顺序结构、循环结构、分支结构的流程图,能够读懂程序执行的流程,能够比较三种基本结构的异同; 过程和方法:通过演示法、讲授法、任务驱动和小组合作等方法,学生能掌握流程

图的设计思路,能绘制流程图; 情感态度与价值观:培养合作交流的意识,提高分析、解决问题的能力;促进学生对程序语言的学习兴趣。 五、教学重、难点 教学重、难点:掌握流程图的设计思路;理解三种程序结构的执行过程。 六、教学资源: 机器人仿真软件、视频材料、PPT、相关学习材料。 教学用时:90分钟

程序设计语言 课程设计题目(补充)

课程设计题目 题目七:销售管理系统 问题描述:设计一个日用商品销售管理系统,以小型超市商品销售为管理对象来设计系统。实现功能:根据销售信息(包含如下内容:商品编号、销售数量、销售单价、销售日期、销售人员;保存为磁盘文件),实现对商品日常信息的管理。 1、日用商品销售信息输入 运用人机对话方式实现商品的商品编号、销售数量、销售单价、销售日期、销售人员的信息录入,以文件的形式保存其信息 2、商品销售信息查询: a) 根据商品编号查询所售商品明细(数量,单价,金额) b) 根据销售日期查询当天所售商品明细(数量,单价,金额) c) 根据销售人员查询某营业员所售商品明细(数量,单价,金额) 3、商品销售信息统计 a) 日销售额统计(按商品编号,销售人员,全部商品)及总销售额统计 b) 月销售额(按商品编号,销售人员,全部商品)及总销售额统计 c) 月度销售排名(按商品编号,销售人员) 知识点:结构体类型变量的应用,文件操作,数据的查询,函数的应用 说明:以十组商品三个营业员构成二十组商品数据 题目八:职工工作量统计系统 问题描述:设计一个以班组职工日常工作量统计为对象的管理系统。 实现功能:根据组内职工日常工作信息(包含如下内容:职工编号,职工姓名,工作内容,完成数量,完成质量,完成日期;保存为磁盘文件),实现对职工日常工作量信息的管理。 1、职工日常工作量信息输入 运用对话方式分别输入职工编号,职工姓名,完成数量,完成质量(优、良、中),完成日期,对就多个完成质量的信息录入,以文件的形式保存其信息 2、职工日常工作量信息统计与输出 a) 以完成工作数量及完成质量进行工作量当日统计排序。名次相同,以完成数量多者优先,再次相同,以职工编号小者优先。 b) 以一个星期为一时间段按上述规则进行排序。 知识点:结构体类型变量的应用,文件操作,数据的查询与排序。 说明:以十人构成一个班组,每天大家都做同一工作来构成数据 题目九:通讯录管理系统 建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。 功能要求 (1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。 (2) 输入功能:可以一次完成若干条信息的输入。 (3) 显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分

C#课程设计游戏21点

目录 一、课程设计的目的与要求 (2) 1.1 目的: (2) 1.2 要求: (2) 二、题目说明 (2) 2.1程序开发背景 (2) 2.2开发工具介绍 (2) 三、总体设计 (3) 四、详细说明 (3) 4.1 系统实施 (3) 五、遇到的问题和解决方法 (9) 六、课程设计总结 (9) 七、参考文献 (10)

一、课程设计的目的与要求 1.1 目的: (1)能够利用所学的基本知识和技能,解释和应用程序开发所涉及的相关知识。 (2)基本掌握面向对象程序开发的基本思路和方法; (3)要求学生达到熟练掌握.NET基本结构以及C#语言的基本知识和技能; (4)通过学习积累掌握简单的记事本,通讯录以及多媒体播放的开发技术。 1.2 要求: (1)掌握常用控件以及控件的常用属性的使用方法。 (2)掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。(3)熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS应用程序。 (4)程序中应有不少于100~300行的自行编写的代码,代码需书写详细注释。 (5)程序中应有不少于100~300行的自行编写的代码,代码需书写详细注释。 二、题目说明 2.1程序开发背景 黑杰克又名BlackJack(简称21点),起源于法国,现已流传到世界各地。该游戏由2 到 6 个人玩,使用除大小王之外的52 张牌,游戏者的目标是使手中的牌的点数之和不超过21 点且尽量大。有着悠久的历史。黑杰克简称为21点,1700年左右法国赌场就有这种21点的纸牌游戏。1931年,当美国内华达州宣布赌博为合法活动时,21点游戏第一次公开出现在内华达州的赌场俱乐部,15年内,它取代掷骰子游戏,而一举成为非常流行的赌场庄家参与的赌博游戏。 21点本为赌博游戏,并不值得推荐,但其游戏性和娱乐性却很强,而且作为一款数字牌类游 能一定程度上锻炼逻辑思维和运算能力,本着这种想法,开发者想把这款传统的赌博游戏制作成适合各类人群休闲娱乐的小游戏,同时通过实践更加掌握c#平台的开发过程 2.2开发工具介绍 本程序是在Microsoft Visual studio C# 2005 Express的开发环境下完成的。

议论文的三种基本结构

议论文的三种基本结构 导读:议论文基本结构 1.并列式: (1)并列分论点: (中心论点——分论点一——分论点二 ——分论点三——结论,照应全文) (2)并列论据:(引论——本论——结论) 2.对照式: 正反论述:(提出中心论点——正面阐述——反面阐述——结论) 3.层进式(递进式) 议论文(一)——层进式结构 层进式的文章一般有三种格式: (一)将中心论点进行分解,分成几个分论点,这些分论点之间的关系是由浅入深、由简单到复杂。层间可用诸如“不仅……而且……”“……况且”等关联词语过渡,同时又以此反映层次间递进的关系。 例:严于解剖自己 1、要不断进步,必须无情地“解剖我自己”。 2、论述如何才能“解剖”好自己。 ①对自己要有自知之明。(这是“解剖”好自己的前提。不了解“病”在哪里,就无从下刀。) ②光有自知之明还不够,还要勇于自我批评。(这是解剖好自己

的途径。不开刀,就无从去“病”。) ③自我批评的勇气来源于对真理的追求和崇高的信念。(这是解 剖好自己的关键。不掌握开刀的规律,刀就开不好,也就难以真正去“病”。) (二)按照“提出问题,分析问题,解决问题”的思路安排论证结构,即围绕中心心论点回答三个问题:①是什么,②为什么,③怎么办。 例:实现心中的理想 每个人心中都有属于自己的天使。何谓“天使”呢?天使就是心 中向往的东西,渴望实现的美好的东西,正如你的理想。要实现心中的理想,必须用心地雕琢心中的天使,用你手上的雕刻刀,把天使雕刻出来,展现出来。“天使”展现了微笑,理想之花绽放着光彩。(是什么) 理想是你在黑暗中指路的明灯,理想是你在迷失方向时的指南针,理想还是你焦急干渴时沁人心脾的清泉,理想是我们人生重要的部分,而人生不断前进的动力是为了实现理想,为了雕琢心中的天使,使天使成型,使理想成型。(为什么) 那要怎样才能实现心中的理想,雕琢心中的天使呢? 实现理想需要坚强的毅力和强大的意志。刘翔,一个代表速度的名字,已经载入田径史册。他从参加110栏比赛开始,就有着与世界短跑名将同台比赛的理想,同时他为实现理想而努力。跨越一道道栏,

Java课程设计点小游戏

2016—2017学年第二学期 《面向对象程序设计》课程设计报告 题目:21点小游戏 专业: 班级: 姓名: 指导教师: 成绩: 计算机学院 2017年5月16日

1.设计目的 面向对象程序设计是一门实践性很强的专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。通过这次设计,掌握了以下内容:面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用类、包、接口的定义与使用。常用工具类与算法的实现(数组、向量、字符串、链表),java.awt、javax.swing 中常用标准GUI组件及相应的事件处理,Java的异常处理机制,Java的数据库连接技术,Java的多线程技术与动画制作以及Java的网络编程。 游戏规则是:各个参与者设法使自己的牌达到总分21而不超过这个数值。2.设计思路 本游戏选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 在要牌的过程中,如果所有的牌加起来超过21点,玩家就输了——叫爆掉(Bust),游戏也就结束了。假如玩家没爆掉,而庄家的总点数加起来大于21点后,那庄家就输了。假如庄家没爆掉,而玩家也没有爆掉,那么玩家就与庄家比点数大小,大为赢。一样的点数则庄家赢。

图 1 结构 3.设计结果与分析 当打开该小游戏时,打开游戏菜单里面的开始游戏,软件运行界面如下图所示 图2 主界面 图3 玩家点数大于21点 图4 玩家点数大于庄家点数 图5 庄家点数大于玩家点数 图6 继续要牌 图7 玩家点数等于庄家点数

相关主题
文本预览
相关文档 最新文档