c语言在文件添加图书,C语言实现的文件型图书管理系统

#include

#include

#include

struct book{

int num;

char bname[50];

char wname[20];

char press[50];

char sort[50];

int time;

float price;

struct book *next;

};

struct book *creatbook(); //创建链表

struct book *addbook(struct book *head); //添加图书

int yanzheng(struct book *head,int m); //验证新添加的图书编码是否已存在

void deletebook(struct book *head); //删除图书

void fprint(struct book *head); //将链表写入文件

struct book *load(); //从文件中读取信息并建成链表

void print_book(struct book *head); //将链表信息输出

void chaxun(struct book *head); //查询图书信息

void num_chaxun(struct book *head); //按图书编号查询图书

void wname_chaxun(struct book *head); //按作者名查询图书

void sort_chaxun(struct book *head); //按类别查询图书

void time_chaxun(struct book *head); //按出版时间查询图书

void bname_chaxun(struct book *head); //按图书名查询图书

void xiugai(struct book *head); //修改图书信息

void paixu(struct book *head); //对图书进行排序

void num_paixu(struct book *head); //按图书编号排序

void time_paixu(struct book *head); //按图书出版时间排序

void price_paixu(struct book *head); //按图书价格排序

void bname_paixu(struct book *head); //按图书名排序

void wname_paixu(struct book *head); //按作者名排序

int main()

{

int choice,n,x,y=1,c,c1=1234;

char a,d,b[10],b1[10]="yjk";

struct book *head=NULL;

while(y){

system("cls");

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

printf(" ********** 欢迎光临 **********\n\n");

printf(" ********************** 图书信息管理系统 ************************\n\n\n");

printf("\n\n");

printf(" ============1-用户登录===========\n");

printf(" ============0-退出系统===========\n");

printf(" 请输入您的选择:");

scanf("%d",&n);

printf("\n");

getchar();

switch(n){

case 0:

y=0;

break;

case 1:

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

gets(b);

printf("\n");

printf(" 请输入您的密码:");

scanf("%d",&c);

printf("\n");

if(strcmp(b,b1)!=0||c!=c1){

printf(" 验证失败,请重新输入!\n");

scanf("%c",&d);

getchar();

system("cls");

}

else{

printf(" 验证通过!请按Enter键进入!\n");

scanf("%c",&d);

getchar();

x=1;

while(x){

system("cls");

printf(" ------------------\n");

printf(" *图书信息管理系统*\n");

printf(" ------------------\n\n");

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

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

printf(" || 1-添加图书 2-删除图书 ||\n\n");

printf(" || 3-图书列表 4-图书排序 ||\n\n");

printf(" || 5-查询图书 6-修改图书 ||\n\n");

printf(" || 7-录入数据 0-退出系统 ||\n\n");

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

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

printf("请输入所选择的序号:");

scanf("%d",&choice);

getchar();

system("cls");

switch(choice)

{

case 0:

x=0;break;

case 1:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!\n");

getchar();

break;

}

else{

head=addbook(head);

printf("添加成功!\n");

printf("是否将新信息保存到文件?(y/n)\n");

scanf("%c",&a);

getchar();

switch(a){

case 'n':

break;

case 'y':

fprint(head);

printf("保存成功!\n");

getchar();

break;

}

break;

}

case 2:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!\n");

getchar();

break;

}

else{

deletebook(head);

getchar();

break;

}

break;

case 3:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!\n");

getchar();

break;

}

else{

print_book(head);

getchar();

break;

}

case 4:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!\n");

getchar();

break;

}

else{

paixu(head);

getchar();

}

break;

case 5:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!\n");

getchar();

break;

}

else{

chaxun(head);

getchar();

}

break;

case 6:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!\n");

getchar();

break;

}

else{

xiugai(head);

getchar();

break;

}

break;

case 7:

printf("注意:输入图书编码为0时结束!\n");

head=creatbook();

