User类 新增共有属性Current ID
一、题目描述
每个用户有用户编号(id),用户名(name),密码(passwd)三个属性。其中:
- 用户编号(id)由系统自动顺序编号,用户名和密码都是字母、数字、符合的组合,新用户密码,默认“111111”。
- User类所有对象有一个共有属性Current ID,用来记录当前已经被使用的最大id号(初始值999)。每当新增一个用户时,CurrentID的值加1,同时将这个值作为新用户的id号。
二、解答内容
//user.h
#ifndef HEADER_U
#define HEADER_U
#include<string>
#include<iostream>
using namespace std; //User类声明
class User {
public:
void setInfo(string name0, string passwd0 = "", int id0 = );//支持设置用户信息
void changePasswd(); //支持修改密码
void printInfo(); //支持打印用户信息
User(){} //默认构造函数
User(const User &v); //复制最新用户信息
private:
int id;
static int CurrentID;
string name;
string passwd;
};
int User::CurrentID = ; //静态成员初始化 void User::setInfo(string name0, string passwd0, int id0) {
id = ++CurrentID;
name = name0;
passwd = passwd0;
} void User::changePasswd() {
string passwd1, passwdN;
int n = ;
cout << "Enter the old passwd:";
cin >> passwd1;
while (n <= ) {
if ( passwd == passwd1) {
cout << "Enter the new passwd:";
cin >> passwdN;
break;
}
else if (n < && (passwd != passwd1)) {
cout << "passwd input error,Please re-Enter again:";
cin >> passwd1;
n++;
}
else if (n == && (passwd != passwd1)) {
cout << "Please try after a while." << endl;
break;
}
}
} void User::printInfo() {
cout << "CurrentID:\t" << CurrentID << endl;
cout << "id:\t\t" << id << endl;
cout << "name:\t\t" << name << endl;
cout << "passwd:\t\t" << "******" << endl;
} User::User(const User &v):id(v.id),name(v.name),passwd(v.passwd){
printInfo();
} #endif
//User.cpp
#include<iostream>
#include"user.h"
using namespace std; int main() {
cout << "testing 1......" << endl << endl;
User user1;
user1.setInfo("Leonard");
user1.printInfo(); cout << endl << "testing 2......" << endl << endl;
User user2;
user2.setInfo("Jonny", "");
user2.changePasswd();
user2.printInfo(); cout << endl << "testing 3......" << endl << endl;
User userN(user2); system("pause");
return ;
}
效果如下:
三、题后小结
- 静态数据成员声明在类内,初始化在外部。
- setInfo函数的参数注意把id放于最后并设置默认参数。
User类 新增共有属性Current ID的更多相关文章
- id选择器、类选择器、属性选择器
在网页编辑时,通常要对样式进行各种设置.我们借助CSS样式设计中的选择器,就能很好很方便的对它们进行管理和设置了. 今天,跟大家分享一下几个常用的选择器:id选择器.类选择器.属性选择器. id选择器 ...
- ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries...
2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法, 后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法: 1. 定义变 ...
- JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- HTML5新增的属性和废除的属性
HTML5中,在新增加和废除很多元素的同时,也增加和废除了很多属性. 新增的属性 1.表单相关的属性 对input(type=text).select.textarea与button指定autofoc ...
- magento新增商品属性以及将属性加入Flat table
magento的EAV模型非常强大且灵活,但是如果不做优化的话,性能会非常低,因为attributes都存放在附表里,要获取一个entity的attribute,需要表联结一次,如果需要获取多条att ...
- Java生鲜电商平台-生鲜电商中商品类目、属性、品牌、单位架构设计与实战
Java生鲜电商平台-生鲜电商中商品类目.属性.品牌.单位架构设计与实战 说明:Java生鲜电商平台-生鲜电商中商品类目.属性.品牌.单位架构设计与实战经验分享 凡是涉及到购物,必然是建立在商品的基础 ...
- Implement Custom Business Classes and Reference Properties实现自定义业务类和引用属性(EF)
In this lesson, you will learn how to implement business classes from scratch. For this purpose, the ...
- 实体类的枚举属性--原来支持枚举类型这么简单,没有EF5.0也可以
通常,我们都是在业务层和界面层使用枚举类型,这能够为我们编程带来便利,但在数据访问层,不使用枚举类型,因为很多数据库都不支持,比如我们现在用的SqlServer2008就不支持枚举类型的列,用的时候也 ...
- 福利->KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型
我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...
随机推荐
- Laravel 上传文件处理
文件上传 获取上传的文件 可以使用 Illuminate\Http\Request 实例提供的 file 方法或者动态属性来访问上传文件, file 方法返回 Illuminate\Http\Uplo ...
- ScrollView嵌套ListView只显示一行之计算的高度不正确的解决办法(转)
ScrollView嵌套ListView只显示一行之计算的高度不正确的解决办法 分类: android应用开发2013-12-19 09:40 1045人阅读 评论(3) 收藏 举报 AndroidS ...
- Map类
Map类 方法 方法名 返回类型 说明 addLayer(layer, index?) layer 增加一个esri图层到map中,示例: var baseMapLayer = new ArcGIST ...
- 看图说说Heap中对象的生存状态
- Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果
目前Android的实现是:有来电时,音乐声音直接停止,铃声直接直接使用设置的铃声音量进行铃声播放. Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果. 如果 ...
- 我的第一个博客&GuiHub简单练习
个人介绍 姓名:马瑞 性别:男 班级:网络工程143 出生年月:1995.11 兴趣爱好:玩玩电脑,看看动漫. 编程能力:完全是菜鸟. GutHub的使用体验: 第一步:注册github,这很简 ...
- HTML5使用总结(一)
自己在“上海某985大学”待了五年,有蛮多的不舍.但是终究还是要离开.下面对这几年HTML5的使用做一个总结.总结是一种技术的沉淀.HTML5大家现在很火,它的标准已经出来.在标准还没有成型的时候,相 ...
- Open XML操作Excel导入数据
项目中发现使用OleDb(using System.Data.OleDb)相关对象处理Excel导入功能,不是很稳定经常出问题,需要把这个问题解决掉.项目组提出使用OpenXML来处理Excel的导入 ...
- EAS.Net 在程序里配置组件
public class BeforStart { /// <summary> /// 程序配置初始化 /// </summary> public static void EA ...
- oracle 11gr2 2.04 em 更改 hostname 后无需重建资料库的方法
1) 备份删除$ORACKE_HOME/ xxxx-sid 的EM目录:复制要创建的xxx-sid EM 名称目录: 备份删除$ORACKE_HOME/oc4j/j2ee/ xxxx-sid 的EM目 ...