算法分析与设计-课程设计报告

算法分析与设计-课程设计报告
算法分析与设计-课程设计报告

XXXX大学

算法设计与分析课程设计报告

院(系):

年级:

姓名:

专业:计算机科学与技术

研究方向:互联网与网络技术

指导教师:

X X X X 大学

目录

题目1 电梯调度 (1)

1.1 题目描述 (1)

1.2 算法文字描述 (1)

1.3 算法程序流程 (4)

1.4 算法的程序实现代码 (8)

题目2 切割木材 (10)

2.1题目描述 (10)

2.2算法文字描述 (10)

2.3算法程序流程 (11)

2.4算法的程序实现代码 (15)

题目3 设计题 (17)

3.1题目描述 (17)

3.2 输入要求 (17)

3.3输出要求 (17)

3.4样例输入 (17)

3.5样例输出 (17)

3.6测试样例输入 (17)

3.7测试样例输出 (18)

3.8算法实现的文字描述 (18)

3.9算法程序流程 (19)

3.10算法的程序实现代码 (20)

算法分析与设计课程总结 (23)

参考文献 (24)

题目1 电梯调度

1.1 题目描述

一栋高达31层的写字楼只有一部电梯,其中电梯每走一层需花费4秒,并且在每一层楼停靠的时间为10秒,乘客上下一楼需要20秒,在此求解最后一位乘客到达目的楼层的最短时间以及具体的停靠计划。例如:此刻电梯停靠需求为4 5 10(有三位乘客,他们分别想去4楼、5楼和10楼),如果在每一层楼都停靠则三位乘客到达办公室所需要的时间为3*4=12秒、4*4+10=26秒、4*9+2*10=56秒,则最后一位乘客到达办公室的时间为56秒,相应的停靠计划为4 5 10均停靠。对于此测试用例电梯停靠计划方案:4 10,这样到第4楼的乘客所需时间为3*4=12秒,到第5楼的乘客所需时间为3*4+20=32秒,到第10楼的乘客所需时间为9*4+10=46秒,即最后到达目的楼层的顾客所需时间为46秒。

输入要求:

