C语言书籍管理系统(c语言图书管理系统 急需!!)

2024-07-28 21:10:04 :24

c语言书籍管理系统(c语言图书管理系统  急需!!)

其实c语言书籍管理系统的问题并不复杂,但是又很多的朋友都不太了解c语言图书管理系统 急需!!,因此呢,今天小编就来为大家分享c语言书籍管理系统的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

c语言图书管理系统 急需!!

我简单给你说一下吧。1、首先定义数据结构图书结构:图书编号、图书名称、单价、作者、存在状态人员结构:人员编号(学生为学号,教师为工作编号)、姓名、性别等借书结构:人员编号、图书编号、借书时间、还书时间2、由于是C系统,通常情况下,数据要存储在文件中,因此,还需要定义文件结构:图书、人员、借书信息。为了数据处理速度,可将借书信息中已经还书的信息单独放在还书信息中,借书信息中的数据只是已经借出还没有归还的数据。3、系统功能定义,以及编码。由于系统太过庞大,你还是自己试着做一下吧,应该可以做好的。学习本身就是做程序,如果有困难,可以上我们团队提问题,随时恭候!祝学习进步!

C语言图书管理信息系统

借书的限制:教师180天,借15本;学生120天,借10本

   图书的信息:      书的编号号,书名,作者,书的种类,书的总量以及书的剩余量

   学生/教师信息:   学号/工号(4位数字字符),姓名,借书日期,还书日期(以此判定是否超出有效期)

  

 (一)、查询:(无条件或有条件指按所有字段查询)

  

 一、单链表上实现图书信息管理

   利用链表结构实现图书存储

   二 、二叉排序树或平衡树上实现图书信息管理

   利用二叉排序树或平衡树实现图书的存储

   三、B_树的操作(手工题)

   插入、删除操作:

   从空的3阶B_树开始,依次插入20,30,50,52,60,68,70,10,80,90,40,75。画出建树过程,然后分别画出删除50,60,10,75,20的B_树状态。

  

 1.课程设计的题目内容要求

   2.数据结构的设计思想和任务的总体结构

                                          

***隐藏网址***

***隐藏网址***

 

   提取码:1234

c语言图书管理系统

