当前位置:文档之家› 面向对象与交互式程序设计

面向对象与交互式程序设计

面向对象与交互式程序设计
面向对象与交互式程序设计

面向对象与交互式程序设计相关资料题目甜品店职员及业务管理系统

学生姓名专业班级

指导教师

1.软件需求说明

2.概要设计说明

3.详细设计说明

4.实现与测试

5.总结

2017 年11月25日

目录

第1章软件需求说明 (3)

1.1系统背景 (3)

1.2功能需求 (3)

1.3界面需求 (3)

1.4安全需求 (4)

第2章概要设计说明 (5)

2.1运行环境 (5)

2.2需求概要 (5)

2.4限制描述 (5)

2.5总体设计 (5)

2.6系统数据结构设计 (5)

2.7系统出错处理设计 (6)

第3章详细设计说明 (7)

3.1开发所用技术 (7)

3.2程序描述 (7)

3.3数据库设计 (8)

第4章实现与测试 (9)

4.1 系统界面 (9)

4.2连接数据库代码 (14)

4.3 登录注册界面实现代码 (15)

4.4 数据库数据删改部分代码 (16)

4.5 HTML+CSS界面部分代码 (18)

4.6测试要点 (20)

注意:成绩考核表在最后一页 (21)

第1章软件需求说明

1.1系统背景

随着计算机技术、网络技术和信息技术的发展,现在办公系统更趋于系统化、科学化和网络化。网络办公自动化系统是计算机技术和网络迅速发展的一个办公应用解决方案,它的主要目的是实现信息交流和信息共性,提供协同工作的手段,提高办公的效率,让人们从繁琐的有纸办公中解脱出来。在全民创业的背景下,不少小公司,小商店纷纷涌现,并且在这个信息技术大发展的时代,大小用人单位都需要一套管理系统来提高管理效率,节约管理成本,本系统就是针对小甜品店的一个微型管理系统。

1.2功能需求

可以进行注册,分为两种角色,管理员和普通员工。管理员可登陆管理员信息页面,对管理员信息进行修改或者删除。同样管理员也可以登陆普通员工信息界面,对普通员工信息进行修改或者删除或者重置。普通员工只能浏览所有员工信息,不可对其进行修改。普通员工和管理员都可以登陆餐桌信息对其进行管理。管理员可登陆菜品信息和订单信息对其进行管理。

1.3界面需求

1.注册界面以及登陆界面

2.网站主页展示菜品

3.管理后台主界面

4.管理员信息界面

5.普通员工信息界面

6.菜品管理界面

7.订单信息管理界面

8.餐桌管理界面

1.4安全需求

1.必须注册才能登陆

2.必须登陆才能进去其他页面

3.普通员工不能访问管理员权限的页面

第2章概要设计说明

2.1运行环境

1.操作系统在windowsXP以上

2.客户端要配备tomcat和SQL等应用开发软件

2.2需求概要

用户对软件系统要求使用简单方便,必要的功能一定不能少,且界面设计要大方得体,有良好的视觉效果,待现在系统没实现功能要记录清楚,系统最后阶段要尽量弥补用户所需的功能。

2.4限制描述

设计应当是模块化的,即该软件应当从逻辑上被划分成多个部件,分别实现各种特定功能和子功能。

设计最终应当给出具体的模块(例如子程序或过程),这些模块就具有独立的功能特性。

2.5总体设计

登录模块:用户输入帐号和密码进行验证登录。

注册模块:注册用户信息。

管理员信息模块:对管理员信息进行管理。

普通员工信息模块:对普通员工信息进行管理。

菜品模块:对菜品进行管理。

订单模块:对订单进行管理。

餐桌信息模块:对餐桌信息进行管理。

2.6系统数据结构设计

2.7系统出错处理设计

某个页面出问题,跳转到错误页面,并退回到登陆界面。

第3章详细设计说明

3.1开发所用技术

前端:bootstrap框架html jsp css

后端:servlet

服务器:tomcat

数据库:mysql

3.2程序描述

1.登录模块

功能:可供用户登陆到管理系统。

输入项目:用户名和用户密码。

输出项目:管理系统欢迎页面。

2.注册模块

功能:供用户进行注册,提供注册页面。

输入项目:注册相关信息,与数据库中字段一一对应。

输出项目:注册成功界面。

3.管理员信息模块

功能:可以查询/修改/删除/重置有关已经注册的管理员的信息。

