50行以上c语言程序代码,急需一个关于一个小系统的c语言源程序

这个行不行,不行的话就给你个图书管理系统

#include"stdio。h"

#include"stdlib。h"

#include"string。

h"

struct stu{

char name[20];

double score;

struct stu * next;

};

//全局变量

long I;

struct stu *head=NULL;

//插入一个节点

struct stu *Insert(struct stu *head,struct stu *ptr)

{

struct stu *p=NULL,*p1=NULL;

p=ptr;

if(c==0&&head!=NULL)

{

p->next=head;

head=p;

goto end;

}

if(head==NULL)

{

head=p;

head->next=NULL;

}

else

{

p1=head;

for(i=1;inext;

}

p->next=p1->next;

p1->next=p;

Count ;

}

end:

return head;

}

//创建一个节点

struct stu *Creat(struct stu *head)

{

char name[20];

double score;

struct stu *p=NULL;

printf("提示:每一行分别输入姓名与分数,当输入姓名为0时,退出创建链表

");

printf("请输入姓名与分数:

");

scanf("%s%lf",name,&score);

while(name[0]!='0')

{

p=(struct stu *)malloc(sizeof(struct stu));

p->score=score;

strcpy(p->name,name);

head=Insert(head,p,Count);

scanf("%s",name);

if(name[0]=='0')

break;

scanf("%lf",&score);

}

return head;

}

//遍历全节点

void Print(struct stu *head)

{

struct stu *p=NULL;

if(head==NULL)

{

printf("No Records

");

return;

}

for(p=head;p!=NULL;p=p->next)

printf("%s%lf

",p->name,p->score);

}

//删除一个节点

struct stu *Delete(struct stu *head,long w)

{

struct stu *p1=NULL,*p2=NULL;

long i;

if(w==1)

{

p2=head;

head=head->next;

free(p2);

return head;

}

else

{

p1=head;

p2=head->next;

for(i=1;inext;

}

p1->next=p2->next;

free(p2);

return head;

}

}

//改变一个节点

void Change(struct stu *head,long c)

{

long i;

double score;

char name[20];

struct stu *p;

p=head;

for(i=1;inext;

printf("请输入这个节点新的数据:");

scanf("%s%lf",name,&score);

strcpy(p->name,name);

p->score=score;

}

void main()

{

char name[20];

long pd,wz,fb,jay;

double score;

struct stu *ptr=NULL;

printf("本链表有以下功能:

");

printf("1:新建节点

");

printf("2:插入节点

");

printf("3:删除节点

");

printf("4:遍历节点

");

printf("5:改变一个节点

");

printf("0:退出

");

do

{

there:

printf("请参照本表功能给出你的选择:");

fb=scanf("%ld",&pd);

getchar();

if(pd5||fb==0)

{

printf("对不起,您输入的指令有误,");

goto there;

}

switch(pd)

{

case 1:

head=Creat(head);

break;

case 2:

printf("已经有了%ld个节点

",Count);

printf("请输入你想让新节点插在的位置:");

here:

fb=scanf("%ld",&I);

if(fb!=1)

{

getchar();

printf("对不起请输入合法字符:");

goto here;

}

if(I>Count 1)

{

getchar();

printf("对不起您想要插入的位置不存在,请重新选择您想要插入的位置:");

goto

here;

}

I--;

printf("请输入姓名与分数:");

scanf("%s%lf",name,&score);

ptr=(struct stu *)malloc(sizeof(struct stu));

ptr->score=score;

strcpy(ptr->name,name);

head=Insert(head,ptr,I);

break;

case 3:

printf("已经有了%ld个节点

",Count);

printf("输入你想删除的的节点的位置:");

thisway:

fb=scanf("%ld",&wz);

if(fb!=1)

{

getchar();

printf("对不起,请输入合法字符:");

goto thisway;

}

if(wzCount)

{

getchar();

printf("对不起,你想要删除的节点不存在,请重新输入:");

goto thisway;

}

head=Delete(head,wz);

Count--;

printf("OK ! 该节点已经删除

");

break;

case 4:

Print(head);

break;

case 5:

printf("共有%d个节点

",Count);

printf("你想要改变第几个节点:");

thatway:

fb=scanf("%ld",&jay);

if(fb!=1)

{

getchar();

printf("对不起,请输入合法字符:");

goto thatway;

}

if(jayCount)

{

getchar();

printf("对不起,你想要改变的节点不存在,请重新输入:");

goto thatway;

}

Change(head,jay);

printf("OK ! 该节点已经改变

");

break;

case 0:

break;

}

}while(pd!=0);

}。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值