如何添加作者信息?图书管理系统,C语言课程设计

如何添加作者信息?图书管理系统,C语言课程设计,第1张

直接信息写入源程序

oid aboat()

{

printf("\n")

printf("\t")

for(i=0i<60i++)

printf("*")

printf("\n")printf("\n")

printf("\t\t\t\t学生信息系统!")

printf("\n")printf("\n")

printf("\t")

for(i=0i<60i++)

printf("*")

printf("\n\n\n\n")

printf("\t\t\t\t\t\t作者:\t***\n")

printf("\t\t\t\t\t\t日期:\t2012.07\n")

getchar()

}

版本信息可以写在注释里,既不影响程序,又能让人看到

/***********************************

**版本:1.0

**作者:***

***********************************/

注意c语言中注释是/*注释内容*/这种格式的,所以只能有一个*/和/*配对,c中注释不能嵌套,即

/*

.........

/*

......

*/

*/

这样就会编译错了,c编译器把倒数第二个*/和第一个/*配对,就会多出一个*/,为什么/*后面又跟了个/*不会编译错呢,是因为c中碰到/*就会去找第一个*/,碰到了c编译器就认为注释结束了

/*本程序转自天涯潜水2的blog*/

#include <stdio.h>

#include <malloc.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

#define LEN sizeof(struct booklist)

#define LEN2 sizeof(struct memberlist)

#define LEN3 sizeof(struct readers)

typedef struct readers//借书信息结构体

{

char name[30]//借书人的姓名

struct readers *next2

}reader

//书本信息结构体

typedef struct booklist

{

char num[20]//书号

char name[30]//书名

char concern[50]//出版社

char date[20]//出版日期

char author[20]//作者

int page//页数

int price//价格

int imformation//图书剩余数量

reader *a//借阅

struct booklist *next

}Book

void creatlist()//创建新的书本信息

void print(Book *head)//打印书本信息

void save(Book *head)//储存书本信息

void AddBook()//添加书本信息

void DelBook()//删除书本信息

Book *read()//读取书本信息

void manager()//管理员 *** 作

void Bookconsult() //图书查询

int Borrow()//借书

int Return()//还书

Book *sort(Book *head)//书本信息按书号排序

void imformation()//系统信息

Book *head=NULL,*p1=NULL,*p2=NULL

//创建新的书本信息

void creatlist()

{

int i,n

printf("要创建的书本数目")

scanf("%d",&n)

p2=head=(Book *)malloc(LEN) //创建带有头结点的链表

p2->a=(reader *)malloc(LEN3)

p2->a->next2=NULL

p2->next=NULL

printf("请输入书的信息:\n")

for(i=1i<=ni++)

{

p1=(Book *)malloc(LEN)

printf("书号: ")scanf("%s",p1->num)

printf("书名: ")scanf("%s",p1->name)

printf("出版社: ")scanf("%s",p1->concern)

printf("出版日期: ")scanf("%s",p1->date)

printf("作者: ") scanf("%s",p1->author)

printf("书本页数: ")scanf("%d",&p1->page)

printf("书本价格(元): ")scanf("%d",&p1->price)

p1->a=(reader *)malloc(LEN3)

p1->a->next2=NULL

p1->imformation=10

p1->next=NULL

p2->next=p1

p2=p1

if(i<n) printf("下一本:\n")

}

head=sort(head)

save(head)

print(head)

}

//打印书本信息

void print(Book *head)

{

Book *p=NULL

reader *p0=NULL

p=head->next

printf("*******************************************************************************\n")

while(p!=NULL)

{

printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页) : %d\n书本价格(元) : %d\n剩余数量 : %d\n",p->num,p->name,p->concern,p->date,p->author,p->page,p->price,p->imformation)

printf("借阅图书的人:")

if(p->a->next2==NULL) printf("------------暂无借阅人!")

else

{

for(p0=p->a->next2p0!=NULLp0=p0->next2)

{

printf("%s ",p0->name)

}

}

p=p->next /* p后移一个结点 */

printf("\n")

printf("\n")

}

}