printf("是否将输入的信息保存到文件以覆盖文件中已存在的信息?(y/n)\n");

getchar();

scanf("%c",&a);

getchar();

switch(a){

case 'n':

break;

case 'y':

fprint(head);

printf("保存成功!\n");

getchar();

break;

}

break;

default:

printf("您的输入有误,请重新输入!\n");

getchar();

break;

}

}

}

break;

default:

printf(" 您的输入有误! 请重新输入!\n");

getchar();

break;

}

}

}

//录入数据并形成链表

struct book *creatbook()

{

struct book *head,*tail,*p;

int num,time,n;

char bname[50],wname[20],press[50],sort[50];

float price;

int size=sizeof(struct book);

head=tail=NULL;

printf("请输入图书编号:");

scanf("%d",&num);

printf("请输入图书名:");

scanf("%s",bname);

getchar();

printf("请输入作者名:");

scanf("%s",wname);

getchar();

printf("请输入出版社:");

scanf("%s",press);

getchar();

printf("请输入类别:");

scanf("%s",sort);

getchar();

printf("请输入出版时间:");

scanf("%d",&time);

getchar();

printf("请输入价格:");

scanf("%f",&price);

getchar();

while(1){

p=(struct book *)malloc(size);

p->num=num;

strcpy(p->bname,bname);

strcpy(p->wname,wname);

strcpy(p->press,press);

strcpy(p->sort,sort);

p->time=time;

p->price=price;

p->next=NULL;

if(head==NULL)

head=p;

else

tail->next=p;

tail=p;

do{

printf("请输入图书编号:");

scanf("%d",&num);

n=yanzheng(head,num);

if(n==0)

break;

else

printf("您输入的编号已存在,请重新输入!\n");

}while(1);

if(num==0)

break;

else

{

printf("请输入图书名:");

scanf("%s",bname);

getchar();

printf("请输入作者名:");

scanf("%s",wname);

getchar();

printf("请输入出版社:");

scanf("%s",press);

getchar();

printf("请输入类别:");

scanf("%s",sort);

getchar();

printf("请输入出版时间:");

scanf("%d",&time);

getchar();

printf("请输入价格:");

scanf("%f",&price);

getchar();

}

}

return head;

}

//插入结点,并且插入后仍按一定顺序

struct book *addbook(struct book *head)

{

struct book *ptr,*p1,*p2,*p;

char bname[50],wname[20],press[50],sort[50];

int size=sizeof(struct book);

int num,time,n=1;

float price;

do{

printf("请输入图书编号:");

scanf("%d",&num);

n=yanzheng(head,num);

if(n==0)

break;

else

printf("您输入的编号已存在,请重新输入!\n");

}while(1);

printf("请输入图书名:");

scanf("%s",bname);

getchar();

printf("请输入作者名:");

scanf("%s",wname);

getchar();

printf("请输入出版社:");

scanf("%s",press);

getchar();

printf("请输入类别:");

scanf("%s",sort);

getchar();

printf("请输入出版时间:");

scanf("%d",&time);

getchar();

printf("请输入价格:");

scanf("%f",&price);

getchar();

p=(struct book *)malloc(size);

p->num=num;

strcpy(p->bname,bname);

strcpy(p->wname,wname);

strcpy(p->press,press);

strcpy(p->sort,sort);

p->time=time;

p->price=price;

p2=head;

ptr=p;

while((ptr->num>p2->num)&&(p2->next!=NULL)){

p1=p2;

p2=p2->next;

}

if(ptr->num<=p2->num){

if(head==p2)

head=ptr;

else{

p1->next=ptr;

p->next=p2;

}

}

else{

p2->next=ptr;

p->next=NULL;

}

return head;

}

//验证添加的图书编号是否已存在

int yanzheng(struct book *head,int m)

{

struct book *p;

p=head;

while(p!=NULL){

if(p->num==m)

break;

p=p->next;

}

if(p==NULL)

return 0;

else

return 1;

}

