与设计形式-可裁减的代码-C-打造可保养 (设计与形式的关系)
引言
classSingleton{public:staticSingleton&getInstance(){staticSingletoninstance;//静态部分变量确保只初始化一次性returninstance;}//...其余成员函数和变量...private:Singleton(){}//私有结构函数,防止外部创立实例};
classShape{public:virtualvoiddraw()=0;};classCircle:publicShape{public:voiddraw()override{/*...*/}};classRectangle:publicShape{public:voiddraw()override{/*...*/}};Shape*createShape(conststd::string&type){if(type=="circle")returnnewCircle();if(type=="rectangle")returnnewRectangle();returnnullptr;//失误处置...}
template<typenameT>classObserver{public:virtualvoidupdate(T&subject)=0;};template<typenameT>classSubject{public:voidregisterObserver(Observer<T>*observer){/*...*/}voidremoveObserver(Observer<T>*observer){/*...*/}voidnotifyObservers(){/*...*/}};
classComponent{public:virtualvoidoperation()=0;};classDecorator:publicComponent{public:Decorator(Component*component){/*...*/}};
利用你现有的c语言知识 设计开发一个简易计算器,可进行加、减、乘、除、求余运算。
#include <stdio.h> float numA = 0;float numB = 0;float temp = 0;void calc(){printf(\n); printf(======欢迎使用计算器=====);printf(\n); printf(请输入第一个数:); scanf(%lf,&numA) printf(请输入第二个数:);scanf(%lf,&numB);printf(请输入你的选择:\n1加法运算\n,2减法运算\n,3乘法运算\n,4除法运算\n,5求余运算\n,6退出系统\n);char choose = 0;scanf(%c,choose);temp = 0;switch (choose) {case 1: temp = numA + numB; break;case 2: temp = numA - numB; break;case 3: temp = numA * numB; break;case 4: temp = numA / numB; break;case 5: temp = (int)numA % (int)numB; break;case 6: (已经成功退出系统!); break;default: printf(输入错误,请重新输入!);print(\n); calc(); break;} }void login(){printf(请系统登录输入密码:);char password [100]=; scanf(%s,&password)if (password==admin) { calc();}else{ printf(你输入的系统密码不正确,请重新输入!\n); printf(\n); login();} } void main() {login();printf(结果是:%lf,temp); }
高分求C语言课程设计源代码(分不多了,全部给你们)
#include <string>#include <iostream>#include <time.h>#include <vector>using namespace std;class Employee//定义雇员类{public: Employee();//构造函数 virtual VEmployee(); virtual void Display()=0; int GetAge();//获取年龄 string GetName();//获取姓名protected: int Id; //职工ID号 string Name; //职工姓名 char Sex[5]; //性别 int Wage;//工资 string BirthDay; //出身年月 string WorkTime; //参加工作时间 int Age; //年龄};class Worker : public Employee//定义工人类{public: Worker(); virtual VWorker(); void Display();};class Teacher : public Employee//定义教师类{public: Teacher(); virtual VTeacher(); void Display(); string GetAcademy();private: string Academy;};Employee::Employee(){}Employee::VEmployee(){}int Employee::GetAge(){ return Age;}string Employee::GetName(){ return Name;}Teacher::Teacher() //添加教师信息 { cout<<请输入该教师的信息:<<endl; cout<<职工编号 : <<endl; cin>>Id; cout<<姓名 : <<endl; cin>>Name; cout<<性别 : <<endl; cin>>Sex; cout<<工资 : <<endl; cin>>Wage; cout<<出生时间 : (格式xxxx/xx/xx)<<endl;cin>>BirthDay; cout<<参加工作时间 : (格式xxxx/xx/xx)<<endl; cin>>WorkTime; cout<<所属院系 : <<endl; cin>>Academy; //从生日里提取出生的年份 int Pos = _first_of(/); string BirthYear; (BirthDay,0,Pos); char chBirthYear[6]; strcpy(chBirthYear,BirthDay.c_str()); //获取当前系统的年份 char NowYear[5]; time_t tnow = time(0); strftime(NowYear , 5 , %Y , localtime(&tnow)); Age = atoi(NowYear)-atoi(chBirthYear);//计算年龄 }Teacher::VTeacher(){}void Teacher::Display(){ //display()同名函数,输出教师信息cout<<职工编号 : <<Id<<endl;cout<<姓名 : <<Name<<endl;cout<<性别 : <<Sex<<endl;cout<<工资 : <<Wage<<endl;cout<<出生时间 : <<BirthDay<<endl;cout<<参加工作时间 : <<WorkTime<<endl;cout<<年龄 : <<Age<<endl;}string Teacher::GetAcademy(){ return Academy;}Worker::Worker()//添加工人信息{ cout<<请输入该工人的信息:<<endl; cout<<职工编号 : <<endl; cin>>Id; cout<<姓名 : <<endl; cin>>Name; cout<<性别 : <<endl; cin>>Sex; cout<<工资 : <<endl; cin>>Wage; cout<<出生时间 : (格式xxxx/xx/xx)<<endl; cin>>BirthDay; cout<<参加工作时间 : (格式xxxx/xx/xx)<<endl; cin>>WorkTime; //从生日里提取出生的年份 int Pos = _first_of(/); string BirthYear; (BirthDay,0,Pos); char chBirthYear[6]; strcpy(chBirthYear,BirthDay.c_str()); //获取当前系统的年份 char NowYear[5]; time_t tnow = time(0); strftime(NowYear , 5 , %Y , localtime(&tnow)); Age = atoi(NowYear)-atoi(chBirthYear);//计算年龄}Worker::VWorker(){}void Worker::Display(){//display()同名函数,输出工人信息 cout<<职工编号 : <<Id<<endl; cout<<姓名 : <<Name<<endl; cout<<性别 : <<Sex<<endl; cout<<工资 : <<Wage<<endl; cout<<出生时间 : <<BirthDay<<endl; cout<<参加工作时间 : <<WorkTime<<endl; cout<<年龄 : <<Age<<endl;}void AddTeacher(vector <Teacher> *TeaInfo)//新增老师对象{ system(color 05A); //设置当前窗口的背景色和前景色 Teacher TeaTemp; (*TeaInfo)_back(TeaTemp); }void AddWoker(vector <Worker> *WorkerInfo) //新增工人对象{ system(color 05A); Worker Wokertmp; (*WorkerInfo)_back(Wokertmp); }void DisplayAll(vector <Teacher> *TeaInfo,vector <Worker> *WokerInfo){//显示全部职工记录 system(color 05A); cout<<所有教师的信息:<<endl; vector <Teacher>::iterator pTeaInfo; for (pTeaInfo=(*TeaInfo)();(*TeaInfo)()!=1&&pTeaInfo!=(*TeaInfo)();pTeaInfo++) //如果到达vector末尾,则退出 { (*pTeaInfo)();cout<<endl; } cout<<所有工人的信息:<<endl; vector <Worker>::iterator pWorkerInfo; for (pWorkerInfo=(*WokerInfo)();(*WokerInfo)()!=1&&pWorkerInfo!=(*WokerInfo)();pWorkerInfo++)//如果到达vector末尾,则退出 {(*pWorkerInfo)();cout<<endl; } cout<<按Enter返回<<endl; getchar(); getchar();}void DisAvgTeacherAge(vector <Teacher> *TeaInfo){//查询老师平均年龄 system(color 05A); int SumAge = 0; vector <Teacher>::iterator pTeaInfo; for (pTeaInfo=(*TeaInfo)();(*TeaInfo)()!=1&&pTeaInfo!=(*TeaInfo)();pTeaInfo++)//遍历老师容器 { //如果到达vector末尾,则退出SumAge+= (*pTeaInfo)();cout<<endl; } if((*TeaInfo)()!=0)cout<<教师的平均年龄为<<SumAge/((*TeaInfo)())<<endl; else cout<<没有记录<<endl; cout<<按Enter返回<<endl; getchar(); getchar();}void DisAvgWorkerAge(vector <Worker> *WokerInfo){ system(color 05A); int SumAge = 0; vector <Worker>::iterator pWorkerInfo; for (pWorkerInfo=(*WokerInfo)();(*WokerInfo)()!=1&&pWorkerInfo!=(*WokerInfo)();pWorkerInfo++)//如果到达vector末尾,则退出 {SumAge+= (*pWorkerInfo)();cout<<endl; } if((*WokerInfo)()!=0) cout<<职工的平均年龄为<<SumAge/((*WokerInfo)())<<endl; else cout<<没有记录<<endl; cout<<按Enter键返回<<endl; getchar(); getchar();}void DelTeacher(vector <Teacher> *TeaInfo){ //用于删除老师信息 system(color 05A); bool Hflag=false; string SearchName; vector <Teacher>::iterator pTeaInfo; cout<<请输入您要删除的老师的姓名:<<endl; cout<<姓名: ; cin>>SearchName; for(pTeaInfo=(*TeaInfo)();(*TeaInfo)() != 1&&pTeaInfo!=(*TeaInfo)();pTeaInfo++)//如果到达vector末尾,则退出 { if (0==((*pTeaInfo)()))//如果找到要删除老师的姓名,则执行{ Hflag=true;//找到老师 (*TeaInfo)(pTeaInfo);//删除vector中指定的老师 continue;} } if (false==Hflag) //如果没有该老师,则执行 {cout<<没有该老师!<<endl; } cout<<按Enter返回<<endl; getchar(); getchar();}void DelWorker(vector <Worker> *WokerInfo) //用于删除工人信息{ system(color 05A); bool Hflag=false; string SearchName; vector <Worker>::iterator pWorkerInfo; cout<<请输入您要删除的工人的姓名:<<endl; cout<<姓名: ; cin>>SearchName; for(pWorkerInfo=(*WokerInfo)();(*WokerInfo)() != 1&&pWorkerInfo!=(*WokerInfo)();pWorkerInfo++)//如果到达vector末尾,则退出 {if (0==((*pWorkerInfo)())) //如果找到要删除工人的姓名,则执行{ Hflag=true; //找到工人 (*WokerInfo)(pWorkerInfo); //删除vector中指定的工人 continue;} } if (false==Hflag) //如果没有该工人,则执行 {cout<<没有该老师!<<endl; } cout<<按Enter返回<<endl; getchar();getchar();}void SearchByName(vector <Teacher> *TeaInfo,vector <Worker> *WokerInfo){//按名字查找职工信息 system(color 05A); bool Hflag=false; string SearchName; vector <Teacher>::iterator pTeaInfo; cout<<请输入您要查找的职工的姓名:<<endl; cout<<姓名: ; cin>>SearchName; for(pTeaInfo=(*TeaInfo)();pTeaInfo!=(*TeaInfo)();pTeaInfo++) {if (0==((*pTeaInfo)())) //如果找到输入的职工,则执行{ Hflag=true; //找到职工 cout<<这个人是老师,他的信息为:<<endl; (*pTeaInfo)();//显示职工信息 continue;} } vector <Worker>::iterator pWorkerInfo; for(pWorkerInfo=(*WokerInfo)();pWorkerInfo!=(*WokerInfo)();pWorkerInfo++) {if (0==((*pWorkerInfo)())) //如果找到输入的职工,则执行{ Hflag=true; //找到职工 cout<<这个人是老师,个人信息为:<<endl; (*pWorkerInfo)();//显示职工信息 continue;} } if (false==Hflag) {cout<<没有这个职工!<<endl;//没有找到信息 } cout<<按Enter返回<<endl;//返回 getchar(); getchar();}void DisTeacherByAcademy(vector <Teacher>TeaInfo){ //按系输出教师信息 system(color 05A); bool Hflag=false; string SearchName; vector <Teacher>::iterator pTeaInfo; while((TeaInfo)()!=1) { //输出所有指定系的老师pTeaInfo=(TeaInfo)();string Academy = (*pTeaInfo)(); cout<<系:<<Academy<<,<<该系的老师有:<<endl;for(pTeaInfo=(TeaInfo)();(TeaInfo)()!=1&&pTeaInfo!=(TeaInfo)();){ if (0==((*pTeaInfo)())) { (*pTeaInfo)(); cout<<endl;(TeaInfo)(pTeaInfo);pTeaInfo=(TeaInfo)(); } else pTeaInfo++;} cout<<endl; } cout<<按Enter返回<<endl; getchar(); getchar();}void WriteFile(vector <Teacher> *TeaInfo,vector <Worker> *WokerInfo)//生成新文件{ FILE *fp; if (NULL==(fp=fopen(,w+))) {cout<<打开文件错误<<endl;exit(-1); } vector <Worker>::iterator pWorkerInfo; vector <Teacher>::iterator pTeaInfo; for(pTeaInfo=(*TeaInfo)();pTeaInfo!=(*TeaInfo)();pTeaInfo++)//写入vector中所有老师的信息 {fputs(教师信息:\n,fp);fprintf(fp,姓名:%s\n,(*pTeaInfo)().c_str());fprintf(fp,年龄:%d\n,(*pTeaInfo)());fputs(\n,fp); } fputs(教师信息结束\n,fp); for(pWorkerInfo=(*WokerInfo)();pWorkerInfo!=(*WokerInfo)();pWorkerInfo++)//写入vector中所有老师的信息 {fputs(职工信息:\n,fp);fprintf(fp,姓名:%s\n,(*pWorkerInfo)().c_str());fprintf(fp,年龄:%d\n,(*pWorkerInfo)());fputs(\n,fp); } fputs(职工信息结束\n,fp); fclose(fp);}void Mainmenu(){//菜单界面system(color 05A); //设置当前窗口的背景色和前景色 cout<<╭――――――――――《教职工管理系统》―――――――――╮<<endl; cout<<∣ 请选择功能 ∣<<endl; cout<<├――――――――――――――――――――――――――――┤<<endl; cout<<∣ 1.新建并输入职工数据 ∣<<endl; cout<<∣ 2.按条件输出职工数据 ∣<<endl; cout<<∣ 3.删除职工数据 ∣<<endl; cout<<∣ 0.退出 ∣<<endl; cout<<╰――――――――――――――――――――――――――――╯<<endl; cout<< ――――――――――――――――――――――――――――――<<endl; cout<< 请选择您要服务的类别: ; }voidInsert(vector <Teacher>*TeaInfo,vector <Worker>*WorkerInfo)//增加职工数据菜单界面 {system(color 05A); //设置当前窗口的背景色和前景色int select = -1; while(select!=0) { cout<< ╭――――――――――《增加职工数据》――――――――――╮<<endl; cout<< ∣ 请选择操作:∣<<endl; cout<< ├――――――――――――――――――――――――――――┤<<endl; cout<< ∣ 1增加一位教师记录∣<<endl; cout<< ∣ 2增加一位工人记录∣<<endl; cout<< ∣ 0返回主菜单∣<<endl; cout<< ╰――――――――――――――――――――――――――――╯<<endl;cin>>select; switch(select){ case 1:AddTeacher(TeaInfo);break; case 2:AddWoker(WorkerInfo);break; case 3:Mainmenu();break; default:cout<<回到主菜单!<<endl; } }}voidSearch(vector <Teacher>*TeaInfo,vector <Worker>*WorkerInfo) //查询职工数据菜单界面{system(color 05A); //设置当前窗口的背景色和前景色int select = -1; while(select!=0) { cout<< ╭――――――――――《查询职工数据》――――――――――╮<<endl; cout<< ∣ 请选择操作:∣<<endl; cout<< ├――――――――――――――――――――――――――――┤<<endl; cout<< ∣ 1显示全部职工记录∣<<endl; cout<< ∣ 2按系输出教师信息∣<<endl; cout<< ∣ 3按姓名检索所有信息∣<<endl; cout<< ∣ 4计算教师平均年龄∣<<endl; cout<< ∣ 5计算工人平均年龄∣<<endl; cout<< ∣ 0返回主菜单∣<<endl; cout<< ╰――――――――――――――――――――――――――――╯<<endl;cin>>select; switch(select){ case 1:DisplayAll(TeaInfo,WorkerInfo);break; case 2:DisTeacherByAcademy(*TeaInfo);break;case 3:SearchByName(TeaInfo,WorkerInfo);break; case 4:DisAvgTeacherAge(TeaInfo);break; case 5:DisAvgWorkerAge(WorkerInfo);break; case 6:Mainmenu();break; default:cout<<回到主菜单!<<endl; }}}voidDelete(vector <Teacher>*TeaInfo,vector <Worker>*WorkerInfo) //删除职工数据{system(color 05A); //设置当前窗口的背景色和前景色int select = -1; while(select!=0) { cout<< ╭――――――――――《删除职工数据》――――――――――╮<<endl; cout<< ∣ 请选择操作:∣<<endl; cout<< ├――――――――――――――――――――――――――――┤<<endl; cout<< ∣ 1删除一位教师记录∣<<endl; cout<< ∣ 2删除一位工人记录∣<<endl; cout<< ∣ 0返回主菜单∣<<endl; cout<< ╰――――――――――――――――――――――――――――╯<<endl;cin>>select; switch(select){ case 1:DelTeacher(TeaInfo);break; case 2:DelWorker(WorkerInfo);break; case 3:Mainmenu();break; default:cout<<回到主菜单!<<endl; }}}void MainCho(vector <Teacher>*TeaInfo,vector <Worker>*WorkerInfo){ //主菜单操作 int choice = -1; while(choice!=0){ Mainmenu(); cin>>choice; switch(choice){ case 1:Insert(TeaInfo,WorkerInfo);break; case 2:Search(TeaInfo,WorkerInfo);break; case 3:Delete(TeaInfo,WorkerInfo);break; case 0:break; default:cout<<操作错误!<<endl; } }}void main() //主函数{ vector <Teacher> TeaInfo; // vector <Worker> WorkerInfo; // vector <Teacher>::iterator pTeacher;// vector <Worker>::iterator pWoker; // pTeacher = (); // pWoker = ();// MainCho(&TeaInfo,&WorkerInfo);//调用主要处理程序 WriteFile(&TeaInfo,&WorkerInfo);//存入文件操作}
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。