#include 《stdio.h》#include 《stdlib.h》#include 《time.h》#include 《string.h》typedef int BOOL;typedef struct bookinfo{ char number;/*产品编号*/ char name;/*产品名称*/ float price;/*单价*/ char auther;/*作者*/ BOOL isExit;/*存在状态*/ char lendername;/*借书人姓名*/ char lendersex;/*借书人性别*/ char lendernum;/*借书人学号*/}BOOKINFO;void menu(){ printf("\n\n\n\n\n\n\n"); printf("\t\t\t图书管理系统\n"); printf("\t\t\t1:新进图书基本信息的输入\n"); printf("\t\t\t2:显示全部记录\n"); printf("\t\t\t3:根据图书名称查询图书基本信息\n"); printf("\t\t\t4:根据图书名称对撤销的图书信息进行删除\n"); printf("\t\t\t5:按照图书名称从小大到排序\n"); printf("\t\t\t6:统计某价格以上的图书数量\n"); printf("\t\t\t7:列出所有未借出去的图书信息\n"); printf("\t\t\t8:退出\n"); }void choice_1_input_new()/*输入新进的图书信息*/{ char choice; FILE *p; BOOKINFO newbook; system("cls"); while(1) { printf("输入图书编号:"); gets(newbook.number); printf("输入图书名称:"); gets(newbook.name); printf("输入图书单价:"); scanf("%f",&newbook.price); while(getchar()!=’\n’); printf("输入图书的作者:"); gets(newbook.auther); printf("输入借书人姓名:"); gets(newbook.lendername); printf("输入借书人性别:"); gets(newbook.lendersex); printf("输入借书人学号:"); gets(newbook.lendernum); printf("是否保存该条书目?(Y/N)\n"); choice=getch(); while(choice!=’Y’&&choice!=’y’&&choice!=’N’&&choice!=’n’) choice=getch(); if(choice==’Y’||choice==’y’) { newbook.isExit=1;/*将图书状态设置成1,表示没有借出*/ p=fopen("c:\\bookinfo.data","ab"); fwrite(&newbook,sizeof(BOOKINFO),1,p); fclose(p); printf("\n该条书目已添加到c:\\bookinfo.data文件中!\n"); } else { printf("\n本条书目未保存!\n"); } printf("\n是否继续添加书目?(Y/N)\n"); choice=getch(); while(choice!=’Y’&&choice!=’y’&&choice!=’N’&&choice!=’n’) choice=getch(); if(choice==’Y’||choice==’y’) continue; else break; } }void choice_2_display_all()/*显示全部图书信息*/{ FILE *p; int n; BOOKINFO bookinfo; int booknumber=0; system("cls"); p=fopen("c:\\bookinfo.data","rb"); while(!feof(p)) { fread(&bookinfo,sizeof(BOOKINFO),1,p); booknumber++; } /*booknumber--;使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); booknumber--; if(booknumber==0) { printf("没有任何图书信息!\n\n"); } else { n=0; printf(" 图书信息如下\n"); printf(" 图书信息 | 借书人信息 \n"); printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n"); while(n《booknumber) { printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n", bookinfo.price, bookinfo.lendername, bookinfo.lendernum); n++; } } printf("\n\n按任意键回到主菜单!\n"); getch(); }void choice_3_search_according_name()/*根据图书名称显示图书的信息*/{ char search="";/*search用来存放要查询的书名*/ int n; FILE *p; char choice; BOOKINFO bookinfo; int booknumber=0; system("cls"); p=fopen("c:\\bookinfo.data","rb"); while(!feof(p)) { fread(&bookinfo,sizeof(BOOKINFO),1,p); booknumber++; } booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); while(1) { printf("输入要查询的书本名称:"); gets(search); if(booknumber==0) { printf("书库中没有任何信息!\n\n"); printf("按任意键回到主菜单!\n\n"); getch(); break; }/*if结束*/ else { for(n=0;n《booknumber;n++) if(strcmp(bookinfo.name,search)==0) { printf("该书的详细信息如下:\n"); printf(" 图书信息 | 借书人信息 \n"); printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n"); printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n", bookinfo.price, bookinfo.lendername, bookinfo.lendernum); break; } if(n》=booknumber) printf("没有查找该书的任何信息!\n"); printf("\n\n是否继续查询?(Y/N)\n"); choice=getch(); while(choice!=’Y’&&choice!=’y’&&choice!=’N’&&choice!=’n’) choice=getch(); if(choice==’Y’||choice==’y’) continue; else break; }/*else结束*/ }/*while(1)结束*/ }void choice_4_delete_according_name()/*根据图书名称对图书信息进行删除*/{ char search="";/*search用来存放要删除的书名*/ int n,i; FILE *p; char choice; BOOKINFO bookinfo; int booknumber; system("cls"); while(1) { printf("输入要删除的书本名称:"); gets(search); p=fopen("c:\\bookinfo.data","rb"); booknumber=0; while(!feof(p)) { fread(&bookinfo,sizeof(BOOKINFO),1,p); booknumber++; } booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); if(booknumber==0) { printf("书库中没有任何信息!\n\n"); printf("按任意键回到主菜单!\n\n"); getch(); break; }/*if结束*/ else { for(n=0;n《booknumber;n++) if(strcmp(bookinfo.name,search)==0) { break; } if(n》=booknumber) printf("没有查找该书的任何信息!\n"); else { printf("是否确认需要删除该条书目?(Y/N)"); choice=getch(); while(choice!=’Y’&&choice!=’y’&&choice!=’N’&&choice!=’n’) choice=getch(); if(choice==’Y’||choice==’y’) { for(i=n;i《booknumber-1;i++) bookinfo; booknumber--; p=fopen("c:\\bookinfo.data","wb"); for(n=0;n《booknumber;n++) fwrite(&bookinfo,sizeof(BOOKINFO),1,p); fclose(p); printf("删除成功!\n"); } else printf("\n\n该条书目没有被删除!"); } printf("\n\n是否继续进行删除操作?(Y/N)\n"); choice=getch(); while(choice!=’Y’&&choice!=’y’&&choice!=’N’&&choice!=’n’) choice=getch(); if(choice==’Y’||choice==’y’) continue; else break; }/*else结束*/ }/*while(1)结束*/ }void choice_5_sort_according_name()/*根据图书名称排序*/{ FILE *p; int m,n; BOOKINFO temp; BOOKINFO bookinfo; int booknumber; p=fopen("c:\\bookinfo.data","rb"); booknumber=0; system("cls"); while(!feof(p)) { fread(&bookinfo,sizeof(BOOKINFO),1,p); booknumber++; } booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); if(booknumber==0) { printf("没有任何图书信息!\n\n"); } else { for(m=0;m《booknumber-1;m++) for(n=m+1;n《booknumber;n++) if(strcmp(bookinfo.name)》0) { temp=bookinfo; bookinfo; bookinfo=temp; } p=fopen("c:\\bookinfo.data","wb"); for(m=0;m《booknumber;m++) fwrite(&bookinfo,sizeof(BOOKINFO),1,p); fclose(p); printf("\n\n完成排序!\n\n"); } printf("按任意键回到主菜单!\n"); getch(); }void choice_6_display_high_price()/*根据价格列出图书信息*/{ float price; FILE *p; int n; int count=0; BOOKINFO bookinfo; int booknumber; system("cls"); printf("请输入价格:"); scanf("%f",&price); p=fopen("c:\\bookinfo.data","rb"); booknumber=0; while(!feof(p)) { fread(&bookinfo,sizeof(BOOKINFO),1,p); booknumber++; } booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/ fclose(p); if(booknumber==0) { printf("没有任何图书信息!\n\n"); } else { for(n=0;n《booknumber;n++) { if(bookinfo.price》=price) count++; } if(count==0) printf("书库中没有比%.1f$价格高的图书!",price); else { printf(" 价格高于%.1f$的图书信息如下\n",price); printf(" 图书信息 | 借书人信息 \n"); printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n"); for(n=0;n《booknumber;n++) { if(bookinfo.price》=price) printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n", bookinfo.price, bookinfo.lendername, bookinfo.lendernum); } } } printf("\n\n按任意键回到主菜单!\n"); getch(); }void choice_7_display_according_exitflag()/*根据存在状态列出图书信息*/{ FILE *p; int n; int count=0; BOOKINFO bookinfo; int booknumber; system("cls"); booknumber=0; p=fopen("c:\\bookinfo.data","rb"); while(!feof(p)) { fread(&bookinfo,sizeof(BOOKINFO),1,p); booknumber++; } booknumber--; fclose(p); if(booknumber==0) { printf("书库中没有任何书目存在!\n"); } else { for(n=0;n《booknumber;n++) if(bookinfo.isExit==1) count++; if(count==0) printf("书库中的书籍全部借出!\n"); else { printf("书库中未被借出的图书信息如下:\n\n"); printf(" 图书信息 | 借书人信息 \n"); printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n"); for(n=0;n《booknumber;n++) if(bookinfo.isExit==1) { printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n", bookinfo.price, bookinfo.lendername, bookinfo.lendernum); } } } printf("\n按任意键返回主菜单!\n"); getch(); }void main(){ char choice; clock_t tm; FILE *p; if((p=fopen("c:\\bookinfo.data","rb"))==NULL) { p=fopen("c:\\bookinfo.data","wb"); fclose(p); } while(1) { system("cls"); menu(); choice=getch(); switch(choice) { case ’1’:choice_1_input_new();break;/*输入新进的图书信息*/ case ’2’:choice_2_display_all();break;/*显示全部图书信息*/ case ’3’:choice_3_search_according_name();break;/*根据图书名称显示图书的信息*/ case ’4’:choice_4_delete_according_name();break;/*根据图书名称对图书信息进行删除*/ case ’5’:choice_5_sort_according_name();break;/*根据图书名称排序*/ case ’6’:choice_6_display_high_price();break;/*根据价格列出图书信息*/ case ’7’:choice_7_display_according_exitflag();break;/*根据存在状态列出图书信息*/ case ’8’:printf("\n\n\t\t\t谢谢使用,再见!\n\t\t\t按任意键退出!\n");getch();return; default: printf("\n\n\t\t\t请输入菜单中的数字!(1~8)"); tm=clock(); while(clock()《tm+1800); break; } }}写的很赶,不知道行不行 程序很长,但是没什么复杂的东西。要是写的不好,楼主就将就吧。