//将新链表写入文件中

void fprint(struct book *head)

{

FILE *fp;

char ch='1';

struct book *p1;

if((fp=fopen("f1.txt","w"))==NULL){

printf("File open error!\n");

exit(0);

}

fputc(ch,fp);

for(p1=head;p1;p1=p1->next){

fprintf(fp,"%d %s %s %s %s %d %f\n",p1->num,p1->bname,p1->wname,p1->press,p1->sort,p1->time,p1->price);

}

fclose(fp);

}

//从文件中读取图书信息

struct book *load()

{

FILE *fp;

char ch;

struct book *head,*tail,*p1;

head=tail=NULL;

if((fp=fopen("f1.txt","r"))==NULL){

printf("File open error!\n");

exit(0);

}

ch=fgetc(fp);

if(ch=='1'){

while(!feof(fp)){

p1=(struct book *)malloc(sizeof(struct book));

fscanf(fp,"%d%s%s%s%s%d%f\n",&p1->num,p1->bname,p1->wname,p1->press,p1->sort,&p1->time,&p1->price);

if(head==NULL)

head=p1;

else

tail->next=p1;

tail=p1;

}

tail->next=NULL;

fclose(fp);

return head;

}

else

return NULL;

}

//将整个链表的信息输出

void print_book(struct book *head)

{

struct book *ptr;

if(head==NULL){

printf("\n没有信息!\n");

return;

}

printf(" 图书信息列表如下\n");

printf(" ==========================================================\n");

printf(" 编号 图书名 作者名 出版社 类别 出版时间 价格\n");

for(ptr=head;ptr;ptr=ptr->next)

printf(" %d %s %s %s %s %d %.2f\n",ptr->num,ptr->bname,ptr->wname,ptr->press,ptr->sort,ptr->time,ptr->price);

printf(" ==========================================================\n");

}

//删除图书信息

void deletebook(struct book *head)

{

int a;

char b,ch='1';

struct book *p1,*p2;

FILE *fp;

printf("请输入要删除的图书编号:");

scanf("%d",&a);

p1=head;

if(p1->num==a&&p1->next==NULL){ //对于文件中只有一组数据

printf("是否清空文件!(y/n)\n");

getchar();

scanf("%c",&b);

getchar();

switch(b){

case 'n':

break;

case 'y':

if((fp=fopen("f1.txt","w"))==NULL){

printf("File open error!\n");

exit(0);

}

fclose(fp);

printf("文件已清空!\n");

}

}

else{

while(p1->num!=a&&p1->next!=NULL){

p2=p1;

p1=p1->next;

}

if(p1->next==NULL){

if(p1->num==a){

p2->next=NULL;

printf("是否确定从文件中彻底删除该图书?(y/n)\n");

getchar();

scanf("%c",&b);

switch(b){

case 'n':

break;

case 'y':

fprint(head);

printf("删除成功!\n");

getchar();

break;

}

}

else{

printf("没有找到要删除的数据!\n");

getchar();

}

}

else if(p1==head){

head=p1->next;

printf("是否确定从文件中彻底删除该图书?(y/n)\n");

getchar();

scanf("%c",&b);

switch(b){

case 'n':

break;

case 'y':

fprint(head);

printf("删除成功!\n");

getchar();

break;

}

}

else{

p2->next=p1->next;

printf("是否确定从文件中彻底删除该图书?(y/n)\n");

getchar();

scanf("%c",&b);

switch(b){

case 'n':

break;

case 'y':

fprint(head);

printf("删除成功!\n");

getchar();

break;

}

}

}

}

//图书查询

void chaxun(struct book *head)

