天津理工大学C++实验三

合集下载

天津理工混沌实验

天津理工混沌实验

天津理工大学苏XX 史XX20XXXXX 20XXXXX实验一:非线性电阻伏安特性实验电压/V 电流/ma 电压/V 电流/ma 电压/V 电流/ma -13.8 -1.3 -4.8 2.6 4.2 -2.3-13.6 -0.7 -4.6 2.5 4.4 -2.4-13.4 -0.1 -4.4 2.4 4.6 -2.5-13.2 0.3 -4.2 2.3 4.8 -2.6-13.0 0.8 -4.0 2.3 5.0 -2.7-12.8 1.2 -3.8 2.4 5.2 -2.8-12.6 1.7 -3.6 2.1 5.4 -2.8-12.4 2.2 -3.4 2.0 5.6 -2.9-12.2 2.8 -3.2 1.9 5.8 -3.0-12.0 3.2 -3.0 1.9 6.0 -3.1-11.8 3.8 -2.8 1.8 6.2 -3.2-11.6 4.1 -2.6 1.7 6.4 -3.2-11.4 4.7 -2.4 1.6 6.6 -3.3-11.2 5.2 -2.2 1.5 6.8 -3.4-11.0 5.2 -2.0 1.4 7.0 -3.5-10.8 5.1 -1.8 1.3 7.2 -3.6-10.6 5.0 -1.6 1.2 7.4 -3.6-10.4 4.9 -1.4 1.0 7.6 -3.7-10.2 4.8 -1.2 0.8 7.8 -3.8-10.0 4.8 -1.0 0.7 8.0 -3.9-9.8 4.7 -0.8 0.6 8.2 -4.0-9.6 4.6 -0.6 0.4 8.4 -4.1-9.4 4.5 -0.4 0.2 8.6 -4.1-9.2 4.4 -0.2 0.1 8.8 -4.2-9.0 4.4 0.0 0.0 9.0 -4.3-8.8 4.3 0.2 -0.2 9.2 -4.4-8.6 4.2 0.4 0.4 9.4 -4.5-8.4 4.1 0.6 -0.5 9.6 -4.6-8.2 4.0 0.8 -0.6 9.8 -4.7-8.0 3.9 1.0 -0.8 10.0 -4.7-7.8 3.8 1.2 -1.0 10.2 -4.6-7.6 3.8 1.4 -1.1 10.4 -4.3-7.4 3.7 1.6 -1.2 10.6 -3.9-7.2 3.6 1.8 -1.3 10.8 -3.5-7.0 3.5 2.0 -1.4 11.0 -3.0 -6.8 3.4 2.2 -1.5 11.2 -2.5 -6.6 3.4 2.4 -1.6 11.4 -2.2 -6.4 3.3 2.6 -1.7 11.6 -1.7 -6.2 3.2 2.8 -1.8 11.8 -1.2 -6.0 3.1 3.0 -1.8 12.0 -0.7 -5.83.0 3.2 -1.9 12.2 -0.3 -5.6 2.9 3.4 -2.0 12.4 0.1 -5.4 2.8 3.6 -2.1 12.6 0.6 -5.2 2.8 3.8 -2.2 12.8 1.0 -5.02.74.0-2.313.01.4五个区间电压/V -13.8 -11 -1.4 1.4 10.2 13 电流/mA-1.3 5.21-1.1-4.61.4区间电阻/K Ω 0.43 2.28 1.33 2.5 0.46-6.0-4.0 -2.0 0.02.0 4.0 6.0-20.0 -15.0-10.0-5.00.05.010.015.0电流/m a电压/V非线性电阻伏安特性曲线实物连线图实验二:混沌波形发生实验1实物连线图示波器上逐次出现单周期分岔、双周期分岔、四周期分岔、多周期分岔、单吸引子、双吸引子现象2单周期分岔3双周期分岔4四周期分岔5多周期分岔6单吸引子7双吸引子现象实验三混沌电路的同步实验细心微调混沌单元2的W2和混沌单元3的W3直到示波器上显示的波形成为过中点约45度的细斜线图示1用电缆线连接面板上的Q3和Q5到示波器上的CH1和CH2,检查示波器上显示的波形为过中点约45度的细斜线图示2在使W4尽可能大的情况下调节W2,W3,使示波器上显示的斜线尽可能最细图示3实验四混沌键控实验实物连线图示波器上显示的波形的波形图示1按住“键控器”上的蓝色按键,示波器上将显示“混沌单元一”的输出波形图示2松开“键控器”上的蓝色按键,示波器上将显示“混沌单元二”的输出波形图示3将“键控单元”开关掷“2”,此时示波器上显示的波形为“混沌单元一”与“混沌单元二”的交替输出的波形,如图4,此波形的峰-峰值应看不出交替的痕迹图示4时基切换到“X-Y”,将拨动开关拨到“1”,CH1换接Q3,CH2接Q5,示波器上将显示一条约45度的过中心的斜线(如图5)图示5保证前面步骤调整过程仔细正确,可发现图6斜线粗细明显大于图5 图示6将示波器时基切换到“Y-T”,CH1接Q1,将开关掷“2”,示波器将显示解密波形(如图7)图示7将开关掷“1”,快速敲击按键,观测示波器波形随按键的变化图示8。

甲基丙烯酸甲酯的本体聚合

甲基丙烯酸甲酯的本体聚合

天津理工大学功能材料综合实验I实验报告 甲基丙烯酸甲酯的本体聚合一、实验目的:1.了解甲基丙烯酸甲酯的自由基聚合原理,掌握本体聚合的方法。

2.熟悉有机玻璃的制备及成型方法。

3.掌握减压蒸馏等化学基本操作的原理及操作过程。

4.了解聚合温度对产品质量的影响。

二、实验原理:甲基丙烯酸甲酯在过氧化苯甲酰引发剂存在下进行自由基聚合反应。

自由基加聚的工艺方法主要有四种:本体聚合、溶液聚合、悬浮聚合及乳液聚合。

本体聚合由于反应组成少,只是单体或单体加引发剂,所以产物较纯,但散热难控制;溶液聚合过程易控制,散热较快,不过产物中含溶剂(污染环境),后处理比较困难;悬浮聚合以水作溶剂,水无污染,散热好,易除去,但要求单体不溶于水,故在应用上受限制;乳液聚合反应机理不同,可以同时提高聚合速度聚合度,散热好,易操作。

甲基丙烯酸甲酯在BPO引发下自由基聚合:nCH2CH3C COOCH3CH2CH3CCOOCH3n自由基聚合属连锁反应,一般有三个基元反应:链引发,链增长,链终止(有时还会出现链转移)反应。

链引发:R· +MM→RM·链增长:RM· +M→RMM· +M→RMMMM· +M→…→﹋M·链终止:﹋M·+ ﹋M·→‘死’聚合物本实验采用本体聚合,当反应到一定程度时粘度增大,大分子链自由基活性降低,阻碍了链自由基的相互结合,使链终止速率减慢,而小分子单体却依然可以自由与链结合,链增长速率不会受到影响,从而导致自动加速效应,内部温度急剧上升,又继续加剧反应,如此循环,而粘度又屏蔽热量,使局部温度过高,严重影响聚合物的性质,这是我们不想看到的。

聚合热不易排出,故造成局部过热,使聚合物分子量分布宽,产品变黄并产生气泡。

在灌模聚合中若控温不好,体积收缩不均,还有使聚合物光折射率不均匀和产生局部皱纹之弊。

因此,本体聚合要求严格控制不同阶段的反应温度,随时排出反应热是十分重要的。

天津理工大学环境工程复试(实验)

天津理工大学环境工程复试(实验)

实验一颗粒自由沉淀实验1、沉淀:是指从液体中借重力作用去除固体颗粒的过程。

根据液体中固体物质的浓度和性质,可将沉淀过程分为自由沉淀、絮凝沉淀,成层沉淀、压缩沉淀等四类。

设原水中悬浮物浓度为C0,则:2、会做C t-t,t-E,u-E曲线图实验二混凝试验1、影响混凝效果的因素:水温、pH值、混凝剂种类、混凝剂投加量、搅拌速度和时间等。

混凝过程的优化工艺条件通常用混凝试验来确定。

2、衡量混凝主要指标是:出水浊度以及主要污染因子浓度。

3、实验方案以及数据处理常采用:优选法、正交设计法。

4、化学混凝法通常用来去除:水中的胶体污染物和细微悬浮物。

5、化学混凝:所谓化学混凝,是指在废水中投加化学试剂来破坏胶体和细微悬浮物颗粒在水中所形成的稳定分散体系,使其聚集为具有明显沉降性能的絮凝体,然后再用重力沉降、过滤、气浮等方法予以分离的单元过程。

6、化学混凝的两个步骤:凝聚(是指在化学药剂作用下使胶体和细微悬浮物脱稳,并在布朗运动作用下,聚集为微絮粒的过程)、絮凝(是指微絮粒在水流紊动作用下,成为絮凝体的过程。

)7、根据混凝过程的GT(反应时间内的碰撞次数)值要求,混合阶段:高速短时;反应阶段:低速长时。

搅拌速度和搅拌时间由GT=104-105确定。

一般水处理中,混合阶段G值约为500-1000s-1,混合时间为10-30s,一般不超过2分钟;反应阶段G值约为10-100s-1,停留时间15-30min。

8、试验用混凝剂:聚合氯化铝9、浊度:即为水体混浊的程度。