输入的第1行为整数n f1 f2 … fn,其中n表示有n层楼需要停靠,n=0表示没有更多的测试用例,程序终止运行。f1 f2 … fn表示需要停靠的楼层(n<=30,2<=f1

输出要求:

对于每一个测试用例,第1行输出最后一位乘客到达目的楼层所需时间,第2行输出停靠次数和相应的停靠方案,每一个数字用一个空格隔开。

1.2 算法文字描述

程序实现的算法思想,将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到远问题的解。与分治法不同的是,适合用动态规划发求解的子问题往往不是相互独立。若用分治法求解这类问题,则分解的子问题数目太多,以至于最后解决原问题需要耗费指数时间。然而,不同子问题的数目常常是多项式量级。在分治法求解时,有些子问题被重复计算了许多次。如果能够保存已解决的子问题的答案,而在需要时在找出以求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。为了达到这个目的,可以采用一个表来记录所有已解决的子问题的答案。不管子问题以后是否被使用,只要他被计算过,就将其结果填入表中。动态规划算法适合求解最优化问题,设计动态规划算法的具体步骤如下:○1找出最优解的性质,并刻画其结构;○2递归地定义最优值;

○3以自底向上的方式计算最优值;○4根据计算最优值时得到的信息,构造最优解。

例如:给定金额n以及1,2,5分硬币,求找n的最少硬币数。

对于大于1分的找零理所当然可以找零1分,大于2分和5分的找零与此类似,那么找零时就有三种选择,即找零后剩余金额为n-1,n-2,n-5,这三种选择总的找零数最少的方案即为所求解的方案。显然,最终的找零方案与执行当前选择后剩余的金额的找零相关,即金额n的最优找零方案包含了金额n-1,n-2,n-5的最优找零方案,于是可得如下状态转移方程:

F(n)=min{F(n?1)+1 F(n?2)+1 F(n?5)+1

具体的求解过程:

初始化F(1)=1,F(2),F(5)=1

算法设计思路及求解过程

思路:题目所描述的整个过程是“并行的”,而且所有人到达各自楼层的用时只与最晚到达的人有关。由于去各个楼层的具体数目对结果没有影响,所以可以将“电梯还剩i个人”表述成“电梯里面的乘客还要去i个楼层”。电梯从第1层开始向上运行,任意时刻的状态都可以由“电梯当前所处楼层”和“电梯里面都有哪些乘客确定”,初始状态为“电梯在1楼”和“所有乘客都在电梯上”。

在电梯运行的每一个阶段都需要作出相应的决策,哪些乘客乘坐电梯到目的层,哪些乘客选择爬楼梯到达目的地。决策后,电梯里面的乘客被分成两部分:乘客留在电梯里面继续上升;乘客离开电梯走楼梯到达。求当前状态下电梯里面的乘客所有人到达目的所需要的最短时间,只需要找到一个最优决策,使得下电梯的乘客和留在电梯中的乘客最晚到达时间越短越好,这个最短时间就是当前状态下的最优解。如果假设决策后留在电梯里面的乘客到达各自楼层所需要的时间

为T1,离开电梯的各自到达目的地所需时间为T2,则min{max(T1,T2)}就是当前状态的最优解,其中T1可以由“当前层数+1”和“决策后剩下的人”确定的状态得到;T2则为下电梯走楼梯到达目的走楼梯最多的那一位乘客所花时间。

如果去第k 层的乘客选择在当前楼层下电梯,那么第1,2…k -1层的乘客也应该选择在此时下电梯(如图 1所示),这样就可以得到当前决策下的一个最优解。

为了进一步处理停靠请求,对楼层按从高到低进行排序,并以此进行编号,如此可以避免在求解过层中处理不连续的请求,如:4,5,10。使用i,j 两个参数表示电梯当前的状态,即电梯在第i 层,电梯中有j 位乘客。

综上所述,可得如下状态转移方程:

{f (i,j )=min {max (t1,t2)}

t1=f (i +1,k )+tEle +tStop 0≤k ≤j t2=max {|f [l ]?i |?tPeo } k +1≤l ≤j

f(i,j)表示电梯在第i 层楼时,电梯中j 个人都到达目的地所需要的最短时间。

具体求解过程:

第一步:计算初始状态f (topFloor,1),f(topFloor,2),…,f(topFloor,n); 第二步:根据状态转移方程计算f(i,j);

第三步:根据计算最优值时记录的信息求解最优解。

图 1 解题结论

1.3 算法程序流程

图 2 Input函数流程图

图 4 main函数流程图

图 3 solve函数流程图

图 5 calculate函数流程图

图7 tLeave函数流程图

图 6 tStay函数流程图

1.4 算法的程序实现代码

# include

# include

# include

#include

# include

#include

using namespace std;

const int maxN=30,maxF=31;

// 电梯上一层楼所需时间,电梯每次停靠时长,人走一层楼所需时间

const int ve=4,st=10,vw=20;

int n,f[maxN+1];

//数据读取

bool input(){

cin>>n;

if(n==0) return false;

// 注意:f[1...n]中楼层数从高到低排列

for(int i=n;i>=1;i--)

cin>>f[i];

return true;

}

int dp[maxF+1][maxN+1],nextJ[maxF+1][maxN+1];

// 目前电梯在第currF层, 第L层到第R层乘客离开电梯

// 函数返回这些离开电梯的乘客中最晚到达目的层所需时间

int tLeave(int currF,int l,int r){

if(l>r) return 0;

// 仅需考虑两端, 无论此刻电梯在何处, 第l-r层花时间最多的

// 一定是离电梯当前所在楼层最远的乘客

return max(abs(currF-f[l]),abs(currF-f[r]))*vw;

}

// 现在电梯在第i层, 电梯里面本来有j位乘客, 离开电梯的乘客剩下jj位int tStay(int i,int j,int jj){

// 没有乘客离开,电梯不停

if(j==jj || i==1)

return dp[i+1][jj] +ve;

// 所有人都离开电梯

else if(jj==0)

return 0;

// 一般情况,电梯在第i层停靠

else

return dp[i+1][jj]+ve+st;

}

//

void calculate(){

// 边界:电梯在顶楼时所有人都必须下电梯

int topFloor=f[1];

for(int j=1;j<=n;j++){

// 1,j表示停靠请求的编号,编号越小表示编号停靠楼层越高

dp[topFloor][j]=tLeave(topFloor,1,j);

}

for(int i=topFloor-1;i>=1;i--){

// i表示电梯此刻所在位置

for(int j=1;j<=n;j++){

dp[i][j]=numeric_limits::max();

for(int jj=0;jj<=j;jj++){

// 计算离开电梯的人和留在电梯里面的人中到达目的地最晚的

int tmp=max(tStay(i,j,jj),tLeave(i,jj+1,j));

// 在此求解花费时间最短的乘客

if(dp[i][j]>tmp) {

dp[i][j]=tmp;

// jj以前的乘客均离开电梯

nextJ[i][j]=jj;

}

}

}

}

cout<

}

// 重构最优解

void rebuildSolution(){

vector stops;

int j=nextJ[1][n],topFloor=f[1];

for(int i=2;i<=topFloor;i++){

if(nextJ[i][j]!=j){

stops.push_back(i);

j=nextJ[i][j];

if(j==0) break;

}

}

cout<

for(int i=0;i

cout<<" "<

}

cout<

}

void solve(){

memset(dp,0,sizeof(dp));

memset(nextJ,0,sizeof(nextJ));

calculate();

rebuildSolution();

}

题目2 切割木材

2.1题目描述

一个木匠从木材公司买了一批木材,每块木材的长度均相同,但由于制作家具时所需的木块长度各不相同,因此需要把这些木材切割成长度不同的木块。同时每次切割时由于锯子本身有一定的宽度,因此每切割一次就会浪费掉一些木料。请设计一个程序使木匠能够用最少的木材切割出所需的木块。

输入描述:

输入有若干个测试样例,每个测试样例占一行。每行由若干个整数构成,第一个整数为所购买的木块的长度L(0

输出描述:

每个测试样例输出一行,为一个整数N,表示制作家具时需要购买的木块的数量。

样例输入:

1000 100 250 250 500 650 1000

1000 50 200 250 250 500 650 970

样例输出:

3

4

2.2算法文字描述

此题目是装载问题的一个变种,与装载问题不同的是此问题没有给出“船”数量,但是给出了船的载重量,因此仍旧可以借鉴解装载问题的思路,即让每一根原材料可以切出更多符合要求的木料,类似于装载问题中“将第一艘轮船尽可能地装满”,即保证切割以后剩余的原材料是最少的。算法具体描述如下:Step 1:声明求解结果变量res=0,剩余未切割木料数量count=n,当前已切割木料长度和cw=0,目前最大切割长度bestW=0,求解标记数组visited[n],当前最优求解数组nVisited[n],问题求解状态记录数组res_arr[n],锯口宽度sw;

Step 2:当剩余未切割木料数量count大于0时,利用回溯法进行最大子集和求解。当i

访问左子树时第i层相应节点时将相应访问标记visited[i]置为true,递归搜索该节点的左子树;递归搜索右子树时,将当前节点访问标记visited[i]置为false;

Step 3:当i>n-1时,获得一种切割方案,若此次求解结果优于已得求解结果,即bestW

Step 4:利用回溯法完成1次木料切割后,更当前问题求解状态res_arr数组,根据最新的求解状态更新未切割木料数量count,同时res++,若count=0则求解结束,否则重复2,3,4直至count=0。

2.3算法程序流程

图8 main函数流程图

图9 input函数流程图

图 10 solve函数流程图

图 11 backtrack函数流程图

2.4算法的程序实现代码

# include

# include

# include

# define MAX_SAMPLE_LENGTH 50

/*回溯法求解*/

int* in=(int *)malloc(MAX_SAMPLE_LENGTH*sizeof(int));

int* data=(int *)malloc(MAX_SAMPLE_LENGTH*sizeof(int));

bool* visited=(bool *)malloc(MAX_SAMPLE_LENGTH*sizeof(bool)); bool* nVisited=(bool *)malloc(MAX_SAMPLE_LENGTH*sizeof(bool)); bool* res_arr=(bool *)malloc(MAX_SAMPLE_LENGTH*sizeof(bool)); int w; // 原材料长度

int n; // 数据元素个数

int sw; // 锯口宽度

int cw; // 当前已锯木头长度和

int res; // 求解结果

int bestW; // 当前求解最大值

bool input(){

bool flag=true;

//初始化数据保存数组

memset(in,0,MAX_SAMPLE_LENGTH*sizeof(int));

memset(visited,false,MAX_SAMPLE_LENGTH*sizeof(bool));

memset(res_arr,false,MAX_SAMPLE_LENGTH*sizeof(bool));

memset(nVisited,false,MAX_SAMPLE_LENGTH*sizeof(bool));

// 记录输入数据个数

n=0;

// 读取数据-原材料(木头)长度

scanf("%d",&w);

if(0==w) flag=false;

// 锯口宽度

scanf("%d",&sw);

while(flag){

scanf("%d",data+n);

n++;

char ch=getchar();

if(ch=='\n') break;

}

return flag;

}

void backtrack(int i,int k){

if(i>n-1){

if(bestW

// 记录最优值

bestW=cw;

// 记录当前最优解

for(int i=0;i

nVisited[i]=visited[i];

}

}

return ;

}

// 进入右子树条件

if(!res_arr[i]&&cw+data[i]+k*sw<=w){

// 记录当前已锯木头数量

k++;

// 进入右子树实际操作

cw+=data[i];

// 访问标记

visited[i]=true;

backtrack(i+1,k);

cw-=data[i];

k--;

}

visited[i]=false;

backtrack(i+1,k);

}

int solve(int* data,int n){

res=0; // 求解结果初始化

int count=n;

while(count>0){

// 初始化,cw当前已锯木头长度和,

// count剩余未锯木头数量,bestW本次求解最大长度和cw=0,count=0,bestW=0;

backtrack(0,0);

for(int i=0;i

// 更新待解决问题状态

if(!res_arr[i])

res_arr[i]=nVisited[i];

// 剩余未求解元素个数

if(!res_arr[i]) count++;

}

// 记录求解结果

res++;

}

return res;

}

int main(){

while(input()){

solve(data,n);

printf("\n%d\n",res);

}

}

题目3 设计题

3.1题目描述

给定一个数塔,如图 12所示。在此数塔中,从顶部出发,在每一节点可以选择向左走还是向右走,一直走到底层。请找出一条路径,使路径上的数值和最大。

图 12 数塔

3.2 输入要求

第一行输入一个整数n,n表示数塔的层数,第2,…,n+1行为数塔对应节点的数值。

3.3输出要求

第一行输出路径数值和,第二行输出具体路径。

3.4样例输入

5

13

11 12

40 7 16

6 14 15 8

12 7 13 24 11

3.5样例输出

91

(1,1)->(2,1)->(3,1)->(4,2)->(5,3)

3.6测试样例输入

7

11

9 8

12 10 7

4 1

5 23 19

17 8 21 12 16

32 25 24 28 31 27

8 5 9 10 11 13 15

3.7测试样例输出

113

(1,1)->(2,1)->(3,2)->(4,3)->(5,3)->(6,4)->(7,5)

3.8算法实现的文字描述

动态规划采用自底向上逐层分阶段决策

1)第1次决策,针对第4层

如果最优路径经过6,则从第4层到第5层应该经过12,则第4+第5层的最大路径为6+12=18

如果最优路径经过14,则从第4层到第5层应该经过13,则第4+第5层的最大路径为13+14=27

……

这样实际上将5阶数塔变为4阶数塔问题了。

2)逐层向上递推,最后得到问题的最优解

根据题意,待处理的数据规模同数塔的层数有关,同时数据节点的个数与层数相同,所以可以使用二维数组data存储待处理节点数值,只有一半的节点有数值,实际上是一个下三角矩阵。可以较为容易地得到问题状态转移方程:

{d(i,j)=data(i,j) i=n

d(i,j)=max(d(i+1,j),d(i+1,j+1))+data(i,j) 1≤i

Step 1:声明变量数塔层数n,待处理数据节点数值数组data[n][n],结果(状态)数组d[n][n];

Step 2:输入数塔层数n,维数组data和d分配内存空间;

Step 3:初始化第n层结果(状态)数组值;

Step 4:根据状态转移方程求解d(i,j),其中i从n-1到1,j从1到i;

Step 5:输出d(1,1);

Step 6:根据数组d求解具体路径并输出。

课程设计报告模板)

课程设计报告模板()

————————————————————————————————作者: ————————————————————————————————日期: ?

课程设计(论文)任务书 软件学院软件+电商专业09级(2)班 一、课程设计(论文)题目基本模型机设计与实现 二、课程设计(论文)工作自2011年6月 20 日起至2011年 6月 24日止。 三、课程设计(论文) 地点:计算机组成原理实验室(5#301) 四、课程设计(论文)内容要求: 1.课程设计的目的 通过课程设计的综合训练,在掌握部件单元电路实验的基础上,进一步掌握整机 概念。培养学生实际分析问题、解决问题和动手能力,最终目标是想通过课程设计的形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。 2.课程设计的任务及要求 1)基本要求? (1)课程设计前必须根据课程设计题目认真查阅资料; (2)实验前准备好实验程序及调试时所需的输入数据; (3)实验独立认真完成; (4)对实验结果认真记录,并进行总结和讨论。 2)课程设计论文编写要求 (1)按照书稿的规格撰写打印课设论文 (2)论文包括目录、绪论、正文、小结、参考文献、附录等 (3)正文中要有问题描述、实验原理、设计思路、实验步骤、调试过程与遇到问题的解决方法、总结和讨论等 (4)课设论文装订按学校的统一要求完成 3)课设考核 从以下几方面来考查:

(1)出勤情况和课设态度; (2)设计思路; (3)代码实现; (4)动手调试能力; (5)论文的层次性、条理性、格式的规范性。 4)参考文献 [1]王爱英.计算机组成与结构[M]. 北京:清华大学出版社, 2007. [2] 王爱英. 计算机组成与结构习题详解与实验指导[M]. 北京:清华大学出版社, 2007. 5)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 实验与调试 3 实验室 撰写论文 1 图书馆 6)任务及具体要求 设计实现一个简单的模型机,该模型机包含若干条简单的计算机指令,其中至少包括输入、输出指令,存储器读写指令,寄存器访问指令,运算指令,程序控制指令。学生须根据要求自行设计出这些机器指令对应的微指令代码,并将其存放于控制存储器,并利用机器指令设计一段简单机器指令程序。将实验设备通过串口连接计算机,通过联机软件将机器指令程序和编写的微指令程序存入主存中,并运行此段程序,通过联机软件显示和观察该段程序的运行,验证编写的指令和微指令的执行情况是否符 合设计要求,并对程序运行结果的正、误分析其原因。 学生签名: 亲笔签名 2011年6月20 日 课程设计(论文)评审意见 (1)设计思路:优( )、良()、中( )、一般()、差( ); (2)代码实现:优()、良()、中()、一般()、差();