输入项目:管理员工号/姓名/年龄/性别。

输出项目:查询结果界面。

4.普通员工信息模块

功能:可以查询/修改/删除/重置有关已经注册的普通员工的信息。

输入项目:员工工号/姓名/性别/年龄。

输出项目:查询结果界面。

5.菜品模块

功能:可供管理员对菜品进行上架/下架/价格/数量修改等管理操作。

输入项目:菜品的相关信息,与数据库中菜品字段一一对应。

输出项目:菜品查询结果页面。

6.订单模块

功能:可供管理员对订单进行管理操作。

输入项目:订单相关信息与数据库中一一对应。

输出项目:订单查询结果页面。

7.餐桌信息模块

功能:可供管理员或普通员工对餐桌信息进行查询以及修改。

输入项目:餐桌相关信息,与数据库中一一对应。

输出项目:餐桌信息查询结果。

3.3数据库设计

第4章实现与测试

4.1 系统界面

首页

=======================================

点击“Login in”进入登录/注册界面

================================================= 登录

管理员登录

===============================

注册界面

============================================ 登陆成功后界面

在此界面可以浏览“今日推荐”,查看热门甜品或新品

============================================

点击“管理员信息”

============================================== 可以修改管理员信息

点击“EDIT”进行编辑修改

点击“SAVE”,保存,即修改成功

点击“CANCEL”,取消,即取消修改,保持原状

============================================

点击“DELETE”,删除信息

弹出对话框:

点击“确定”,删除信息

点击“取消”,不删除

==================================================== 点击“RESET”,重置管理员密码

弹出对话框:

点击“确定”,重置密码

点击“取消”,取消重置

=====================================================

返回登陆后首页

点击“员工信息管理”

======================================================== 在此界面仍可修改店内员工信息

点击“EDIT”进行编辑修改

点击“SAVE”,保存,即修改成功

点击“CANCEL”,取消,即取消修改,保持原状

========================================================

点击“DELETE”,删除信息

弹出对话框:

点击“确定”,删除信息

点击“取消”,不删除

====================================================

返回登陆后界面,进行其他操作。。。。

========================================================

4.2连接数据库代码

package com.leadingsoft.demo.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import com.mysql.jdbc.Driver;

public class DbUtil {

private static final String URL = "jdbc:mysql://localhost:3306/cake";

private static final String USER_NAME = "root";

private static final String PASSWORD = "123456";

private Connection conn;

public Connection getConnection() {

try {

DriverManager.registerDriver(new Driver());

this.conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return conn;

}

public void closeConnection() {

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

=======================================================

4.3 登录注册界面实现代码

package com.leadingsoft.demo;

import java.io.IOException;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.leadingsoft.demo.service.LoginService;

/**

* Servlet implementation class Login

*/

@WebServlet("/Login")

public class Login extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse

* response)

*/

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String userName = request.getParameter("userName");

String password = request.getParameter("password");

LoginService loginService = new LoginService();

int result = loginService.validate(userName, password);

if (result < 3) {

request.setAttribute("error", "用户名或密码错误!");

RequestDispatcher rd = request.getRequestDispatcher("login.jsp");

rd.forward(request, response);

} else {

request.getSession().setAttribute("flag", "1");

RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/jsp/main.jsp");

rd.forward(request, response);

}

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response)

*/

@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

}

==================================================

4.4 数据库数据删改部分代码

package com.leadingsoft.demo.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import https://www.doczj.com/doc/4b1606930.html,er;

import com.leadingsoft.demo.util.DbUtil;

public class UserDao {

public User searchUser(String name) {

DbUtil util = new DbUtil();

Connection con = util.getConnection();

User user = null;

try {

PreparedStatement pstmt = con.prepareStatement("SELECT * FROM users WHERE user_name=?");

pstmt.setString(1, name);

ResultSet rs = pstmt.executeQuery();

if (rs.next()) {

user = new User(rs.getString("user_name"), rs.getString("user_password"), rs.getString("sex"),

rs.getInt("age"));

}

rs.close();

pstmt.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

util.closeConnection();

}

return user;

}

public List searchAll() {

List users = new ArrayList();

DbUtil util = new DbUtil();

Connection con = util.getConnection();

try {

PreparedStatement pstmt = con.prepareStatement("SELECT * FROM users");

ResultSet rs = pstmt.executeQuery();

while (rs.next()) {

User user = new User(rs.getString("user_name"), rs.getString("user_password"), rs.getString("sex"),

rs.getInt("age"));

users.add(user);

}

rs.close();

pstmt.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

util.closeConnection();

}

return users;

}

public boolean deleteUser(String userName) {

DbUtil util = new DbUtil();

Connection con = util.getConnection();

int result = 0;

try {

PreparedStatement pstmt = con.prepareStatement("DELETE FROM users WHERE user_name=?");

pstmt.setString(1, userName);

result = pstmt.executeUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

util.closeConnection();

}

return result > 0;

}

====================================================

4.5 HTML+CSS界面部分代码

4.6测试要点

测试工件为四个阶段:单元测试、组装测试、确认测试、系统测试。

单元测试:采用白盒法和黑盒法相结合的方法,对于逻辑结构复杂的模块采用白盒法,对于以输入、输出为主的模块采用黑盒法测试,以提

高测试的效率。

组装测试:自底向上的增式测试。

确认测试:由用户参与按需求规格说明书验收。

系统测试:采用人工测试方法。

(1)

系统环境模块测本测试是为了检测系统环境模块,数据连接是否正确,数据能否正确,并进行仔细核对。

(2)

基本信息测试基本信息模块是本系统的一个重要模块,本模块能否正确运行关系到系统设计成败的关键,所以有必要专门对这个之模块进行严格的测试。以弥补设计过程中的不足。及早发现和修改问题。

(3)

查询模块的测试所有的数据库管理软件设计的目的之一都是为了人们提供快捷方便的数据查询功能,查询设计的是否合理和正确是系统的又一关键之所在。

最新国家开放大学电大本科《面向对象程序设计》期末题库及答案

最新国家开放大学电大本科《面向对象程序设计》期末题库及答案 考试说明:本人针对该科精心汇总了历年题库及答案,形成一个完整的题库,并且每年都在更新。该题库对考生的复习、作业和考试起着非常重要的作用,会给您节省大量的时间。做考题时,利用本文档中的查找工具,把考题中的关键字输到查找工具的查找内容框内,就可迅速查找到该题答案。本文库还有其他网核及教学考一体化答案,敬请查看。 《面向对象程序设计》题库及答案一 一、单项选择题(每小题2分,共20分) 1.设x和y均为bool量,则x||y为假的条件是( )。 A.它们均为真 B.其中一个为真C.它们均为假 D.其中一个为假 2.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}}”,则元素a[1][2] 的值为( )。 A.2 B.4 C.6 D.8 3.假定P是具有int* *类型的指针变量,则给P赋值的正确语句为( )。 A.p=new int B.p=new int* C.p=new int** D.p=new int[10] 4.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进 行相应的软件更新的难易程度叫做软件的( )。 A.可维护性 B.可复用性 C.兼容性 D.正确性 5.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在函数原型或函数头的前面。‘ A.in B.inline C.inLine D.InLiner . 6.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为( )。 A.1ength+1 B first+length C.(first+1ength—1)%MS D.(first+length)%MS 7.假定一个类的构造函数为“A(int aa,int bb){a=aa;b=aa*bb;)”,则执行“A x(4, 5);”语句后,X.a和x.b的值分别为( )。

面向对象程序设计教程 (马石安版)

第1章习题答案 名词解释 抽象:抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,而强调与当前目标有关的本质特征,从而找出事物的共性,并把具有共性的事物划为一类。面向对象方法中的抽象,是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 封装:面向对象方法中的封装就是把将抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息:消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 填空题 (1) 面向过程的结构化程序设计方法面向对象程序设计方法 (2) 顺序选择循环 (3) 程序=数据结构+算法程序=对象+消息 (4) 过程类 (5) 抽象性封装性继承性多态性 选择题 (1) B (2) C (3) D (4) C (5) D (6) A (7) A (8) B C (9) A D 判断题 (1) t (2) f (3) f (4)f (5) t (6) f (7) f (8) t 简答题 (1) 结构化程序设计方法着眼于系统要实现的功能,从系统的输入和输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。首先是数据安全性问题,由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。其次是可维护性及可重用性差,它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。每一种相对于老问题的新方法都要带来额外的开销。另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。 (2) 面向对象的程序设计方法中,将程序设计为一组相互协作的对象(Object)而不是一组相互协作的函数。在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。对象之间存在各种联系,它们之间通过消息进行通信。程序可表示为: 程序=对象+消息 在面向对象程序设计中,它着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计,来完成实体的建模任务。类通过一个简单的外部接口,与外界发生关系。一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。不必预先确定消息产生的顺序,更符合客观世界的实际。并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

2019电大面向对象程序设计期末复习题4及参考答案(经典复习考试题)

A. 作为友元函数重载的 1元运算符 B. 作为成员函数重载的 1元运算符 C. 作为友元函数重载的 2 _____ 不允许 _____ 向*this 或 2 .设x 和y 均为bool 量,则x && y 为真的条件是(A ) 它们均为假 D. 其中一个为假 3.在下面的二维数组定义中,正确的语句是 (C ) a[][3]={{1,3,5},{2}}; D. i nt a[](10); 4.在文件包含命令中,被包含文件的扩展名( C )o D.必须是.cpp 5.要使语句"p=new int[10][20]; "正确,p 应事先定义为( A. 它们均为真 B. 其中一个为真 C. A. i nt a[5][]; B. i nt a[][5]; C. i nt A. 必须是.h B. 不能是.h C. 可以是.h 或.cpp D )o A. i nt *p; B. i nt **p; C. i nt *p[20]; D. i nt (*p )[20]; 6. 在关键字public 后面定义的成员为该类的( B )成员。 A. 私有 B. 公用 C. 保护 D. 任 何 元运算符 D. 作为成员函数重载的 2元运算符 1. 当执行cout 语句输岀endl 数据项时,将使C++显示输岀屏幕上的光标从当前位置移动到 _____________ 下一行 ______ 的开始位置 2. 假定x 和y 为整型,其值分别为 16和5,贝U x/y 和double (x )/y 的值分别为 _____ 3 ______和 _______ 3.2 __ 。 3. strlen( ” apple ”)的值为 _______ 5 _____ 4. C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和 ______ 代码 ________ 区 5?假定a 是一个一维指针数组,则 a+i 所指对象的地址比 a 大 —4 * i ______ 字节。 6. 如果一个派生类只有一个唯一的基类,则这样的继承关系称为 ______ 单继承 ______ o 7. 假定AA 是一个类,“ AA* abc ()c on st;"是该类中一个成员函数的原型,在该函数体中 其成员赋值。 8 ?假定用户没有给一个名为 AB 的类定义构造函数,则系统为其定义的构造函数为 ___________ AB () {} _____ o 9?假定用户为类 AB 定义了一个构造函数 "AB (i nt aa ) {a=aa;}" ,该构造函数实现对数据成员 _________ a ____ 的初始化 10.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有 ____ 2 ____ 个操作数。 三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面 (每小题5分,共 20分) 1. 打印岀2至99之间的所有素数(即不能被任何数整除的数 )。 #in clude #in clude void mai n() { int i,n; lik 7. 假定AA 为一 个类, a 为该类私有的数据成员, 若要在该类的一个成员函数中访问它, 则书写格式最好为 (A ) o A a B. AA::a C. a() D. AA::a() 8. 队列具有( A ) 的操作特性。 A. 先进先岀 B. 先进后岀 C. 进岀无序 D. 仅进不岀 9. 假定AB 为一 个类, 则执行” AB a, b(3), *p; ”语句时共调用该类构造函数的次数为 (D )次。 A. 5 B. 4 C. 3 D. 2 10.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( B )

C++面向对象程序设计教程第版—陈维兴林小茶课后习题答案

C++面向对象程序设计教程课后题答案 1.1 什么是面向对象程序设计? 面向对象程序设计是一种新的程序设计范型.这种范型的主要特征是: 1.3 现实世界中的对象有哪些特征?请举例说明。 现实世界中的对象具有以下特征: 1) 每一个对象必须有一个名字以区别于其他对象; 2) 用属性来描述对象的某些特征; 3) 有一组操作,每组操作决定对象的一种行为;

4) 对象的行为可以分为两类:一类是作用于自身的行为,另一类是作用于其他对象的行为。 例如一个教师是一个对象。每个教师对象有自己的名字来和别的教师区别。教师具有编号,姓名,年龄,职称,专业等属性。教师拥有走路,吃饭,授课等行为操作。走路,吃饭是作用于自身的行为,授课是作用于其他对象的行为。 1.4 什么是消息?消息具有什么性质? 操作。人们在使用洗衣机的时候只需要按下对应的按钮,而不用关心具体的内部实现。这就是封装。 1.6 什么是继承?请举例说明。 继承就是允许派生类使用基类的数据和操作,同时,派生类还可以增加新的操作和数据。