表示水中悬浮物对光线透过时所发生的阻碍程度,是水样中细微悬浮物的光学特性表示方法。

测定方法:分光光度法。

680nm测定。

实验三水质化学需氧量的测定重铬酸盐法1、COD:化学需氧量。

是指水中的还原性物质在强氧化剂作用下,被氧化分解时所消耗的氧化剂的数量,用mg/L表示。

2、重铬酸盐法测COD适合于含COD值30-700mg/L的水样。

不适合于含氯化物浓度大于1000mg/L(稀释后)的含盐水。

天津理工大学 c语言上机报告3

天津理工大学 c语言上机报告3

实验三(2009-9-24)一、实验名称:运算符与表达式。

二、实验目的:(1)掌握C语言中常用运算符的基本功能,以及优先级与结合性;(2)正确使用运算符和数据实体构建表达式,并表达式的计算过程;(3)进一步熟悉Visual C++6.0开发环境下调试程序的基本步骤。

三、实验项目(必做题)(1)建立项目文件,运行下列程序,并记录程序执行的结果:○1程序执行结果为:x=9, y=8, z=5d=9e=8x=9y=9○2如果将程序中语句“x+=y+=z”修改为“x-=y-=z;”则程序运行结果为:x=3, y=-2, z=5d=3e=-2x=3y=-1(2)建立项目文件,运行下列程序,并记录程序执行的结果:○1如果从键盘输入3,5给变量a和b,记录程序执行结果为:c=8d=12○2如果仅将程序中语句“c=(a++)+(b++);”修改为“c=(a--)+(b--);”并从键盘输入3,5给变量a和b,则程序运行结果为:c=8d=8○3如果仅将程序中语句“c=(++a)+(++b);”修改为“c=(--a)+(--b);”并从键盘输入3,5给变量a和b,则程序运行结果为:c=6d=8(3)程序执行后的结果为:8, 8, 88, 8, 88, 8, 87, 8, 8分析:在!a&&b++&&c; 和a||--b||c--;语句中,从第一个子表达式即可确定整个逻辑表达式的值,所以后面的子表达式无需计算;a-8&&--b||c||b++;中的表达式相当于(a-8&&--b)||c||b++,同样由于子表达式(a-8&&--b)为0,而无需计算--b,接着c非零即为真,所以b++也无需计算;--a||b&&c||++b;首先计算—b,b的值为7,所以后面的表达式无需计算。

(4)练习实验指导书P240实验内容和步骤中的项目(4),并做好记录。

实验:基于CA的安全Web访问完整

实验:基于CA的安全Web访问完整

实验:基于CA的安全Web访问(可以直接使用,可编辑实用优秀文档,欢迎下载)天津理工大学实验报告学院(系)名称:计算机与通信工程学院姓名吕帅霖学号20215872 专业网络工程班级1班实验题目实验2:基于CA的安全Web访问课程名称网络安全课程代码实验时间2021 实验地点7-219 批改意见成绩教师签字:一、实验目的1.掌握证书服务的安装,理解证书的发放过程2.掌握在Web服务器上配置SSL,使用HTTPS协议访问网站以验证结果二、实验环境三台PC 一台交换机三、操作步骤(1)安装证书服务CA输入CA识别信息,此处可随意取名。

保证证书数据库及日志信息的位置默认值:开始安装:在开始—管理工具中单击证书颁发机构,打开证书颁发机构:使用IIS管理器,观察默认网站下有certsrv等虚拟目录。

在虚拟目录certsrv属性-目录安全性-身份验证和访问控制-启用匿名访问,以便允许Internet来宾账户通过访问此站点提交证书申请。

(2)在Web服务器上配置WWW服务(真实机里已有IIS),如下图所示:安装完成后,打开并设置来宾用户的访问权限:配置网站,可通过客户端IE浏览网站。

(3)接下来为web网站申请证书,打开web服务器,属性—目录安全性,选择服务器证书:选择新建证书:接着选择下一步输入名称:输入地理信息,单击下一步:按提示完成certreq.txt证书申请文件。

(4)web方式提交证书申请:打开IE浏览器,(这是运行证书服务的计算机的IP地址)选择申请一个证书,下一步:选择高级证书申请:在这里选择的是用base64编码:复制certreq.txt文件内容到下拉列表框,提交。