贪吃蛇游戏课程设计实验报告全解

辽宁科技大学课程设计说明书 设计题目:基于C#的贪吃蛇游戏 学院、系:装备制造学院 专业班级:计算机科学与技术 学生姓名:叶佳佳 指导教师:丁宁 成绩: 2015年12月12日

目录 一、概述 (1) 1、用C#实现该设计的方法 (1) 2、贪吃蛇游戏说明 (1) 二、实验目的及设计要求 (1) 1、实验目的 (1) 2、实验要求 (2) 三、课程设计具体实现 (2) 1、概要设计 (2) 1.1、设计思想 (2) 1.2、主模块实现 (2) 1.3、主函数流程图 (4) 2、详细设计 (5) 2.1、设计思想 (5) 2.2、具体模块实现: (5) 四、调试过程及运行结果 (10) 1、调试过程 (10) 2、实验结果 (11) 五、实验心得 (12) 六、参考资料 (13) 七、附录:源代码 (13)

一、概述 1、用C#实现该设计的方法 首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能,要实现模块间的高内聚,低耦合。设计模块是一个相当重要的环节,模块的数量不宜太多,也不宜太少,要是每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模块绘制流程图。流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加理解难度。此外,流程图应容易转换成代码。 根据流程图编写好代码后在WindowsXP操作系统,https://www.360docs.net/doc/b214278778.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