例如:哺乳动物是一种热血、有毛发、用奶哺育幼崽的动物;狗是有犬牙、食肉、特定的骨骼结构、群居的哺乳动物。狗就继承了哺乳动物。 1.7 若类之间具有继承关系,则他们之间具有什么特征? 若类之间具有继承关系,则他们之间具有下列几个特征: 1) 类间具有共享特征(包括数据和操作代码的共享); 1.10 面向对象程序设计的主要优点是什么? 1.可提高程序的重用性; 2.可控制程序的复杂性; 3.可改善程序的可维护性; 4.能够更好地支持大型程序设计; 5.增强了计算机处理信息的范围; 能够很好地适应新的硬件环境。

《面向对象程序设计》期末考核试题样例及解答

《面向对象程序设计》期末考核试题样例及解答 一、单项选择(每小题1分,12小题,共12分) 1. C++源程序文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. lik 2. x>0 || y==5的相反表达式为()。 A. x<=0 || y!=5 B. x<=0 && y!=5 C. x>0 || y!=5 D. x>0 && y==5 3. 在下面的字符数组定义中,有语法错误的是( )。 A. char a[20]=“abcdefg”; B. char a[]=“x+y=55.”; C. char a[15]; D. char a[10]=’5’; 4. 以下正确的函数原型语句是( )。 A. double fun(int x,int y) B. double fun(int x;int y) C. double fun(int,int); D. double fun(int x,y); 5. 在下面存储类中,()的对象不是局部变量。 A. 外部静态类 B. 自动类 C. 函数形参 D. 寄存器类 6. 假定有“struct BOOK{char title[40]; float price;}; BOOK *book=new BOOK;”,则正确的语句是()。 A. strcpy(book->title,”Wang Tao”); B. strcpy(book.title,”Wang Tao”); C. strcpy(*book.title,”Wang Tao”); D. strcpy((*book)->title,”Wang Tao”); 7. 软件产品所具有的全部或部分地再用于新的应用的能力称为该软件的()。 A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性 8. 在多文件结构的程序中,通常把含有main()函数的文件称为()。 A. 主文件 B. 实现文件 C. 程序文件 D. 头文件 9. 在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针 域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队为空,则进行插入时必须把新结点的地址赋给( )。 A. elemHead B. elemTail C. elemHead和elemTail D. elemHead或elemTail 10. 假定AB为一个类,则执行“AB a, b(2), c[3], *p=&a;”语句时共调用该类无参构 造函数的次数为( )。 A. 5 B. 6 C. 3 D. 4 11. 引入友元的主要目的是为了()。 A. 增强数据安全性 B. 提高程序的可靠性 C. 提高程序的效率和灵活性 D. 保证类的封装性 12. 如果是类B在类A的基础上构造,那么,就称()。 A. 类A为基类或父类,类B为超类或子类 B. 类A为基类、父类或超类,类B为派生类或子类 C. 类A为派生类,类B为基类 D. 类A为派生类或子类,类B为基类、父类或超类 二、填空(每空1分,15小题,共18分)

面向对象程序设计教程答案

面向对象程序设计教程(C++语言描述)题解与课程设计指导 第1章 面向对象程序设计概论 一、名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 二、填空题 (1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。 (2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。

(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。 (5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、选择题(至少选一个,可以多选) (1)面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 (2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做(C )。 A. 抽象 B. 继承 C. 封装 D. 多态 (3)在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 (4)面向对象程序设计中,对象与对象之间的通信机制是(C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与C语言的关系的描述中,(D )是错误的。 A. C语言是C++的一个子集 B. C语言与C++是兼容的 C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的 【结果分析】 C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。 (6)面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。

面向对象程序设计单元复习指导及解答(4)

2011春面向对象程序设计单元复习指导(4) 一、填空题: 1. 设px是指向一个类对象的指针变量,则执行“delete px;”语句时,将自动调用该类的( )。 A. 无参构造函数 B. 带参构造函数 C. 析构函数 D. 拷贝构造函数 2. 假定AB为一个类,则执行“AB a[10];”语句时调用该类无参构造函数的次数为( )。 A. 0 B. 1 C. 9 D. 10 3. 假定AB为一个类,则执行“AB a(2), b[3], *p[4];”语句时共调用该类构造函数的次数为( )。 A. 3 B. 4 C. 5 D. 9 4. 假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete []px;”语句时共调用该类析构函数的次数为( )。 A. 0 B. 1 C. n D. n+1 5. 对类中引用成员的初始化是通过构造函数中给出的( )实现的。 A. 函数体 B. 参数表 C. 初始化表 D. 初始化表或函数体 6. 一个类的静态数据成员所表示属性 ( )。 A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性 D. 类和友元的属性 7. 被非静态成员函数访问的类的数据成员( )。 A. 可以是非静态数据成员或静态数据成员 B. 不可能是类的静态数据成员 C. 只能是类的非静态数据成员 D. 只能是类的静态数据成员 8. 引入友元的主要目的是为了()。 A. 增强数据安全性 B. 提高程序的可靠性 C. 提高程序的效率和灵活性 D. 保证类的封装性 9. 在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。 A. 作为友元函数重载的1元运算符 B. 作为成员函数重载的1元运算符 C. 作为友元函数重载的2元运算符 D. 作为成员函数重载的2元运算符 10. 如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()。 A. a.operator+(b) B. b.operator+(a) C. operator+(a,b) D. operator(a+b) 11.如果表达式a++中的“++”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为()。 A. a.operator++() B. operator++(a) C. operator++(a,1) D. operator++(1,a) 12. 一个程序中数组a和变量k定义为“int a[5][10],k;”,且程序中包含有语句“a(2,5)=++k*3;”,则此语句中肯定属于重载操作符的是()。 A. ( ) B. = C. ++ D. * 13. 下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是()。 A. Value operator+(Value, Value); B. Value operator+(Value,int); C. Value &operator+(Value, Value); D. Value &operator+(Value&, Value&); 14. 关于插入运算符<<的重载,下列说法不正确的是()。 A. 运算符函数的返回值类型是ostream & 。 B. 重载的运算符必须定义为类的成员函数。 C. 运算符函数的第一个参数的类型是ostream & 。 D. 运算符函数有两个参数。 15. C++的继承性允许派生类继承基类的()。 A. 部分特性,并允许增加新的特性或重定义基类的特性 B. 部分特性,但不允许增加新的特性或重定义基类的特性 C. 所有特性,并允许增加新的特性或重定义基类的特性 D. 所有特性,但不允许增加新的特性或重定义基类的特性 二、填空题 1. 当一个队列为满时,不能对其做________元素的操作。 2.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,当链队非空时,_____________指向队首结点的后继(即下一个)结点。 3. 在一个用链表实现的队列类中,若链队为空或只含有一个结点,则队首指针的值与队尾指针的值________。 4.一个类的__________函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。

面向对象程序设计教程答案

面向对象程序设计教程(C++吾言描述)题解与课程设计指导 面向对象程序设计概论 一、 名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公 共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的 单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对 象要求另一个对象实施某种操作的一个请求。 二、 填空题 ( 1) 目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种 重要的程序设计方法。 (2) 结构化程序设计方法中的模块由顺序、选择和循环 3 种基本结构组成。 ( 3) 在结构化程序设计方法中,程序可表示为程序 =数据结构 +算法; 而面向 对象的程序设计方法,程序可表示为程序 =对象 +消息。 ( 4) 结构化程序设计方法中的基本模块是过程; 而面向对象程序设计方法 中的基本模块是类。 ( 5) 面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、 选择题(至少选一个,可以多选) ( 1) 面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 ( 2) 面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制 叫做( C )。 A. 抽象 B. 继承 C. 封装 D. 多态 ( 3) 在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 ( 4) 面向对象程序设计中,对象与对象之间的通信机制是( C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与 C 语言的关系的描述中,(D )是错误的。 A. C 语言是C++勺一个子集 B. C 语言与C++是兼容的 C. C++对C 语言进行了一些改进 D. C++和C 语言都是面向对象的 【结果分析】 C 语言是面向过程的。C++吾言是一种经过改进的更为优化的 C 语言,是一种混 合型语言,既面向过程也面向对象。 ( 6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依 存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象 第1

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

(2020年更新)电大《程序设计基础》机考网考纸考题库和答案

最新电大《程序设计基础》机考网考纸考题库及答案 本人针对该科目汇总了该科所有的题,形成一个完整的题库,并且每年都在更新。该题库对考生的复习、作业和考试起着非常重要的作用,会给您节省大量的时间。做考题时,利用本文档中的查找工具,把考题中的关键字输到查找工具的查找内容框内,就可迅速查找到该题答案。 题库一 一填空题 1.世界公认的第一台通用电子数字计算机是美国宾夕法尼亚大学莫尔学院的莫奇利和埃克特领导的科研小组建造的,取 名为ENLAC。 2.第一代电子计算机(1946—1958)采用的基本逻辑元件是电子管。第二代电子计算机(1958~1964)采用的是基本 逻辑元件是晶体管。第三代电子计算机(1964~1974)采用的基本逻辑元件是半导体中小规模集成电路。第四代电子计算机(1974年以后)采用的基本元件是大规模集成电路。 3.世界上最早的高级程序程序语言是FORTRAN。 4.计算机按照工作原理进行分类可以分为数字计算机,和模拟计算机。 5.当前计算机的最基本原理采用的是,冯`诺依曼的“存储程序原理”。 6.计算机存储器一般分为两级,它们是主存储器,和外存储器。 7.计算机系统中的软件包括,所有程序和相关的文档。 8.计算机硬件通常由5大功能部件组成,它们是:存储器,运算器,控制器,输入设备和输出设备。 9.计算机语言有3种类型,它们是:机器语言,汇编语言和高级语言。 10.高级语言源程序的翻译有两种方式,一种是解释方式,另一种是编译方式。 11.微机中常用的高级语言主要有3类:它们是:面向过程的程序设计语言,面向问题的程序设计语言和面向对象的程序 设计语言。 12.程序设计过程的3个阶段是编程阶段,编译阶段和执行阶段。 13.最基本的程序控制有三种,它们是顺序执行,分支控制和循环控制。 14.C语言中分支语言是if 语句和switch 语句。 15.C语言中循环语言是while 语句,for 语句和do—while语句。 16.C语言中自增运算符是++ ,求余数的运算符号是% 。 17.C语言中要改变循环语句的流程可以使用语句break , continue 和go to . 18.数据的逻辑结构是指数据元素之间的逻辑关系,与数据的存储无关,它独立于计算机,如用户在电话号码表中的先 后次序关系;数据的存储结构是指数据元素在计算机存储设备中的存储方式。 19.数据的存储结构可以用顺序存贮方式和链式存贮方式。 20.数据的逻辑结构可分为线性结构,和非线性结构两大类。

《面向对象程序设计》教学大纲资料

面向对象程序设计教学大纲西北民族大学数学与计算机科学学院 制定的时间:二〇一二年五月

面向对象程序设计教学大纲 一、课程基本资料 主讲教师:曹永春、蔡正琦、顿毅杰 主教材:《C++面向对象程序设计》中国铁道出版社,陈维兴、林小茶编著,第2版,2009 辅助教材: 1.《C++编程思想》机械工业出版社,美Bruce Eckel,Chuck Alliso著,刘宗田,袁兆山,潘秋菱等译; 第1版,2011年 2. 《C++程序设计教程》机械工业出版社,美H.M.Deitel P.J.deitel 薛万鹏等译,2000年 3.《C++程序设计语言》,机械工业出版社,美Bjarne Stroustrup 著,裘宗燕译,2005年 4.《C++面向对象程序设计习题解析与上机指导》清华大学出版社,陈维兴主编,第2版,2009年 实验教材及参考书: 同上 课程性质:学科选修课 学分:4分 课时:72学时,其中理论课54学时,上机实验18学时 先修课程:计算机导论、C语言程序设计 课程结构:多媒体教学,课堂讨论、课内实验、课后作业 评价方案:(考核依据、评分的办法、权重的分布) ?平时成绩:10% 课堂表现(课堂提问、考勤、作业等) ?实验成绩:20%(实验报告、实验考试)

?期中成绩:20%(闭卷考试) .期末成绩:50%(闭卷考试) 参考书目: 名称编著者出版社出版年月《C++编程思想》刘宗田,袁兆山,潘 机械工业出版社2011年 秋菱等译 机械工业出版社2000年 《C++程序设计教程》H.M.Deitel, P.J.deitel 著,薛万鹏等译 《C++程序设计语言》Bjarne Stroustrup 机械工业出版社2005年 著,裘宗燕译 陈维兴主编清华大学出版社2009年 《C++面向对象程序设计 习题解析与上机指导》 推荐刊物: 1、《计算机学报》 2.《软件学报》 3.《程序员杂志》 4.《码农周刊》 5.《快乐码农》 相关网站: 1. 中国计算机学会https://www.doczj.com/doc/4b1606930.html,/sites/ccf/ 2. 计算机爱好者协会https://www.doczj.com/doc/4b1606930.html,/forum.php 3.C语言中文网https://www.doczj.com/doc/4b1606930.html,/cpp 5.中国悠悠期刊网https://www.doczj.com/doc/4b1606930.html,/ 6. 中国知网https://www.doczj.com/doc/4b1606930.html,/ 文献 1.谭浩强.C程序设计.第4版.北京:清华大学出版社,2010

面向对象程序设计基本概念

面向对象程序设计基本概念 面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。 类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。 消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。 面向对象主要特征: 封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。 继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。 多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

2016年电大面向对象程序设计技术-作业题

2015秋季学期计算机科学与技术本科 《面向对象程序设计技术》作业题 (在电大在线该课程讨论区跟帖提交,注明姓名和学号以记录成绩)选择题 1.可以在本类及派生类的成员函数中进行访问的访问控制修饰符是(B) A.private B.protected C.public 2.在IDE中将编程项目采用多文件结构下,类的定义一般放在(A) A.头文件 B.程序文件 C.主程序文件 3.内联成员函数在类外定义时要将其和类定义一起放在(A) A.头文件 B.程序文件 C.主程序文件 4.下面哪个内存区域是C++中的运行时动态内存分配区域?( D ) A.代码区 B.栈区 C.数据区 D.堆区 5.对象作为函数参数使用时,一般使用(A)形式 A.引用 B.指针 C.对象拷贝

6.同类的多个不同对象的数据成员值各有不同,但不同对象可以共享类的成员函数代码, 实际调用成员函数时,是通过(B )来区分不同对象的。 A.显式给出不同对象不同地址 B.隐含的this指针 C.引用 7.下面哪一种情况不会自动调用拷贝构造函数。(E) A.用一个对象初始化另一个对象时 B.当一个对象作为值传递给一个函数时 C.当一个对象作为值从一个函数返回之前,该对象被拷贝到栈区 D.函数调用结束后,栈区中的返回对象拷贝给主调程序的对象 E.建立指向对象的指针并初始化指针值时 8.下列哪些对象的数据成员类型可以不用初始化表的方式进行初始化(D) A.常量数据成员 B.引用数据成员 C.类中对象成员 D.一般数据成员 9.下列哪一种类设计一般无需在类中设计静态数据成员以使建立的多个对象共享静态数 据数据成员。( D ) A.一个链表类的头指针和尾指针 B.一个学生类中用于保存建立了多少个学生对象的计数器 C.银行帐号类中的年利率 D.一般只用于建立一个对象的类 10.一个类中的公有(public)性质的静态数据成员,以下哪一种访问方式是错误的(D) A.对象名.静态数据成员名 B.指向对象的指针—>静态数据成员名 C.类名::静态数据成员名 D.类名.静态数据成员名 11.下列哪一个运算符不能够被类所重载(E) A.“.”成员访问运算符 B.“*”成员指针访问运算符 C.“::”域运算符 D.“?:”条件运算符 E.“=”赋值运算符

面向对象程序设计实验

实验一C++ 基础 1.1 实验目的 1.了解并熟悉开发环境,学会调试程序; 2.熟悉 C++ 中简单的标准输入输出函数的使用方法; 3.理解 const 修饰符的作用并学会应用; 4.理解内联函数的优缺点并学会其使用场合; 5.理解并学会函数重载; 6.理解并熟练掌握使用 new 和 delete 来分配内存; 7.理解并熟练掌握引用的使用方法。 1.2 实验内容 1.2.1 程序阅读 1.理解下面的程序并运行,然后回答问题。 #include int max_def(int x, int y) { return (x>y?x:y); } int max_def(int x, int y, int z) { int temp = 0; return (temp=(x>y?x:y))>z?temp:z; } double max_def(double x, double y) { return (x>y?x:y); } int main()

int x1 = 0; int x2 = 0; double di = 0.0; double d2 = 0.0; x1 = max_def(5,6); x2 = max_def(2,3,4); di = max_def(2.1,5.6); d2 = max_def(12.3,3.4,7.8); -------------------------------- cout

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