
#include #include #include #include void init_dlink(void)void read_file(void)void write_file(void)void insert_item(void)void search_item(void)void sort_item(void)void delete_item(void)void print_item(void)void modify_item(void)void anykey(void)typedef struct node *linkstruct node { char stu_id[10]char name[20]char sex[10]char _class[50]char major[50]char address[100]link prev, next}link ptr, head, tail, currentbool fFlagint main(void) { char option1, option2system("cls")init_dlink()read_file()while(1) { system("cls")printf("**********************************\n")printf(" 1.insert item\n")printf(" 2.delete item\n")printf(" 3.search item\n")printf(" 4.print item\n")printf(" 5.modify item\n")printf(" 6.quit\n")printf("**********************************\n")printf(" Please enter your choice (1-5)...")option1 = getche()switch(option1) { case '1': fFlag = 1insert_item()breakcase '2': delete_item()breakcase '3': search_item()breakcase '4': print_item()breakcase '5': modify_item()breakcase '6': if (fFlag) { printf("\n")printf("Save changes? (Y or N)")option2 = getche()if(option2 == 'Y') { write_file()exit(0)} if(option2 = 'N') exit(0)} else { write_file()exit(0)} } } } void init_dlink(void) { ptr = (link)malloc(sizeof *ptr)strcpy(ptr->stu_id, "0")strcpy(ptr->name, "0")strcpy(ptr->sex, "0")strcpy(ptr->_class, "0")strcpy(ptr->major, "0")strcpy(ptr->address, "0")ptr->prev = ptrptr->next = ptrhead = ptrtail = ptr} void read_file(void) { FILE *fptrif((fptr = fopen("dlist.dat", "r")) == NULL) { printf(" Data file not exist!\n")printf(" Press any key to edit first record...\n")getch()insert_item()} else { ptr = (link)malloc(sizeof *ptr)while(fscanf(fptr, "%s %s %s %s %s %s", ptr->stu_id, ptr->name, ptr->sex, ptr->_class, ptr->major, ptr->address) != EOF) { if(strcmp(ptr->stu_id, " ") != 0) { sort_item()ptr = (link)malloc(sizeof *ptr)} else free(ptr)} fclose(fptr)} } void write_file(void) { FILE *fptrfptr = fopen("dlist.dat", "w")current = head->nextwhile(current != head) { fprintf(fptr, "%s %s %s %s %s %s\n", current->stu_id, current->name, current->sex, current->_class, current->major, current->address)current = current->next} fclose(fptr)} void insert_item(void) { system("cls")ptr = (link)malloc(sizeof *ptr)printf(" Student ID:")gets(ptr->stu_id)printf(" Name:")gets(ptr->name)printf(" Sex:")gets(ptr->sex)printf(" _class:")gets(ptr->_class)printf(" Major:")gets(ptr->major)printf(" Address:")gets(ptr->address)sort_item()} void sort_item(void) { current = head->nextwhile(current != head) { if(strcmp(ptr->stu_id, current->stu_id) 0) { ptr->next = currentptr->prev = current->prevcurrent->prev->next = ptrcurrent->prev = ptrbreak} current = current->next} if(head->next == head || current == head) { ptr->next = headptr->prev = head->prevhead->prev->next = ptrhead->prev = ptrtail = ptr} } void delete_item(void) { char del_id[10]int count = 0link clearsystem("cls")if(head->next == head) printf(" No student record!\n")else { printf(" Delete student ID:")gets(del_id)current = head->nextwhile(current->next != head) { if(strcmp(del_id, current->stu_id)==0) { count++clear = currentcurrent->prev->next = current->nextcurrent->next->prev = current->prevcurrent = current->nextfree(clear)} current = current->next} if(strcmp(del_id, current->stu_id) == 0) { count++clear = currentcurrent->prev->next = headhead->prev = current->prevtail = current->prevfree(clear)} if(count >0) printf(" %s student record(s) deleted\n", del_id)else printf(" Student %s not found\n", del_id)} anykey()} void search_item(void) { char search_id[10]system("cls")if(head->next == head) printf(" No student record\n")else { printf(" Search student ID:")gets(search_id)current = head->nextwhile((current != head) &&(strcmp(search_id, current->stu_id)!=0)) current = current->nextif (current != head) { printf("--------------------------------------\n")printf(" Student ID: %s\n", current->stu_id)printf(" Student name: %s\n", current->name)printf(" Student sex: %s\n", current->sex)printf(" Student _class: %s\n", current->_class)printf(" Student major: %s\n", current->major)printf(" Student address: %s\n", current->address)printf("--------------------------------------\n")} else printf(" Student %s not found\n", search_id)} anykey()} void modify_item(void) { int count = 0char modify_id[10]system("cls")if(head->next == head) printf(" No student record\n")else { printf(" Modify student ID:")gets(modify_id)current = head->nextwhile(current != head) { if(strcmp(modify_id, current->stu_id) == 0) { printf("******************************\n")printf(" Student ID: %s\n", current->stu_id)printf(" Student name: %s\n", current->name)printf(" Student sex: %s\n", current->sex)printf(" Student _class: %s\n", current->_class)printf(" Student major: %s\n", current->major)printf(" Student address: %s\n", current->address)printf(" Please enter new _class:")gets(current->_class)printf(" Please enter new major:")gets(current->major)printf(" Please enter new address:")gets(current->address)count++} current = current->next} if(count >0) printf(" %d student record(s) modified\n", count)else printf(" Student %s not found\n", modify_id)} anykey()} void print_item(void) { int count = 0system("cls")if(head->next == head) printf(" No student record\n")else { printf(" STU_ID NAME SEX _CLASS MAJOR ADDRESS\n")printf("-------------------------------------------------------------------------------\n")current = head->nextwhile(current != head) { printf(" %-7s %-12s %-6s %-12s %-12s %-s\n", current->stu_id, current->name, current->sex, current->_class, current->major, current->address)count++current = current->nextif(count % 20 == 0) getch()} printf("-------------------------------------------------------------------------------\n")printf(" Total %d record(s) found\n", count)} anykey()} void anykey(void) { printf(" Press any key to continue...")getch()}博途 V17 中怎样组态 3SK2 Profinet 通讯
模块一、文章内容概要
? 3SK2、Profinet 模块及 PLC 组态及参数设置
? 3SK2 和 PLC 之间循环通讯
? 4 3SK2 和 PLC 之间循环通讯
二、 3SK2 、Profinet 模块及 PLC 组态及参数设置
1. 添加新硬件
首先打开 Portal 软件,新建项目后, 我们首先添加 3SK2 安全继电器的 基本单元:
1) 双击添加新设备
2) 点击选择控制设备
3) 双击选择需要添加的 3SK2 安全继电器
4) 点击确定
2. 添加通讯模块
基本单元添加成功后 ,添加 Profinet 模块
1) 点击设备组态
2) 将 Profinet 通讯模块拖入 2 号槽位
3) 设置 IP 地址
4) 设置设备名称
3. 参数分配 在参数分配的设备响应中可以设置过程数据结构。数据结构分为 32DI/DO 和 64DI/DO
两种长度,可根据项目需求选择数据长度。 在过程数据结构选择 32 和 64 位两种数据长
度后,在硬件组态界面的 I 地址和 Q 地址长度将会有对应的变化。
4.程序编译下载 3SK2 组态完成后,需要下载至 3SK2 设备 首先连接 PC 电缆至 3SK2 设备,并按如下步
骤 *** 作: 1) 点击编译 2) 点击下载 3) 选
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#define N sizeof(struct book)
#define PT "%-5d %10s %6s %6s %8s %3d \n",p->num,p->name,p->where,p->author,p->pub,p->count
struct book /*图书信息*/
{
int num /*书号*/
char name[10] /*书名*/
char where[10] /*所在书库*/
char author[15] /*作者*/
char pub[20] /*出版社*/
int count/*数量*/
struct book *next
}
/*输出模块*/
void print(struct book *p0)
{
struct book *p
p=p0->next
printf("\n\n\t\t^^^^^^^^^^^^^^图书信息表^^^^^^^^^^^^^^")
printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n")
while(p!=NULL)
{
printf(PT)
p=p->next
}
getch()
}
/*输入模块*/
struct book *creat()
{
struct book *head,*p1,*p2
int i=0
head=p2=(struct book *)malloc(N)
head->next=NULL
printf("\n\n\t\t录入图书信息")
printf("\n\t---------------------------------------")
while(1)
{ p1=(struct book *)malloc(N)
printf("\n请输入图书编号(书号为0结束): ")
scanf("%d",&p1->num)
if(p1->num!=0)
{
printf("\n\n书名 所在书库 作者 出版社 图书数量\n")
scanf("%s%s%s%s%d",p1->name,p1->where,p1->author,p1->pub,&p1->count)
p2->next=p1
p2=p1
i++
}
else
break
}
p2->next=NULL
free(p1)
printf("\n\t\t----------------------------------------")
printf("\n\t\t %d 种书录入完毕",i)
getch()
return head
}
/*查找模块*/
void find(struct book *p0)
{
char name[10]
int flag=1
struct book *p
p=p0->next
printf("请输入要查找的书名:\n")
scanf("%s",name)
for(p=p0pp=p->next)
if(strcmp(p->name,name)==0)
{
printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n")
printf(PT)
flag=0
break
}
if(flag) printf("\n 暂无此图书信息\n")
getch()
}
/*删除模块*/
void del(struct book *p0)
{
char name[10]
int flag=1
struct book *p
p=p0
printf("请输入要删除的书名:\n")
scanf("%s",name)
while(p!=NULL)
{
if(strcmp(p->name,name)==0)
{
p0->next=p->next /*后续节点连接到前驱节点之后*/
free(p)
printf("\t该书资料已删除.")
flag=0
break
}
p0=p
p=p->next
}
if(flag) printf("\n\t无此图书信息。")
getch()
}
/*增加模块*/
void insert(struct book *p0)
{
struct book *p
p=(struct book *)malloc(N)
while(1)
{
printf("\n请输入要增加的图书编号(书号为0 退出): ")
scanf("%d",&p->num)
if(p->num!=0)
{
if(p0->next!=NULL&&p0->next->num==p->num) /*找到重号*/
{
p=p->next
free(p)
printf("\t该书已存在")
}
else
{printf("\n\n书名 所在书库 作者 出版社 图书数量\n")
scanf("%s%s%s%s%d",p->name,p->where,p->author,p->pub,&p->count)
p->next=p0->next
p0->next=p
printf("\t已成功插入.")
}
}
else
break
}
getch()
}
/*修改模块*/
void modify(struct book *p0)
{
char name[10]
int flag=1
int choice
struct book *p
p=p0->next
printf("请输入要修改的书名:\n")
scanf("%s",name)
while(p!=NULL&&flag==1)
{
if(strcmp(p->name,name)==0)
{
printf("\n\t请选择要修改的项:")
printf("\n\t 1.修改图书编号\n")
printf("\n\t 2.修改图书所在书库\n")
printf("\n\t 3.修改图书作者\n")
printf("\n\t 4.修改图书出版社\n")
printf("\n\t 5.修改图书库存量\n")
scanf("%d",&choice)
switch(choice)
{
case 1: { printf("\n 请输入新的图书编号:")
scanf("%d",p->num)break
}
case 2: { printf("\n 请输入新的图书书库:")
scanf("%s",p->where)break
}
case 3: { printf("\n 请输入新的图书作者:")
scanf("%s",p->author)break
}
case 4: {printf("\n 请输入新的图书出版社:")
scanf("%s",p->pub)break
}
case 5: {printf("\n 请输入新的图书库存量:")
scanf("%d",p->count) break
}
}
printf("\n\t该项已成功修改。\n\t 新的图书信息:")
printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n")
printf(PT)
flag=0
}
p0=p
p=p0->next
}
if(flag) printf("\n\t暂无此图书信息。")
getch()
}
/*读文件*/
struct book *read_file()
{
int i=0
struct book *p,*p1,*head=NULL
FILE *fp
if((fp=fopen("library.txt","rb"))==NULL)
{printf("\n\n\n\n\n \t********库文件不存在,请创建!**********")
getch()
return NULL
}
head=(struct book *)malloc(N)
p1=head
head->next=NULL
printf("\n 已有图书信息:")
printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n")
while(!feof(fp))
{
p=(struct book *)malloc(N) /*开辟空间以存放的取得信息*/
while(fscanf(fp,"%d%s%s%s%s%d",&p->num,p->name,p->where,p->author,p->pub,&p->count)!=EOF)
{
printf(PT)
i++
}
p1->next=p
p1=p
}
p1->next=NULL
fclose(fp)
printf("\n 共种%d 图书信息",i)
printf("\n\n\n 文件中的信息以正确读出。按任意键进入主菜单。")
getch()
return (head)
}
/*保存文件*/
void save(struct book *head)
{
FILE *fp
struct book *p
fp=fopen("library.txt","wb")/*以只写方式打开二进制文件*/
if(fp==NULL)/*打开文件失败*/
{
printf("\n=====>打开文件失败!\n")
getch()
return
}
else
for(p=head->nextp!=NULLp=p->next)
fprintf(fp,"%d %s %s %s %s %d\n",p->num,p->name,p->where,p->author,p->pub,p->count)
fclose(fp)
printf("\n\t保存文件成功!\n")
}
void main()
{
struct book *head=NULL
int choice=1
head=read_file()
if(head==NULL)
{
printf("\n\t\t**********")
getch()
head=creat()
}
do
{
system("cls")
printf("\t\t----------Welcome---------\n")
printf("\n\n\t欢迎您,图书管理员.\n")
printf("\n\n\n\n\n")
printf("\n\t 请选择:")
printf("\n\t 1.查询图书信息\n")
printf("\n\t 2.修改图书信息\n")
printf("\n\t 3.增加图书信息\n")
printf("\n\t 4.删除图书信息\n")
printf("\n\t 5.显示所有图书信息\n")
printf("\n\t 0.退出系统\n")
scanf("%d",&choice)
switch(choice)
{
case 1: find(head)break
case 2: modify(head) break
case 3: insert(head) break
case 4: del(head) break
case 5: print(head) break
case 0: system("cls")
printf("\n\n\n\n\n\t^^^^^^^^^^谢谢使用,再见^^^^^^^^^^!\n\n")
break
}
}while(choice!=0)
save(head)
}
评论列表(0条)