• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    6年前 (2013-04-07)  杂七杂八 |   1 条评论  8 
    文章评分 0 次,平均分 0.0
    [收起] 文章目录

     

    前言

    由于很多同学问相同的问题,每个同学都一一解答,时间上不允许,所以我挂在网上,大家可以互相学习与解答。

    我在博客中挂出部分课后习题代码,我会以我能达到的最规范方式编码。

    在另外一个网页中,大家可以粘贴自己的代码互相学习解答,我也会针对每个问题进行解答,链接为:http://unix8.net/forum-108-1.html,密码为2013

    可以打开该该链接后保存在收藏夹,以后有任何通知或者更新大家查看也很方便。

    当然不仅局限于课本习题,任何关于程序设计方面的问题都可以探讨!

    作业

    通过作业看出主要有以下几个问题:
    1.代码排版错乱
    2.命名不规范
    3.想更改private成员,最好通过public函数在主函数中修改,也即是很多人的输入操作应该放在主函数中。
    4.抄袭严重

    代码

    代码下载链接4-10.cpp

    运行效果如下:

    身份证号为[20130001]的员工,信息如下:
    编号为:1
    性别为:男
    生日为:1989年7月1日
    
    身份证号为[20130002]的员工,信息如下:
    编号为:2
    性别为:女
    生日为:1988年7月2日
    

     

    #include <iostream>
    #include <string>
    using namespace std;
    
    //出生日期类
    class CDateOfBirth
    {
    public:
    	~CDateOfBirth();
    	//拷贝构造函数类
    explicit	CDateOfBirth(const CDateOfBirth& tDate);
    	//重载的构造函数,已经具有默认构造函数功能
    explicit CDateOfBirth(int tYear, int tMonth, int tDay);
    
    	//提供给外部的接口
    	int getYear(void) const;
    	int getMonth(void) const;
    	int getDay(void) const;
    	void setYear(int);
    	void setMonth(int);
    	void setDay(int);
    
    private:
    	int year;
    	int month;
    	int day;
    };
    //析构函数
    CDateOfBirth::~CDateOfBirth(){}
    //拷贝构造函数
    CDateOfBirth::CDateOfBirth(const CDateOfBirth& tDate) :
    						year(tDate.year), month(tDate.month), day(tDate.day){}
    //带默认形参的构造函数
    CDateOfBirth::CDateOfBirth(int tYear = 0, int tMonth = 0, int tDay = 0) :
    						year(tYear), month(tMonth), day(tDay){}
    //内联成员函数
    inline int CDateOfBirth::getYear(void)const { return year;}
    inline int CDateOfBirth::getMonth(void)const { return month;}
    inline int CDateOfBirth::getDay(void)const { return day;}
    inline void CDateOfBirth::setYear(int tYear){year = tYear;}
    inline void CDateOfBirth::setMonth(int tMonth){month = tMonth;}
    inline void CDateOfBirth::setDay(int tDay){day = tDay;}
    
    //人事管理的“人员”类
    //这个类部分成员函数演示直接在类中定义,默认就为内联
    class CEmployee
    {
    public:
    	//默认构造函数
    	explicit CEmployee(){}
    	//析构函数
    	~CEmployee(){}
    	//拷贝构造函数
    	explicit	CEmployee(const CEmployee& tEmployee) :
    						id(tEmployee.id), sex(tEmployee.sex), card(tEmployee.card), birth(tEmployee.birth){}
    	//赋值操作符
    	CEmployee& operator=(const CEmployee& tEmployee)
    	{
    		id = tEmployee.id;
    		sex = tEmployee.sex;
    		card = tEmployee.card;
    		birth = tEmployee.birth;
    	}
    	//重载的构造函数
    	explicit	CEmployee(CDateOfBirth &tBirth, int tId, char tSex, string tCard);
    	explicit	CEmployee(int tId, char tSex, string tCard, int tYear, int tMonth, int tDay);
    	//提供给外部的接口
    	void setId(int tId) {id = tId;}
    	void setSex(char tSex) {sex = tSex;}
    	void setCard(string tCard) {card = tCard;}
    	//设置人员的生日
    	void setBirth(int tYear, int tMonth, int tDay)
    	{
    		birth.setYear(tYear);
    		birth.setMonth(tMonth);
    		birth.setDay(tDay);
    	}
    	//设置人员的生日重载
    	void setBirth(const CDateOfBirth& tBirth)
    	{
    		birth.setYear(tBirth.getYear());
    		birth.setMonth(tBirth.getMonth());
    		birth.setDay(tBirth.getDay());
    	}
    	int getId(void) const {return id;}
    	string getCard(void) const {return card;}
    	char getSex(void) const {return sex;}
    	const CDateOfBirth& getBirth(void) const {return birth;}
    
    private:
    	int id;
    	char sex;
    	string card;
    	CDateOfBirth birth;
    };
    CEmployee::CEmployee(int tId, char tSex, string tCard, int tYear, int tMonth, int tDay):
    	 id(tId), sex(tSex), card(tCard)
    {
    	birth.setYear(tYear);
    	birth.setMonth(tMonth);
    	birth.setDay(tDay);
    }
    CEmployee::CEmployee(CDateOfBirth &tBirth, int tId = 0, char tSex = 'f', string tCard = ""):
    	birth(tBirth), id(tId), sex(tSex), card(tCard){}
    
    ostream& operator<<(ostream& out, const CEmployee& employee)
    {
    	cout<<"身份证号为["<<employee.getCard()<<"]的员工,信息如下:"<<endl;
    	cout<<"编号为:"<<employee.getId()<<endl;
    	cout<<"性别为:"<<(employee.getSex() == 'f' ? "男":"女")<<endl;;
    	cout<<"生日为:"<<employee.getBirth().getYear()<<"年"
    			<<employee.getBirth().getMonth()<<"月"<<employee.getBirth().getDay()<<"日"<<endl;
    }
    
    int main()
    {
    	//第一种用法,员工为小王
    	//编号+性别+身份证号+年+月+日
    	CEmployee XiaoWang(1, 'f', "20130001", 1989, 7, 1);
    	//测试小王
    	cout<<XiaoWang<<endl;
    
    	//第二种测试,测试为小张
    	//生日+编号+性别+身份证号
    	CDateOfBirth birth(1988, 7, 2);
    	CEmployee XiaoZhang(birth, 2, 'm', "20130002");
    	cout<<XiaoZhang<<endl;
    	return 0;
    }

    最好将输入信息放在主函数中完成,比如下面的主函数,要修改某个对象的private数据成员,可以调用public成员函数进行修改。

    int main()
    {
    	//第一种用法,员工为小王
    	//编号+性别+身份证号+年+月+日
    	CEmployee XiaoWang(1, 'f', "20130001", 1989, 7, 1);
    	//测试小王
    	cout<<XiaoWang<<endl;
    
    	//第二种测试,测试为小张
    	//生日+编号+性别+身份证号
    	CDateOfBirth birth(1988, 7, 2);
    	CEmployee XiaoZhang(birth, 2, 'm', "20130002");
    	cout<<XiaoZhang<<endl;
            //第三种测试,测试为小黄
    	int year, month, day;
    	int no;
    	char sex;
    	string card;
    	cin>>year>>month>>day>>no>>sex>>card;
    	CEmployee XiaoHuang(no, sex, card, year, month, day);
    	cout<<XiaoHuang<<endl;
    
    	return 0;
    }

    有问题或者疑问,请跳转到:http://unix8.net/forum-108-1.html,密码为2013

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/429.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享