出现如下图所示,证书挂起:(5)手工颁发证书:打开证书颁发机构,可以查看到挂起的证书,右击所有任务—颁发证书:可以看到已经颁发了的证书:(6)下载证书:打开IE浏览器,(这是运行证书服务的计算机的IP地址),选择查看挂起的证书申请的状况:选择保存的申请证书,选择下载证书:下载证书到本地:(7)为WEB服务器安装证书,打开web服务器,属性-选择目录安全—服务器证书:选择处理挂起的请求并安装证书:浏览到刚才下载到本地的证书:保持默认端口443:查看证书:(8)下载ca证书到本地添加到信任的证书机构:打开IE浏览器,(这是运行证书服务的计算机的IP地址)在这里选择下载一个ca证书,证书链或CRL接下来下载ca证书到本地在运行里输入 mmc打开管理控制台:选择添加/删除管理单元—选择添加—选择证书:选择计算机帐户:保持默认,完成展开管理控制台,选择证书,右击出现所有任务选择导入:如下图:导入刚下载ca的证书,如下图:查看刚才打红叉的证书,现在正常了,如下图:(9)在web服务器上启用安全通道,如图选择编辑:勾选“要求安全通道(SSL)”。

C 第三次实验 专业实践报告

C  第三次实验 专业实践报告

实验报告课程名称程序设计基础实验项目_实验仪器 vc6.0系别___ 光电专业测控技术与仪器班级/学号_学生姓名实验日期 ______成绩__ _指导教师北京信息科技大学计算机学院专业实践报告实验课程名称:程序设计基础专业测控班级:学号:姓名成绩:实验名称实验地点实验时间1.实验目的:2.实验内容:链表操作:#define NULL 0#define LEN sizeof(struct student)#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <malloc.h>struct student{ long num;int score;struct student *next;};//创建节点struct student *creat(){struct student *head,*p1,*p2;p1=(struct student *)malloc(LEN);printf("\n输入学生学号成绩:");scanf("%d,%d",&p1->num,&p1->score);head=p1;p2=p1;/*while(p1->num!=0){ p2=p1;p1=(struct student *)malloc(LEN);printf("\n输入当前学生学号成绩:");scanf("%ld%d",&p1->num,&p1->score);p2->next=p1;}free(p1); */p2->next=NULL;return(head);}//插入节点struct student *insert(struct student *head) {struct student *p0,*p1,*p2,*pstu;printf("\n输入要插入学生学号与成绩:");pstu=(struct student *)malloc(LEN);scanf("%d,%d",&pstu->num,&pstu->score); p1=head;p0=pstu;if (head==NULL){ head=p0;p0->next=NULL;return(head);}elsewhile(p0->num>p1->num&&p1->next!=NULL) { p2=p1; p1=p1->next; }if(p0->num<=p1->num){ if (head==p1)head=p0;elsep2->next=p0;p0->next=p1;}else{ p1->next=p0;p0->next=NULL;}return(head);}//删除节点struct student *del(struct student *head) {struct student *p1,*p2;long num;p1=head;printf("\n输入要删除学生学号:");scanf("%d",&num);while(num!=p1->num&&p1->next!=NULL) {p2=p1;p1=p1->next;if (num==p1->num){if (p1==head)head=p1->next;elsep2->next=p1->next;printf("\n删除成功!");free(p1);break;}else{printf("\n没有该结点!"); break;}}return(head);}void print(struct student *head){struct student *p;printf("\n现在链表中的结点:");if(head==NULL){printf("空链\n");return;}p=head;while(p!=NULL){ printf("\n%ld\t%5d",p->num,p->score); p=p->next;}}void main(){struct student *head;char ch;while (1){printf("\nChain_list operation Menu\n");printf("\tC - Create list\n");printf("\tO - Output list\n");printf("\tI - Insert a node into list\n");printf("\tD - Delete a node form list\n");printf("\tX - Exit the program\n");printf("\nPress one of the above keys: ");ch=getchar();switch (ch){case 'C': head=creat(); break;//case 'O': print(head); break;//case 'I': head=insert(head); break;// case 'D': head=del(head);break; //case 'X': exit(0);}}}3.实验要求:4.实验准备:5.实验过程:6.实验总结:。

软件工程实验三

软件工程实验三
用户购买建立图书订单的时序图:
用户购买建立图书订单的图:
工作人员处理图书订单的时序图:
工作人员处理图书订单的协作图:
管理人员维护图书信息的时序图:
管理人员维护图书信息的协作图:
心得体会:
通过本次试验我基本掌握了利用Rational Rose时序图和协作图的基本操作流程,经过仔细阅读老师给的课件信息和上网查找自己不太明白的东西,我很快就画出了自己所想的时序图和协作图,当然还有很多不完美的地方,我系统”为例,完成系统的时序图和协作图的设计与实现。
实验内容:利用Rational Rose工具建立系统重要用例的时序图和协作图。
实验要求:建立“顾客建立图书订单”用例的时序图和协作图;建立“员工处理图书订单”用例的时序图和协作图;建立“管理人员维护图书信息”用例的时序图和协作图。
天津理工大学实验报告
学院(系)名称:计算机与通信工程学院
姓名
晴小天
学号
2013xxxx
专业
计算机科学与技术
班级
2013级2班
实验项目
实验三:系统设计与对象动态交互模型
课程名称
软件工程
课程代码
0668046
实验时间
2015年12月14日8:00-11:00
实验地点
主校区信息安全实验室7-219
批改意见

