文档库 最新最全的文档下载
当前位置:文档库 › 安卓课程设计(台球游戏)

安卓课程设计(台球游戏)

安卓课程设计(台球游戏)
安卓课程设计(台球游戏)

计算机学院课程设计

专业:计算机应用技术

课程名称: 3G开发基础

课题名称: 台球游戏系统

教师:

学号: 姓名:

2013 年 9月 20 日——2013 年 12 月 25 日

目录

前言

Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。早期由原名为“Android”的公司开发,谷歌在2005年收购“Android.Inc”后,继续进行对Android系统开发运营,它采用了软件堆层的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。

2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。

综合本学期的学习,开发一款基于android环境的台球游戏,熟练掌握android 应用开发。

一.课程设计目的

1.1关于java

1、熟悉Java开发环境,熟悉用Java完成一个应用程序的设计过程,掌握有关编辑、调试和整合程序的方法和技巧。

2、通过此设计,了解Java语言的特点;熟悉Java程序的编写;体会Java语言在问题求解中的特点。

3、总结学习Java语言的心得和体会,并对Java课程设置提出自己的意见和建议。

1.2关于android

熟悉android开发环境,熟悉用java语言实现一个安卓程序的设计过程,掌握有关的设计技巧

1、熟悉android开发环境,熟悉用java语言实现一个安卓程序的设计过程,掌握有关的设计技巧

2、通过此课程设计,了解android系统的特点,掌握android相关的知识点。

3、总结学习android开发环境,熟悉用java语言实现一个安卓程序的设计过程,掌握有关的设计技巧

总结学习android的心得和体会,并且android课程提出自己的意见和建议,从中得到自己的学习心得和体会。

二.设计任务及要求

根据android课程学习,将手机台球游戏设计的总体设计框架以及详细的设计和实现过程通老师讲解和自己的理解将其全部以课程设计的方式书写出来。

三.总体设计框架

台球游戏

欢迎界面

开始界面

关于帮助开始游戏设置退出

倒计时模式练习模式排行榜

四.详细设计和实现过程

4.1配置开发环境

1、安装JDK

首先将下载的jdk-6u24-windows-i586安装到C:\下

2、配置环境变量

选择计算机>右键>属性>高级设置>环境变量

CLASSPATH : .;%JA V A_HOME%\lib;%JA V A_HOME%\lib\dt.jar;%JA V A_HO ME%\lib\tools.jar;

JA V A_HOME : C:\Program Files(x86)\Java\jdk1.6.0_24

Path : %JA V A_HOME%\bin;

将以上三个配置到环境变量中

3、安装eclipse

双击eclipse快捷方式图标,它会在你选择的路径下生成一个workspace文件夹,以后的项目都在这里面。

4、安装ADT

离线安装ADT:

点击eclipse上的help进入如图所示,点击add将ADT导入

若安装成功则会出现如图所示的navigate下面手机图标。

5、安装SDK

点击window进入preference,然后点击android,在SDK Location中导入SDK,安装成功之后如图所示。

4.2功能定义

台球游戏是根据人们日常中打台球的模式进行模拟式的通过点击按钮来调准角度并出击球杆。

选择【开始游戏】之后可选择【倒计时模式】和【练习模式】进行玩台球游戏,另外还可以点击【排行榜】查看分数情况,倒计时模式是在一定的时间进行玩游戏,练习模式是对于初次玩台球游戏的玩家或者不熟练的玩家。

4.3类的设计

4.4类的功能

各个类功能清单 文件名

主要功能

备注 Constant.java 定义台球所需工具

GameActivity.java 主体类

Main 方法 WhatMessage.java

Surface 所需的常量类

WhatMessage

Constant

MainMenuView GameActivity

FailView

HighScore WellcomeView WinView AboutView

ChoiceView

HelpView

SoundControlView

Ball

BallGoThread Cue

GameView

GameViewDrawThread KeyThread

StrengthBar Table Timer

TimeRunningThread VirtualButton

CueAnimateThread

ImageButtonEx ISwitchButton SwitchButton CollisionUtil

ColorUtil PicLoadUtil ScreenScaleResult ScreenScaleUtil

ImageButton.java 球杆变形按钮ISwitchButton.java

SwitchButton.java 角度调整按钮AboutView,java 关于界面ChoiceView.java 选项菜单界面HelpView.java 帮助界面SoundControl.java 声音控制界面Ball.java 台球BallGoThread.java 桌球运动

Cue.java 球杆CueAnimateThread.java 倒计时间GameView.java 游戏界面GameViewDrawThread.java 桌球运动画面KeyThread.java 监听触控按键线程类StrengthBar.java 力度条

Table.java 球台

Timer.java 计时器TimeRunningThread.java 倒计时线程类VirtualButton.java 虚拟按钮类FailView.java 游戏失败界面HighScoreView.java 分数记录界面MainMenuView.java 主界面

WellcomeView.java 欢迎界面

WinView.java 游戏胜利界面

CollisionUtil.java 进行碰撞检测和物理计

算工具类

ColorUtil.java 颜色工具类

DataUtil.java 系统当前日期工具类

PicLoadUtil.java 图片工具类

ScreenScaleResult.java 横竖屏幕工具类

ScreenScaleUtil.java 计算缩放情况工具类

4.5类的特点

4.5.1抽象类WhatMessage的描述

