首页下载资源后端机械设计-面向对象实现

ZIP机械设计-面向对象实现

askedGU6.37MB需要积分:1

资源文件列表:

Mechanical_Design.zip 大约有5个文件
  1. Mechanical_Design/Mechanical_Design.zip 6.02MB
  2. Mechanical_Design/框架.jpg 44.55KB
  3. Mechanical_Design/零件.jpg 49.15KB
  4. Mechanical_Design/设计.jpg 69.16KB
  5. Mechanical_Design/设计说明书.pdf 269.53KB

资源介绍:

Mechanical_Design的源代码
Mechanical_Design
设计说明书
项目特色
1 采用智能指针控制内存分配,同时避免内存泄露
2 将零件与设计分开,分别实现零件类与设计类
3 利用动态绑定,使得一个容器中能包含多种设计
4 将设计与交互过程分开,使得代码更加简洁,结构紧凑
5 采用继承和模块化实现,实现大量代码复用
6 函数命名统一,注释和代码规范。例如:setXXX()函数设置对应变量,getXXX
()函数获取对应变量
7 采用多层代码封装,精简单一函数中的代码,便于后续拓展与调试
8 利用宏编译,控制输出
9 采用了文件系统以输出完整的设计结果
设计的总体框架:
Mechanical_Design 类为最外层类,用于调度;
Interaction 类负责交互;
Design_Vec 类负责设计操作;
具体的设计是 Design 的子类实现的;
对应的 Design 类中包含对应的零件类 Part 对象;
继承体系的设计:
(类的具体命名会有些差别,只实现了部分类,参看具体实现)
Part 类:
Design 类:
具体的实现:
Mechanical_Design
类:
实现总体调度,实现如下:
class Mechanical_Design {
public:
Mechanical_Design() {
vec = std::make_shared<Design_Vec>();
Ite = std::make_shared<Interaction>();
startDesign(std::cout); //开始设计
};
~Mechanical_Design() {};
private:
shared_ptr<Design_Vec> vec; //设计表对象
shared_ptr<Interaction> Ite; //交互对象
Outputter output;
//每个零件处理自己的最终设计过程,Mechanical_Design 只提供公共接口
void startDesign(std::ostream& os); //开始设计
void startDriveDesign(std::ostream& os); //开始传动设计
void startPartDesign(std::ostream& os); //开始零件设计
void showDesignInfo(std::ostream& os); //显示设计信息
};
showDesignInfo 函数的具体实现为例:
void Mechanical_Design::showDesignInfo(std::ostream& os) {
Ite->InteractionOfInfo(os);
char ch4 = Ite->getShow();
string str = "design";
int tmp;
while (ch4 != 'Q') {
switch (ch4) {
case 'A':
vec->showTotalDesign(true); //详细信息
break;
case 'B':
vec->showTotalDesign(false); //粗略信息
break;
case 'C': //单个设计信息
if (vec->getSize() == 0) {
os << "当前无设计" << std::endl;
}
else {
os << "请输入设计序号 0-" << vec->getSize()-1<< " :" << std::endl;
std::cin >> tmp;
vec->showDesign(tmp);
}
break;
case 'D':
os << "删除所有设计" << std::endl;
vec->deleteTotalDesign();
break;
case 'E':
if (vec->getSize() == 0) {
os << "当前无设计" << std::endl;
}
else {
os << "请输入设计序号 0-" << vec->getSize() -1<< " :" <<
std::endl;
std::cin >> tmp;
vec->deleteDesign(tmp);
}
break;
case 'F':
os << "请输入要保存的文件名:" << std::endl;
std::cin >> str;
output(str + ".txt", *vec); //保存设计信息
break;
default:
break;
}
Ite->InteractionOfInfo(os);
ch4 = Ite->getShow();
}
}
先是 Ite 对象显示互界面,然后获取交后的结果进行循环判断vec 对象
实现显示不同信息的操作。其它几个函数的实现类似。
注意到此处的形参是 std::ostream&os这样做格式规范一点。而且不需改动
代码,即可将结果输出到文件(用 ofstream& 对象)
同时智能指针的使用,方便了内存处理,不用担心内存泄漏的问题。
Interaction 类:
交互类,接受输入。交互与实际操作分开的设计,很方便拓展代码,格式上也很
美观。
class Interaction {
public:
Interaction() {}
~Interaction() {}
void setIni(std::ostream& os); //设置初始化界面
void InteractionOfTotal(std::ostream& os); //总设计界面的交互
void InteractionOfDriveDesign(std::ostream& os);//传动设计界面的交互
void InteractionOfPartDesign(std::ostream& os); //零件设计界面的交互
void InteractionOfGearDrive(std::ostream& os); //齿轮传动设计界面
void InteractionOfKey(std::ostream& os); //键设计界面
void InteractionOfAxle(std::ostream& os); //轴设计界面
void InteractionOfBearing(std::ostream& os); //轴承的强度设计
void InteractionOfChainDrive(std::ostream& os); //链传动
void InteractionOfBeltDrive(std::ostream& os); //带传动
void InteractionOfInfo(std::ostream& os); //显示设计信息
//其他部分的设计界面...
char getGearDrive() const { return chGearDrive; }
char getAxle() const { return chAxle; }
char getTotal() const { return chTotal; }
char getDrive() const { return chDrive; }
char getPart() const { return chPart; }
char getShow()const { return chShow; }
char getBearing()const { return chBearing; }
100+评论
captcha