//书本信息按书号排序

Book *sort(Book *head)

{

Book *p1=NULL,*p2=NULL,*p3=NULL,*min=NULL,*min2=NULL,*head2=head->next

p1=head2

while(p1->next!=NULL)

{

min=p2=p1/*把首结点作为最小值*/

while(p2->next!=NULL)

{

if(strcmp(min->num,p2->next->num)>0) /*首结点与下一结点比较*/

{

min2=p2

min=p2->next

}

p2=p2->next

}

if(min!=p1)

{

min2->next=min->next /*删除最小结点*/

min->next=p1 /*插入最小结点*/

if(p1==head2) head2=min

else p3->next=min/*p3为min前的结点指针*/

p3=min

}

else

{

p3=p1

p1=p1->next

}

}

head->next=head2

return(head)

}

//储存书本信息

void save(Book *head)

{

FILE *fp,*fp2

Book *p=NULL

reader *q=NULL

fp=fopen("书本信息.txt","wb")//printf("不能打开文件!\n")

fp2=fopen("借阅信息.txt","wb")//printf("不能打开文件!\n")

p=head

while(p!=NULL)

{

fwrite(p,LEN,1,fp)/*逐个结点写文件*/

for(q=p->aq!=NULLq=q->next2)

{fwrite(q,LEN3,1,fp2)}

p=p->next

}

fclose(fp)

fclose(fp2)

}

//添加书本信息

void AddBook()

{

FILE *fp,*fp2

Book *addbook=NULL

reader *p0=NULL

fp=fopen("书本信息.txt","ab")//追加方式打开文件

fp2=fopen("借阅信息.txt","ab")

addbook=(Book *)malloc(LEN)

printf("输入书本信息:\n")

printf("书号: ")scanf("%s",addbook->num)

printf("书名: ")scanf("%s",addbook->name)

printf("出版社: ")scanf("%s",addbook->concern)

printf("出版日期: ")scanf("%s",addbook->date)

printf("作者: ") scanf("%s",addbook->author)

printf("书本页数: ")scanf("%d",&addbook->page)

printf("书本价格(元): ")scanf("%d",&addbook->price)

p0=(reader *)malloc(LEN3)

p0->next2=NULL

addbook->a=p0

addbook->imformation=10

addbook->next=NULL

fwrite(addbook,LEN,1,fp)/*块写*/

fwrite(p0,LEN3,1,fp2)

fclose(fp)

fclose(fp2)

}

//读取书本信息

Book *read()

{

FILE *fp,*fp2

Book *p=NULL,*p1=NULL,*head=NULL

reader *p0=NULL,*p2=NULL

if((fp=fopen("书本信息.txt","rb"))==NULL) printf("不能打开文件或文件不存在!\n")

if((fp2=fopen("借阅信息.txt","rb"))==NULL) printf("不能打开文件或文件不存在!\n")

head=(Book *)malloc(LEN)

fread(head,LEN,1,fp)

p1=head

p0=(reader *)malloc(LEN3)

fread(p0,LEN3,1,fp2)

p0->next2=NULL

head->a=p0

head->next=NULL

p=(Book *)malloc(LEN)

while(fread(p,LEN,1,fp))/*逐个结点读取*/

{

p1->next=p

p1=p1->next

p0=(reader *)malloc(LEN3)

p1->a=p0

while(fread(p0,LEN3,1,fp2))

{

if(p0->next2==NULL)

{

p2=p0

p0=(reader *)malloc(LEN3)

break

}

p2=p0

p0=(reader *)malloc(LEN3)

p2->next2=p0

}

free(p0)

p2->next2=NULL

p=(Book *)malloc(LEN)

}

p1->next=NULL

free(p)

fclose(fp)

fclose(fp2)

head=sort(head)

if(head!=NULL) return(head)

else

{

printf("文件为空!\n")

return 0

}

}

//删除书本信息