public class WhatMessage{

public static final int GOTO_WELLCOME_VIEW=0; //欢迎界面

public static final int GOTO_MAIN_MENU_VIEW=1 ; //主菜单界面

public static final int GOTO_GAME_VIEW=2; //游戏界面

public static final int GOTO_SOUND_CONTORL_VIEW=3; //声音控制界面

public static final int GOTO_WIN_VIEW =4; //胜利界面

public static final int GOTO_FAIL_VIEW =5; //失败界面

public static final int GOTO_HIGH_SCORE_VIEW=6; //排行榜界面

public static final int GOTO_HELP_VIEW =7; //帮助界面

public static final int GOTO_ABOUT_VIEW=8; //关于界面

public static final int GOTO_CHOICE_VIEW=9; //选择界面

public static final int OVER_GAME =10; //游戏结束}

这个类主要是标识所有SurfaceView的常量,这些界面的常量用数字0至10表示的好处是:在后面的编程过程中更快捷,而且简单明了。

4.5.2界面设置

public class AboutView extends ViewGroup{

Paint paint; //画笔引用

Bitmap bgBitmap; //背景图片

Bitmap bmp; //文字的图片

float bmpx; //文字位置

public AboutView(GameActivity activity) {

super(activity);

setWillNotDraw(false);

paint=new Paint(); //创建画笔

paint.setAntiAlias(true); //打开抗锯齿

initBitmap(); //初始化位图资源

}

//确定View的大小

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { this.setMeasuredDimension(bgBitmap.getWidth(), bgBitmap.getHeight());

}

//确定各子控件的位置与大小,调用子控件的layout函数进行

@Override

protected void onLayout(boolean changed, int l, int t, int r, int b) {

}

//显示函数

@Override

public void onDraw(Canvas canvas) {

canvas.drawBitmap(bgBitmap, 0, 0, paint);

canvas.drawBitmap(bmp, bmpx+Constant.X_OFFSET, Constant.BMP_Y+Constant.Y_OFFSET, paint);

}

//加载图片的方法

public void initBitmap(){

bgBitmap=BitmapFactory.decodeResource(this.getResources(),

R.drawable.help);

bmp=BitmapFactory.decodeResource(this.getResources(), R.drawable.bmp0);

bgBitmap=PicLoadUtil.scaleToFitFullScreen(bgBitmap, Constant.wRatio, Constant.hRatio);

bmp=PicLoadUtil.scaleToFit(bmp, Constant.ssr.ratio);

//初始化图片的位置

bmpx=(Constant.SCREEN_WIDTH-bmp.getWidth())/2;

}

}

界面设置的类继承ViewGroup,使用onMeasure确定view大小、onLayo确定各个子控件的位置与大小,onDraw方法显示函数,initBitmao方法加载图片。

4.5.3监听器

public class KeyThread extends Thread {

private boolean flag=true;

GameView gameView;

private int sleepSpan=40;

private float changeSpeedTime=80f;//改变速度的时间点

public KeyThread(GameView gameView)

{

this.gameView=gameView;

}

@Override

public void run()

{

while(flag)

{

if(!((gameView.keyState&0x20)==0))//第6位是1,可以改变按下按钮时间

{

gameView.btnPressTime+=3.5f;

}

if(!((gameView.keyState&0x1)==0))//和00001按位或,判断第1位是否为1,标志向左移

{

if(gameView.btnPressTime

{

gameView.cue.rotateLeftSlowly();//将球杆慢速左转

}

else//如果按键超过规定时间

{

gameView.cue.rotateLeftFast();//将大炮快速左转

}

}

else if(!((gameView.keyState&0x2)==0))//和00010按位或,判断第2位是否为1,标志向右移

{

if(gameView.btnPressTime

{

gameView.cue.rotateRightSlowly();//将球杆慢速右转

}

else//如果按键超过规定时间

{

gameView.cue.rotateRightFast();//将大炮快速右转

}

}

try{

Thread.sleep(sleepSpan);//睡眠指定毫秒数

}

catch(Exception e){

e.printStackTrace();//打印堆栈信息

}

}

}

public void setFlag(boolean flag) {

this.flag = flag;

}

}

这监听器是起监听作用的线程类,这段代码是监听触控按键的线程类,这个线程是对球杆角度偏移进行控制。

4.5.4线程间通信

Handler myHandler = new Handler(){//处理各个SurfaceView发送的消息public void handleMessage(Message msg) {

switch(msg.what)

{

case WhatMessage.GOTO_MAIN_MENU_VIEW:

gotoMainMenuView();

break;

case WhatMessage.GOTO_GAME_VIEW:

gotoGameView();

break;

case WhatMessage.GOTO_SOUND_CONTORL_VIEW:

gotoSoundControlView();

break;

case WhatMessage.GOTO_WIN_VIEW:

gotoWinView();

break;

case WhatMessage.GOTO_FAIL_VIEW:

gotoFailView();

break;

case WhatMessage.GOTO_HIGH_SCORE_VIEW:

gotoHighScoreView();

break;

case WhatMessage.GOTO_WELLCOME_VIEW:

gotoWellcomeView();

break;

case WhatMessage.GOTO_HELP_VIEW:

gotoHelpView();

break;

case WhatMessage.GOTO_ABOUT_VIEW:

gotoAboutView();

break;

case WhatMessage.GOTO_CHOICE_VIEW:

gotoChoiceView();

break;

case WhatMessage.OVER_GAME:

goToOverView();

break;

}

}

};

线程间的通信需要用到Handler来发送消息。线程之间的通信的原理是,线程通过Handler将消息发送出去,发出去的消息就会到进入到MessageQueue中,然后再通过Looper将消息循环的发送出去。msg.what是Messge对象的属性,起到标示作用。

4.5.5自定义按钮

public class ImageButtonEx extends Button {

protected Bitmap btBitmap;

protected boolean bButtonPressed=false;

public ImageButtonEx(Context context){

super(context);

}

public ImageButtonEx(Context context,Bitmap btBitmap){

super(context);

this.btBitmap=btBitmap;

setBackgroundDrawable(null);

}

自定义按钮的好处是,可以根据自己的喜爱和需要来绘制按钮,可以使你的游戏界面做得更漂亮,吸引大众的眼球。在这个游戏中的自定义按钮需要用到图形图像处理中的画布(Canvas)、画笔(Paint)和位图(Bitmap)。

4.5.6定时器

//绘制时间的方法

public void drawSelf(Canvas canvas,Paint paint){

int second=this.leftSecond%60;

int minute=this.leftSecond/60;

//绘制秒钟

drawNumberBitmap(second,numberBitmaps,endX+Constant.X_OFFSET,e ndY+Constant.Y_OFFSET,canvas, paint);

//绘制分隔符

int secondLength=(second+"").length()<=1 ? (second+"").length()+1 : (second+"").length();

float breakMarkX=endX-secondLength*numberWidth-breakMarkWidth;

float breakMarkY=endY;

canvas.drawBitmap(breakMarkBitmap, breakMarkX+Constant.X_OFFSET, breakMarkY+Constant.Y_OFFSET,paint);//绘制时间分隔符图片

//绘制分钟

float miniteEndX=breakMarkX;

float miniteEndY=endY;

drawNumberBitmap(minute,numberBitmaps,miniteEndX+Constant.X_OFF SET,miniteEndY+Constant.Y_OFFSET,canvas, paint);

}

4.5.7 数据存储

//打开或创建数据库的方法

public void openOrCreateDatabase()

{

try

{

sld=SQLiteDatabase.openDatabase

(

"/data/data/com.bn.d2.bill/mydb", //数据库所在路径

null, //CursorFactory

SQLiteDatabase.OPEN_READWRITE|SQLiteDatabase.CREATE_IF_NECESS ARY //读写、若不存在则创建

);

String sql="create table if not exists highScore" +

"( " +

"score integer," +

"date varchar(20)" +

");";

sld.execSQL(sql);

}

catch(Exception e)

{

Toast.makeText(this, "数据库错误:"+e.toString(),

Toast.LENGTH_SHORT).show();

}

}

//关闭数据库的方法

public void closeDatabase()

{

try

{

sld.close();

}

catch(Exception e)

{

Toast.makeText(this, "数据库错误:"+e.toString(),

Toast.LENGTH_SHORT).show();;

}

}

//插入记录的方法

public void insert(int score,String date)

{

try

{

String sql="insert into highScore values("+score+",'"+date+"');";

sld.execSQL(sql);

sld.close();

}

catch(Exception e)

{

Toast.makeText(this, "数据库错误:"+e.toString(),

Toast.LENGTH_SHORT).show();;

}

}

//查询的方法

public String query(int posFrom,int length) //开始的位置,要查寻的记录条数

{

StringBuilder sb=new StringBuilder(); //要返回的结果

Cursor cur=null;

openOrCreateDatabase();

String sql="select score,date from highScore order by score desc;";

cur=sld.rawQuery(sql, null);

{

cur.moveToPosition(posFrom); //将游标移动到指定的开始位置

int count=0; //当前查询记录条数

while(cur.moveToNext()&&count

{

int score=cur.getInt(0);

String date=cur.getString(1);

sb.append(score);

sb.append("/");

sb.append(date);

sb.append("/"); //将记录用"/"分隔开

count++;

}

}

catch(Exception e)

{

Toast.makeText(this, "数据库错误:"+e.toString(),

Toast.LENGTH_SHORT).show();

}

finally

{

cur.close();

closeDatabase();

}

//转换成字符,并返回

return sb.toString();

}

//得到数据库中记录条数的方法

public int getRowCount()

{

int result=0;

Cursor cur=null;

openOrCreateDatabase();

try

{

String sql="select count(score) from highScore;";

cur=sld.rawQuery(sql, null);

if(cur.moveToNext())

{

result=cur.getInt(0);

}

catch(Exception e)

{

Toast.makeText(this, "数据库错误:"+e.toString(),

Toast.LENGTH_SHORT).show();

}

finally

{

cur.close();

closeDatabase();

}

return result;

}

这个游戏中的数据存储用到的是SQLite数据库。SQLite是一个开源的嵌入式关系数据库,它可以减少应用程序管理数据的开销,可移植性好,很容易使用,它本身很小,但却高效而且可靠。嵌入式数据库的一大好处是在程序内部不需要网络配置,也不需要管理。使用SQLite数据存储需要熟悉SQL语句的使用。使用SQLite数据库首先需要创建数据库,相关记录就会在数据库中。

4.5.8多线程

public void run(){

for(int i=0;i

SurfaceHolder myholder=WinView.this.getHolder();

Canvas canvas = myholder.lockCanvas();

try {

synchronized (myholder) {

render(canvas);

}

} finally {

if (canvas != null) {

myholder.unlockCanvasAndPost(canvas);

}

}

try{

Thread.sleep(sleepSpan);

}

catch(Exception e){

e.printStackTrace();

}

}

该run方法是实现Runnable接口的。关键字synchronized用来

与对象的互斥锁联系。当某个对象用synchronized修饰时,表明该对象在任一时刻只能有一个线程访问。当线程执行到synchronized块结束时,需要释放对象锁。当在synchronized块中遇到break,return或抛出Exception,则自动释放对象锁。

4.5.9信息提示

Toast.makeText(this, "数据库错误:"+e.toString(), Toast.LENGTH_SHORT).show();

Toast(提示)是Android中用来显示提示消息的一种机制。Toast没有焦点且显示的时间有限,不会打断用户的当前操作,不能与用户交互,显示一段时间后会自动消失。显示时长有有两个:一个是Toast.LENGTH_SHORT(短时间),另一种是Toast.LENGTH_LONG(长时间)。

4.5.10布局管理

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

此次布局用到的是线性布局,排列方式是相对于手机屏幕垂直排布,宽高占满整个手机屏幕,文字大小的高是包裹内容,宽是占满手机屏幕。

五.设计小结

在本次课程设计中,我学到了很多的知识,我个人认为这个台球游戏编程需要一定的物理和数学基础,并且头脑要保持时刻清醒,要不然很容易绕晕。在对Android的学习上是我学会了怎么将学到的理论知识用到实践中去,改变了过去的学习方法和学习态度,找到了一门自己很喜欢的学科。在这次课程设计中本课程设计中,深深的感受到了一个人力量的单薄,了解到了在完成一个完整的项目上团队的重要性,在实际的程序开发中,团队的力量往往比个人力量之和要大上很多,并且在今后的开发中,我们都将是以团队的形式展开工作的,所以我们应该在现在学习的时候养成一种良好的团队精神,以为将来的开发打下一顶的基础。

大一C语言课程设计题目

课 程 设 计 任 务 书 信息工程与自动化 学院 计算机科学与技术 专业 2011 年级 学生姓名: 课程设计题目: 程序设计语言课程设计 课程设计主要内容: 一、 基础程序设计: 本设计部分主要完成与链表操作相关的基本运算,其中包含:链表的建立、链表的输出、链表的插入、链表的删除等运算。. 二、 综合程序设计: 该部分主要是培养学生在程序编写方面综合能力的训练,学生选作其中的一至二题程序的编写与实施。 1、设计统计任意文本字数的程序(张力老师组必做): 要求包括:中英文文本的:中文字数、数字数目、英文字符数、英文单词数及其他符号。 2、车票订购统计系统(张力老师组必做): 下图是昆明——北京的沿途车站与票价: 请用C 语言为之开发一个售票程序,要求如下: (1)乘客购票时用菜单选择起点站和终到站。如果选择的起点站和终到站为同一个站则报错,程序退出。 (2)选好起点站和终到站之后,通过调用函数int BuyTicket() 为之计算票价和里程,并在屏幕上显示出来。 (3)用文件类型存储每一次售票记录,包括:售票流水号,起点站,终点站,里程,金额等数据,并统计所有存储记录的总售票金额及各站的旅客流量(进站流量+出站流量)。 3、万年历的设计: 要求: 模仿现实生活中的挂历,能够显示年历、月历、日历,并具备退出功能。 当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。 当系统日期变到下一月时,系统自动翻页到下一月。 4、通讯录管理系统:

制作一个通讯录程序,该程序具有查找、添加、修改、删除功能。通讯录包括:姓名,电话,街道,城市,省,邮编等。 模块设计参考: 第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 第二个模块——Menu()的功能是:显示英文提示选单。 第三个模块——Quit()的功能是:退出选单。 第四个模块——Create()的功能是:创建新的通讯录。 第五个模块——Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。 第六个模块——Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。 第七个模块——Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。 第八个模块——Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。 第九个模块——List()的功能是:显示通讯录中的所有记录。 设计指导教师(签字): 教学基层组织负责人(签字): 年月日

android课程设计报告(数独游戏)讲解

河南科技学院 《物联网移动应用开发》课程设计报告 设计题目:基于android的数独游戏设计 班级:物联网131 学号:2013156555 姓名:胡建刚 指导教师:许睿 成绩:

信息工程学院 课程设计报告说明 一、写报告前,请认真阅读《课程设计报告说明》。 二、打印装订要求 1、一律用A4纸,双面打印,并左侧装订。报告正文部分均 采用宋体小四。《课程设计报告说明》页也打印。 2、课程设计概述部分占一页;课程设计内容长度根据实际需要填写;结论和指导教师评语及成绩单独占一页。保证打印格式工整。 3、指导教师评语及成绩部分由指导教师填写。 三、报告内容要求 1、课程设计目的结合实际自己写,不要雷同。 2、课程设计原理简要说明所完成课程设计项目所涉及的理论 知识。 3、课程设计内容这是课程设计报告极其重要的内容。概括整个课程设计过程。(最好在上述内容基础上画出相应的流图、 设计思路和设计方法,再配以相应的文字进行说明。)

一、课程设计概述 1、课程设计目的 通过对android的学习,编写除了这个数独游戏,掌握android的控件知识的使用,和界面的制作。对java知识的应用。这样不仅对自身android的学习可以更上一层楼,而且这个游戏可以锻炼智力,游戏简单,适合多人群游戏,健康,益智的 游戏。 2、课程设计要求 1. 熟悉eclipse开发软件,熟练使用java和xml。 2. 学习和掌握android的四大组件的使用。 3. 熟练掌握Android 游戏开发多线程技术、Android 游戏开发的图形处理技术等。 4. 完成程序的编写工作。 5. 完成程序在模拟器上的实现,以及在安卓手机上的功能实现,并完成优化。 3、课程设计原理 基于数独游戏规则,通过java建立一系列的算法。然后利用android的控件知识建立一系列的界面。包括背景的制作。

[C语言课程设计题目](丁海军)

C语言课程设计设计题 丁海军 本手册提供的设计题大致可分为为3类:第一类侧重于算法设计与实现;第二类侧重于文件操作。 (一)算法设计类题目 1. Fibonacci数列。Fibonacci数列的计算公式如下: fib(1) = 1; fib(2) = 1; fib(n) = fib(n-1) + fib(n-2); //对大于等于3的任意n (1)简单变量“数据平移”方法计算Fibonacci数列的第n项(正整数n通过键盘输入):说明变量old1=1,old2=1,newItem;新的Fibonacci项newItem总是“距它最近”的前两项(old1与old2)的累加和。而后通过“old1=old2; old2=newItem;”进行所谓的“数据平移”。接着计算另一个新的Fibonacci项newItem,依次循环,直到求出数列的第n项时为止。 (2)使用数组求出Fibonacci数列的第n项(正整数n通过键盘输入)并显示在屏幕上:说明数组f用来存放Fibonacci数列的各项之值,且仅初始化前两个元素f[0]=1,f[1]=1,而后通过f[i]=f[i-2]+f[i-1];依次计算出f[2]到f[n-1](注意f[n-1]恰为所要求出的第n项)并将该值显示在屏幕上。 2.编程序,循环进行如下的处理过程:由计算机生成简单的四则运算题;用户给出答案;计算机判断对错。直到用户回答说不再继续做了时结束程序。 提示:可让用户选择指定出加、减、乘、除哪一种运算题,以及出一位数还是两位数的运算题;而后通过使用“rand()%10”或“rand()%100”来获得一个0到9的一位整数随机值或得到0到99的两位整数随机值来为用户出题。还可进一步对用户所做算术题的对错次数进行记录,结束程序时给出一个某种形式的成绩。 3.数的进制转换 (1)将输入的2进制数(一个非“0”即“1”的字符串)化为10进制数。 提示:用字符数组a盛放所输入的二进制数;而后从后往前逐一计算每一位的“位权”w (2的0次方、2的1次方、...),再计算“位权”乘以“位值”并累加到一个初值为0的变量value 上,最后输出该value。 (2)如何把8进制数或16进制数化为10进制数。 (3)如何把某一个k进制的数化为10进制数呢? 4.编程序,输入正整数m,它代表一个人民币钱数(元数)。求取这样一个方案,使用最少张数的人民币纸币,凑成上述的钱数m,并输出求取结果。

android课程设计报告(数独游戏)

河南科技学院《物联网移动应用开发》课程设计报告 设计题目:基于android的数独游戏设计 班级:物联网131 学号:2013156555 姓名:胡建刚 指导教师:许睿 成绩:

信息工程学院 课程设计报告说明 一、写报告前,请认真阅读《课程设计报告说明》。 二、打印装订要求 1、一律用A4纸,双面打印,并左侧装订。报告正文部分均采用宋体小四。《课程设计报告说明》页也打印。 2、课程设计概述部分占一页;课程设计内容长度根据实际需要填写;结论和指导教师评语及成绩单独占一页。保证打印格式工整。 3、指导教师评语及成绩部分由指导教师填写。 三、报告内容要求 1、课程设计目的结合实际自己写,不要雷同。 2、课程设计原理简要说明所完成课程设计项目所涉及的理论知识。 3、课程设计内容这是课程设计报告极其重要的内容。概括整个课程设计过程。(最好在上述内容基础上画出相应的流图、设计思路和设计方法,再配以相应的文字进行说明。)

一、课程设计概述 1、课程设计目的 通过对android的学习,编写除了这个数独游戏,掌握android的控件知识的使用,和界面的制作。对java知识的应用。这样不仅对自身android的学习可以更上一层楼,而且这个游戏可以锻炼智力,游戏简单,适合多人群游戏,健康,益智的游戏。 2、课程设计要求 1. 熟悉eclipse开发软件,熟练使用java和xml。 2. 学习和掌握android的四大组件的使用。 3. 熟练掌握Android 游戏开发多线程技术、Android 游戏开发的图形处理技术等。 4. 完成程序的编写工作。 5. 完成程序在模拟器上的实现,以及在安卓手机上的功能实现,并完成优化。3、课程设计原理 基于数独游戏规则,通过java建立一系列的算法。然后利用android的控件知识建立一系列的界面。包括背景的制作。

JAVA数独(九宫格)游戏软件设计报告(推荐文档)

佛山科学技术学院 《可视化编程技术》课程设计报告数独(九宫格)游戏软件设计 学生姓名:卫泶媚 学号: 2012914201 年级专业:12级教育技术学2班 指导老师:容汝佳 学院:教育科学学院 广东★佛山 提交日期:2014年6月

目录 1. 前言______________________________2 2.概要设计____________________________3 2.1 数独游戏分析_________________________3 2.2 数独游戏界面设计_______________________5 2.3 数独游戏程序功能_______________________5 3. 详细设计___________________________7 3.1类设计___________________________7 3.2 数独算法设计_________________________9 4.程序代码____________________________10 5.参考资料____________________________19 6.心得体会____________________________20

摘要:本程序是个简单的数独游戏界面,在9×9的大九宫格中有9个3×3的小九宫格,游戏根据玩家选择的难易程度提供不同数量的数字。根据已给出的数字,利用逻辑和推理,在其余空格上填入1至9的数字。每个数字在每个小九宫格内每行、每列只能出现一次。虽然玩法简单,但数字排列方式却千变万化,是锻炼逻辑推理能力的好方法。另外,设有“答案”和“玩法说明”窗口为玩家提供参考和帮助。玩家完成所有数字的填写后,可进行提交,游戏系统会根据所填写的结果弹出相应的对话框。 关键字:java游戏软件,数独(九宫格),界面布局 1 前言 经济在发展,科学在发展,人也在发展。在学习JAVA语言后,我决定使用Java语言编写一个简单的数独游戏,来锻炼人们的逻辑推理能力和思维活跃度,同时,也能满足人们日常空余时间的娱乐需要。数独热潮已经在全球蔓延已久,随着数独游戏不断地发展完善,数独也越来越受到家长和孩子的青睐,认为数独不仅仅只是游戏,而是开发智力的一种方法。在孩子游戏娱乐的同时还能得到逻辑思维的锻炼,又何乐而不为呢? JAVA语言是一种纯面向对象的编程语言,自1995年诞生至今,已经得到飞速的发展,涉及计算机应用的方方面面,如浏览器应用、桌面应用、个人数字代理等等,Java语言面向对象、跨平台、安全性、多线程等特性,奠定了其作为网络应用开发首选工具的基础。 另外,本数独游戏程序框架结构清晰明朗,便于读者理解以及为以后增添新功能打下良好的基础;同时,虽然这是一个较为普通的数独游戏程序,但是具有较强的实用性,而且对程序的配置要求不高,能够广泛应用。

C语言课程设计题目

C语言程序课程设计题目 一、程序设计题目:简单的学生成绩管理程序 程序设计功能及要求: (1) 总人数定义为宏,数据使用文件存放; (2) 输入学生姓名学号,及五门成绩,并计算每个学生五门功课的平均分,并按平均分排列名次,若平均分相同则名次并列;结果写入文件并按格式打印在屏幕上。 ⑶ 统计全班每门课程的平均分,并计算各分数段(60以下,60~69,70~79,80~89,90以上)的学生人数;结果写入文件,并按格式在屏幕上打印; ⑷ 在屏幕上打印出所有不及格学生的下列信息:学号,不及格的课程名,该不及格课程成绩; ⑸ 在开始画面加入简单的菜单便于选择各种功能。 例: 1学生条目输入 2 成绩统计 3分数段统计 4不及格学生筛选 ⑹文件格式要求 1.原始数据文件格式(具体数据和项目自行编写) 学号姓名英语C语言高等数学………….. 1 张三76 89 78 2 李四…. …. …. 2.输出数据文件(由程序自动生成) 1)学生综合成绩文件。 2)学号姓名英语C语言高等数学…………….平均成绩名次 1张三76 89 78 ………….. 2李四…. …. …. 3)统计结果文件。 4)分数段英语C语言高等数学…………………. <60 2 … 60~69 8 … 70~79 5 … 80~89 10 … ⑺加入优等生统计功能,要求按优等生条件筛选出优等生的条目存入单独文件,并输出到屏幕。 优等生标准(满足之一即可): 1 平均成绩上80。 2平均成绩及格但未上80,有单科成绩上90。 3平均成绩未及格,有单科满分。 二、程序设计题目:简单的同学通讯录程序设计 [问题描述]

具有数据插入、修改、删除、显示、查询和统计功能的电话簿管理程序。 [程序设计功能及要求] ⑴人数不定,数据使用文件存放。 ⑵记录每位同学的学号、姓名、性别、工作单位、电话号码和E-mail地址建立单独的条目,存入数 据文件。 ⑶可对记录中的姓名和电话号码等进行修改。 ⑷可增加或删除记录 ⑸可显示所有保存的记录 ⑹加入统计功能,可以统计男女同学或总人数。 ⑺加入查询功能,通过姓名、学号或电话号码查询到同学的条目。 ⑻在开始画面加入简单的菜单便于选择功能。 ⑼文件格式 1.储存数据文件格式 学号姓名性别工作单位电话号码E-mail 1 李四…. …. …. ⑽选做:加入文件加密系统,对储存数据文件进行简单的加密,要求通过直接打开储存数据文件无法获得其中的数据。但同时不影响程序对储存数据文件的调用。 [设计提示] 本程序建议采用结构体类型和文件系统实现。 三、程序设计题目:图书管理系统 [问题描述] 设计一个具有数据插入、修改、删除、显示和查询功能的图书管理程序。 [设计要求] (1)用户登录功能; (2)设计程序运行界面; (3)能用菜单选择各功能。 说明: (1)数据包括:书名、作者、书号、出版社、出版日期和单价; (2)可对图书信息修改; (3)可增加或删除图书信息; (4)可显示所有保存的图书信息; (5)可按书名、作者、书号或出版社进行图书信息的查询。 四、职工信息管理系统设计 1. 目的: (1)要求学生熟练掌握C语言的基本知识和编程技能; (2)基本掌握结构化程序设计的基本思路和方法; 2. 要求 基本要求: (1)试设计一个职工信息管理系统,使之能提供以下功能: (2)系统以菜单方式工作

Matlab解数独游戏解析

Matlab解数独游戏解析 课程设计说明书 学生姓名: 燕飞宇学号: 1405054217 信息与通信工程学院学院: 专业: 信息对抗技术专业题目: Matlab专用周 (随数字信号处理课) 指导教师: 李凯、刘宾、杨志良、李沅 2016年 11月 30 日 中北大学 课程设计任务书 2016/2017 学年第一学期 学院: 信息与通信工程学院 专业: 信息对抗技术学生姓名: 燕飞宇学号:1405054217 学生姓名: 毕广宇学号:1405054235 课程设计题目: Matlab课程设计 起迄日期: 2016年12月5日,2016年12月9日 课程设计地点: 信息对抗技术专业综合实验室 指导教师: 李凯、刘宾、杨志良、李沅学科部主任: 张丕状 下达任务书日期: 2016 年11 月30日 课程设计任务书 1(设计目的: (1)通过本课程设计的学习,学生将复习所学的数字信号处理知识,使课堂学 习的理论 知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力; (2)掌握Matlab语言的编程方法,能熟练运用;

(3)通过Matlab实践的课程设计,掌握设Matlab数字信号处理系统的思维方法和基本 开发过程。 2(设计内容和要求(包括原始数据、技术参数、条件、设计要求等): 一、学习Matlab编程及仿真 1、熟悉Matlab的运行环境; 2、学会并掌握Matlab图形编程; 3、根据所设计系统的需要会合理设定需完成系统的各项参数; 4、根据所设计系统的需要,优化程序设计最优系统。二、实践设计要求: 1、根据所选题目,设计实现系统的原理框图。 2、编写Matlab程序,给出系统不同节点输出波形。 3、每人写出设计报告。 三、参考题目 题目1:语音信号分析 通过计算机录制一段语音信号,分析该语音信号。 1、分析该信号的频谱特性; 2、采用IIR进行降噪; 3、根据FIR进行降噪; 4、对信号进行断句分割。 5、求信号的均值、方差; 6、求信号的自相关系数; 7、求信号的窗(1秒、2秒)能量; 8、求信号的窗(1秒、2秒)自相关分析 9、采用平均幅度差函数(AMDF法)提取求信号的基音周期、谱估计;

C语言课程设计题目汇总

目录 题目6:通讯录程序设计(限2人)........................................................................................................................................... 题目10:机房机位预定系统(限2人)..................................................................................................................................... 题目13:工资纳税系统............................................................................................................................................................. 题目41:条件编译.....................................................................................................................................................................

题目6:回文数的形成............................................................................................................................................................... 杨顺民题目 C语言程序课程设计题目 题目1:年历显示 功能要求: (1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。(2)输入年月,输出该月的日历。 (3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 题目2:小学生测验 面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。 功能要求: (1)电脑随机出10道题,每题10分,程序结束时显示学生得分; (2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的; (3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案; (4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分; (5)总成绩90以上显示“SMART” ,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”

C语言课程设计参考题目 (1)

C语言课程设计参考设计题目 1、学生信息管理 (1)问题描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能: ●系统以菜单方式工作 ●学生信息录入功能(学生信息用文件保存)---输入 ●学生信息浏览功能——输出 ●查询、排序功能——算法 1、按学号查询 2、按姓名查询 ●学生信息的删除与修改(可选项) (2)功能要求 ●界面简单明了; ●有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新 输入; ●最好用链表的方式实现。 (3)算法分析 首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。 对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。文件的读写操作大家参照书中的有关文件的章节。 2、学生综合测评系统 每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。 A、学生信息处理 (1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。 提示:学生信息可先输入到数组中,排序后可写到文件中。 (2) 插入(修改)同学信息: 提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容, (3) 删除同学信息: 提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删

数独游戏实验报告doc

数独游戏实验报告 篇一:Sudoku 数独实验报告 Project2:Sudoku实验报告 一、算法描述 求解Sudoku让人最容易想到的方法是穷举每个方格可能的值,如果符合条件,则得到解,不符合条件则进行回溯。通过递归的方法,显然可以得到数独的解。 我想到的简单的递归方法,是每一行从左到右,试验每一个方格可能的数字,进行递归。这种方法看似非常麻烦,实际上对于一般的数独题,速度是非常快的,思想比较简单,写出来的代码也非常简单、易懂。 算法1:简单递归方法 从第一个格开始,从1到9试验,是否满足行、列、九宫格互不相同的条件。若满足条件,则填入该数字,再试验下一个格。当一个格子出现没有数字能填的情况时,说明已经填的数字有误,回溯,再进行递归。 算法2:优化的递归算法 先遍历所有格子,统计每种格子可能出现数字的个数。每次挑选可能出现数字个数最少的格子来进行递归。 设置三维数组poss[i][j][k]来存储可能出现数字的信息。poss[i][j][0]记录i行j列的格子可能出现数字的个

数,poss[i][j][k](1 算法3:生成数独棋盘的算法我最开始的想法是穷举法,随机生成满足行各不相同的 9行,再判断9宫格、每列是否符合要求,符合条件时,随机生成停止。然而,这种算法的当然时间复杂度显然是过高。第 99 一步的随机生成的次数是9*9/P9=9608。随机生成一组棋盘耗时就非常大。 后来,我从求解的个数的程序获得启发。算法二对于1000多组解的数独棋盘,解起来也很快。随机生成填9个方格,再用算法一的方法解出来,取第一组正确的解作为棋盘即可生成填好的棋盘。再把一定数量的格子的数字随机删除,计算解的个数。如果解唯一,就得到了棋盘。 二、 数据结构 这两种算法的数据结构不是非常复杂,只是普通的数组。算法一:数组a[i][j] 算法二:数组a[i][j]和poss[i][j][k] 算法三:数组 a[i][j]和poss[i][j][k] 三、 时间效率分析 算法1:这种算法在tsinsen系统上只用了15ms得到全

中国地质大学C语言课程设计题目(附参考代码)

C语言课程设计题目 选题一(起评分100分) 高考招生录取程序 已知文本文件f1.txt中存放了某个省当年参加高考的1000个考生的数据(考号、姓名、性别和考试成绩),存放格式是每行存放一个考生的数据,每个数据之间用空格隔开。 假定当年该省的招生计划是:一类本科招生计划为10%;二类本科招生计划为15%;三类本科招生计划为20%;四类高职高专招生计划为25%。 请编写程序,实现以下功能: (1)划定各批次录取分数线,结果可屏幕显示,也可存入文件。 (2)能够统计各批次中男生,女生的录取比例。统计结果可屏幕显示,也可存入文件。 (3)确定每名学生的录取情况及录取批次。 (4)考生可以根据考号或姓名(支持重名)查询自己的成绩及录取情况; 说明: ①系统程序要有界面 ②存入文件的数据,每行存一种数据,每行之间的不同信息用空格分隔。 选题二(起评分85分) 《C语言课程设计与学习指导》第4章题目或第5章题目任选其一 成绩评定方式 平时考勤:20% 考试(即程序考核及检查):40% 实习报告:40% 违规违纪处理 出现以下6种情况中的任何一种,整个课程设计的成绩直接认定为不及格: 1.考勤抽查出现3次(含)不在的情况; 2.上机从事玩游戏、看电影等活动被抓住2次(含)的情况; 3.程序检查被认定为抄袭的情况; 4.实习报告被认定抄袭或雷同的情况; 5.不参加考试(即程序考核及检查)的情况 6.不交实习报告的情况。

C语言课程设计报告撰写要求 1 内容要求 整个报告由六个部分构成: ①课设题目 ②题目分析 ③设计思路 ④实现结果 ⑤课设总结 ⑥附录(源代码) 2 篇幅要求 ①-⑤合计不低于8页,⑥不低于8页。 篇幅没有上限要求,但原则上要求不超过25页。 标题字体字号格式:宋体,三号,加黑,单倍行距。 正文字体字号格式:宋体或Times New Roman,五号,单倍行距。 3 撰写要求 严谨出现抄袭。 严谨出现雷同。 报告出现抄袭或雷同的,整个课程设计成绩一律按不及格论处。 4 其它 封面格式附后。

数独游戏课程设计报告

数独游戏课程设计报告 将“数独”智力游戏的难度划分与创建问题分解为建立终盘和初盘、难度评分、游戏创建。首先采用行列变换的方法建立终盘,然后隐去部分数字并检验解唯一性,得到初盘。在已得到初盘的基础上,根据求解时初级方法和高级方法使用的次数确定难度评分,从而依据分数对题目的难度进行划分,以此创建不同等级难度的“数独”游戏。最后通过实验验证了模型的实用性。下面是小编整理的数独游戏课程设计报告,欢迎来参考! “数独”是18世纪瑞士数学家欧拉发明。该游戏是在9×9的单元网格中进行,这些网格被分9行、9列和3×3个九宫格。单元网格中已有若干数字,其余均为空格。玩家需要推理出所有剩余空格的数字,并满足每一行、每一列、每一个小九宫格内的数字均含1-9且不重复。每一道合格的“数独”谜题都有且仅有唯一答案。 目前,“数独”作为一种智力游戏已经风靡世界,国内外许多学者已对数独的求解算法做了深入研究,例如递归法、回溯候选数法、枚举算法等,但在数独的难度划分与创建方面的研究还很少。由于影响“数独”难度的因素有很多,就问题本身而言,难度因素包括最高难度的技巧、各种技巧所用次数、是否有隐藏及隐藏的深度和广度的技巧组合、当前盘面可逻辑推导出的个数等等;就玩家而言,了解的技巧数

量、熟练程度、观察力等也属于难度划分应考虑的因素。因此,单单利用空格数或求解时间对题目难度进行划分是不全面的,其难度指标定义过于主观,讨论也不够细致,无法真正划分难度的级别。 本文首先创建符合要求的“数独”终盘,然后在终盘的基础上生成具有数独特性的初盘,根据求解时初级方法和高级方法使用的次数确定难度评分,从而依据分数对题目的难度进行划分,以此创建不同等级难度的“数独”游戏。 首先运用初等行、列变换,构造一个新的简单明了的终盘生成算法,具体步骤如下: Step1:从行的角度出发,在第一行随机输入1-9的数字。以一个小九宫为单位,将相邻三个数字作为一个集体进行交替,由此获得第二行的数字,再由第二行的数字根据前述方法变换得到第三行的数字。由此我们得到一个前三行,共有三个小九宫的全部数字。 Step2:从列的角度出发,仍然以小九宫为单位,把第一个小九宫的第一列的相邻三个数字为一个集体进行交替,由此获得第四个小九宫的一列数字,第一小九宫的第二、三列也通过这个相同的方法而得到第四个小九宫的其他两列数字。剩余的其他小九宫也根据前述相同的方法可以得到,将已得到的一个终盘,恰当隐去某些格子内的值,使之成为合乎数独规则的空格,由此便生成一个数独谜题,即初

C语言课程设计题目

本次课程设计是《C语言》课程的综合实验,作为课堂教学和课内正常上机实验的补充。 通过对《C语言》课程的学习,学生已初步掌握C语言的基本概念、结构化程序设计的基本方法,但是实际编程和上机调试程序的能力还远远不足。通过《C 语言》课程设计,加强学生自主学习、收集资料和动手编程的能力,为后续专业课程打好基础。 本次课程设计要求每个程序要调试通过;课程设计结束后,每个小组提交课程设计成果如下: 程序一套,要求演示,演示时采用答辩形式,由各小组同学边演示边讲解编程思路。 课程设计报告一份。 源代码以电子版形式提交,提交的源代码要求加注释。(以附件的形式提交至老师的邮箱,邮件正文中注明专业、班级、各组员学号及姓名) 课程设计报告内容包括: 一、需求分析 对所选择题目进行分析,描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。列出参与人员进行本设计时要达到的具体的目标。 二、总体设计 对设计目标进行总体分析,说明要采用的基本思路,说明遇到的问题和解决方法。 说明完成本次课程设计的完整过程。 要描述程序的设计思想,画出本次课程设计完整的程序框图或流程图。 三、详细设计 要求列出所有编写的函数清单,说明每个函数的功能,各形式参数的意义,画出各函数的调用关系图。即模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)。

四、程序运行结果测试与分析 要针对程序处理的不同情况列出有代表性的输入和输出,用足够多的实例说明程序完成了设计任务和目标。 五、结论与心得 主要说明程序调试中发现的问题和解决办法,包括你在该设计中主要承担什么任务,在设计中学到了什么,哪里遇到了困难,解决的办法,可能但因时间关系没有来得及完成的想法,今后的目标等。 C语言课程设计题目 1、年历显示 功能要求: (1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1900-2100年之间。 (2)输入年月,输出该月的日历。 (3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 2、小学生测验 面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。 功能要求: (1)电脑随机出10道题,每题10分,程序结束时显示学生得分; (2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的; (3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案; (4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分; (5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”。

C语言课程设计参考题目 (2)

附录1 供选择的C语言程序课程设计题目 第一类题目应用类 题目1:年历显示。 功能要求: (1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。(2)输入年月,输出该月的日历。 (3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 题目2:小学生测验 面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。 功能要求: (1)电脑随机出10道题,每题10分,程序结束时显示学生得分; (2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的; (3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案; (4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分; (5)总成绩90以上显示“SMART” ,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN” 。

题目3 运动会比赛计分系统 要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数 各项目名次取法有如下几种: 取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2; 功能要求: (1)系统以菜单方式工作 (2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。 (3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩 (4)查看参赛学校信息和比赛项目信息等。 题目4:学生学籍管理系统 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。 功能要求: (1)系统以菜单方式工作。 (2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;(3)删除已知学号的学生信息; (4)查找已知学号的学生信息; (5)按学号,专业输出学生籍贯表。 (6)查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。 题目5:排班系统 学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下: 钱:星期一、星期六 赵:星期二、星期四 孙:星期三、星期日 李:星期五 周:星期一、星期四、星期六 吴:星期二、星期五 陈:星期三、星期六、星期日 运行结果: Solution: 1 赵钱孙李周吴陈 ============================================================= 星期四星期一星期三星期五星期六星期二星期日 Solution: 2 赵钱孙李周吴陈 ============================================================= 星期四星期一星期日星期五星期六星期二星期三 Solution: 3

c语言课程设计题目

《程序设计基础》课程设计题目 一、设计实现一个模拟的小型教务管理系统 1 目的 通过小型教务管理系统的设计,培养学生综合利用C语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。 2 基本要求 该系统用于管理学生的基本信息、课程成绩及毕业资格审查。要求实现以下功能: ①通过此模块来管理课程信息,包括查询,添加,修改,删除等功能。在进行课程信息添加时,系统会自动监测所添加的信息是否已经存在,如果存在,会提示已经存在。在进行课程信息删除时,同样要求再次确定。 ②实现对学生信息、课程成绩及毕业资格审查的文件存取(分别存储在StudentInfo.txt、StudentScore.txt和GraduateCheck..txt文件中),实现对学生信息、课程成绩的记录增加、删除及修改; ③实现输入学生学号或姓名查询并显示学生的课程成绩; ④实现输入学生学号或姓名,根据该学生的课程成绩,显示毕业资格审查结果。 3、考核要求: 1)写出设计报告:包括实验题目与环境、设计思想、函数分解过程、算法描述以及相应的数据流程图、源程序清单、测试的数据以及程序运行的结果 2)如果程序未能够通过运行,分析可能出错的原因。 提示及说明 (1)学生记录、生日请用结构体完成存储,课程性质及专业请用枚举类型存储。

(2)学生信息、课程成绩、毕业资格审查的管理可用结构体数组或链表实现。 (3)请注意分配好时间,完成系统设计与实现,同时认真填写大作业报告!按时提交大作业报告、可运行的程序及代码,逾期不交,期末成绩以0分记。 《程序设计基础》课程设计题目 二、设计实现一个简单的产品管理系统 目的和要求 (1) 目的 通过产品管理系统的设计,培养学生综合利用C语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。 (2) 基本要求 某工厂有多种产品,每种产品包括:产品代码,产品名称,产品数量,销售量等,要求合理运用C语言的数组、指针、结构体及文件操作等,实现一个模拟的产品管理系统,能用于管理产品的基本信息及信息统计。具体要求如下: ①通过键盘或读取文件的方法读取产品的信息,对各类产品进行删除、插入、修改等操作,能进行产品统计和分析。 ②要求使用结构数组和结构指针,各个功能分别使用函数来完成,主函数和各个函数分别存放在不同的.c文件中,要求使用头文件。 ③要求使用选择法排序,折半查找法进行查找。 ④要求在程序中能够运用结构化程序设计的选择和循环结构,并熟练使用相关的语句(如do while、for、if-elseif等)。 ⑤创新要求。在基本要求达到后,进行创新设计。 考核要求: 1)写出设计报告:包括实验题目与环境、设计思想、函数分解过程、算法描述以及相应的数据流程图、源程序清单、测试的数据以及程序运行的结果 2)如果程序未能够通过运行,分析可能出错的原因。 提示及说明 (1) 产品的记录可用数组或结构体完成存储。 (2) 产品信息的管理可用结构体数组或链表实现。

c语言课程设计报告数独样本

C语言课程设计报告 设计名称C语言课程设计 专业班级 姓名 学号 指引教师 实习时间 成绩

目录 一、设计目................................................................. 错误!未定义书签。 二、设计内容............................................................. 错误!未定义书签。 三、详细设计阐明..................................................... 错误!未定义书签。 四、软件使用阐明..................................................... 错误!未定义书签。 五、设计总结(课程设计心得与体会) ................ 错误!未定义书签。 六、附录1:参照文献 ............................................. 错误!未定义书签。 七、附录2:某些程序清单(带有较详细注释) . 错误!未定义书签。 八、教师评语............................................................. 错误!未定义书签。

一、设计目 通过课程设计实践环节教学,可以加深学生对课堂所学基本知识掌握与理解,提高学生对所学内容综合运用能力;同步也可以通过查询有关资料,培养学生自学能力、接受新知识能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生事实上机调试程序能力。“理论与实践”相结合,使学生得到较好锻炼,为后来学习、工作打下坚实基本。每个学生需要独立完毕教师安排设计题目或由学生自拟实际设计题目,但自拟自拟题目须经指引教师批准方可生效。

c语言课程设计题目

C语言课程设计题目 C语言课程设计 设计要求与设计报告? 设计要求 可自己选定一题目。 模块化程序设计? 缩进书写格式? 必须上机调试通过? 设计报告格式: 1、设计目的 2、总体设计(程序设计组成框图、流程图) 3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等) 4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施 5、源程序清单和执行结果:清单中应有足够的注释 检查要求: 1、每个人必须有程序运行结果; 2、每个人必须交《C语言课程设计报告》---—书面稿、用A4纸打印上交,统一在左侧装订,封面已有。 打分标准: 1、根据平时上机考勤;注重平时上机成绩,教师要不定期检查学生进度,学生不得以自己有私人电脑为借口而不来上机。 2、根据程序运行结果; 3、根据《C语言课程设计报告》,学生能对自己的程序面对教师提问并能熟练地解释清楚以上三项缺一不可,否则不能到得相应学分。 C题目一:蛇行矩阵(限最多5人完成) 要求:1.基本要求:能够输出蛇行方阵,至少能够满足奇数矩阵(m行m列,m为奇数)或偶数矩阵(m行m列,m为偶数)中的一种情况; 2.中等要求:根据要求,既能够输出蛇行奇数矩阵、又能够输出偶数矩阵; 3.高等要求:根据要求的m和n输出矩阵,矩阵可以不是方阵(m行n列,m,n取值范围是自然数,m和n的取值可以不相等)。 C题目二: 螺旋矩阵(限最多5人完成) 要求:1.基本要求:能够输出螺旋方阵,至少满足按照逆时针旋转或者按照顺时针旋转中的1种; 2.中等要求:根据要求,既能够输出逆时针矩阵,又能够输出顺时针矩阵; 3.高等要求:根据要求,可以输出顺时针或者逆时针矩阵,同时还可以根据要求输出从内到外旋转或者从外到内旋转的矩阵。 C题目三:通信录(限最多5人完成) 设一个通信录由以下几项数据信息构成: 数据项类型 姓名字符串

C语言课程设计题目

C语言程序编码训练题目 一、程序设计题目:简单的学生成绩管理程序 程序设计功能及要求: (1)总人数定义为宏,数据使用文件存放; (2)输入学生姓名学号,及五门成绩,并计算每个学生五门功课的平均分,并按平均分排列名次,若平均分相同则名次并列;结果写入文件并按格式打印在屏幕上。 ⑶统计全班每门课程的平均分,并计算各分数段(60以下,60~69,70~79,80~89,90以上)的学生人数;结果写入文件,并按格式在屏幕上打印; ⑷在屏幕上打印出所有不及格学生的下列信息:学号,不及格的课程名,该不及格课程成绩; ⑸在开始画面加入简单的菜单便于选择各种功能。 例: 1学生条目输入 2成绩统计 3分数段统计 4不及格学生筛选 ⑹文件格式要求 1.原始数据文件格式(具体数据和项目自行编写) 学号姓名英语C语言高等数学………….. 1张三768978 2李四….….…. 2.输出数据文件(由程序自动生成) 1)学生综合成绩文件。 2)学号姓名英语C语言高等数学…………….平均成绩名次 1张三768978………….. 2李四….….…. 3)统计结果文件。 4)分数段英语C语言高等数学…………………. <602… 60~698… 70~795… 80~8910… ⑺加入优等生统计功能,要求按优等生条件筛选出优等生的条目存入单独文件,并输出到屏幕。 优等生标准(满足之一即可): 1平均成绩上80。 2平均成绩及格但未上80,有单科成绩上90。 3平均成绩未及格,有单科满分。

二、程序设计题目:简单的同学通讯录程序设计 [问题描述] 具有数据插入、修改、删除、显示、查询和统计功能的电话簿管理程序。 [程序设计功能及要求] ⑴人数不定,数据使用文件存放。 ⑵记录每位同学的学号、姓名、性别、工作单位、电话号码和E-mail地址建立单独的条目,存入数 据文件。 ⑶可对记录中的姓名和电话号码等进行修改。 ⑷可增加或删除记录 ⑸可显示所有保存的记录 ⑹加入统计功能,可以统计男女同学或总人数。 ⑺加入查询功能,通过姓名、学号或电话号码查询到同学的条目。 ⑻在开始画面加入简单的菜单便于选择功能。 ⑼文件格式 1.储存数据文件格式 学号姓名性别工作单位电话号码E-mail 1李四….….…. ⑽选做:加入文件加密系统,对储存数据文件进行简单的加密,要求通过直接打开储存数据文件无法获得其中的数据。但同时不影响程序对储存数据文件的调用。 [设计提示] 本程序建议采用结构体类型和文件系统实现。 三、程序设计题目:企业员工全年销售额统计及奖金发放系统 程序设计功能及要求: ⑴总人数不定,开始先输入员工的人数及工号进行初始化,数据使用文件存放; ⑵根据员工的工号及季度提示输入对应的销售额,存入数据文件。 ⑶奖金计算功能,根据以下要求编写出奖金的计算系统并计算员工的应得奖金并保存在文件中。 1 企业总销售额员工奖金提成比例(占其自己销售额的比例) 100万及以下10% 100万到150万11% 150万到200万12% 200万到250万13% 250万到300万14% 300万以上15% 2 年度销售业绩最高者,额外获得1万元。 ⑷统计功能,统计全年企业的销售额和个人销售额及员工的奖金,并评选出销售总额最高的员工为销售之

相关文档