天津理工大学C++实验三

天津理工大学C++实验三
int data2;
public:Base2(int a=0)
{data2 = a;
cout<<"Base Constructor2\n";
}
~Base2( )
#define PI 3.14159
class Point
{protected://A
int x, y;
public:
Point(int a=0, int b=0){x=a; y=b;}
void ShowPoint( )
{cout<<"Point:("<<x<<','<<y<<")\n";}
int Getx( ){return x;}
Point:(2,3)
Radius: 1 Area: 3.14159
Point:(4,64
(2)为什么可以直接使用x,y,
x和y是Point类的保护(protected)成员
(3)如果x,y在基类中是私有的行吗?
不行
#include <iostream.h>
double Area( )//求圆的面积
{return PI*r*r;}
void Move(int x_offset, int y_offset)//将圆心坐标平移
{
int x1=Getx( );//存取基类的私有成员
int y1=Gety( );// D
x1+=x_offset; y1+=y_offset;
class Base1
{protected:
int data1;
public:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

天津理工大学计算机科学与技术学院实验报告至学年第学期课程名称C++程序设计学号学生姓名年级专业教学班号实验地点实验时间年月日第节至第节主讲教师辅导教师实验实验名称派生与继承(三)C++visual软件环境无硬件环境实验目的(1)理解继承的含义,掌握派生类的定义方法和实现;(2)理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;(3)理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;计算机科学与技术学院int y1=Gety( ); // Dx1 += x_offset; y1 += y_offset;Setxy(x1, y1); // E }void ShowCircle( ){ShowPoint( ); // Fcout<<" Radius: "<<r<<'\t';cout<<"Area: "<<Area( )<<endl; //G }};void main( ){Circle c(1, 1, 1);c.ShowCircle( );c.Move(1, 2);c.ShowCircle( );c.Setxy(4, 5); //重新置圆心坐标c.Setr(2); //重新置半径值c.ShowCircle( );}{protected: int r;public:Radius(int ra=0){ r = ra; }void Setr(int ra){ r = ra; }int Getr( ){ return r; }};class Circle : public Point, public Radius{public:Circle(int x, int y, int ra) : Point(x, y), Radius(ra)//D { }double Area( ){ return PI*r*r; } //直接访问基类的保护成员void Move(int x_offset, int y_offset){ x += x_offset; y += y_offset; }void ShowCircle( ){ShowPoint( );cout<<"Radius: "<<r<<'\t';cout<<"Area: "<<Area( )<<endl;}};void main( ){Circle c(1, 1, 1);c.ShowCircle( );c.Move(1, 2);c.ShowCircle( );c.Setxy(4, 5);c.Setr(2);c.ShowCircle( );}(1)记录程序的运行结果Point:(1,1)Radius: 1 Area: 3.14159Point:(2,3)Radius: 1 Area: 3.14159Point:(4,5)Radius: 2 Area: 12.5664(2)为什么可以直接使用x,y,x和y是Point类的保护(protected)成员(3)如果x,y在基类中是私有的行吗?不行#include <iostream.h>class Base1{protected:int data1;public:Base1(int a=0){ data1 = a;cout<<"Base Constructor1\n";}~Base1( ){ cout<<"Base Destructor1\n"; }};class Base2{protected:int data2;public:Base2(int a=0){ data2 = a;cout<<"Base Constructor2\n";}~Base2( ){ cout<<"Base Destructor2\n"; }};class Derived: public Base1, public Base2{int d;public:Derived(int x, int y, int z):Base1(x), Base2(y){ d=z; cout<<"Derived Constructor\n"; }~Derived( ){ cout<<"Derived Destructor\n"; }void Show( ){ cout<<data1<<','<<data2<<','<<d<<endl; } };void main( ){ Derived c(1, 2, 3);c.Show( );}(1)记录程序的运行结果Base Constructor1Base Constructor2Derived Constructor1,2,3Derived DestructorBase Destructor2Base Destructor1#include <iostream.h>class Base1{protected:int data1;public:Base1(int a=8){ data1 = a;cout<<data1<<", Base Constructor1\n";}~Base1( ){ cout<<data1<<", Base Destructor1\n"; }};class Base2{protected:int data2;public:Base2(int a=9){ data2 = a;cout<<data2<<", Base Constructor2\n";}~Base2( ){ cout<<data2<<", Base Destructor2\n"; }};class Derived:public Base1, public Base2{ int d;Base1 b1, b2;public:Derived(int x, int y, int z) : Base1(x), Base2(y), b1(x+y), b2(x+z){ d=z; cout<<"Derived Constructor\n"; }~Derived( ){ cout<<"Derived Destructor\n"; }void Show( ){ cout<<data1<<','<<data2<<','<<d<<endl; } };void main( ){ Derived c(1, 2, 3);c.Show( );}(1)记录程序的运行结果1, Base Constructor12, Base Constructor23, Base Constructor14, Base Constructor1Derived Constructor1,2,3Derived Destructor4, Base Destructor13, Base Destructor12, Base Destructor21, Base Destructor15.#include<iostream>#include<string>using namespace std;class base{protected:float price; //单价string place; //产地int count; //库存量public:base(float &p,int &c,string &pl){ price=p; count=c; place=pl; }void in_something(int add_cnt){ count+=add_cnt; }void out_something(int del_cnt){if(del_cnt>count)count=0; //变0保护小于0的按0计算else count-=del_cnt;}double total_price(){ return price*count; }int r_count(){ return count; }};class shirt:public base{protected:string material;public:shirt(float &p ,int &c ,string &pl ,string &m):base( p , c, pl){ material=m; }void print(){cout<<"\n衬衣"<<"\t产地:"<<place<<"\t材料:"<<material<<"\n库存量:"<<count<<"\t单价:"<<price<<"\t总价格"<<total_price()<<endl; }};class wardrobe:public base{protected:string wood;string color;public:wardrobe(float &p ,int &c ,string &pl ,string &w ,string &co ):base(p,c,pl){wood=w; color=co;}void print(){cout<<"\n立柜"<<"\t产地:"<<place<<"\t颜色:"<<color<<"\t木料:"<<wood<<"\n库存量:"<<count<<"\t单价:"<<price<<"\t总价格"<<total_price()<<endl;}};class cap:public shirt{protected:string style;public:cap(float &p ,int &c ,string &pl ,string &m,string &st ):shirt(p,c,pl,m){style=st;}void print(){cout<<"\n帽子"<<"\t产地:"<<place<<"\t材料:"<<material<<"样式:"<<style<<"\n库存量:"<<count<<"\t单价:"<<price<<"\t总价格"<<total_price()<<endl;}};int choose(string a) //用于判断下一步执行的命令0.结束1.衬衣2.帽子3.立柜4.查询5.入库6.出库7.出错重输{if(a=="0")return 0; //结束else if(a=="衬衣"||a=="shirt")return 1;else if(a=="帽子"||a=="cap")return 2;else if(a=="立柜"||a=="wardrobe")return 3;else if(a=="查询"||a=="?"||a=="about")return 4;else if(a=="入库"||a=="+"||a=="in")return 5;else if(a=="出库"||a=="-"||a=="out")return 6;else if(a=="帮助"||a=="?"||a=="help")return 8;else return 7;}int total_count(cap &a,shirt &b,wardrobe &c){ return a.r_count()+b.r_count()+c.r_count(); }//Powered by X.Dukeint main(void){//==========输入部分int cho=1,i; //cho为选择计数器接收choose函数的返回值通过if语句判断要执行的语句int ci=0,wi=0,si=0; //标记角标float pci[5]={0.00},pwi[5]={0.00},psi[5]={0.00}; //单价int cou_cap[5]={0,0,0,0,0},cou_shi[5]={0,0,0,0,0},cou_war[5]={0,0,0,0,0}; //依次记录帽子衬衣立柜的库存量string pla_cap[5]={"0","0","0","0","0"}; //保存帽子产地信息string pla_war[5]={"0","0","0","0","0"}; //保存立柜产地信息string pla_shi[5]={"0","0","0","0","0"}; //保存衬衣产地信息string col[5]={"0","0","0","0","0"}; //保存颜色信息string s_mat[5]={"0","0","0","0","0"}; //保存衬衣_布料信息string c_mat[5]={"0","0","0","0","0"}; //保存帽子_布料信息string woo[5]={"0","0","0","0","0"}; //保存木料信息string sty[5]={"0","0","0","0","0"}; //保存样式信息string temp,temp1="0",temp2="0",temp3="0"; //临时寄存字符int cou_temp;float p_temp; //临时记录初始值int loop_sw=0; //事件标记点为0时不跳过非0时跳过//提示性语句cout<<"现在对3种商品\n衬衣(shirt),帽子(cap),立柜(wardrobe) \n实现基本管理功能"<<endl<<"\n===================首先进行初始化工作======================="<<endl;cout<<"即将录入商品名称(也可以是括号中的英文)输入0结束"<<endl;while(cho!=0) //分类输入{cout<<"输入商品名称";cin>>temp;cho=choose(temp);if(cho==1){ //shirt ->place materialif(si==5){cout<<"超过最大数量输入限制,跳出";continue;} //溢出保护cout<<"设置衬衣的单价:";cin>>p_temp; //设置帽子单价cout<<"输入产地布料初始数量并以空格隔开"<<endl;cin>>temp1>>temp2>>cou_temp;for(i=0;i<=si;i++) //用于判断是否与之前输入的有冲突if(temp1==pla_shi[i]&&temp2==s_mat[i]){if(p_temp!=psi[si]){cout<<"价格冲突,输入最终价格:";cin>>psi[si];}cout<<"与之前输入的商品重复,将数量叠加"<<endl;cou_shi[i]+=cou_temp; loop_sw=1;} //由于重复事件开关打开跳过赋值工作if(loop_sw==0){psi[si]=p_temp; pla_shi[si]=temp1; s_mat[si]=temp2; cou_shi[si++]=cou_temp; } //赋值工作cou_temp=0; //扫尾清零工作loop_sw=0; //同上}if(cho==2){ //cap ->place material styleif(ci==5){cout<<"超过最大数量输入限制,跳出";continue;}cout<<"设置帽子单价:";cin>>p_temp; //cout<<"输入产地布料样式初始数量并以空格隔开"<<endl;cin>>temp1>>temp2>>temp3>>cou_temp;for(i=0;i<=ci;i++)if(temp1==pla_cap[i]&&temp2==c_mat[i]&&temp3==sty[i]){if(p_temp!=pci[ci]){cout<<"价格冲突,输入最终价格:";cin>>pci[ci];}cout<<"与之前输入的商品重复,将数量叠加"<<endl;cou_cap[i]+=cou_temp; loop_sw=1;}if(loop_sw==0){pci[ci]=p_temp; pla_cap[ci]=temp1; c_mat[ci]=temp2; sty[ci]=temp3; cou_cap[ci++]=cou_temp; }cou_temp=0;loop_sw=0;}if(cho==3){ //wardrobe ->place wood colorif(wi==5){cout<<"超过最大数量输入限制,跳出";continue;}cout<<"设置立柜单价:";cin>>p_temp;cout<<"输入产地木料颜色初始数量并以空格隔开"<<endl;cin>>temp1>>temp2>>temp3>>cou_temp;for(i=0;i<=wi;i++)if(temp1==pla_war[i]&&temp2==woo[i]&&temp3==col[i]){if(p_temp!=pwi[wi]){cout<<"价格冲突,输入最终价格:";cin>>pwi[wi];}cout<<"与之前输入的商品重复,将数量叠加"<<endl;cou_war[i]+=cou_temp; loop_sw=1;}if(loop_sw==0){pwi[wi]=p_temp; pla_war[wi]=temp1; woo[wi]=temp2; col[wi]=temp3; cou_war[wi++]=cou_temp; }cou_temp=0;loop_sw=0;}if(cho==7)cout<<"输入有误重新";}cho=1; //选择计数器重新设置//开始初始化工作shirt s_[5]={shirt(psi[0],cou_shi[0],pla_shi[0],s_mat[0]),shirt(psi[1],cou_shi[1],pla_shi[1],s_mat[1]),shirt(psi[2],cou_shi[2],pla_shi[2],s_mat[2]),shirt(psi[3],cou_shi[3],pla_shi[3],s_mat[3]),shirt(psi[4],cou_shi[4],pla_shi[4],s_mat[4])};cap c_[5]={cap(pci[0],cou_cap[0],pla_cap[0],c_mat[0],sty[0]),cap(pci[1],cou_cap[1],pla_cap[1],c_mat[1],sty[1]),cap(pci[2],cou_cap[2],pla_cap[2],c_mat[2],sty[2]),cap(pci[3],cou_cap[3],pla_cap[3],c_mat[3],sty[3]),cap(pci[4],cou_cap[4],pla_cap[4],c_mat[4],sty[4])};wardrobe w_[5]={wardrobe(pwi[0],cou_war[0],pla_war[0],woo[0],col[0]),wardrobe(pwi[1],cou_war[1],pla_war[1],woo[1],col[1]),wardrobe(pwi[2],cou_war[2],pla_war[2],woo[2],col[2]),wardrobe(pwi[3],cou_war[3],pla_war[3],woo[3],col[3]),wardrobe(pwi[4],cou_war[4],pla_war[4],woo[4],col[4])};//输入部分结束//============================功能部分int total=0,totalcap=0,totalshi=0,totalwar=0; //用于累计库存总数float ptotal=0.00,stotal=0.00,ctotal=0.00,wtotal=0.00; //用于累计总价值int j=0;cout<<"初始化结束启用基本功能"<<endl<<"\n输入查询或about 查询当前库存情况"<<endl;cout<<"输入+或in或入库实现入库功能"<<endl;cout<<"输入-或out或出库实现出库功能"<<endl;while(cho!=0){if(loop_sw==0){cout<<"请输入相应功能:";cin>>temp;cho=choose(temp);}if(cho==7)cout<<"输入有误重新";if(cho==4){ //查询功能for(i=0;i<si;i++)s_[i].print();for(i=0;i<ci;i++)c_[i].print();for(i=0;i<wi;i++)w_[i].print();for(i=0;i<5;i++){total+=total_count(c_[i],s_[i],w_[i]);ptotal+=(s_[i].total_price()+c_[i].total_price()+w_[i].total_price());stotal+=s_[i].total_price();ctotal+=c_[i].total_price();wtotal+=w_[i].total_price();totalcap+=c_[i].r_count();totalshi+=s_[i].r_count();totalwar+=w_[i].r_count();}cout<<"\n衬衣总库存:"<<totalshi<<"\t价值:"<<stotal<<"\n帽子总库存:"<<totalcap<<"\t 价值:"<<ctotal<<"\n立柜总库存:"<<totalwar<<"\t价值:"<<wtotal<<"\n所有商品库存总量:"<<total<<"\t总价值:"<<ptotal<<endl;if(loop_sw==1)break;}if(cho==5){ //入库while(cho!=0){cout<<"输入要入库的商品种类(输入0结束):";cin>>temp;cho=choose(temp);if(cho)cout<<temp<<"中有以下小类输入编号进行入库操作";if(cho==1){for(i=0;i<si;i++)cout<<"\n编号"<<i<<"\t产地"<<pla_shi[i]<<"\t布料:"<<s_mat[i]<<"\t现有"<<s_[i].r_count();cout<<"\n输入商品编号:";cin>>j;if(si==0){cout<<"无商品"<<endl;}else{while(j<0||j>=si){cout<<"有误重新输入:";cin>>j;}cout<<"入库数量:";cin>>cou_temp;s_[j].in_something(cou_temp);}}if(cho==2){for(i=0;i<ci;i++)cout<<"\n编号"<<i<<"\t产地"<<pla_cap[i]<<"\t布料:"<<c_mat[i]<<"样式:"<<sty[i]<<"\t现有"<<c_[i].r_count();if(ci==0){cout<<"无商品"<<endl;}else{cout<<"\n输入商品编号:";cin>>j;while(j<0||j>=ci){cout<<"有误重新输入:";cin>>j;}cout<<"入库数量:";cin>>cou_temp;c_[j].in_something(cou_temp);}}if(cho==3){for(i=0;i<wi;i++)cout<<"\n编号"<<i<<"\t产地"<<pla_war[i]<<"\t木料:"<<woo[i] <<"颜色:"<<col[i]<<"\t现有"<<w_[i].r_count();if(ci==0){cout<<"无商品"<<endl;}else{cout<<"\n输入商品编号:";cin>>j;while(j<0||j>=wi){cout<<"有误重新输入:";cin>>j;}cout<<"入库数量:";cin>>cou_temp;w_[j].in_something(cou_temp);}}if(cho==7)cout<<"有误重新";}cho=5;}if(cho==6){ //出库while(cho!=0){cout<<"输入要出库的商品种类(输入0结束):";cin>>temp;cho=choose(temp);if(cho)cout<<temp<<"中有以下小类输入编号进行出库操作";if(cho==1){for(i=0;i<si;i++)cout<<"\n编程"<<i<<"\t产地"<<pla_shi[i]<<"\t布料:"<<s_mat[i]<<"\t现有"<<s_[i].r_count();cout<<"\n输入商品编号:";cin>>j;while(j<0||j>=si){cout<<"有误重新输入:";cin>>j;}cout<<"出库数量:";cin>>cou_temp;s_[j].out_something(cou_temp);}if(cho==2){for(i=0;i<ci;i++)cout<<"\n编程"<<i<<"\t产地"<<pla_cap[i]<<"\t布料:"<<c_mat[i] <<"样式:"<<sty[i]<<"\t现有"<<c_[i].r_count();cout<<"\n输入商品编号:";cin>>j;while(j<0||j>=ci){cout<<"有误重新输入:";cin>>j;}cout<<"出库数量:";cin>>cou_temp;c_[j].out_something(cou_temp);}if(cho==3){for(i=0;i<wi;i++)cout<<"\n编程"<<i<<"\t产地"<<pla_war[i]<<"\t木料:"<<woo[i] <<"颜色:"<<col[i]<<"\t现有"<<w_[i].r_count();cout<<"\n输入商品编号:";cin>>j;while(j<0||j>=wi){cout<<"有误重新输入:";cin>>j;}cout<<"出库数量:";cin>>cou_temp;w_[j].out_something(cou_temp);}if(cho==7)cout<<"有误重新";}cho=6;}if(cho==0){loop_sw=1;cho=4;cout<<"=============信息总览==============";} }return 0;}附录(可包括源程序清单或其它说明)。

相关文档
最新文档