void DelBook()

{

Book *head=NULL,*p=NULL,*q=NULL

char bookname[30]

head=read()

printf("输入要删除的书名: ")

scanf("%s",bookname)

p=head

while(p!=NULL)/*按名字查找要删除的图书*/

{

if(strcmp(p->name,bookname)==0)

{

if(p==head)

{

head=head->next

break

}

else

{

q->next=p->next

break

}

}

q=p

p=p->next

}

save(head)

}

//管理员 *** 作

void manager()

{

int n,i=0,k=1

while(k==1)

{

printf("********************************************************************************\n")

printf(" 请选择你需要的 *** 作\n")

printf(" ◎ 1.建立新的书本信息\n")

printf(" ◎ 2.插入书本信息\n")

printf(" ◎ 3.删除书本信息\n")

printf(" ◎ 4.读取所有书本信息\n")

printf(" ◎ 5.读取指定书本信息\n")

printf(" ◎ 6.返回到上级目录\n")

printf(" ◎ 7.保存并退出\n")

printf("请输入:")

scanf("%d",&n)

switch(n)

{

case 1: creatlist()break

case 2: AddBook()break

case 3: DelBook()break

case 4: head=read()system("CLS")print(head)break

case 5: system("CLS")Bookconsult()break

case 6: k=0break

default: k=0break

}

}

}

//图书查询

void Bookconsult()

{

int n,m=1,sign=0

Book *p=NULL,*p1=NULL,*p0=NULL,*head=NULL

reader *p2=NULL

char a[30],b[20],c[20]

head=read()

while(m==1)

{

printf(" 请选择你查询书本的方式: 1.按书名 2.按书的编号 3.按书的作者 4.退出查询\n")

printf("输入=")

scanf("%d",&n)

switch(n)

{

case 1: printf("请输入书名:")

scanf("%s",a)

p0=head

while(p0!=NULL)

{

if(strcmp(a,p0->name)==0)

{

printf("*******************************************************************************\n")

printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页) : %d\n书本价格(元) : %d\n剩余数量 : %d\n",p0->num,p0->name,p0->concern,p0->date,p0->author,p0->page,p0->price,p0->imformation)

printf("借阅图书的人:")

if(p0->a->next2==NULL) printf("------------暂无借阅人!\n")

else

{

for(p2=p0->a(p2=p2->next2)!=NULL)

{printf("%s ",p2->name)}

}

printf("\n")

sign=1

p0=p0->next

}

else p0=p0->next

}

if(sign==0) printf("没有这本书的信息.\n")

break

case 2: printf("请输入书的编号:")

scanf("%s",b)

p0=head

while(p0!=NULL)

{

if(strcmp(b,p0->num)==0)

{

printf("*******************************************************************************\n")

printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页) : %d\n书本价格(元) : %d\n剩余数量 : %d\n",p0->num,p0->name,p0->concern,p0->date,p0->author,p0->page,p0->price,p0->imformation)

printf("借阅图书的人:")

if(p0->a->next2==NULL) printf("------------暂无借阅人!\n")

else

{

for(p2=p0->a(p2=p2->next2)!=NULL)

{printf("%s ",p2->name)}

}

printf("\n")

break

}

else p0=p0->next

}

if(p0==NULL) printf("没有这本书的信息.\n")

break

case 3: printf("请输入书的作者:")

scanf("%s",c)

p0=head

while(p0!=NULL)

{

if(strcmp(c,p0->author)==0)

{

printf

("*******************************************************************************\n")

printf("书号: %s\n书名: %s\n出版社: %s\n出版日期: %s\n作者: %s\n书本页数(页) : %d\n书本价格(元) %d\n剩余数量 : %d\n",p0->num,p0->name,p0->concern,p0->date,p0->author,p0->page,p0->price,p0->imformation)

printf("借阅图书的人:")

if(p0->a->next2==NULL) printf("------------暂无借阅人!\n")

else

{

for(p2=p0->a(p2=p2->next2)!=NULL)

{printf("%s ",p2->name)}

}

printf("\n")

sign=1

p0=p0->next

}

else p0=p0->next

}

if(sign==0) printf("没有这本书的信息.\n")

break

default: m=0break

}

}

}

