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获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...
随机推荐
- DALSA网口线扫相机SDK开发详解例程(C#版)
首先吐槽一句,官方的demos写的真的不好,坑爹啊.对于小白来说,开发官方demos为我所用太难了.为什么呢?因为它Dalsa的DALSA.SaperaLT.SapClassBasic.dll中,不仅 ...
- a标签href="javascript:;"
//点击a链接,执行一段js代码 <!DOCTYPE html> <html> <head> <title></title> </he ...
- error:Your local changes to the follwing files would be overwritten by merge
- 深入浅出NetWorking
技术屌丝也是需要学习网络基本知识的,本书用一种轻松的方式讲了最基本的网络概念和硬件.协议,看完此书,就可以学习<TCP/IP协议>,学完后从此网络再无战事了. 1.网线分为:双绞线,同轴电 ...
- UVa 1151 Buy or Build (最小生成树+二进制法暴力求解)
题意:给定n个点,你的任务是让它们都连通.你可以新建一些边,费用等于两点距离的平方(当然越小越好),另外还有几种“套餐”,可以购买,你购买的话,那么有些边就可以连接起来, 每个“套餐”,也是要花费的, ...
- C# FTPClientHelper共公类 实现文件上传,目录操作,下载等动作
文档说明 本文档使用Socket通信方式来实现ftp文件的上传下载等命令的执行 1.基本介绍 由于最近的项目是客户端的程序,需要将客户端的图片文件[切图]-[打包]-[ftp上传],现在就差最后一步了 ...
- HRBUST1213 单词接龙 2017-03-06 15:53 67人阅读 评论(0) 收藏
单词接龙 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙&quo ...
- How To Use XDOLoader to Manage, Download and Upload Files? (DOC ID 469585.1)
In this Document Goal Fix Downloading Files Uploading Files References Applies to: BI Publishe ...
- 使用Docker部署ASP.NET Core应用程序实践
前言 最近把很火的Docker给看了,于是就磨拳擦掌要去实践一下.于是就拿之前一个aps.net core的项目(已被停止)去练手.该项目之前在ubuntu14.04上确保可以正常运行,所以docke ...
- LRUCache c#
LRUCache是Least Recently Used 近期最少使用算法的缓存,是android提供的一个缓存工具类.可以以两种排序方式来输出缓存,一种是按插入顺序输出,一种是按最近最少方式输出,最 ...