电子电路课程设计密码锁(满分实验报告)

密码锁设计报告 摘要: 本系统是由键盘和报警系统所组成的密码锁。系统完成键盘输入、开锁、超时报警、输入位数显示、错误密码报警、复位等数字密码锁的基本功能。 关键字:数字密码锁GAL16V8 28C64 解锁与报警 1

目录: 一、系统结构与技术指标 1、系统功能要求 (4) 2、性能和电气指标 (5) 3、设计条件 (5) 二、整体方案设计 1、密码设定 (6) 2、密码判断 (6) 3、密码录入和判断结果显示 (6) 4、系统工作原理框面 (7) 三、单元电路设计 1、键盘录入和编码电路图 (8) 2、地址计数和存储电路 (12) 3、密码锁存与比较电路 (12) 2

4、判决与结果显示电路 (14) 5、延时电路 (15) 6、复位 (17) 7、整机电路图 (19) 8、元件清单……………………………………………19四、程序清单 1、第一片GAL (21) 2、第二片GAL (23) 五、测试与调整 1、单元电路测试 (25) 2、整体指标测试 (26) 3、测试结果 (26) 六、设计总结 1、设计任务完成情况 (27) 2、问题及改进 (27) 3、心得体会 (28) 3

一、系统结构与技术指标 1.系统功能要求 密码锁:用数字键方式输入开锁密码,输入密码时开锁;如 果输入密码有误或者输入时间过长,则发出警报。 密码锁的系统结构框图如下图所示,其中数字键盘用于输入 密码,密码锁用于判断密码的正误,也可用于修改密码。开锁LED1亮表示输入密码正确并开锁,报警LED2亮表示密码有误或者输入时间超时。 开锁green 键盘密码锁 错误red 4

游戏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.主要函数与数组:

课程设计报告【模板】

模拟电子技术课程设计报告设计题目:直流稳压电源设计 专业电子信息科学与技术 班级电信092 学号 200916022230 学生姓名夏惜 指导教师王瑞 设计时间2010-2011学年上学期 教师评分 2010年月日

昆明理工大学津桥学院模拟电子技术课程设计 目录 1.概述 (2) 1.1直流稳压电源设计目的 (2) 1.2课程设计的组成部分 (2) 2.直流稳压电源设计的内容 (4) 2.1变压电路设计 (4) 2.2整流电路设计 (4) 2.3滤波电路设计 (8) 2.4稳压电路设计 (9) 2.5总电路设计 (10) 3.总结 (12) 3.1所遇到的问题,你是怎样解决这些问题的12 3.3体会收获及建议 (12) 3.4参考资料(书、论文、网络资料) (13) 4.教师评语 (13) 5.成绩 (13)

昆明理工大学津桥学院模拟电子技术课程设计 1.概述 电源是各种电子、电器设备工作的动力,是自动化不可或缺的组成部分,直流稳压电源是应用极为广泛的一种电源。直流稳压电源是常用的电子设备,它能保证在电网电压波动或负载发生变化时,输出稳定的电压。一个低纹波、高精度的稳压源在仪器仪表、工业控制及测量领域中有着重要的实际应用价值。 直流稳压电源通常由变压器、整流电路、滤波电路、稳压控制电路所组成,具有体积小,重量轻,性能稳定可等优点,电压从零起连续可调,可串联或关联使用,直流输出纹波小,稳定度高,稳压稳流自动转换、限流式过短路保护和自动恢复功能,是大专院校、工业企业、科研单位及电子维修人员理想的直流稳压电源。适用于电子仪器设备、电器维修、实验室、电解电镀、测试、测量设备、工厂电器设备配套使用。几乎所有的电子设备都需要有稳压的电压供给,才能使其处于良好的工作状态。家用电器中的电视机、音响、电脑尤其是这样。电网电压时高时低,电子设备本身耗供电造成不稳定因家。解决这个不稳定因素的办法是在电子设备的前端进行稳压。 直流稳压电源广泛应用于国防、科研、大专院校、实验室、工矿企业、电解、电镀、充电设备等的直流供电。 1.1直流稳压电源设计目的 (1)、学习直流稳压电源的设计方法; (2)、研究直流稳压电源的设计方案; (3)、掌握直流稳压电源的稳压系数和内阻测试方法。 1.2课程设计的组成部分 1.2.1 设计原理

单片机电子时钟课程设计实验报告

单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。

计算机操作系统综合设计实验报告实验一

计算机操作系统综合设计 实验一 实验名称:进程创建模拟实现 实验类型:验证型 实验环境: win7 vc++6.0 指导老师: 专业班级: 姓名: 学号: 联系电话: 实验地点:东六E507 实验日期:2017 年 10 月 10 日 实验报告日期:2017 年 10 月 10 日 实验成绩:

