C 课程设计报告

发布 2022-10-04 10:42:28 阅读 8762

c++课程设计报告。

设计题目: 填写本人的课程设计题目

专业: 应用数学班级。

学生姓名: 本人姓名学号: 本人学号。

指导教师杨宇晶、郭天娇

一、 目的意义。

内容:宋体小四。

设计的目的、要求……

二、 总体设计。

总体设计思路、总框图。

三、 详细设计。

主要的数据类型的定义;完成各个功能模块的算法……

四、 调试与测试。

各个功能模块的抓屏以及功能说明,使用说明。

五、总结与心得。

以上内容5页。

另起一页。附录:

附上设计的源**,不能带注释。

例如:一、需求分析:

本次课程设计主要是做一个猜数字游戏,要求随机提供序列类型,并且可以按要求提供该序列的前n项,要求猜测第n+1项。这样的n可以作为游戏的难度,n越小,则难度越大;n越小,难度越小。本猜字游戏的难度分为3个级别:

1、简单 2、中等 3、困难。

当玩游戏者打开本游戏时会有一个对话框弹出,要求输入的你的姓名和年龄,还要从简单、中等、困难三个中选者你准备挑战的难度,然后点提交按纽进入了本猜字游戏的主程序框。本游戏会根据你选的难度,告诉你前n个数(难度越小,n越大;难度越的,n越小),然后你就可以在输入框填入你所猜的第n+1个数,在本游戏主界面的右面同时会显示你刚才登陆是输入的名字和年龄,还有你剩余的猜字和得分,游戏者每猜对一次加10分;猜错不扣分,但是你剩余的猜字次数将会减掉一次。如果你猜对第一关所有数字,恭喜你,你可以顺利进入下一关(本游戏一共关);如果你在限定的次数内没有猜对所给数字,对不起,本游戏结束,如果你还想玩此游戏,请重新登陆!

二、设计思想与过程:

关于本猜字游戏的设计,我们的设计思想是建立在对问题总体把握的基础上,按照课程设计的要求设计一个面向对象的程序。本游戏的总体构思是:先设计一个抽象基类;然后在这个基类的基础上,我们又设计一系列继承该基类的派生类;最后我们又根据用户的要求设计了猜字游戏界面(包括登陆界面和主程序界面)。

在该猜字游戏程序中我们利用随机函数来实现对不同派生类的访问,即每次玩该游戏的时候都会随机选择一个数列,通过控制程序提示玩家前n个数的多少,从而产生不同难度的数列让玩家猜,根据玩家猜的情况,我们设计了一个程序用于显示玩家猜对的次数、积分、剩余的次数。

具体设计过程如下:

1. 首先我们对该游戏应该实现什么样的功能做了全面的分析,加上我们日常对其他一些游戏的了解,我们的游戏规则设计如下:

a.运行本游戏应用程序(即首先会弹出一个对话框,要求玩家填入姓名、年龄,还要求玩家选择他准备挑战的难易程度(有简单、中等、困难三中选择),这些内容都填好以后,玩家便可点“ok”按纽登陆游戏,如果玩家不想玩本游戏可以点“cancel”按纽退出。游戏登陆界面如下:

b.登陆后,便进入了本游戏的主界面,如果你选择的难易程度是“易”,题目会显示数列的前六个数,让你猜第七个数字;如果选择的是“中”,题目会显示数列前四个数字,让你猜第五个数字;如果选择的是“难”,题目会显示数列前三个数字,让你猜第四个数字。游戏主界面的右面会显示玩家的相关信息,包括姓名、年龄、得分(初始分值为100,答对一题加10分,答错一题减10分)、难度、剩余机会(初始值为3,答对一题机会数不变,答错一题减1)。在下面输入框中输入你所猜测的下一个数,然后点“确定”,如果想退出游戏点“退出”。

游戏主界面如下:

2.该游戏程序的主要设计特点是面向对象的程序设计,也就是对类的设计。我们得首先设计出一个共享的抽象基类,因为开始时我们还不知道由该基类派生出去的派生类会有哪些共通的操作行为,所以我开始定义的基类只能算是一个抽象的概念,它不提供任何操作行为,只是为所有的派生类的提供一个共通接口,提供给以后需要增加的派生类所使用。

3.我们开始定义的基类好象只是定义了一个共通接口,其实不然,我们可以把所有派生类的共通操作定义在基类里面,这样就不用在每个派生类中定义,可以省掉很多麻烦,也可以增加程序的透明性。通过对类的继承和多态,可以省去我们很多操作。最重要的是当我们要写一个派生类程序时,我们可以不用去动以前写过的程序,让人感觉有着“一种(is-a-kind-of)”的关系。

只要在定义的派生类中包含基类程序(这个文件即可。这样我们就可以随时加入新的程序,而不用去更改先前的程序。

4.在基类的基础上我又加入了一些派生类,用于产生可供用户猜测的数列,然后我们又写了产生随即数的随即函数(rand())用于“中”,“难”这两种情况下的前n提示数的随机产生,这样就更增加了用户的猜测难度。还有因为用户输入的数据并不一定都是正确的,用户输入的数据有可能是不合法数据:比如输入数过大,数据为负等,在该输数字的地方输入字符串等,所以我们不能完全相信用户,我们得想办法解决这个问题,可以在用户输入错误的时候,给用户错误信息的提示,让用户再次输入,于是我们定义了函数(如check_string( char*p)等)来对它们进行检测,并作出相应的处理。

5.玩家在开始玩本游戏时,有可能不输入名字、年龄和选择难易程度而直接点“ok”进入游戏,这很难让人想象会出现什么样的后果。于这种异常情况,我们想出了几个解决的办法,就是当玩家进入游戏主界面时,如果名字、年龄和选择难易程度这些信息为空,我们会强制为用户加入相关信息(名字设为:匿名;年龄设为:

保密;难易程度设为:易),即在玩家不输入任何信息的情况下的默认处理。

6.在编写游戏的主程序时,为了完成对前面相关函数的调用和对类的访问,我们声明一个cnumsquence指针类型的数组,用来对所有派生类访问,使程序真正做到面向对象。

7.为了让玩家能够更直观的玩游戏,我们打算让程序在wingdown界面下运行,于是我们就用mfc设计了登陆窗口、游戏主窗口、提示玩家是否继续玩的窗口三个界面,这样就使本游戏更加人性化,让玩家更容易玩本游戏,再加上一些规则说明,简直是太棒了。

8.到此,我们的游戏程序已经基本完成,最后我们对程序做了一下润色,对游戏界面做了一下美工,呵呵~~~我们的游戏开发也算完成了,虽然有点累,不过还是满有成就感的!呵呵,不写了,不是因为时间紧迫,马上就有一连串的考试,我们还会把我们的游戏做得更好,好,就这样了。

三、程序概貌(实际上就是对类的描述):

本游戏的核心类如下。

3.1 游戏界面控制类。

3.1.1 cguss (

cguss主要是控制这个游戏的加载,相当于console 程序中的main函数。

3.1.2 cgussdlg (

cgussdlg 负责控制与玩家交互游戏的界面。提示各种游戏间的信息。

3.1.3 cuserinfodlg (

cuserinfodlg 是输入玩家信息的对话框。

3.1.4 ismoredlg 是询问玩家是否继续的对话框。

3.2 玩家信息类。

cuserinfo (

cuserinfo 记录玩家基本信息的类,包括玩家姓名、年龄、得分、难度等信息。

3.3数列生成类。

i. cnumsquence (

cnumsquence 是数列生成类的抽象基类,它提供数列生成类的基本操作借口。

3.3.2 一般数列生成类的派生类。

这些类包括:

cfibonacci (

csquare (

ctriangular (

cpentagonal (

clucas (

这些数列都是通过固定的通式生成。

3.3.2 随机生成的类。

chard (

chard类是通过随机参数的生成类,用于游戏难度大的模式。

3.3.3 通过模板函数来生成的类。

ctempseq (

ctempseq 是通过一个数列生成函数的为模板参数的模板类。通过传入模板函数我们可以任意生成数列。

3.4 异常处理类。

3.4.1 cex (

cex是异常的抽象基类,提供异常的一般接口。

3.4.2 异常的派生类。

cexinput (输入异常类)

cexoverflow(exoverflow)(数组溢出异常类)

四、本程序的亮点及亮点所带来的优越性:

4.1 面向对象的设计方法。

在游戏数列生成类和异常处理类中,充分运用了面向对象的继承和虚拟多态的技术,大大简化的程序设计的难度,使得程序简明易懂,易与维护和扩展。

4.2 范型程序的设计。

在游戏中有一种数列示通过一个模板类来生成的,这样就可以通过此类来任意生成数列,极大地提高了程序的弹性。

4.3 异常处理机制。

在程序中,我们定义了一个异常类的体系,然后通过抽象的异常基类捕。

获各种异常,记录下错误的操作,使程序更加的健壮。

4.4可视化的界面。

本游戏采用microsoft的mfc框架,运用多种控件来设计界面,使得游。

戏易与操作。

五、对面向对象程序设计的体会:

通过用面向推想的编程概念作为我们的设计游戏的主导思想,我们体会不少,不过由于时间非常的紧迫,我们也只能说说我们的一些主要体会:

在程序中我们设计了一个抽象基类cnumsquence和由这个基类派生出去的cfibonacci、cpell、csquare、ctriangular、cpentagonal、clucas,这使我们体会到了“is-a-kind-of”真正思想,也感觉到对面向对象程序设计确实抽象,这需要我们在编程实践去慢慢体会,慢慢总结。

面向对象的编程概念的最主要的特性是:继承和多态。

关于多态,在面向对象的程序设计中它的含义是“相似”,两个对象如果具有一定的相似性但又有些区别的话,那么它们具有多态性;在c++中,我们通过基类的pointers和references,借助虚拟机制对派生类进行动态操作。用关键字virtual可使函数有了晚**的灵活性(即动态绑定),virtual函数表示允许在相同家族中的类有不同的行为,这也正是多态形成的原因。virtual函数允许它与基类那个函数不同(即允许改写基类定义的函数)。

会使我们的程序的修改和增删极为方便。

c语言课程设计报告 课程设计报告

周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...

C课程设计报告

题目各类图形面积与周长计算和高考倒计时。学生姓名张磊 学号 20131344054 学院计算机与软件学院 专业软件工程 指导教师马瑞。二 一五年六月 25 日。目录。1 引言 1 1.1 系统开发背景和意义 1 1.2 服务器运行环境 2 1.3 课题内容 2 2 系统需求分析及相关技术介绍 2 2...

C 课程设计报告

c 程序课程设计报告。学院 资源与安全工程学院 专业班级 城市地下空间工程1303 姓名卢途。指导教师 彭述权。课程设计时间 2013 2014学年第二学期18 19周。一 题目一 设计一 学生成绩管理系统 它的主要功能是对学生的成绩进行输入 修改和管理。系统功能要求 界面要求 学生成绩管理系统 1...