C语言编程图书管理系统

#include#include#include#include#includestructbook{charnumber\n");do{x=getche();}while(x!=’n’&&x!=’y’);if(x==’n’)break;}fclose(fp);system("cls");}//浏览voidscan_book(){FILE*fp;charx,z;structbookn;fp=fopen("F:\\课程设计\\图书管理系统.txt","rb");rewind(fp);system("cls");while(1){fread(&n,sizeof(n),1,fp);if(feof(fp))break;else{printf("********************************************\n");printf("编号书名作者出版社出版时间价格状态借阅者\n");printf("\n");printf("%s%s%s%s%s%s%s%s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);printf("\n");}}printf("\n");printf("回到主菜单请按回车");do{x=getche();}while(x!=’\r’);if(x==’\r’){fclose(fp);system("cls");}}

int found=0在c语言中的图书管理系统什么意思

在C语言中,int found = 0表示定义了一个整型变量found并将其初始化为0。在图书管理系统中,这个变量通常用于标记是否找到了符合条件的图书。

在搜索图书或执行其他相关操作时,可以使用found变量来跟踪搜索结果。当找到符合条件的图书时,将found设置为1,表示找到了。如果未找到符合条件的图书,则保持found为0。

这样做有助于在后续的处理中根据found变量的值来判断是否执行特定的操作或输出相应的信息。例如,可以使用条件语句(如if语句)检查found的值,根据结果执行不同的操作。