{

int a;

printf(" ==========================================================\n");

printf(" ** 1-按图书编号查询 2-按图书名查询 **\n");

printf(" ** 3-按图书类别查询 4-按作者名查询 **\n");

printf(" ** 5-按出版时间查询 0-退出查询 **\n");

printf(" ==========================================================\n");

printf("请输入所选择的编号:");

scanf("%d",&a);

getchar();

switch(a){

case 0:

break;

case 1:

num_chaxun(head);

break;

case 2:

bname_chaxun(head);

break;

case 3:

sort_chaxun(head);

break;

case 4:

wname_chaxun(head);

break;

case 5:

time_chaxun(head);

break;

default:

printf("您的输入有误!\n");

break;

}

}

//按编号查询图书信息

void num_chaxun(struct book *head)

{

int a;

struct book *p;

printf("请选择您要查询的图书编号:");

scanf("%d",&a);

getchar();

p=head;

while(p!=NULL){

if(p->num==a)

break;

p=p->next;

}

if(p==NULL){

printf("没有找到该编号的图书!\n");

}

else{

printf(" 你所查询的图书信息如下\n");

printf(" =========================================================================\n");

printf(" ** 编号 图书名 作者名 出版社 类别 出版时间 价格 **\n");

printf(" ** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);

printf(" =========================================================================\n");

}

}

//按图书名查询图书信息

void bname_chaxun(struct book *head)

{

char a[50];

int flag=0;

struct book *p;

printf("请选择您要查询的图书名:");

gets(a);

p=head;

while(p!=NULL){

if(strcmp(p->bname,a)==0){

flag=1;

break;

}

p=p->next;

}

if(flag==0){

printf("没有找到该图书名的图书!\n");

}

else{

printf(" 你所查询的图书信息如下\n");

printf(" =========================================================================\n");

printf(" ** 编号 图书名 作者名 出版社 类别 出版时间 价格 **\n");

while(p!=NULL){

if(strcmp(p->bname,a)==0){

printf(" ** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);

}

p=p->next;

}

printf(" =========================================================================\n");

}

}

//按作者名查询图书信息

void wname_chaxun(struct book *head)

{

char a[50];

int flag=0;

struct book *p;

printf("请选择您要查询的图书作者名:");

gets(a);

p=head;

while(p!=NULL){

if(strcmp(p->wname,a)==0){

flag=1;

break;

}

p=p->next;

}

if(flag==0){

printf("没有找到该图书名的图书!\n");

}

else{

printf(" 你所查询的图书信息如下\n");

printf(" =========================================================================\n");

printf(" ** 编号 图书名 作者名 出版社 类别 出版时间 价格 **\n");

while(p!=NULL){

if(strcmp(p->wname,a)==0){

printf(" ** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);

flag=1;

}

p=p->next;

}

printf(" =========================================================================\n");

}

}

//按图书类别查询图书信息

void sort_chaxun(struct book *head)

{

char a[50];

int flag=0;

struct book *p;

printf("请选择您要查询的图书类别:");

gets(a);

p=head;

while(p!=NULL){

if(strcmp(p->sort,a)==0){

flag=1;

break;

}

p=p->next;

}

if(flag==0){

printf("没有找到该图书名的图书!\n");

}

else{

printf(" 你所查询的图书信息如下\n");

printf(" =========================================================================\n");

printf(" ** 编号 图书名 作者名 出版社 类别 出版时间 价格 **\n");

while(p!=NULL){

if(strcmp(p->sort,a)==0){

printf(" ** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);

flag=1;

}

p=p->next;

}

printf(" =========================================================================\n");

}

}

//按图书出版时间查询图书信息

void time_chaxun(struct book *head)

{

int a,flag=0;

struct book *p;

printf("请选择您要查询的图书出版时间:");

scanf("%d",&a);

getchar();

p=head;

while(p!=NULL){

if(p->time==a){

flag=1;

break;

}

p=p->next;

}

if(flag==0){

printf("没有找到该图书名的图书!\n");

}

else{

printf(" 你所查询的图书信息如下\n");

printf(" =========================================================================\n");

printf(" ** 编号 图书名 作者名 出版社 类别 出版时间 价格 **\n");

while(p!=NULL){

if(p->time==a){

printf(" ** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);

flag=1;

}

p=p->next;

}

printf(" =========================================================================\n");

}

}

//修改图书信息

void xiugai(struct book *head)

{

int a,b;

char c;

struct book *p;

printf("请输入要修改的图书编号:");

scanf("%d",&a);

p=head;

while(p!=NULL){

if(p->num==a)

break;

p=p->next;

}

if(p==NULL){

printf("没有找到该编号的图书!\n");

getchar();

}

else{

printf(" ============================================================\n");

printf(" ** 1-编号 2-图书名 3-作者名 **\n");

printf(" ** 4-出版社 5-类别 6-出版时间 **\n");

printf(" ** 7-价格 8-修改全部 0-放弃修改 **\n");

printf(" ============================================================\n");

printf("请选择你要修改的信息编号:");

scanf("%d",&b);

getchar();

switch(b){

case 1:

printf("请输入新编号:");

scanf("%d",&p->num);

printf("修改成功!\n");

getchar();

break;

case 2:

printf("请输入新图书名:");

gets(p->bname);

printf("修改成功!\n");

break;

case 3:

printf("请输入新作者名:");

gets(p->wname);

printf("修改成功!\n");

break;

case 4:

printf("请输入新出版社:");

gets(p->press);

printf("修改成功!\n");

break;

case 5:

printf("请输入新类别:");

gets(p->sort);

printf("修改成功!\n");

break;

case 6:

printf("请输入新出版时间:");

scanf("%d",&p->time);

printf("修改成功!\n");

getchar();

break;

case 7:

printf("请输入新价格:");

scanf("%f",&p->price);

printf("修改成功!\n");

getchar();

break;

case 8:

printf("请输入新图书编号:");

scanf("%d",&p->num);

printf("请输入新图书名:");

scanf("%s",p->bname);

getchar();

printf("请输入新作者名:");

scanf("%s",p->wname);

getchar();

printf("请输入新出版社:");

scanf("%s",p->press);

getchar();

printf("请输入新类别:");

scanf("%s",p->sort);

getchar();

printf("请输入新出版时间:");

scanf("%d",&p->time);

getchar();

printf("请输入新价格:");

scanf("%f",&p->price);

getchar();

printf("修改成功!\n");

getchar();

break;

case 0:

break;

default :

printf("您的输入有误!\n");

break;

}

printf("是否将修改后的信息保存到文件中?(y/n)\n");

scanf("%c",&c);

getchar();

switch(c){

case 'n':

break;

case 'y':

fprint(head);

printf("保存成功!\n");

getchar();

break;

}

}

}

//图书排序

void paixu(struct book *head)

{

int a;

printf(" ================================================================\n");

printf(" ** 1-按图书编号排序 2-按出版时间排序 **\n");

printf(" ** 3-按图书价格排序 4-按图书名排序 **\n");

printf(" ** 5-按作者名排序 0-取消排序操作 **\n");

printf(" ================================================================\n");

printf("请输入您选择的编号:");

scanf("%d",&a);

getchar();

switch(a){

case 0:

break;

case 1:

num_paixu(head);

break;

case 2:

time_paixu(head);

break;

case 3:

price_paixu(head);

break;

case 4:

bname_paixu(head);

break;

case 5:

wname_paixu(head);

break;

default:

printf("您的输入有误!\n");

break;

}

}

//按图书编号排序

void num_paixu(struct book *head)

{

struct book *a[1000],*p,*p1,*temp;

int i,k,index,n=0;

char b;

p1=head;

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

n++;

for(i=0;i

a[i]=p1;

p1=p1->next;

}

for(k=0;k

index=k;

for(i=k+1;i

if(a[i]->numnum)

index=i;

}

temp=a[index];

a[index]=a[k];

a[k]=temp;

}

printf("排序成功!\n");

printf("是否显示排序结果?(y/n)\n");

scanf("%s",&b);

getchar();

switch(b){

case 'n':

break;

case 'y':

printf(" ================================================================\n");

printf(" ** 编号 图书名 作者名 出版社 类别 出版时间 价格 **\n");

for(i=0;i

printf(" ** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);

}

printf(" ================================================================\n");

break;

default:

printf("您的输入有误!\n");

break;

}

}

//按出版时间排序

void time_paixu(struct book *head)

{

struct book *a[1000],*p,*p1,*temp;

int i,k,index,n=0;

char b;

p1=head;

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

n++;

for(i=0;i

a[i]=p1;

p1=p1->next;

}

for(k=0;k

index=k;

for(i=k+1;i

if(a[i]->timetime)

index=i;

}

temp=a[index];

a[index]=a[k];

a[k]=temp;

}

printf("排序成功!\n");

printf("是否显示排序结果?(y/n)\n");

scanf("%s",&b);

getchar();

switch(b){

case 'n':

break;

case 'y':

printf(" ===============================================================\n");

printf(" ** 编号 图书名 作者名 出版社 类别 出版时间 价格 **\n");

for(i=0;i

printf(" ** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);

}

printf(" ===============================================================\n");

break;

default:

printf("您的输入有误!\n");

break;

}

}

//按图书价格排序

void price_paixu(struct book *head)

{

struct book *a[1000],*p,*p1,*temp;

int i,k,index,n=0;

char b;

p1=head;

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

n++;

for(i=0;i

a[i]=p1;

p1=p1->next;

}

for(k=0;k

index=k;

for(i=k+1;i

if(a[i]->priceprice)

index=i;

}

temp=a[index];

a[index]=a[k];

a[k]=temp;

}

printf("排序成功!\n");

printf("是否显示排序结果?(y/n)\n");

scanf("%s",&b);

getchar();

switch(b){

case 'n':

break;

case 'y':

printf(" ===============================================================\n");

printf(" ** 编号 图书名 作者名 出版社 类别 出版时间 价格 **\n");

for(i=0;i

printf(" ** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);

}

printf(" ===============================================================\n");

break;

default:

printf("您的输入有误!\n");

break;

}

}

//按图书名排序

void bname_paixu(struct book *head)

{

struct book *a[1000],*p,*p1,*temp;

int i,k,index,n=0;

char b;

p1=head;

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

n++;

for(i=0;i

a[i]=p1;

p1=p1->next;

}

for(k=0;k

index=k;

for(i=k+1;i

if(strcmp(a[index]->bname,a[i]->bname)>0)

index=i;

}

temp=a[index];

a[index]=a[k];

a[k]=temp;

}

printf("排序成功!\n");

printf("是否显示排序结果?(y/n)\n");

scanf("%s",&b);

getchar();

switch(b){

case 'n':

break;

case 'y':

printf(" ===============================================================\n");

printf(" ** 编号 图书名 作者名 出版社 类别 出版时间 价格 **\n");

for(i=0;i

printf(" ** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);

}

printf(" ===============================================================\n");

break;

default:

printf("您的输入有误!\n");

break;

}

}

//按作者名排序

void wname_paixu(struct book *head)

{

struct book *a[1000],*p,*p1,*temp;

int i,k,index,n=0;

char b;

p1=head;

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

n++;

for(i=0;i

a[i]=p1;

p1=p1->next;

}

for(k=0;k

index=k;

for(i=k+1;i

if(strcmp(a[index]->wname,a[i]->wname)>0)

index=i;

}

temp=a[index];

a[index]=a[k];

a[k]=temp;

}

printf("排序成功!\n");

printf("是否显示排序结果?(y/n)\n");

scanf("%s",&b);

getchar();

switch(b){

case 'n':

break;

case 'y':

printf(" ===============================================================\n");

printf(" ** 编号 图书名 作者名 出版社 类别 出版时间 价格 **\n");

for(i=0;i

printf(" ** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);

}

printf(" ===============================================================\n");

break;

default:

printf("您的输入有误!\n");

break;

}

}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点!

本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 图书管理系统可以使用C语言实现,可以将图书信息保存在文件。具体实现步骤如下: 1. 定义图书信息的结构体,包括图书编号、书名、作者、出版社、出版日期、价格等信息。 2. 定义文件操作函数,包括打开文件、读取文件、写入文件、关闭文件等操作。 3. 实现图书信息的录入、查询、修改、删除等功能,可以使用菜单方式进行选择。 4. 在程序启动时,先读取文件图书信息,保存到内存,程序结束时再将内存图书信息写入文件。 5. 可以添加一些其他功能,如图书借阅、归还等。 总之,使用C语言实现图书管理系统,可以方便地管理图书信息,提高图书管理效率。 ### 回答2: 图书管理系统是一个涉及到多个功能模块的程序,其一个非常重要的模块就是图书信息的管理。而对于一个拥有大量图书的机构来说,如何对这些图书信息进行高效的管理就显得尤为关键。而图书管理系统c语言实现图书信息用文件保存,则是一个非常常见且实用的方法。 首先,c语言作为一种高效、灵活的编程语言,其文件操作功能非常强大,可以轻松地实现图书信息的读取、修改、保存等操作。其一般的文件操作流程如下: 1. 打开文件 打开文件文件操作的第一步。使用fopen函数可以打开一个文件,并指定打开方式(读、写、附加等)。例如: FILE *fp; // 定义文件指针 fp = fopen("books.dat", "r"); // 打开books.dat文件,以只读方式 2. 读取文件 读取文件是指从文件读取数据。使用fread函数可以从文件读取指定大小的数据,例如: fread(&book, sizeof(Book), 1, fp); // 从文件fp读取1个大小为Book的数据到book结构体 3. 写入文件 写入文件是指向文件写入数据。使用fwrite函数可以将指定大小的数据写入到文件,例如: fwrite(&book, sizeof(Book), 1, fp); // 将book结构体的数据写入到文件fp 4. 关闭文件 关闭文件文件操作的最后一步。使用fclose函数可以关闭文件,例如: fclose(fp); // 关闭文件fp 通过以上四个步骤,我们可以轻松地实现图书信息的读取、修改、保存等操作,从而完成图书管理系统的所有功能。同时,将图书信息保存在文件,也可以方便多台设备之间共享数据,实现分布式管理。 总之,用c语言实现图书管理系统,将图书信息用文件保存是非常实用的方法,不仅可以方便管理图书信息,还可以实现多设备的数据共享。 ### 回答3: 图书管理系统是一个非常常用的信息管理系统。在现代社会,它被广泛应用于图书馆、学校以及其他各种机构。借助它,我们可以有效地管理图书信息,方便读者查询、借阅图书。而C语言是一个非常流行的编程语言,在实现图书管理系统方面也有很大的优势。 在图书管理系统,我们需要用文件保存图书信息。C语言可以使用文件操作来实现。我们可以先定义一个结构体,用于存储图书的各种信息。结构体可以包括图书的编号、名称、作者、出版社、ISBN码、价格等。 然后我们可以使用文件操作函数来将这些信息写入文件。例如,我们可以使用fopen()函数来打开一个文件,使用fprintf()函数向文件写入数据,使用fclose()函数关闭文件。 在读取文件图书信息时,我们可以使用fscanf()函数来读取文件的数据,并将其存入结构体变量。读取文件所有的数据后,我们可以使用单链表来存储图书信息。每当需要添加、删除、修改某本图书时,我们只需要操作链表即可。操作链表的过程,还可以调用文件操作来实现文件图书信息的增删改查。 需要注意的是,在文件操作时,应该先检查文件是否存在。如果文件不存在,就需要创建一个文件,否则会导致程序崩溃。 总之,C语言实现图书管理系统需要先定义好数据结构,在文件操作时要注意对文件的读写权限和错误处理。掌握了这些基本的知识,就可以着手开始实现了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值