一、实验目的 1)理解进程创建相关理论; 2)掌握进程创建方法; 3)掌握进程相关数据结构。 二、实验内容 windows 7 Visual C++ 6.0 三、实验步骤 1、实验内容 1)输入给定代码; 2)进行功能测试并得出正确结果。 2、实验步骤 1)输入代码 A、打开 Visual C++ 6.0 ; B、新建 c++ 文件,创建basic.h 头文件,并且创建 main.cpp 2)进行功能测试并得出正确结果 A 、编译、运行main.cpp B、输入测试数据 创建10个进程;创建进程树中4层以上的数型结构 结构如图所示:。

createpc 创建进程命令。 参数: 1 pid(进程id)、 2 ppid(父进程id)、3 prio(优先级)。 示例:createpc(2,1,2) 。创建一个进程,其进程号为2,父进程号为1,优先级为2 3)输入创建进程代码及运行截图 4)显示创建的进程

3、画出createpc函数程序流程图 分析createpc函数的代码,画出如下流程图:

四、实验总结 1、实验思考 (1)进程创建的核心内容是什么? 答: 1)申请空白PCB 2)为新进程分配资源 3)初始化进程控制块 4)将新进程插入到就绪队列 (2)该设计和实际的操作系统进程创建相比,缺少了哪些步骤? 答:只是模拟的创建,并没有分配资源 2、个人总结 通过这次课程设计,加深了对操作系统的认识,了解了操作系统中进程创建的过程,对进程创建有了深入的了解,并能够用高 级语言进行模拟演示。一分耕耘,一分收获,这次的课程设计让 我受益匪浅。虽然自己所做的很少也不够完善,但毕竟也是努 力的结果。另外,使我体会最深的是:任何一门知识的掌握, 仅靠学习理论知识是远远不够的,要与实际动手操作相结合才能 达到功效。

EDA课程设计说明书参考格式

<>课程设计说明书 题目 院、部: 学生姓名: 指导教师:王晓丽职称助教 专业: 班级: 完成时间:

摘要(三号,黑体,居中,字间空两格字符) (空二行换行) 空4格打印摘要内容(小四号宋体,行距20)。 关键词:(摘要内容后下空一行打印“关键词”三字(小四号黑体),其后为关键词(小四号宋体),每一关键词之间用分号隔开,最后一个关键词后不打标点符号。 ABSTRACT ①居中打印“ABSTRACT”,再下空二行打印英文摘要内容。②摘要内容每段开头留四个空字符。③摘要内容后下空一行打印“Key words”,其后为关键词用小写字母,每一关键词之间用分号隔开,最后一个关键词后不打标点符号。 Key words :aaa;bbb;ccc

目录(3号,黑体,居中) (空1行,以小4号黑体设置字体及大小,行间距22、字间距标准) 1 XXXXXX………………………………………………………………………… 1.1 XXXXXX……………………………………………………………………… 1.2 XXXXXX……………………………………………………………………… ┇ 2 XXXXXX………………………………………………………………………… 2.1 XXXXXX……………………………………………………………………… 2.2 XXXXXX……………………………………………………………………… ┇ 3 4 结束语 参考文献………………………………………………………………………………. 致谢……………………………………………………………………………………附录……………………………………………………………………………………

《c语言课程设计报告--小游戏“石头剪子布”》

《C语言课程设计》报告题目:石头剪子布 班级: 学号: 姓名: 指导教师: 成绩:

目录: 一、选题背景...................................................................................................................... - 2 - 二、设计思路...................................................................................................................... - 2 - 三、主要问题的解决方法及关键技术.............................................................................. - 3 - 四、程序流程图.................................................................................................................. - 3 - 五、源程序清单.................................................................................................................. - 6 - 六、程序运行结果.............................................................................................................. - 8 - 七、设计总结...................................................................................................................... - 9 - 八、教师评语.................................................................................................................... - 10 - 一、选题背景 通过一个学期的C语言课程的学习,《C语言程序设计》课程已结束,根据学校课程学习的安排,要进行一周的C语言实习,自己动手编写游戏和系统。根据老师布置的设计任务书,按照学委的安排,根据个人的能力及意愿,我选择了设计一格小游戏:石头剪子布。 实验准备:做游戏前,首先,自己详细看了《C语言程序设计》(教科书),理解了相关函数的用法和作用;另外,上网查询了很多相关资料,还有找了很多相关的游戏设计的代码,都详细的看了一遍,加深了对C语言以及相关内容进一步理解。根据实际情况设计出一款比较理想的小游戏。 设计题目的要求: ①游戏要设置开始,结束操作控制 ②游戏要有时间提示即相关结果的提示语 ③游戏要能自动判断输赢,并显示最终比赛结果 二、设计思路 系统功能模块图: 输入:计算机随机输入选择,用户输入选择,并将数据储存。 计算:根据计算机和用户的选择,计算大小,并判断输赢,计算用户的胜负率,并储存。 输出:根据用户的输入,将用户的游戏结果显示在屏幕上。

电子商务系统分析与设计课程设计实验报告范本

电子商务系统分析与设计课程设计实 验报告

江苏科技大学 电子商务系统分析与设计课程设计 网上书城系统的开发 学生姓名张颖 学号 班级08404121 指导老师 成绩 经济管理学院信息管理系 1月8日 目录 一.系统规划 (4)

1.2初步调查 (5) 1.3确定电子商务模式和模型 (6) 1.4可行性分析和可行性分析报告 (6) 二.系统分析 (8) 2.1系统调查 (8) 2.2需求规格说明书 (9) 2.2.1 引言 (9) 2.2.2项目概述 (9) 2.2.3需求规定 (10) 2.2.4环境要求 (16) 2.3组织结构分析 (17) 2.4业务流程分析 (17) 2.5数据流程分析 (19) 三.系统设计 (21) 3.1系统总体结构 (21) 3.2网络基本结构 (22) 3.3系统平台选择 (22) 3.4应用系统方案 (23) 3.4.1各功能模块简要描述 (23) 3.4.4数据库设计 (24) 3.4.5用户界面设计 (31)

3.5.1客户端要求 (32) 3.5.2服务器端要求 (32) 3.5.3系统测试 (32) 四.支付系统设计 (39) 4.1支付协议选择 (39) 4.2支付系统数据流程分析 (39) 4.3支付系统安全需求分析 (41) 4.4支付系统总体设计 (42) 4.5支付系统功能 (44) 4.6交易流程设计 (46) 4.7支付系统安全设计 (47) 五.心得体会 (47) 一.系统规划 1.1明确用户需求 随着当今社会新系统大度的提高,网络的高速发展,计算机已被广泛应用于各个领域,因而网络成为人们生活中不可或缺的一部分。互联网用户应经接受了电子商务,网购成为一种时尚潮流。

课程设计报告撰写规范

.课程设计报告撰写规范

————————————————————————————————作者:————————————————————————————————日期: 2

江西理工大学应用科学学院信息工程系 课程设计规范 (试行) 信息工程系 二○一○年六月

第1章内容要求 第1章内容要求 课程设计报告由以下几个部分组成组成,依次为: I、统一的封面,封面之后为课设评分表及答辩记录表; II、摘要; III、目录; IV、课程设计总结报告正文; V、总结(本课题核心内容、特点和方案的优缺点、改进方向和意见)VI、按统一格式列出主要参考文献。 1

第2章格式要求 第2章格式要求 课程设计报告每部分从新的一页开始,各部分要求如下: 2.1封面 统一的封面(含课程设计课题名称、专业、班级、姓名、学号、指导教师等,详见第五部分“格式范例”) 2.2摘要 应概括地反映出本课程设计的主要内容,包括工作目的、实验研究方法、研究成果和结论,重点是本论文的主要工作。摘要力求语言精炼准确,建议500字以内。摘要中不要出现图片、图表、表格或其他插图材料。 关键词是为了便于作文献索引和检索工作而从论文中选取出来用以表示全文主题内容信息的单词或术语。 关键词在摘要内容后另起一行标明,一般3~5个,之间用“;”分开。 2.3 目录 目录由标题名称和页码组成,包括:正文(含结论)的一级、二级和三级标题和序号。具体格式见第五部分“格式范例”。 2.4 符号说明 如果课程设计报告中使用了大量的物理量符号、标志、缩略词、专门计量单位、自定义名词和术语等,应将全文中常用的这些符号及意义列出。如果上述符号和缩略词使用数量不多,可以不设专门的主要符号表,但在报告中出现时须加以说明。缩略词应列出中英文全称。 2

动画与游戏设计-课程设计报告

《动画与游戏开发》 课程报告 学号:111102020103 姓名:张慧 专业班级:11级计科本01班 日期:2013-12-9

电子信息工程学院 目录 一、课程内容及应用领域 1.1基于DirectX的粒子系统 (3) 1.1.1 粒子系统简介 (3) 1.1.2广告板技术 (3) 1.1.3粒子系统的基本原理 (3) 1.2粒子系统的应用领域 (3) 二、课程内容的难点、疑点 2.1课程要点 (4) 2.2课程难点 (4) 2.3课程疑点 (4) 三、实例开发 3.1实例题目及说明 (4) 3.2关键技术 (5) 3.2.1系统完成的四部曲 (5) 3.2.2星光粒子结构构成技术 (5) 3.2.3 MyPaint()绘图函数 (5) 3.3开发过程 (9) 3.3.1案例所需背景图 (10) 3.3.2程序部分代码 (10) 3.3.3运行结果截图 (15)

3.4总结..........................................................17四、谈谈自己对课程内容的掌握程度

一、课程内容及应用领域 1.课程内容:基于DirectX的粒子系统 相关内容简介: (1)粒子系统简介 粒子系统是三维图形编程领域中用于实现特殊效果的一种非常重要的技术.该技术是由Reeves于1983年首次提出来的.通过粒子系统可以使用非常简单的粒子来构造复杂的物体,它为模拟动态的不规则物体,提供了强有力的技术手段。一般情况下,粒子的几何特征十分简单,可以用一个像素或一个小的多边形来表示.如果给出了粒子中心点的坐标和粒子大小,不难计算出绘制粒子所需要的四个顶点的位置坐标. (2)广告板技术 由于通常使用平面图形而不是立体图形表示一个粒子,所以需要使用的粒子四边形始终面向观察者.这就要使用广告板技术.广告板技术的原理是,在渲染一个多边形时,首先根据观察方向构造一个旋转矩阵,利用该矩阵旋转多边形使其面向观察者,如果观察方向不断变化,就要不断旋转多边形. (3)粒子系统的基本原理 粒子通常都是一个带有纹理的四边形。我们通过这个使用了纹理映射的四边形,可以认为粒子实际上是一个很小的网格模型,只不过是纹理赋予了它特殊的外表罢了。绘制粒子就如果绘制多边形一样简单,因为一个粒子说白了就是一个可改变大小并映射了纹理的四边形罢了。 粒子系统由大量的粒子构成,粒子是一种微小的物体,每个粒子都具有一定的属性,如位置、大小以及纹理,可能还需要颜色、透明度、运动速度、加速度、生命期等属性。我们可以把粒子想象成颗粒状的物体,如雪花,雨滴,沙尘,烟雾等特殊的事物。又比如游戏中的

unity3d游戏课程设计报告

游戏程序设计课程报告 课程: Unity3D课程设计题目:探索迷宫 班级: 学号: 姓名:

日期:2014.12 一、摘要 1 UNITY游戏是一种新型的IT引擎。我们研究主要内容是UNITY游戏设计方法。指以游戏客户端软件为信息交互窗口的旨在实现娱乐、休闲、交流和取得虚拟成就的具有可持续性的个体性单人游戏。 本报告主要讲述了这个小游戏的设计思路及初步使用Unity3D软件 的感受和总结。设计过程中,首先建立自己想要的模型,然后在此基础上进行需求迭代,详细设计时不断地修正和完善,经过测试阶段反复调试和验证,最终形成达到设计要求的小游戏。 基于UNITY基础,构建了一个益智游戏风格的游戏,并有主角与关卡、游戏逻辑、游戏环境界面等设计,使得玩家可以在场景中进行寻找神龛的冒险游戏。 本游戏的控制很简单,及用键盘的W ASD及SPACE五个控制人物的上下左右跳跃五个方向,用户根据自己的战略方式选择寻找油桶点亮煤油灯然后寻找神龛。

二、概述 《UNITY游戏程序设计》这一课程以大作业形式进行考核,能更好地锻炼学生综合运用本课程所授知识的能力。大作业主要内容为设计完成面向某一主题内容的游戏演示程序。 自选游戏主题,并根据所选定的主题内容设计一个典型的游戏场景及玩家逻辑,其中包含主角与关卡,游戏逻辑,游戏环境界面与交2 互过程等的设计;开发完成与设计相符的游戏Demo。 要求使用Unity3D游戏开发软件实现上述游戏Demo。 三、具体要求 1、每人单独完成,特殊可由多人合作完成。 2、游戏主题自拟。 3、根据所设游戏主题、场景及玩家逻辑,实现完成相应的游戏Demo,并撰写设计开发报告。 四、设计主题 基于视频教程“平衡球”的基础,构建了一个益智游戏风格的游戏,并有主角与关卡(一关)、游戏逻辑(触碰油桶、神龛)、游戏环境界面(通道)等设计,使得玩家可以在场景轨道中进行吃油桶、神龛的冒险游戏。 五、设计思路 本游戏以几个环环相扣的通道作为人物运动的轨迹,在通道上分

中南大学电工电子课程设计实验报告

中南大学 电工电子技术课程设计报告 题目:可编程乐曲演奏器的设计 学院:信息科学与工程学院 指导老师:陈明义 专业班级: 姓名: 学号:

前言 随着科学技术发展的日新日异,电工电子技术在现代社会生产中占据着非常重要的地位,因此作为二十一世纪的自动化专业的学生而言,掌握电力电子应用技术十分重要。 电工电子课程设计的目的在于进一步巩固和加深所学电工电子基本理论知识。使学生能综合运用相关关课程的基本知识,通过本课程设计,培养我们独立思考的能力,学会和认识查阅学习我们未学会的知识,了解专业工程设计的特点、思路、以及具体的方法和步骤,掌握专业课程设计中的设计计算、软件编制,硬件设计及整体调试。设计过程中还能树立正确的设计思想和严谨的工作作风,达到提高我们的设计能力的目标。 从理论到实践,往往看似简单,实则是有很大的差距的,通过课程设计,可以培养我们学到很多东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的学到知识,从而提高自己的实际动手能力和独立思考的能力。 在次,特别感谢老师给我们以实践动手的机会,让我们对以前的知识以复习,整合,并从理论走向实践,相信我们都会在这次课程设计中学到很多!!!

目录 前言 (2) 正文 第一章系统概述 (4) 系统功能 (4) 系统结构 (4) 实验原理 (4) 整体方案 (5) 第二章单元电路的设计与分析 (5) 音频发生器的设计 (5) 节拍发生器的设计 (6) 读取存储器数据 (7) 选择存储器地址 (8) 控制音频电路设计 (8) 第三章电路的安装与调试 (9) 第四章结束语 (9) 元器件明细表 (10) 参考文献 (10) 附录 (11)

课程设计报告书正文标准格式

课 程 设 计 报 告 书 专 用 纸 1 引言(或绪论)(可作为正文第1章标题,用小3号黑体,加粗, 并留出上下间距为:段前0.5行,段后0.5行) ×××××××××(小4号宋体,20磅行距)××××××××××××××××××××××××××××××………… 1.1 ××××××(作为正文2级标题,用4号黑体,加粗) ×××××××××(小4号宋体,20磅行距)×××××××××××××××××××××××××××××××………… 1.1.1 ××××(作为正文3级标题,用小4号黑体,不加粗) ×××××××××(小4号宋体,20磅行距)×××××××××××××××××××××××××××………… 2 ×××××××(作为正文第2章标题,用小3号黑体,加粗, 并留出上下间距为:段前0.5行,段后0.5行) ×××××××××(小4号宋体,20磅行距)×××××××××××××××××××××××××××××××××××………… ×××××××××××××××××××………… ………… 注:1.正文中表格与插图的字体一律用5号宋体; 2.正文各页的格式请以此页为标准复制。 请留出一个汉字的空间,下同

报告中的内容仅为参考字体格式,与本次设计无关! 题目 内部排序教学软件。 1需求分析和说明 内部排序教学软件的总体目标:在TURBO C2.0 的开发环境下,利用所学C语言和数据结构的相关知识,开发一个具有良好人机界面的内部排序教学软件,实现各种内部排序,并能使用户通过其显示结果对每种排序方法的性能有一个直观的了解,从而达到教学的目的。 1.1基本要求 (1)界面友好,易与操作。采用菜单或其它人机对话方式进行选择。 (2)实现各种内部排序。包括冒泡排序,直接插入排序,直接选择排序,希尔排序,快速排序,堆排序。 (3)待排序的元素的关键字为整数。可用随机数据和用户输入数据作测试比较。比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换以3次计)。 (4)演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标 的列表,以便比较各种排序的优劣。 1.2各功能模块的功能描述: 1.主函数模块 本模块的主要功能是初始化图形界面,调用各模块,实现软件功能。 2.排序功能及输出子模块 本模块的主要功能是根据用户的选择进行数组的创建,并对输入数据或者随机产生的数据使用六种排序方法进行排序并统计每种方法的移动次数和比较次数,然后输出以表格形式输出。 3.封面和结束画面子模块 本模块的主要功能是当用户打开本软件时模拟软件加载,延时数秒后关闭,并进入图形界面,在用户退出软件时显示结束画面,延时数秒后关闭程序。 4.图形界面子模块 本模块的主要功能是根据用户的选择显示不同的画面,引导用户使用软件所提供的各种功能,并在用户提供必要数据,并选择排序功能时调用排序模块,并显示结果画面。 5.输入子模块 本模块的主要功能是进行光标定位,输出提示文字,并对用户输入数据进行处理,创建数组。 6.鼠标实现模块 本模块的主要功能是为用户提供鼠标操作支持,使用户能使用鼠标进行功能的选择。2详细设计