c语言图书管理系统的优缺点有哪些

c语言图书管理系统的优点是代码简单,学习门槛低,与低级操作系统兼容性强,可以直接操作硬件,能够让用户进行图书的管理,方便用户查阅、借阅和归还图书;缺点是界面简单,无法进行图形化界面的实现,用户交互体验不佳,因此需要时间和技能的积累,代码不够鲁棒,易受到输入错误和程序错误的影响,需要进行大量测试和调试。

C语言程序设计的图书管理系统

#include 《iostream》 #include 《iomanip》 #include 《string》 #include 《fstream》//输入/输出文件流类 using namespace std; const int Maxr=100;//最多的读者 const int Maxb=100;//最多的图书 const int Maxbor=5;//每位读者最多借五本书 //读者类,实现对读者的信息的描述 class Reader { private: int tag; //删除标记 1:已删 0:未删 int no; //读者编号 char name; //读者姓名 int borbook;//所借图书 public: Reader() {} char *getname() //获取姓名 int gettag() //获取删除标记 int getno() //获取读者编号 void setname(char na) //设置姓名 { strcpy(name,na); } void delbook()//设置删除标记 1:已删 0:未删 void addreader(int n,char *na)//增加读者 { tag=0; no=n; strcpy(name,na); for(int i=0;i《Maxbor;i++) borbook=0; } void borrowbook(int bookid)//借书操作 { for(int i=0;i《Maxbor;i++) { if (borbook==0) { borbook=bookid; return; } } } int retbook(int bookid)//还书操作 { for(int i=0;i《Maxbor;i++) { if(borbook==bookid) { borbook=0; return 1; } } return 0; } void disp()//读出读者信息 { cout 《《 setw(5) 《《 no 《《setw(10) 《《 name《《"借书编号:"《《endl; } }; //读者类库,实现建立读者的个人资料 class RDatabase { private: int top; //读者记录指针 Reader read;//读者记录 public: RDatabase() //构造函数,将reader.txt读到read中 { Reader s; top=-1; fstream file("reader.txt",ios::in);//打开一个输入文件 while (1) { file.read((char *)&s,sizeof(s)); if (!file)break; top++; read=s; } file.close(); //关闭 reader.txt } void clear()//删除所有读者信息 { top=-1; } int addreader(int n,char *na)//添加读者时先查找是否存在 { Reader *p=query(n); if (p==NULL) { top++; read.addreader(n,na); return 1; } return 0; } Reader *query(int readerid)//按编号查找 { for (int i=0;i《=top;i++) if (read.getno()==readerid && read.gettag()==0) { return &read; } return NULL; } void disp() //输出所有读者信息 { for (int i=0;i《=top;i++) read.disp(); } void readerdata();//读者库维护 ~RDatabase() //析构函数,将read写到reader.txt文件中 { fstream file("reader.txt",ios::out); for (int i=0;i《=top;i++) if (read.gettag()==0) file.write((char *)&read)); file.close(); } }; void RDatabase::readerdata() { char choice; char rname; int readerid; Reader *r; while (choice!=’0’) { cout 《《"\n\n\t\t\t读 者 维 护\n\n\n\t\t 1 新 增\n\n\t\t 2 更 改\n\n\t\t 3 删 除\n\n\t\t 4 查 找\n\n\t\t 5 显 示\n\n\t\t 6 全 删\n\n\t\t 0 退 出"《《endl; cin 》》 choice; switch (choice) { case ’1’: cout 《《 "输入读者编号:"; cin 》》 readerid; cout 《《 "输入读者姓名:"; cin 》》 rname; addreader (readerid,rname); break; case ’2’: cout 《《 "输入读者编号:"; cin 》》 readerid; r=query(readerid); if (r==NULL) { cout 《《 " 该读者不存在 "《《endl; break; } cout 《《 "输入新的姓名:"; cin 》》 rname; r-》setname(rname); break; case ’3’: cout 《《 " 输入读者编号:"; cin 》》 readerid; r=query(readerid); if (r==NULL) { cout 《《" 该读者不存在" 《《 endl; break; } r-》delbook(); break; case ’4’: cout 《《 "读入读者编号:"; cin 》》 readerid; r=query(readerid); if (r==NULL) { cout 《《"该读者不存在"《《 endl; break; } r-》disp(); break; case ’5’: disp(); break; case ’6’: clear(); break; default:cout《《"输入错误,请从新输入:";break; } } } //图书类,实现对图书的描述,图书的编号,书名,借出,还入等 class Book { private: int tag;//删除标记 1:已删 0:未删 int no;//图书编号 char name;//书名 int onshelf;//是否再架 1:再架 2:已借 public: Book(){} char *getname() //获取姓名 int getno()//获取图书编号 int gettag()//获取删除标记 void setname(char na)//设置书名 { strcpy(name,na); } void delbook()//删除图书 void addbook(int n,char *na)//增加图书 { tag=0; no=n; strcpy(name,na); onshelf=1; } int borrowbook()//借书操作 { if (onshelf==1) { onshelf=0; return 1; } return 0; } void retbook()//还书操作 { onshelf=1; } void disp()//输出图书 { cout 《《 setw(6) 《《 no 《《 setw(18) 《《 name 《《 setw(10) 《《(onshelf==1? "在架":"已借") 《《endl; } }; //图书库类,实现对图书的维护,查找,删除等 class BDatabase { private: int top; //图书记录指针 Book book; //图书记录 public: BDatabase()//构造函数,将book.txt读到book中 { Book b; top=-1; fstream file("book.txt",ios::in); while (1) { file.read((char *)&b,sizeof(b)); if (!file) break; top++; book=b; } file.close(); } void clear()//全删 { top=-1; } int addbook(int n,char *na)//增加图书 { Book *p=query(n); if (NULL==p) { top++; book.addbook(n,na); return 1; } return 0; } Book *query(int bookid)//查找图书 { for (int i=0;i《=top;i++) if (book.gettag()==0) { return &book; } return NULL; } void bookdata();//图书库维护 void disp() { for (int i=0;i《=top;i++) if (book.gettag()==0) book.disp(); } ~BDatabase()//析构函数,将book写到book.txt文件中 { fstream file("book.txt",ios::out); for (int i=0;i《=top;i++) if (book.gettag()==0) file.write((char *)&book)); file.close(); } }; void BDatabase::bookdata() { char choice; char bname; int bookid; Book *b; while (choice!=’0’) { cout 《《"\n\n\n\t\t\t图 书 维 护 "《《endl《《endl; cout《《"\t\t1 新 增\n \t\t2 更 改\n\t\t3 删 除\n\t\t4 查 找\n\t\t5 显 示\n\t\t6 全 删\n\t\t0 退 出"《《endl; cin 》》 choice; switch (choice) { case ’1’: cout 《《 "输入图书编号:"《《endl; cin 》》 bookid; cout 《《 "输入图书书名:"《《endl; cin 》》 bname; addbook(bookid,bname); break; case ’2’: cout 《《 "输入图书编号:"《《endl; cin 》》 bookid; b=query(bookid); if (b==NULL) { cout 《《 " 该图书不存在 "《《endl; break; } cout 《《 "输入新的书名:"《《endl; cin 》》 bname; b-》setname(bname); break; case ’3’: cout 《《" 读入图书编号:"《《endl; cin 》》 bookid; b=query(bookid); if (b==NULL) { cout 《《" 该图书不存在" 《《 endl; break; } b-》delbook(); break; case ’4’: cout 《《 " 读入图书编号:"《《endl; cin 》》 bookid; b=query(bookid); if (b==NULL) { cout 《《" 该图书不存在"《《 endl; break; } b-》disp(); break; case ’5’: disp(); break; case ’6’: clear(); break; default:cout《《"输入错误,请从新输入:"; } } } //main() 函数的实现,程序的主界面的引导 void main() { char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; while(choice!=’0’) { cout 《《endl《《endl《《"\t\t\t 图 书 管 理 系 统\n\n\n"; cout 《《"\t\t\t1 借 书\n\n\t\t\t2 还 书 \n\n\t\t\t3 图 书 维 护\n\n\t\t\t4 读 者 维 护\n\n\t\t\t0 离 开"《《endl; cin 》》 choice; switch (choice) { case ’1’: cout 《《" 借书 读者编号:"; cin 》》readerid; cout 《《" 图书编号: "; cin 》》bookid; r=ReaderDB.query(readerid);//按编号查找 if (NULL==r) { cout 《《" 不存在该读者,不能借书"《《 endl; break; } b=BookDB.query(bookid); if (b==NULL) { cout 《《" 不存在该图书,不能借书"《《 endl; break; } if (b-》borrowbook()==0) { cout 《《 " 该图书已借出,不能借书"《《 endl; break; } r-》borrowbook(b-》getno()); break; case ’2’: cout《《"还书\n 读者编号:"; cin 》》readerid; cout 《《 " 图书编号:"; cin 》》bookid; r=ReaderDB.query(readerid); if (r==NULL) { cout 《《" 不存在该读者,不能还书" 《《 endl; break; } b=BookDB.query(bookid); if (b==NULL) { cout 《《" 不存在该图书,不能还书" 《《endl; break; } b-》retbook(); r-》retbook(b-》getno()); break; case ’3’: BookDB.bookdata(); break; case ’4’: ReaderDB.readerdata(); break; default:cout《《"输入错误,请从新输入:"; } } }

