《面向对象程序设计》大作业--基于C#的一款扫雷游戏
西电2022年秋季《面向对象程序设计(c++)》大作业及答案
学习中心/函授站姓名学号西安电子科技大学网络与继续教育学院2022 学年下学期《面向对象程序设计(C++)》期末考试试题(综合大作业)考试说明:1、大作业试题公布时间:(1)毕业班:2022 年10 月21 日;(2)正常班:2022 年11 月18 日;2、考试必须独立完成,如发现抄袭、雷同均按零分计;3、答案须用《西安电子科技大学网络与继续教育学院2022 秋期末考试答题纸》(个人专属答题纸)手写完成,要求字迹工整、卷面干净、整齐;4、在线上传时间:(1)毕业班学生于2022 年10 月21 日至2022 年11 月1 日在线上传大作业答卷;(2)正常班学生于2022 年11 月18 日至2022 年12 月5 日在线上传大作业答卷;5、拍照要求完整、清晰,一张图片对应一张个人专属答题纸(A4 纸),正确上传。
一、简答题(10 分)1、运算符 new 和 delete 的功能分别是什么?(3 分)答案:运算符new的功能是创建动态对象;delete的功能是释放由new创建的动态对象。
2、若派生类以 private 方式从一个基类派生,派生类的对象可以访问基类中的哪些成员?派生类的成员函数可以访问基类中的哪些成员?(3 分)答案:若派生类以private方式从一个基类派生,派生类的对象不能访问基类中的任何成员(1分);派生类的成员函数可以访问基类中的public和protected成员(2分)。
3、构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?(4 分)答案:构造函数的作用是创建对象并对其进行必要的初始化。
(1分)构造函数调用顺序:基类构造函数、子对象类构造函数(如果有)、派生类构造函数。
(2分)二、填空题(每空 2 分,共 20 分)1、函数的返回值是通过函数体中的return语句带回的;若被调用函数被定义为 void 类型,则被调用函数不带回任何值。
2、表示逻辑关系“ a 大于等于8 或者 a 小于等于5”的C++表达式是。
面向对象程序设计大作业(C++)
面向对象分析/设计课程大作业银行业务处理系统13级软件学院测试班1367004029曾丹1.需求分析随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。
现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。
近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。
随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。
如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。
支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。
特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。
主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。
此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。
2022春西安电子科技大学《面向对象程序设计(C++)》大作业答案
学习中心/函授站_姓名学号西安电子科技大学网络与继续教育学院2022 学年上学期《面向对象程序设计(C++)》期末考试试题(综合大作业)一、简答题(共 10 分)1.(3 分)什么是引用?它与指针有什么区别?答:(任选一个版本,不要两个版本都抄)答案版本1:引用是为已存在的变量取了一个别名,引用和引用的变量共用同一块内存空间。
1) 引用必须被初始化,指针不必。
所以不存在指向空值的引用,但是存在指向空值的指针。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
答案版本2:引用是某个变量或对象的别名。
(1)引用不是变量,它不占据内存空间,它本身没有内存地址。
引用只是被引用的变量或对象的替身。
(2)引用与指针的区别在于应用不是变量,而指针是变量。
没有引用的引用,却有指针的引用。
2.(3 分)C++提供了哪些循环语句?它们各自的特点是什么?答:C++提供了三种循环语句for、while和do-while。
while循环语句先判断是否满足循环条件,如果满足循环条件,则执行一次循环体,再判断是否执行下一次循环,否则退出循环。
do-while循环语句先执行一次循环体后再判断是继续执行循环体还是退出循环。
for循环先设置循环变量的初值,再判断是执行循环体还是退出循环体。
如果执行了循环体,再改变循环变量值后,判断是执行下一次循环体还是退出循环,依此类推。
3.(4 分)构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?答:构造函数的作用是创建对象并对其进行必要的初始化。
构造函数调用顺序:基类构造函数、子对象类构造函数(如果有)、派生类构造函数。
二、填空题(每空 2 分,共 20 分)1.C++程序中的数据可以分为两大类,;2.C++x = 5,y = 0,z = 3,则表达式 !x || y++ && z 执行表达式后y的值4.下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。
吉林大学2020-2021学年第一学期期末考试《面向对象程序设计》大作业参考答案
2020-2021学年第一学期期末考试《面向对象程序设计》大作业一名词解释题 (共10题,总分值30分 )1. 全局变量(3 分):变量分为局部与全局,局部变量又可称之为内部变量。
由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。
2. 菜单(3 分):实际是一种树型结构,为软件的大多数功能提供功能入口。
3. 图标(3 分):通常用来做广告宣传的商标或特定标志。
4. main函数(3 分):又称主函数,是程序执行的起点,main是相对来说的,如同音学理论之主调于泛音,泛音即程序中的除main之外的其他函数,迎合人们的思考方式而生成的而非必定的模式。
有主有次,执行起来条清缕析,既可将程序模块化又实现了一个闭合的整体。
5. 控件(3 分):Windows设计了一些具有图形外观的程序实体,这些程序实体在鼠标或键盘的作用下会使程序出现不同的响应,这些可以接收或者产生事件的程序实体就叫做控件。
6. 继承(3 分):指一个类(即称子类)因承袭而具有另一个类(或称父类)的能力和特征的机制或关系。
7. 宏(3 分):计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。
解释器或编译器在遇到宏时会自动进行这一模式替换。
8. 用户界面(3 分):信息系统中需要用户交互的输入和输出部分。
9. 窗口(3 分):计算机图形学中的窗口是用户坐标系中需要进行观察和处理的一个坐标区域。
10. 数据成员(3 分):包含与非叶成员直接相关的值,该值独立于由该成员的后代计算得到的汇总值。
二简答题 (共5题,总分值40分 )11. While语句的形式为while(<表达式> ) <语句> ;当表达式满足什么条件时可以执行语句的内容?(8 分)答:以下是while语句的基本形式: while(表达式)语句:其中“表达式”可以是任意合法的表达式。
c++大作业
《面向对象程序设计》实验报告专业:软件工程学号:n*********姓名:***教师:***目录实验一基础练习 (3)一.实验目的 (3)二.实验内容 (3)三.算法描述(或程序注解) (3)四.程序清单 (3)实验二类与对象 (6)一.实验目的 (6)二.实验内容 (6)三.算法描述(或程序注解) (6)四.程序清单 (6)实验三友元 (9)一.实验目的 (9)二.实验内容 (9)三.算法描述(或程序注解) (9)四.程序清单 (10)实验四继承与派生 (13)一.实验目的 (13)二.实验内容 (13)三.算法描述(或程序注解) (13)四.程序清单 (13)实验五模板 (17)一.实验目的 (17)二.实验内容 (17)三.算法描述(或程序注解) (17)四.程序清单 (17)实验六输入输出流 (19)一.实验目的 (19)六.实验内容 (19)三.算法描述(或程序注解) (20)四.程序清单 (20)实验一基础练习一.实验目的●基于C语言和数据结构的程序设计●训练对题目分析和上机实践的能力二.实验内容为训练小学生的算术能力,现请你帮忙设计一个100以内的随机出题程序,每次运行生成100道题。
要求:●100以内整数加、减、乘、除运算;●加减乘除符号(运算符)随机产生;●操作数随机产生;●产生的题目输出到屏幕上(能够写入文件更好)。
三.算法描述(或程序注解)四.程序清单#include "stdafx.h"#include <iostream.h>#include <fstream.h>#include <time.h>#include <math.h>#include <stdlib.h>int nQuizNum, nOperator, nResult;int nCountOp[4] = {0};int nOpNum1, nOpNum2;char chOp;void compute_question(const int &nOperator) {switch(nOperator){chOp = '+';nResult = nOpNum1 + nOpNum2; nCountOp[0]++;break;case 2:chOp = '-';nResult = nOpNum1 - nOpNum2; nCountOp[1]++;break;case 3:chOp = '*';nResult = nOpNum1 * nOpNum2; nCountOp[2]++;break;case 4:chOp = '/';nResult = nOpNum1 / nOpNum2; nCountOp[3]++;break;default:int nTemp = nCountOp[0];int nId = 1;for(int i=1; i<=3; ++i){if(nCountOp[i]<nTemp){nId = i+1;}}compute_question(nId);}}int main(void){srand(time(NULL));for(nQuizNum=1; nQuizNum <= 100; ) {nOpNum1 = abs((rand()*10000000) % 100);nOpNum2 = abs((rand()*10000000) % 100);nOperator = (rand()*10000000)/1000%4 + 1;while(nOpNum1 == 0){nOpNum1 = abs((rand()*10000000) % 100);}while(nOpNum2 == 0){nOpNum2 = abs((rand()*10000000) % 100);}compute_question(nOperator);cout << nOpNum1 << chOp << nOpNum2 << "=" << endl;++nQuizNum;}return 0;实验二类与对象一.实验目的●学习类与对象的定义,声明和使用方法●数据成员与成员函数的访问权限●构造函数和析构函数的作用●重载成员函数●对象指针和对象数组●成员指针●静态数据成员和静态成员函数二.实验内容定义一个矢量类Vector,其结构如下:●私有数据成员double x,y; 表示二维矢量的两个分量●构造函数实现初始化数据成员●输出数据成员函数void display( );●类外访问数据成员函数double getx( );double gety( );●功能成员函数实现矢量加、减、乘运算,Vector Add(const Vector &ob2 );Vector Sub(const Vector &ob2 );double Mult(const Vector &ob2 );(建议采用操作符重载:“+”,“-”,“*”)。
【免费下载】面向对象程序设计大作业
7
小游戏 程序随机产生 20—50 根火柴,由人与计算机轮流拿,每次拿的数量不超过 3
根,拿到最后一根为胜。(也可设计别的小游戏)
8
通讯录 要求:
系统
(1) 信息维护:
要求:此模块包括子模块有:增加人员信息、删除人员信息、修改人员信息
(2) 信息查询:
要求:查询时可实现按姓名查询、按电话号码查询
(3) 信息统计:
下一个月的日期。 2、定时提醒:用户可以针对某一天来添加,删除和编辑这一天的日程提醒信 息,当系统时间和提醒时间相吻合时,给出具有提示信息的对话框。 3、查询信息:用户可以查询到某个月的所有的提示信息。
6
超市管
本系统主要完成对超市的管理,包括进货管理,销售管理,库存管理和员
理系统
工管理四个方面。系统可以完成对各类信息的浏览、查询、添加、删除、修
(2) 显示学生数据。
(3) 按学号查询学生数据
(4) 按姓名查询学生数据
(5) 计算每个学生平均成绩。
图书馆 图书信息管理系统
管理系统
针对学生、教师、图书管理员三类人群建立不同的使用权限。实现图书
借阅功能、查询个人借阅信息、超期罚款等等。
ATM 柜 ATM 柜员机模拟程序
员机模拟程 要求:使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为
修改功能。
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资配,料置不试技仅卷术可要是以求指解,机决对组吊电在顶气进层设行配备继置进电不行保规空护范载高与中带资负料荷试下卷高总问中体题资配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况卷中下安,与全要过,加度并强工且看作尽护下可关都能于可地管以缩路正小高常故中工障资作高料;中试对资卷于料连继试接电卷管保破口护坏处进范理行围高整,中核或资对者料定对试值某卷,些弯审异扁核常度与高固校中定对资盒图料位纸试置,.卷编保工写护况复层进杂防行设腐自备跨动与接处装地理置线,高弯尤中曲其资半要料径避试标免卷高错调等误试,高方要中案求资,技料编术试5写交卷、重底保电要。护气设管装设备线置备4高敷动调、中设作试电资技,高气料术并中课3试中且资件、卷包拒料中管试含绝试调路验线动卷试敷方槽作技设案、,术技以管来术及架避系等免统多不启项必动方要方式高案,中;为资对解料整决试套高卷启中突动语然过文停程电机中气。高课因中件此资中,料管电试壁力卷薄高电、中气接资设口料备不试进严卷行等保调问护试题装工,置作合调并理试且利技进用术行管,过线要关敷求运设电行技力高术保中。护资线装料缆置试敷做卷设到技原准术则确指:灵导在活。分。对线对于盒于调处差试,动过当保程不护中同装高电置中压高资回中料路资试交料卷叉试技时卷术,调问应试题采技,用术作金是为属指调隔发试板电人进机员行一,隔变需开压要处器在理组事;在前同发掌一生握线内图槽部纸内故资,障料强时、电,设回需备路要制须进造同行厂时外家切部出断电具习源高题高中电中资源资料,料试线试卷缆卷试敷切验设除报完从告毕而与,采相要用关进高技行中术检资资查料料和试,检卷并测主且处要了理保解。护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
面向对象程序设计C课后题答案
第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。
这种范型的主要特征是:程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。
第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。
这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。
类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再由类生成对象。
类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:(1)每一个对象必须有一个名字以区别于其他对象。
(2)需要用属性来描述它的某些特性。
(3)有一组操作,每一个操作决定了对象的一种行为。
(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。
例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:1966.10.1 工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。
《面向对象程序设计C》课程大作业_1-1
4.在date类中重载+或-,++或--运算符.设计一个双计时器界面,提供人工设定起始日期,人工加、减日期操作,测试date类中各成员函数是否能正确运行,并给出测试结果的运行截图。
15分
5分
5分
5分
20分
扣5分
成绩评定
基本1
基本2
基本3
基本4
基本5
基本6
提高1
提高2
报告
延期提交
合计
标准分数
10分
5分
15分
20分
15分
5分
5分
5分
20分
扣5分
100分
实际完成情况
教师签名:
2020年月日
报告正文
【注】:
(1)请根据“基本要求”和“提高要求”中列出的项目撰写对应的内容。
(2)请将完整的源码作为附录放在报告正文的最后。
6.对本大作业进行总结(存在的不足、问题、经验等)。
二、提高要求
1.通过继承方式设计出时间类(类名为DateTime)(包含年、月、日、时、分、秒),给出类DateTime的定义和实现,描述设计思路。
2.给出设完整的日历表类(类名为CDate)设计,描述设计思路。
三、其他要求
1.运用课堂所学的知识,按题目的要求独立完成大作业及报告。
2.被认定为抄袭或被抄袭者,本课程最终成绩作不及格处理。
3.在网络教学平台上提交:(最后截止日期为:2020年7月12日)
(1)大作业报告(word版和pdf版各一份)
(2)源代码(仅提交.h和.cpp文件)
面向对象程序设计大作业
面向对象程序设计(C++)大作业(总20页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除面向对象程序设计(C++)课程大作业设计题目:院系:计算机科学与信息工程学院专业班级: 09软件工程(2)班学号姓名: 0042 刘国松4012 吕秀锦0034 高婉婉指导教师:李源2015 年 1月目录一、成员分工 (1)二、需求分析 (2)三、总体设计 (3)四、详细设计 (8)五、系统测试 (24)六、总结 (30)七、参考文献 (31)一成员分工我们小组成员共有三名,分别是刘国松、吕秀锦、高婉婉,为了能按时圆满的完成这次VC++课程设计,我们小组进行了详细的分工,以确保设计能按时完成。
经过周密的考虑和详细的调查最终确定该俄罗斯方块游戏需要以下几个功能模块:(1)需求分析(2)界面的设计(3)背景色的选择模块(4)游戏随机选择方块模块(5)游戏预览功能模块(6)收埋功能模块(7)记分功能模块(8)鼠标控制功能模块(9)模块联结(10)系统测试经过小组成员的讨论,并根据个人的特长和具体爱好做如下具体分工:刘国松具体完成以下模块的设计与实现:(1)需求分析(2)界面的设计(3)背景色的选择模块吕秀锦具体完成以下模块的设计与实现:(1)游戏随机选择方块模块(2)游戏预览功能模块(3)收埋功能模块(4)记分功能模块高婉婉主要具体完成以下模块的设计与实现:(1)鼠标控制功能模块(2)模块联结(3)系统测试二需求分析1.系统概述该游戏软件在Windows系统为玩家提供传统俄罗斯方块游戏的基本功能,玩家可以通过键盘控制在游戏区中堆积软件随机提供的由四个小方块不同组合的7种类型不同颜色的方块,每个小方格的颜色也是随机的,并且在整个下落的过程中,其颜色也呈动态变化。
游戏过程中,每在游戏区堆满一行后,自动消除并记分。
同时消去的行数越多,那一次性所加的分数也就越多。
面向对象程序设计(C++)大作业任务书
《面向对象程序设计(C++)》大作业任务书一、题目每组同学(3人一组)可从下列给出的参考题目中任选一题完成,不可以重复。
(1)消费卡支付管理系统(2)驾校学员管理系统(3)网吧上网管理系统(4)超市管理系统(5)网上购物管理系统(6)校园一卡通管理系统(7)家族族谱管理系统(8)银行管理系统(9)个人财务管理系统(10)图书馆管理系统(11)学生成绩管理系统(12)药店进销存管理系统(13) 学生选课管理系统(14)高校招生管理系统(15)公交一卡通管理系统(16)食品安全管理系统(17)机场汽车出入管理系统(18)个人电话簿管理系统(19)建筑公司承包管理系统(20)餐馆营业管理系统其余题目略。
二、对象本学期“面向对象程序设计(C++)”选课班全体同学。
三、目的(1)掌握面向对象程序设计(OOP)的思想,区别传统的过程式程序设计思想,能够使用面向对象的程序设计思想解决实际问题;(2)掌握在Visual C++集成开发环境下编辑、编译、链接和运行一个C++程序的基本方法;(3)独立完成每个程序设计和编码,能够灵活运用各种调试命令修改源程序中可能出现的错误,并能根据问题进行学习、拓广、深化。
(4)学会科学地撰写总结报告,加深对所学知识的理解和掌握,答辩中考察学生的技能,并培养学生的表达和思辨能力。
四、要求(1)根据学生人数分成原则上3人(少量4人)一组,各小组选择感兴趣的题目,在课外完成查找资料、选题、拟大纲、小组讨论、研究写作等各环节;每一环节完成后,在课堂上进行小组之间的讨论、教师点评,最后确定解决问题的方案。
(2)问题规模:体现面向对象程序设计语言的特点,程序代码不少于400行;使用技术:体现OOP的抽象、封装、继承、多态等4种关键技术中的两种或多种;程序结构良好,没有明显错误;按照大作业格式,在课程结束前一周交电子稿和打印稿。
五、内容(1)系统说明书内容包括:①问题描述②类体系设计和程序流程图③各类定义的基本功能,即主要数据和函数功能描述④拟采用开发平台(Visual C++,Borland C++等)(2)大作业报告根据原有的系统设计,编码阶段的工作,整理书写实验报告,内容包括:①系统说明②实验分析与结论③收获与体会④附程序代码(3)最后提交材料:①大作业报告(打印稿和电子稿)②源程序代码(CPP文件),执行文件(EXE)六、评分本次大作业占期末考试总成绩的20%,满分20分。
面向对象程序设计大作业参考题目及要求
面向对象程序设计大作业参考题目1、学生信息管理(1)问题描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:●系统以菜单方式工作●学生信息录入功能(学生信息用文件保存)---输入●学生信息浏览功能——输出●查询、排序功能——算法1、按学号查询2、按姓名查询●学生信息的删除与修改(可选项)(2)功能要求●界面简单明了;●有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;●最好用链表的方式实现。
(3)算法分析首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。
对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。
文件的读写操作大家参照书中的有关文件的章节。
2、学生综合测评系统每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。
考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。
A、学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。
提示:学生信息可先输入到数组中,排序后可写到文件中。
(2) 插入(修改)同学信息:提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3) 删除同学信息:提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。
C面向对象程序设计大作业
学号:《C++面向对象程序设计》大作业题目学院专业信息工程班级姓名王继文指导教师2015 年11 月15 日目录一大作业的目的 (1)二大作业的内容 (1)三大作业的要求与数据 (2)四大作业应完成的工作 (2)五总体设计(包含几大功能模块) (2)六详细设计(各功能模块的具体实现算法——流程图) (3)七调试分析(包含各模块的测试用例,及测试结果) (5)八总结 (18)九参考资料 (19)一大作业的目的《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。
二大作业的内容(1) 初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;(2) 各项目名次取法有如下几种:取前5名:第1名得分7,第2名得分5,第3名得分3,第4名得分2,第5名得分1;(3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。
(4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。
三大作业的要求与数据1、用C++语言实现系统;2、由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。
所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。
3、各项目名次取法有如下几种:取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1。
四大作业应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写大作业报告。
内容包括:1)封面扉页2)设计任务书3)目录4)总体设计方案(包括流程图)5)使用说明及运行实例(包括界面)6)成员设计内容简介7)项目源程序代码(注意注释的使用)8)指导教师评语五总体设计(包含几大功能模块)本文研究开发的运动会管理系统用于支持用于查询各个学校在运动会中的成绩。
面向对象程序设计》C实验报告
面向对象程序设计》C实验报告《面向对象程序设计》实验报告学院:专业:班级学号:姓名:学期:教师:实验一 C++基础练习院(系):课程名称:面向对象程序设计教师签名:实验目的和要求1.掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2.理解C++程序结构的特点。
3.熟悉C++程序基本的输入和输出操作。
4.掌握C++数据类型常量和变量以及修饰符的使用方法。
5.掌握函数定义、函数调用和函数说明的方法。
6.熟悉作用域运算符的功能和基本使用方法。
7.掌握C++内存的动态分配与释放方法。
8.理解引用的概念,掌握引用的使用方法。
实验内容和步骤1. 调试如下的代码并回答问题。
#include <iostream.h>void main(){//First c++ programchar name[10];cout<<"please input your name:";cin>>name;cout<<"welcome "<<name<<endl;}(1)C++的注释和C有何不同?答:C语言的注释有一种,用/*……….*/作为注释分界符号C++除保留了这种注释方式之外,还提供了一种更有效的注释方式,该注释以“//”开始,到行尾结束。
(2)C++的输入和输出所使用的函数及其相应头文件与C有何不同?答:在C中进行输入输出操作时,常使用函数scanf和printf。
C++除了可以照常使用这两个函数进行输入输出外,还增加了标准输入流对象cin和标准输出流对象cout来进行输入和输出。
Iostream是C++系统定义的一个头文件,在这个文件中声明了程序所需要的输入和输出操作的有关信息。
在C语言中头文件中用“.h”作为后缀,如stdio.h、math.h等。
2. 单步调试如下的代码并回答问题。
#include <iostream.h>inline int f(int x){ return 2*x*x+4*x+5; }inline double f(double x){ return 2*x*x+4*x+5; }void main(){ int x=5;double y=5.2;cout<<f(x)<<endl;cout<<f(y)<<endl;}(1)inline的含义和作用是什么?答:含义:在函数说明前冠以关键字“inline”,该函数就被声明为内联函数,每当程序中出现对该函数的调用时C++编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参取代形参。
梅洁 2016012318 面向对象程序设计作业
《面向对象程序设计》课程作业基于MFC的位图变换操作姓名:梅洁学号:2016012318年级:2016级专业:电子信息科学与技术2018年春季学期一.位图概述位图(Bitmap)是一种功能非常强大的图形对象,作为一种数字化的图像表达形式,实际上是一个像素值阵列,运用它可以建立和操作图像,并且可以把图像作为文件存储在磁盘上。
二.程序功能该程序为一个单文档的应用程序,程序启动后,单击“位图”菜单,出现下拉菜单:“水平右扫(R),水平左扫(L),百叶窗(B),雨滴效果(Y)”,如选择雨滴效果,则在当前客户区中显示产生雨滴效果的图像。
三.操作步骤第一部分:(1)创建基于单文档界面的MFC应用程序,项目名称为MyDraw,其余采取默认设置,如图1.1所示。
(2)为单文档添加一个菜单选项“位图(D)”,如图1.2所示,下拉菜单为“水平右扫(R),水平左扫(L),百叶窗(B),雨滴效果(Y)”属性设置如表1.1所示。
(3)打开资源视图,双击【Menu】中的主框架资源“IDR_MAINFRAME”,在系统菜单中添加“位图(D)”选项,再为“位图(D)”菜单添加下拉菜单“水平右扫(R),水平左扫(L),百叶窗(B),雨滴效果(Y)”结果如图1.3所示。
(4)双击每一个菜单项,对照表1.1修改ID,图1.4为“水平右扫”菜单属性。
图1.1新建项目MyDraw图1.2 添加菜单图1.3修改“水平右扫(R)”的ID第二部分:(1)首先,在CmyDrawView的类定义中添加变量,如下所示:public:CBitmap m_bitmap;int width;int height;CDC memdc;int showtype;(2)接着,在类CmyDrawView的类构造函数中添加如下代码,实现示例位图的载入,并初始位图的显示类型。
CMyDrawView::CMyDrawView(){HBITMAPhbitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"Sample.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);m_bitmap.Attach(hbitmap);BITMAP bm;m_bitmap.GetBitmap(&bm);width = bm.bmWidth;height = bm.bmHeight;showtype = 0;}(3)为了能够通过“位图(D)”菜单实现位图的各种操作,接着为“位图(D)”菜单中的4个下拉菜单项添加消息处理函数,对应关系如表1.2所示。
《面向对象程序设计》大作业要求和任务书范文
《面向对象程序设计》大作业要求和任务书一、目的和要求检验学生学习《面向对象程序设计》课程后的学习成果,对于软件程序设计主流方法和思想——面向对象程序设计方法和思想的牢固掌握和熟练应用是一个非常重要的检测,是后续实践课程得以顺利进行的必要保证,对学生的程序设计能力培养和软件工程能力的培养具有重要的作用和意义。
要求学生综合应用已学的相关知识,例如程序设计基本思想和方法、C++语言、面向对象程序设计思想和方法,通过对真实世界的模拟和抽象来解决一些比较简单的实际问题。
要求学生针对比较系统的题目进行编码、测试,并进行设计说明书的撰写,从而培养和锻炼学生初步的工程意识和做法。
加深对所学知识的理解和掌握,巩固课程学习的内容,培养学生掌握面向对象程序设计(OOP)的思想,锻炼其使用面向对象的程序设计思想分析和解决实际问题的能力,培养上机动手能力,培养文档报告书面表达和思辨的能力。
要求学生对自己学过的C++知识进行综合运用,要求要用到类的特性:即类的封装、类的抽象、继承和多态,编写一些小型的具有一定应用价值的程序,通过对真实世界的模拟和抽象来解决一些比较简单的实际问题;掌握在Visual C++集成开发环境下编辑、编译、链接和运行一个C++程序的基本方法。
二、任务内容参考后附的大作业题目,规定每位同学完成两道题目(第一个题目是计算机类,第二个题目从第2-4题中任选一题)。
针对所选题目完成如下具体任务:1. 问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?对功能进行说明;2. 类设计:综合考虑系统功能,对问题描述中涉及的操作对象定义相应的数据类型。
抽象数据类型的实现尽可能做到数据封装,充分运用继承、派生、多态等知识,给出用UML描述的类之间的关系图;3. 详细设计:给出各个主要模块的算法,并画出模块之间的调用关系图;要使得系统结构清晰、合理、简单和易于调试,写出主要函数的算法框架;4. 程序编码:把详细设计的结果进一步求精为程序设计语言程序。
C++面向对象程序设计大作业
C++面向对象程序设计大作业C++面向对象程序设计大作业利用虚函数实现多态:(1)设计Person类,要求具有用于表示姓名的保护数据成员:string szName;实现信息打印的公有成员函数:void Print()。
其中,Print函数设计为虚函数,输出的信息格式为:“Person 姓名”。
(2)从Person类派生Student类,添加用于表示学号的保护数据成员:int iNumber;重定义用于信息打印的公有成员函数:void Print()。
其中,Print函数输出的信息格式为:“Student 姓名学号”。
(3)从Person类派生Teacher类,添加用于表示教龄的保护数据成员:int iYear;重定义用于信息打印的公有成员函数:void Print()。
其中,Print函数输出的信息格式为:“Teacher 姓名教龄”。
(4)从Student类派生Graduate类,添加用于表示研究方向的保护数据成员:string szResearch;重定义用于信息打印的公有成员函数:void Print()。
其中,Print 函数输出的信息格式为:“Graduate 姓名研究方向”在main函数中根据用输入的整数动态创建一个Person类的对象指针数组。
用户依次输入对象信息(对象类别及其相应的数据成员值),根据对象类别动态创建相应的对象并赋给相应的对象指针数组元素。
全部录入后,根据用户输入要显示的对象信息在数组中的位置,调用Print函数在屏幕上打印出相应对象的信息。
如果用户输入“exit”,则退出。
输入:对象指针数组的长度;对象类型及对象信息(输入方式见输入样例);要显示的对象在数组中的位置;exit。
输出:用户要求显示的对象信息。
输入样例:4Person ZhangStudent Zhao 200905Graduate Li 200905 DataMiningTeacher Luo 102exit输出样例:Person ZhangGraduate Li 200905 DataMining程序:#include#include#includeusing namespace std;class Person{public:Person(const string& name);virtual void Print() const;protected:string szName;};Person::Person(const string& name):szName(name) {}void Person::Print() const{cout <<"Person "<< szName << endl;}class Student : public Person{public:Student(const string& name, int number);void Print() const;protected:int iNumber;};Student::Student(const string& name, int number):Person(name),iNumber(number) {}void Student::Print() const{cout <<"Student "<< szName <<""<< iNumber << endl;}class Teacher : public Person{public:Teacher(const string& name, int year);void Print() const;protected:int iYear;};Teacher::Teacher(const string& name, int year):Person(name),iYear(year){}void Teacher::Print() const{cout <<"Teacher "<< szName <<""<< iYear << endl;}class Graduate : public Student{public:Graduate(const string& name, int number, string major);void Print() const;protected:string szResearch;};Graduate::Graduate(const string& name, int number, string major):Student(name, number), szResearch(major){}void Graduate::Print() const{cout <<"Graduate "<< szName <<""<< iNumber <<""<< szResearch << endl; }int main(){// 对象指针数组长度int psNum;cin >> psNum;// 对象指针数组Person* *psArr = new Person*[psNum];// 对象类型、姓名、学号、教龄、研究方向string szType, szName, szMajor;int iNumber, iYear;// 根据输入的对象信息创建不同类型的对象for(int i=0; i<="" p="">{cin >> szType;if(szType == "Person"){cin >> szName;psArr[i] = new Person(szName) ;}else if(szType == "Student"){cin >> szName >> iNumber;psArr[i] = new Student(szName, iNumber);}else if(szType == "Teacher"){cin >> szName >> iYear;psArr[i] = new Teacher(szName, iYear);}else if(szType == "Graduate"){cin >> szName >> iNumber >> szMajor;psArr[i] = new Graduate(szName, iNumber, szMajor); }else{}}// 需要打印信息的对象下标string szIdx;int objIdx;cin >> szIdx;while(szIdx != "exit"){// 对象下标objIdx = atoi(szIdx.c_str());objIdx = max(0, min(objIdx, psNum)); // 输出对象信息psArr[objIdx]->Print();cin >> szIdx;}// 释放对象内存for(int i=0; i<="" p="">{if(psArr[i]) delete psArr[i];}// 释放对象指针数组delete[] psArr;return 0;}。
【免费下载】面向对象程序设计C综合练习学生版 含答案
第三章 类和对象
考核题型: (1)填空题 (2)选择题 (3)简答题(4)程序阅读题(5)程序设计题(其中,基础知识题占 70% 左右,中等难度的题占 20%左右,难题占 10%左右)
一、选择题 1. 在一个类的定义中,包含有( C )成员的定义。
A. 数据 B. 函数 C. 数据和函数 D. 数据或函数 2. 在类作用域中能够通过直接使用该类的( D )成员名进行访问。
x.abc()调用该成员函数后,x 的值( C )。
A. 已经被改变 B. 可能被改变
C. 不变
D. 受到函数调用的影响
19. 类中定义的成员默认为( B )访问属性。
A. public B. private C. protected D. friend
20. 结构中定义的成员默认为( A)访问属性。
A. x.a B. x.a() C. x->a D. x->a() 5. 假定 AA 为一个类,a 为该类公有的数据成员,px 为指向该类对象的一个指针,则访问 px 所指对象 中数据成员 a 的格式为(C )。
A. px(a) B. px[a] C. px->a D. px.a 6. 假定 AA 为一个类,a 为该类私有的数据成员,GetValue()为该类公有函数成员,它返回 a 的值,x 为 该类的一个对象,则访问 x 对象中数据成员 a 的格式为( D)。
C++面向对象 程序设计习题册
姓名 学号 学院 班级
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
吉林大学 2019-2020学年第一学期期末考试《面向对象程序设计》大作业答案
2019-2020学年第一学期期末考试《面向对象程序设计》大作业答案参考答案在后面学生姓名专业层次年级学号学习中心成绩年月日作业完成要求:大作业要求学生手写,提供手写文档的清晰扫描图片,并将图片添加到word 文档内,最终wod文档上传平台,不允许学生提交其他格式文件(如JPG,RAR等非word 文档格式),如有雷同、抄袭成绩按不及格处理。
一、名词解释(每小题2分,共20分)1、预处理2、宏3、文档4、视图5、控件6、全局变量7、局部变量8、对象9、派生10、继承二、简答题(每小题6分,共60分)1、简要说明Visual C++和C++的区别:2、C++程序与C程序文件扩展名有什么区别?3、简述计算机程序设计语言的发展历程。
4、“编程就是用开发工具写软件”,这种理解你怎么看。
5、C语言是一门面向过程的语言,那么C++是面向什么的语言?6、面向对象的程序设计,其一个重要特点就是“类”的封装,请问“类”中封装了什么?7、初始化一个整型数组,内容是1,2,3:8、简述C++的主要特点9、面向对象程序设计,其“对象”指什么?10、MFC作为一个Windows编程类库,它包含了200多个类,封装了Windows的大部分编程对象以及与它们有关的操作。
请简述采用MFC编程的优点。
三编程题(每小题10分,共20分)1、输入三个数并求和#include<iostream.h>void main(){cout<<”please enter the value of x,y,z: ”;——————————————————}2、编写一个函数,实现两个数的交换。
void f(int *a, int *b){————————————————————————}答案:一、名词解释(每小题2分,共20分)1、预处理答:程序设计领域中,预处理一般是指在程序源代码被翻译为目标代码的过程中,生成二进制代码之前的过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《面向对象程序设计》大作业项目名称基于C#的一款扫雷游戏班级组员一、开发环境开发环境:vs2010开发语言:C#二、系统功能设计1.创建项目功能实现创建项目,找图片素材2.界面设计介绍关于扫雷游戏界面的设计提出希望在对应级别(初级、中级、高级、自定义)的按钮的显示勾,以表示目前的游戏等级。
3.雷区绘制界面中雷区的绘制方法4.菜单操作有两个时候需要对它进行操作,一个是加载上次游戏设置的时候,一个是在游戏过程中进行设置的时候,设计菜单中的相关方法5.内部实现内部埋雷,放雷,标旗子,标问号的方法6.整体完善写游戏的胜利条件,自定义游戏的初始化及相关调试任务三、实现1、创建项目功能实现玩过扫雷的读者应该知道,扫雷需要用到三种图片素材——地雷、红旗、问号。
当右击一个方块的时候,会插上红旗,表示游戏者认为该方块内有地雷;再次右击该方块,会变成问号,表示不确定该方块内是否有地雷;第三次右击该方块,问号消失,恢复到初始的状态。
我们前往Iconfinder寻找合适的图标,并且通过Photoshop或者Illustrator的处理得到我们所需要的图标。
文章中含有下载地址的图标资源可以使用右键—目标另存为进行下载。
通过一定的搜索以及图片的处理,得到了下面一组素材图标,下载地址:Doubbt、Flag、Mine。
除了这些素材以外,我们还需要找一个图标,使得整个程序看上去更加正式一点,这里使用图标如下,注意程序图标的后缀为ico,下载地址:favicon接下来,我们打开Visual Studio 2013开始创建工程,界面如下:创建好的项目如下图所示。
我们需要对这个窗口的几项属性进行修改,首先通过Text属性将它的标题修改为“Minesweeper”;通过FormBorderStyle属性将它的大小设置为“FixedSingle”,即为不可调节窗口大小;通过MaximizeBox属性将它的最大化按钮设置为“False”,即最大化按钮失效;通过Name属性将它的名称修改为“Form_Main”,修改这个属性主要用于后面书写代码的方便;通过BackColor属性将它的背景修改为“White”。
如下图所示:我们可以顺便修改一下这个窗口的代码文件的名称。
在右上方找到解决方案资源管理器,右击Form_1.cs—重命名—Form_Main.cs,程序会自动将下面包含的文件名也都改成一致的名称。
如图所示:接下来我们需要修改一下程序的图标,将刚才下载的favicon文件放到Minesweeper/Minesweeper文件夹下,同时将三个图标资源放到Minesweeper/Minesweeper/Resources文件夹下(Resources文件夹需要自己新建),如下图所示:在属性栏中找到Icon属性,并且定位到favicon.ico文件,如下图所示:此时,我们按下快捷键Ctrl + S对整个工程进行保存,并且按下快捷键Ctrl + F5运行查看我们的程序,效果如下:2、界面设计这一节我们主要介绍关于扫雷游戏界面的设计,此处我们借鉴经典扫雷界面的设计方法,首先需要创建一个菜单栏。
具体方法在左边找到工具箱窗口,展开其中的菜单和工具栏,找到MenuStrip选项,如图所示:只需要双击该条目就可以在窗口中新建一个菜单栏,如图所示:对于这个控件(我们习惯上将窗口中的东西称作为控件),我们还是需要修改它的一些属性,对于个人习惯而言,我习惯于修改它的Name属性,这样编程的时候不至于将很多控件混淆。
我们将它的Name属性修改为“MenuStrip_Main”。
单击“请在此键入”,输入“Game(&G)”,其中&G整体会显示成G这个字母下面加一个下划线,这样在用户使用的时候就可以通过按下字母G来访问这个按键了。
(当然,顶层菜单还需要按下Alt键,例如Alt + G键。
)输入以后的界面如图所示:使用同样的方法,创建如下图所示的一个菜单栏:注意到,图中的分割线,只需要输入一个减号,即“–”,再按下回车键即可得到。
我们一次介绍一下各个选项的功能,以便读者对它们有一个基本的了解。
菜单一共有两组,一个为游戏(Game),一个为帮助(Help):其中游戏菜单下分别包含了新游戏(New Game)、初级(Beginner)、中级(Intermediate)、高级(Expert)、设置(Setting)、标记(Mark)、音效(Audio)、排行榜(Rank)、退出(Exit);而帮助菜单下仅包含关于(About)。
其中新游戏用来开始一场新的游戏;初级、中级、高级,用于选择不同的游戏难度;设置用于自定义扫雷区域的大小以及地雷的数目;标记用于设置是否启用红旗、问号这一类的标记;音效用于设置是否启用音效;排行榜用于对游戏时间进行排名(仅记录初级、中级、高级的结果,对于自定义游戏的结果不进行记录);退出用于退出游戏。
最后,关于用来显示游戏的一些关于信息。
对于初级、中级、高级、标记、音效这几个菜单,我们需要在它的前面显示它的状态,即是否被选中,如果选中了就会在它的前面出现一个勾,如果没有选中,则没有,这是我们以后需要实现的功能,在此先进行说明。
至此,我们的菜单栏就制作完成了。
接下来我们需要制作一个用来记录地雷数目以及用时的功能。
我们选择工具箱中容器的TableLayoutPanel,双击该项目,会在窗口中创建一个TableLayoutPanel控件。
同样我们先将它的Name属性修改为“TableLayoutPanel_Main”。
展开它的Size属性,将Height属性修改为48。
同时修改它的Dock属性,选择Bottom,如图所示:我们会发现它会自动吸附在底部,如果改成别的参数则会吸附在别的位置,这里我们设置为Bottom。
同时将RowCount属性设置为1,ColumnCount属性设置为9。
打开Columns属性对话框,按照下图进行修改:这里进行一些解释,其中Column1、Column3、Column5、Column7、Column9为中心对称的,用来设置边距,不放置任何控件,纯粹为了排版需要。
接下来我们需要在Column2、Column8中分别放置地雷(Mine_Show.png)以及秒表(Timer.png)的图标,表示剩余的地雷数目以及已用时长。
而Columns4、Columns6中分别放置用于显示地雷数目以及已用时长的文本。
下载地址:地雷、秒表。
在工具箱中展开公共控件,找到PictureBox,将它拖动到TableLayoutPanel 的第二个列中,同时将它的Name属性设置为“PictureBox_Mine”,Dock 属性设置为Fill(表示充满整个页面,此处的页面即TableLayoutPanel中Column2全部),BackgroundImage属性定位到Mine_Show.png文件(通过导入按钮),BackgroundImageLayout属性设置为Stretch(表示自动缩放图像大小)。
使用同样的方法加入一个PictureBox控件,将它放到Column8中,同时将Name属性设置为“PictureBox_Timer”,BackgroundImage属性定位到Timer.png文件,其余与PictureBox_Mine设置相同。
其中图片导入的方法如下图所示:接下来我们需要添加两个用于显示内容的Label控件,展开工具箱中的公共控件,找到Label控件,分别拖动到Column4和Column6,并且将Dock属性设置为Fill,TextAlign属性设置为MiddleCenter(使文字显示在控件中心),Font属性设置为“Consolas, 16.2pt”(即Consolas字体,字号三号)。
其Name属性及Text属性分别修改为“Label_Mine”和“Label_Timer”。
同时将它们的ForeColor属性分别设置为“DarkRed”和“HotTrack”(这项属性用于设置文字显示的颜色)。
至此界面已经基本完成了,但是我们还需要增加一个控件——Timer,用来计时。
展开工具箱中的组件,双击Timer。
这个控件不会在界面上显示,但是会在后台进行计时功能。
同样,我们将它的Name属性修改为“Timer_Main”,Interval属性修改为“1000”(这里为计时间隔,以毫秒为单位,此处为1000毫秒,即1秒计时一次)。
最后按下Ctrl + F5进行编译查看结果,相较于第一节中的界面已经有了很大的改观,如图所示:到这里或许读者会问,最为重要的扫雷区域怎么制作呢,关于这个区域,我们将会使用程序来生成,而不是使用控件。
我们将会在下一节中进行讲解。
3、雷区绘制这一节我们主要涉及界面中雷区的绘制方法。
首先来考虑几个问题。
为了保存整个雷区的信息,我们需要哪些数据。
显然,除了要保存雷区的宽度和高度(分别定义为宽和高方向上方块的个数)外,还需要保存地雷的数目。
这样我们需要用到三个变量nWidth, nHeight, nMineCnt分别保存雷区的宽度、雷区的高度以及地雷的数目。
右击窗口,选择查看代码,也可以使用快捷键F7,如下图所示:可以看到这样的代码界面:在图示位置添加下图所示的代码,用来定义扫雷区域的基本变量,它们的含义在上文或者注释中都有提及:为了方便设置这三个参数,我们可以定义一个新的函数SetGame,如下图所示:这样,我们就可以通过调用SetGame函数来设置游戏的参数了。
为了方便阅读,我们可以为这个函数加上一个注释,在函数名上方输入”///“,程序会自动生成一个注释块,如下图所示:输入相关信息,第二行的内容是用来对函数的作用进行说明,下面的三行分别用来对三个参数的作用进行说明,将它们修改如下:这样当我们输入这个函数的时候(当然,我们目前还不需要调用这个函数。
),就会显示出来对应的注释,如下图所示:到目前为止,我们的代码应该是这样的:接下来我们可以定义几个辅助函数,分别表示设置游戏参数为初级、中级、高级,如下图所示:在我们开始游戏的时候,我们希望它自动获取上次的游戏设置,如果这是第一次开始游戏,那么将游戏设置为初级。
我们先来看一下第一个需求,自动获取上次的游戏设置,这就意味着我们需要在上次游戏关闭的时候将上次的游戏设置保存下来。
保存到哪里呢,我们在这里采用Setting文件来保存这些数据。
工程创建的时候,系统会自动生成一个Setting文件。
因此我们不需要自己创建,只需要使用原有的Setting 文件即可。
在右方解决方案资源管理器面板中展开Properties,右击Settings.settings,选择打开即可。
打开后的界面如图所示:按照下图对它进行设置,设置完成后按Ctrl + S进行保存。