//借书

int Borrow()

{

char a[30],b[30],c

Book *p0=NULL,*head=NULL

reader *p2=NULL,*p3=NULL

head=read()

printf("请输入要借的书的书号:")

scanf("%s",a)

p0=head->next

while(p0!=NULL)

{

if((strcmp(a,p0->num))==0)

{

if(p0->imformation>0)

{

printf("图书在馆,可以借出,是否确定借出?'y'or'n'\n")

c=getchar()

scanf("%c",&c)

if(c=='y')

{

printf("请再次输入你的用户名:")

scanf("%s",b)

p3=(reader *)malloc(LEN3)

strcpy(p3->name,b)

if(p0->a->next2==NULL)

{

p0->a->next2=p3

p3->next2=NULL

}

else

{

for(p2=p0->ap2->next2!=NULLp2=p2->next2)

p2->next2=p3

p3->next2=NULL

}

--p0->imformation

save(head)

printf(" *** 作完成,可以带走图书。\n")

return 1

break

}

else

{

return 0

break

}

}

else printf("很抱歉,该图书不在馆.\n")return 0break

}

else p0=p0->next

}

if(p0==NULL)

{

printf("很抱歉,没有这本书。\n")

return 0

}

else return 2

}

//还书

int Return()

{

Book *p0=NULL,*head=NULL

reader *p2=NULL,*p3=NULL

char c[20],b[30]

head=read()

printf("请输入要还的书的书号:")

scanf("%s",&c)

p0=head->next

while(p0!=NULL)

{

if((strcmp(c,p0->num))==0)

{

printf("请输入你的用户名:")

scanf("%s",&b)

if(p0->a->next2==NULL) {printf("你没有借这本书!\n")break}

else

{

p3=p0->a

p2=p3->next2

while(p2!=NULL)

{

if(strcmp(p2->name,b)==0)

{

if(p2->next2==NULL) {p3->next2=NULLfree(p2)break}

else

{

p3->next2=p2->next2

free(p2)

break

}

}

else

{

p3=p2

p2=p2->next2

}

}

if(p2==NULL) printf("你没有借这本书!\n")

}

++p0->imformation

save(head)

printf("书已归馆, *** 作完成。\n")

return 1

break

}

else p0=p0->next

}

if(p0==NULL)

{

printf("没有这本书。\n")

return 0

}

else return 2

}

//借书信息

void imformation()

{

printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n")

printf("※ 欢迎你使用我们的图书管理系统!以下是本系统的有关说明: ※\n")

printf("※本系统主要功能是进行图书的有关管理,你可以进行图书信息的创建、插入、删除、 ※\n")

printf("※查询在 *** 作中主要是以阿拉伯数字来选择相应的菜单功能,在选择时以'y'表示 '是' ※\n")

printf("※以'n'表示'不是'。在你 *** 作的时候就会有相应的 *** 作提示。 ※\n")

printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n")

}

main()

{

int n,k=1

printf("********************************************************************************\n")

printf("\n\n")

printf(" 欢迎进入我们的图书管理系统! \n")

printf("\n\n")

printf("********************************************************************************\n")

while(k==1)

{

printf(" 请选择你的 *** 作: 1.管理员 *** 作 2.系统信息 3.退出系统\n")

printf("********************************************************************************\n")

printf(" 你的选择是:")

scanf("%d",&n)

system("CLS")

switch(n)

{

case 1: manager()break

case 2: imformation()break

default: printf("+++++++++++++++++++++++++++欢迎你再次使用我们的系统!++++++++++++++++++++++++++++\n")k=0break

}

}

}


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

原文地址: https://outofmemory.cn/bake/11738869.html

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

发表评论

登录后才能评论

评论列表(0条)

保存