收藏 分销(赏)

c--课程设计.doc

上传人:仙人****88 文档编号:9374253 上传时间:2025-03-23 格式:DOC 页数:12 大小:124.50KB
下载 相关 举报
c--课程设计.doc_第1页
第1页 / 共12页
c--课程设计.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述
《C++程序设计》课程设计报告 姓 名:*** 班 级:09软件技术2班 学 号:0901030213 项目一 电子日历 一、 设计要求 设计并实现如下功能: 1、 设置日期,日期由键盘上输入。 2、 用日/月/年格式输出日期 3、 在输入日期合法的情况下可实现日期增加一天的操作 二、 设计思想 1、 类的结构图 Date +Display():void +AddOneDay():void +SetDay():void +Date(){year=0;month=0;day=0;}:void +friend bool Legal(int y, int m, int d):void #year:int #month:int #day:int 2、 程序主要功能说明 定义了一个设置时间函数SetDay(),用来实现日期的设置,Display()函数显示输入的日期,AddOneDay()函数实现加一天功能,对以上功能还加入了功能选择,用户可根据自己的需要,选择想要获得的功能,还能连续查询,手动控制程序的退出。 三、 源代码 #include <iostream> using namespace std; //Date类的定义 class Date { public: Date(){year=0;month=0;day=0;} void Display();//输出日期函数声明 void AddOneDay();//查询下一天函数声明 void SetDay();//日期设置函数声明 friend bool Legal(int y, int m, int d);//声明判断日期是否合法函数为友元函数,因为成员函数调用了该函数 protected: int year; int month; int day; }; void Date::Display()//实现日期的输出 { cout<<"当前日期是:"<<endl; cout <<day <<"/" <<month <<"/" <<year <<endl; } void Date::AddOneDay()//日期加一天函数 { if(Legal(year,month,day+1))//只加号数 day++; else if(Legal(year,month+1,1))//月份过度 month++,day=1; else if(Legal(year+1,1,1))//年份过度 day=1,month=1,year++; } void Date::SetDay() { int y; int m; int d; cout<<"请设置当前日期,年 月 日中间用空格隔开:"<<endl; cin>>y>>m>>d; while(!Legal(y,m,d)) { cout<<"您输入的日期不合法,请重新设置:"<<endl; cin>>y>>m>>d; } year=y; month=m; day=d; } bool Legal(int y, int m, int d)//判断输入日期是否合法,布尔函数 { if(y>9999||y<1||d<1||m<1||m>12) return false; int dayLimit=31;//限制日期,避免输入不合法日期,4,6,9,11最大日期为30 switch(m) { case 4: case 6: case 9: case 11: dayLimit--; } if(m==2) dayLimit = ((y%4==0&&y%100!=0)||y%400==0) ? 29 : 28;//判断平闰年,限制2月份最大日期为28或29 return (d>dayLimit)? false : true; } int main() { cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"<<endl; cout<<"☆ 欢迎使用简单电子日历,请输入功能选择:(0-3) ★"<<endl; cout<<"★ 0.退出 ☆"<<endl; cout<<"☆ 1.设置日期 ★"<<endl; cout<<"★ 2.输出日期 ☆"<<endl; cout<<"☆ 3.日期加一天 ★"<<endl; cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"<<endl; int num; Date date; cin>>num;//输入功能选择 if(!(num==0 ||num==1 || num==2 || num==3)) { cout<<"输入有误,请重新选择:(0-3)"<<endl; cin>>num; } else { do { if(num==0) break; if(num==1) date.SetDay(); if(num==2) date.Display(); if(num==3) { date.Display(); date.AddOneDay();//加一天 cout<<endl<<"下一天的日期是:"<<endl; date.Display(); } cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"<<endl; cout<<"☆ 欢迎使用简单电子日历,请输入功能选择:(0-3) ★"<<endl; cout<<"★ 0.退出 ☆"<<endl; cout<<"☆ 1.设置日期 ★"<<endl; cout<<"★ 2.输出日期 ☆"<<endl; cout<<"☆ 3.日期加一天 ★"<<endl; cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆"<<endl; cin>>num; if(!(num==0 ||num==1 || num==2 || num==3)) { cout<<"输入有误,请重新选择:(0-3)"<<endl; cin>>num; } }while(num!=0); //手动选择退出 } cout<<"\t欢迎下次使用!"<<endl; return 0; } 四、 测试结果 五、 总结 最开始设计时,没想太多,写到设置日期时发现了问题,设置年月好办,等到设置日期时,发现要考虑的方面太多而无从下手,设置号数要考虑月份,考虑月份的同时还要考虑平闰年,即要考虑2月这个特殊月份,对日期的算法也是后来到网上借鉴过来的,个人能力还有待提高。 项目二 人员信息管理系统 一、 设计要求 设计小型公司的人员信息管理系统,它涵盖了面向对象程序设计的基本方法,具有存储,查询功能,某小型公司,主要有4类人员:经理,兼职技术人员,销售经理和兼职推销员.现在,需要存储这些人员的姓名,编号,级别,当月薪水,计算月薪总额并显示全部信息.设计要求实现如下功能: 月薪计算方法:    经理拿固定工资8000    兼职技术人员按每小时100元领取月薪    兼职推销员的月薪按该推销员当月销售额的4%提成;    销售经理既拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为所管辖部门当月销售总额的5%   设计说明:此程序首先设计一个雇员类employee,然后由雇员类派生出四类人员进行设计。 二、设计思想 1、 类的结构图 employee #name:char[20] #grbh:int #jb:int #yxze:float #zdbh:int=1000 +employee() +~employee() <<abstract>>+pay():void <<virtual>>+promote(increment:int=0):void +szname(:char*):void +dyname():char* +tqbh():int +tqjb():int +tqyx():float jzjs txyl jll -mxscj:float #bfb:float #gdyx:float -gzsj:int #xse:float +jll() +jzjs() +txyl() +pay():void +szgzsj(wh:int):void +setxse(sl:float):void +promote(:int):void +pay():void +pay():void +promote(:int):void +promote(:int):void xsjl +xsjl() +pay():void +promote(:int):void 2、程序功能说明 此程序包含如下功能:设置四类成员的姓名,级别并计算其应得工资为多少,计算工资按不同方法计算,设置姓名用到数组char name[20],设计出一个雇员基类employee类,然后派生出四个不同的类:jzjs、jll、txyl、xsjl,工资计算用pay()函数完成各自的工资计算,函数体中是各类员工工资结算的方法,最后的结果使用基类指针访问各派生类函数,完成结果的输出。 二、 源程序 #include<iostream> #include<cstring> using namespace std; class employee { protected: char name[20]; int grbh; int jb; float yxze; static int zdbh; public: employee(); ~employee(); virtual void pay()=0; virtual void promote(int increment=0); void szname(char *); char * dyname(); int tqbh(); int tqjb(); float tqyx(); }; class jzjs:public employee { private: float mxscj; int gzsj; public: jzjs(); void szgzsj(int h); void pay(); void promote(int); }; class txyl:virtual public employee { protected: float bfb; float xse; public: txyl(); void setxse(float s); void pay(); void promote(int); }; class jll:virtual public employee { protected: float gdyx; public: jll(); void pay(); void promote(int); }; class xsjl:public jll,public txyl { public: xsjl(); void pay(); void promote(int); }; int employee::zdbh=1000; employee::employee() { grbh=zdbh++; jb=1; yxze=0.0; } employee::~employee() {} void employee::promote(int increment) { jb+=increment; } void employee::szname(char* names) { strcpy(name,names); } char* employee::dyname() { return name;} int employee::tqbh() { return grbh;} int employee::tqjb() { return jb;} float employee::tqyx() { return yxze;} jzjs::jzjs() { mxscj=100;} void jzjs::szgzsj(int h) { gzsj=h;} void jzjs::pay() { yxze=mxscj*gzsj;} void jzjs::promote(int) { employee::promote(2);} txyl::txyl() { bfb=0.04;} void txyl::setxse(float s) { xse=s;} void txyl::pay() { yxze=xse*bfb;} void txyl::promote(int) { employee::promote(0);} jll::jll() { gdyx=8000;} void jll::pay() { yxze=gdyx;} void jll::promote(int ) { employee::promote(3);} xsjl::xsjl() { gdyx=5000; bfb=0.05; } void xsjl::pay() { yxze=gdyx+bfb*xse;} void xsjl::promote(int) { employee::promote(2);} void main() { jll a; jzjs b; xsjl c; txyl d; char namestr[20]; employee *emp[4]={&a,&b,&c,&d}; int i; for(i=0;i<4;i++) { cout<<"请输下一个雇员的姓名:"; cin>>namestr; emp[i]->szname(namestr); emp[i]->promote(); } cout<<"请输入兼职技术人员"<<b.dyname()<<"本月的工作时数:"; int gs; cin>>gs; b.szgzsj(gs); cout<<"请输入销售经理"<<c.dyname()<<"所管辖部门本月的销售总额:"; float ze; cin>>ze; c.setxse(ze); cout<<"请输入推销员"<<d.dyname()<<"本月的销售额:"; cin>>ze; d.setxse(ze); for(i=0;i<4;i++) { emp[i]->pay(); cout<<emp[i]->dyname()<<"编号"<<emp[i]->tqbh() <<"级别为"<<emp[i]->tqjb()<<"级,本月工资"<<emp[i]->tqyx()<<endl; } } 四、测试结果 五、总结 多文件结构掌握得不是很好,所以写成单文件结构,对照书本上的程序实例进行修改,改完后发现有一条报错,查找错误时却发现十几处错误,不知从哪里改起,最后还是对照书本改出来了,对整个程序完全看懂了,但是如果要自己写还有难度,因为思维不够缜密,很难写出完整的程序。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服