📄 fpgl.cpp
字号:
// FPGL.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
struct CHCT;
struct COCT;
struct DCT;
//----------------------------------------------------------------------------
/* 数据结构 */
struct CHCT
{
char *name;
bool attitude;
COCT *back;
COCT *prior;
COCT *next;
};
struct COCT
{
char *name;
bool attitude;
CHCT *chct;
DCT *prior;
DCT *next;
};
struct DCT
{
char *name;
int type;
bool attitude;
COCT *coct;
int number;
DCT *next;
};
DCT sdt0[10]; //全局变量
CHCT chct0[10];
COCT coct0[10];
//--------------------------------------------------------------------------------------------
/*
void input(DCT *M)
{
char name;
printf("输入设备名:");
scanf("%c",&name);
M=(DCT *)malloc(sizeof(DCT));
M->name=name;
M->attitude=false;
M->coct=NULL;
M->number=0;
M->type=-1;
M->next=NULL;
sdt[i]=M;
}
*/
//------------------------------------------------------------------------------
void init_dct(DCT *M)
{
//M=(DCT *)malloc(sizeof(DCT));
M->name="";
M->attitude=false;
M->coct=NULL;
M->number=0;
M->type=-1;
M->next=NULL;
}
//----------------------------------
void init_coct(COCT *N)
{
//N=(COCT *)malloc(sizeof(COCT));
N->name="";
N->attitude=false;
N->chct=NULL;
N->prior=NULL;
N->next=NULL;
}
//-----------------------------------
void init_chct(CHCT *B)
{
B->name="ch1";
B->attitude=false;
B->back=NULL;
B->prior=NULL;
B->next=NULL;
}
//--------------------------------------------------------------------------------
void init()
{
int i;
for(i=0;i<10;i++)
{
init_sdt(&sdt0[i]);
init_coct(&coct0[i]);
init_chct(&chct0[i]);
}
DCT *M;
M=(DCT *)malloc(sizeof(DCT));
init_dct(M);
M->name="K";
sdt0[0]=M;
//------------------------------
M=(DCT *)malloc(sizeof(DCT));
init_dct(M);
M->name="M";
sdt0[1]=M;
//------------------------------
M=(DCT *)malloc(sizeof(DCT));
init_dct(M);
M->name="K";
sdt0[2]=M;
//------------------------------
M=(DCT *)malloc(sizeof(DCT));
init_dct(M);
M->name="P";
sdt0[3]=M;
//------------------------------
COCT *N;
N=(COCT *)malloc(sizeof(COCT));
init_coct(N);
N->name="co1";
coct0[0]=N;
//-----------------------------
N=(COCT *)malloc(sizeof(COCT));
init_coct(N);
N->name="co2";
coct0[1]=N;
//-----------------------------
N=(COCT *)malloc(sizeof(COCT));
init_coct(N);
N->name="co3";
coct0[2]=N;
//----------------------------
CHCT *B;
B=(CHCT *)malloc(sizeof(CHCT));
init_chct(B);
B->name="ch1";
chct0[0]=B;
//-----------------------------
B=(CHCT *)malloc(sizeof(CHCT));
init_chct(B);
B->name="ch2";
chct0[1]=B;
//-----------------------------
std0[0].coct=coct0[0];
std0[1].coct=coct0[0];
std0[2].coct=coct0[1];
std0[3].coct=coct0[2];
coct0[0].chct=chct0[0];
coct0[1].chct=chct0[1];
coct0[2].chct=chct0[1];
}
//------------------------------------------------------------------------------
void addD()
{
char name;
int flag1=0;
DCT *M;
printf("输入设备名:");
scanf("%c",&name);
for(int i=0;i<10;i++)
{
if(dct0[i].name==name)
flag1=1;
}
if(flag1==1)
printf("error: 你申请的设备已经存在!\n"); //错误,设备已经存在
else //设备不存在时
{
M=(DCT *)malloc(sizeof(DCT));
M->name=name;
M->attitude=false;
M->coct=NULL;
M->number=0;
M->type=-1;
M->next=NULL;
printf("是否为该设备添加一个驱动器:(y/n)");
char flag;
scanf("%c",&flag);
if(flag=='y'||flag=='Y') // 加新的驱动器
{
COCT *temp;
init_coct(temp);
printf("输入驱动器的名称:");
char *name1;
scanf(""); //??????? 从键盘读入字串
strcpy(temp->name,name1);
M->coct=temp;
while(1)
{
printf("输入通道的名称:");
int i=0;
char *name3;
scanf(name3); //????????????? 从键盘读字符串
while(chct0[i].name!=name3&&i<10)
{
if(chct[i].name==name3)
flag1=1;
else
i++;
}
if(i==10)
{
printf("你输入的通道名字有错!没有此通道。\n");
printf("重新");
}
else
{
temp->chct=chct[i];
}
}
}
else // 不加新的驱动器
{
printf("输入原有的驱动器的名称:");
char *name2;
scanf(""); //????????????????????? 从键盘读入字串
int i=0;
while(coct0[i].name!=name2&&i<10) //????????????
{
i++;
}
if(i==10)
{
printf("error : 驱动器不存在!\n");
printf("重新");
}
else
M->coct=coct0[i];
}
}
}
//------------------------------------------------------------------------------------------------
void deleteD()
{
int flag=0;
int i=0;
char *name;
printf("输入你要删除的设备名字:");
scanf(""name);
while(sdt0[i]!=name&&i<10)
{
i++;
}
if(i==10) //设备不存在时
{
printf("error: 你输入的设备不存在!\n");
printf("重新" );
}
else //正常删除设备
{
int j=0;
while(j<10)
{
if(j!=i)
if(sdt0[j].coct==sdt0[i].coct)
{
flag=1;
}
}
if(flag==1) //只删除设备,驱动器不删除
{
delete(sdt0[i]);
}
else //删除设备,驱动器也删除
{
delete(sdt0[i].coct);
delete(sdt0[i]);
}
}
}
//-----------------------------------------------------------------------------------------------
void set_forD()
{
printf("输入你要申请设备的名称:");
char *name;
scanf("",name);
while(sdt0[i].name!=name&&i<10)
{
i++;
}
if(i==10)
{
printf("你输入的设备不存在,你不能申请!\n");
printf("重新");
}
else //申请成功
{
if(sdt0[i].attitude==false)
sdt0[i].attitude=true;
else
{
}
}
}
//-----------------------------------------------------------------------------------------------
int main(int argc, char* argv[])
{
//sdt=(DCT *)malloc(10*sizeof(DCT));
init();
char ch;
scanf("%c",&ch);
while(ch!=#)
{
swich(ch)
{
case 'a':
case 'A': addD();break;
case 'd':
case 'D': deleteD();break;
case 's':
case 'S': set_forD();break;
case 'r':
case 'R': relaxD();break;
defaut:
printf("input the command is error!\n");
}
scanf("%c",&ch);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -