数据结构:学生管理系统成绩插入、删除模块设计

数据结构:学生管理系统成绩插入、删除模块设计,第1张

#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)

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11731532.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存