大学课程设计报告小小打字游戏设计-课程设计报告

2016-2017学年第一学期 《Windows程序设计》 课程设计报告 题目:小小打字游戏设计 专业: 班级: 姓名: 指导教师: 成绩: 二0一六年十一月十五日

目录 1 设计内容及要求 (1) 1.1 设计内容 (1) 1.2 系统功能 (1) 1.3 信息存储功能 (1) 2 系统设计 (1) 2.1 数据库设计 (1) 2.1.1 GameUser表 (1) 2.1.2 GameInfo表 (2) 2.2 游戏系统设计 (2) 2.2.1 程序项目设计 (2) 2.2.2 功能模块设计 (2) 3 C#系统实现 (5) 3.1 类图 (5) 3.2 核心代码 (6) 3.3 MySqlConn类 (10) 3.4 MainForm类 (11) 3.5 菜单事件 (12) 3.6 窗体键盘事件 (13) 3.7 MyRandom类 (15) 3.8 Program类 (16) 4 总结 (17) 4.1 收获 (17) 4.2 反思 (17) 5 参考文献: (18)

1 设计内容及要求 1.1 设计内容 软件名称:小小打字游戏 需求分析:使用VS2010开发环境,用C#语言编写一个打字游戏,游戏界面随机出现下落的A到Z的26个字母,当用户按下相应的键,游戏屏幕上正在下落的字母就会被消除,游戏分数将相应增加。 1.2 系统功能 (1)、登录功能:启动软件,出现登录界面,用户输入账号密码,正确后方可进入游戏; (2)、注册功能:不存在的用户,可以注册; (3)、软件互斥:通过创建互斥变量,使打字游戏软件只能单独开启一个; (4)、游戏控制:按F1开启游戏,F2暂停游戏,F3继续游戏,F4使用游戏积分兑换生命值; (5)、游戏显示:游戏窗口随机下落颜色不定的A到Z 26个字母,并根据游戏得分实时增加字母下落的速度; (6)、游戏操作:按下键盘上的A-Z 26个字母键,游戏窗口上正在下落的对应字母被消除,并使游戏分数增加1; (7)、数据保存和清除:使用数据库保存用户的游戏数据,并可调用数据库数据显示在游戏界面上显示,管理员账号可以清除游戏数据记录; (8)、游戏界面信息显示:显示相应的游戏状态信息,暂停游戏提示,结束游戏提示以及游戏排名。 1.3 信息存储功能 需要存储的信息: (1)游戏分数、(2) 游戏等级、 (3) 用户、 (4)密码、(5)游戏开始时间、(6)游戏结束时间。 2 系统设计 2.1 数据库设计 2.1.1 GameUser表 表1 GameUser表

电子CAD课程设计实验报告

一.课程设计的目的 课程设计以电子线路CAD软件设计原理为基础,重点在硬件设计领域中实用的电子线路设计软件的应用。掌握电子线路设计中使用CAD的方法。为后继课程和设计打下基础。 通过电路设计,掌握硬件设计中原理图设计、功能仿真、器件布局、在线仿真、PCB设计等硬件设计的重要环节。 二.课程设计题目描述和要求 2.1振荡电路的模拟和仿真。 由555定时器构成多谐波振荡电路,用模拟的示波器观察输出的信号,熟悉555定时器构成多谐波振荡电路的基本原理,熟悉proteus的基本操作,和各元器件的查找。 2.2 8051单片机 用80c51单片机完成以下功能:(1)构成流水灯的控制电路,使八个流水灯轮流点亮。(2)构成音乐播放的简单电路。(3)构成串口通信电路,完成信息在单片机和串口之间的传播。(4)构成8255键盘显示模块。(5)构成A/D和D/A 转换模块。 首先用模拟器件构成基本电路,然后在单片机中加入驱动程序,运行仿真,最后对电路进行调整校正,完成相关功能。 熟悉单片机实现相关功能的基本原理,对单片机有个框架的了解。学习用proteus仿真单片机电路中不同模块间的组合,扩展单片机电路的功能。 三.课程设计报告内容。 3.1设计原理 3.1.1振荡电路仿真的原理 振荡电路原理: 555管脚功能介绍: 1脚为地。2脚为触发输入端;3脚为输出端,输出的电平状态受触发器控制,而触发器受上比较器6脚和下比较器2脚的控制。 当触发器接受上比较器A1从R脚输入的高电平时,触发器被置于复位状态,3脚输出低电平; 2脚和6脚是互补的,2脚只对低电平起作用,高电平对它不起作用,即电压小于1Ucc/3,此时3脚输出高电平。6脚为阈值端,只对高电平起作用,低电

物联网传输综合课程设计实验报告 人体红外数据通信实验

物联网传输综合课程设计实验报告 人体红外数据通信实验 一、实验目的 1. 了解基于Z-Stack 协议栈的SappWsn 应用程序框架的工作机制 2. 掌握在ZigBee 协议栈中添加人体红外传感器驱动的方法。 二、实验设备 1. 装有IAR 开发工具的PC 机一台 2. 下载器一个 3. 物联网多网技术开发设计平台一套 三、实验原理 在Z-Stack APP中的HAL\Target\CC2530EB\Includes组中,提供了一个hal_io.h的文件,如图所示。 其中,提供了名为HalIOSetInput 的函数,可以将燃气传感器端口(P1.0)设置为输入,然后通过调用HalIOGetLevel 函数来获取传感器状态。 四、实验步骤 1、将单片机zigbee协调器拆卸下来,取出烧写器。通过Mini USB接口将zigbee 协调器与下载器和PC机相连。

2、将实验箱控制方式切换开关拨至“手动”一侧,转动实验箱“旋钮节点选择”旋钮,使得协调器旁边的LED灯被点亮 3、打开配套代码中的ZStack-CC2530\Projects\SappWsn\SappWsn.eww工程文件,在“Tools”组中,找到“f8wConfig.cfg”文件,双击打开,并找到大概第59 行的“-DZAPP_CONFIG_PAN_ID=0xFFFF”,将其中的“0xFFFF”修改为其他值,例如0x0010

4、在工程目录结构树上方的下拉列表中,选择“CoordinatorEB”,点击工具栏中的“Make”按钮,编译工程,等待工程编译完成,如看到警告,可以忽略。在工程目录结构树中的工程名称上点击鼠标右键,选择“Options”,并在弹出的对话框中选择左侧的“Debugger”,并在右侧的“Driver”列表中选择“Texas Instruments”,点击“Download and Debug”按钮。待程序下载完毕后,点击“Go”按钮,使程序开始运行。点击工具栏中的“Stop Debugging”,退出调试模式, 5、转动实验箱“旋钮节点选择”旋钮,使得热释红外传感器节点旁边的LED灯被点亮,在工程目录结构树上方的下拉列表中,选择“EndDeviceEB”,在“SAPP_Device.h”文件中,取消“HAS_IRPERS”的注释,并保证其他的功能均被注释,如图所示

相关文档
最新文档