c语言课程设计:图书管理系统设计的基本思路是什么

图书管理系统主要要求可以录入书籍,添加书目,查找书本信息,删除或修改信息,有的还要求显示是否被借阅等。

一般采用结构体数组,链表,文件操作和自定义函数。主要是需要对基础知识掌握牢固。

先定义结构体,然后对结构体的成员进行定义,选择数组存储书本各种信息。录入信息可以用for和do while循环等来做。

存放信息需要文件操作函数,比如fopen,fwrite等。

删除和添加可以删除节点或者增加节点。

查找之类的可以用字符串操作的各种函数实现。

附上参考源代码

#include 《stdio.h》#include 《string.h》#include 《stdlib.h》#include 《conio.h》#define  books "f:\\books.txt"#define booksbak  "f:\\booksbak.txt"struct bookinfo{char isbn;char title;char author;int count;};struct book{struct bookinfo onebook;struct book *next;};struct book *searchBook ( struct book *listptr,char isbn){while(listptr!=(struct book *)0)if (strcmp(listptr-》onebook.isbn,isbn)==0)return listptr;elselistptr=listptr-》next;return (struct book *)0;}void MainSearchbook(struct book *firstptr){struct book *ptr;char isbnno;printf("请输入ISBN:");scanf("%s",&isbnno);ptr=searchBook(firstptr,isbnno);if (ptr!=(struct book *)0){printf("找到了!!!\n");printf("ISBN:%s\n",ptr-》onebook.isbn);printf("Title:%s\n",ptr-》onebook.title);printf("Author:%s\n",ptr-》onebook.author);}elseprintf("sorry,not found!!!\n");}int addBook(struct book *listptr,struct bookinfo note){while(listptr-》next!=0)listptr=listptr-》next;listptr-》next=(struct book *)malloc(sizeof(struct book));listptr-》next-》onebook=note;listptr-》next-》next=0;return 0;}void MainAdd(struct book *listptr,FILE *fp){int ok;struct bookinfo note;printf("请输入ISBN:");scanf("%s",¬e.isbn);printf("请输入Title:");scanf("%s",¬e.title);printf("请输入Author:");scanf("%s",¬e.author);ok=addBook(listptr,note);if (ok==0){//将加入的图书写到文件中保存fprintf(fp,"\n%s %s %s %d",note.isbn,note.title,note.author,0);printf("添加图书成功!!!\n");}elseprintf("添加图书失败!!!\n");}int removeBook(struct book *listptr,char isbn){while(listptr-》next!=(struct book *)0){if (strcmp(listptr-》next-》onebook.isbn,isbn)==0){listptr-》next=listptr-》next-》next;return 0;}elselistptr=listptr-》next;}return -1;}void MainRemove(struct book *listptr,FILE *fp)/************************************************************************//* 删除书籍函数,通过ISBN删除链表节点,同时删除文件中对应信息              *//* 删除文件中一行,用的是笨方法,把需要的信息写到新文件,删除旧文件,重命名..*//************************************************************************/{char isbnno;int ok;struct bookinfo onebook;printf("请输入ISBN:");scanf("%s",&isbnno);ok=removeBook(listptr,isbnno);if (!ok){FILE *fpbak;if ((fpbak=fopen(booksbak,"a+"))==NULL)printf("文件打开失败!!!\n");fseek(fp,0,SEEK_SET);   //移到文件开始while((fscanf(fp,"%s %s %s %d\n",&onebook.isbn,&onebook.title,&onebook.author,&onebook.count))!=EOF){if (strcmp(onebook.isbn,isbnno)!=0){fprintf(fpbak,"%s %s %s %d\n",onebook.isbn,onebook.title,onebook.author,onebook.count);}}fclose(fp);fclose(fpbak);if (remove(books))   //删除失败返回非0{printf("删除文件失败!!!\n");return ;}elseif (rename(booksbak,books))  //重命名失败返回非0值{printf("重命名失败!!!\n");return ;}printf("删除成功!!!\n");}elseprintf("查无此书!!!");}int  choice(void){int c;printf("1.查看图书\n");printf("2.添加图书\n");printf("3.删除图书\n");printf("4.退出程序\n");printf("请选择序号:");return c=getchar();//return c=getche();printf("\n\n");}int addEntry(FILE *fp,struct book *firstptr)/************************************************************************//*        主要用来加载文件中存放的图书信息                              *//************************************************************************/{struct bookinfo onebook;while((fscanf(fp,"%s %s %s %d\n",&onebook.isbn,&onebook.title,&onebook.author,&onebook.count))!=EOF){while(firstptr-》next!=0)firstptr=firstptr-》next;firstptr-》next=(struct book *)malloc(sizeof(struct book));firstptr-》next-》onebook=onebook;firstptr-》next-》next=0;}return 0;}int main(int argc,char *argv){int ch;struct book first;strcpy(first.onebook.isbn,"123456");strcpy(first.onebook.title,"Programming C");strcpy(first.onebook.author,"yhb");first.next=0;struct book *firstptr=&first;   //链表头指针FILE *fp;if ((fp=fopen(books,"a+"))==NULL)printf("文件打开失败!!!");addEntry(fp,firstptr);while(1){    system("CLS");   //清屏/************************************************************************//*          想想这里为什么要清空缓冲区?                                 *//*由于上一次(choice函数)的getchar(),还有一个’\n’留在缓冲区....          *//*可以把这句话注释掉看看,没有这句话会遇到麻烦                           *//*如果不用fflush,可以将上面的getchar()换成getche()                      *//*比较getchar(),getch(),getche()......                                  *//************************************************************************/fflush(stdin); ch=choice()-48;switch (ch){case 1:MainSearchbook(firstptr);break;case 2:MainAdd(firstptr,fp);break;case 3:MainRemove(firstptr,fp);break;case 4:printf("谢谢使用...\n");exit(0);default:printf("请输入正确序号!");}system("PAUSE");}return 0;}

关于本次c语言书籍管理系统和c语言图书管理系统 急需!!的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

c语言书籍管理系统(c语言图书管理系统  急需!!)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.