c语言图书管理系统

时间:2024-10-27 01:23:43编辑:阿星

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

图书管理系统主要要求可以录入书籍,添加书目,查找书本信息,删除或修改信息,有的还要求显示是否被借阅等。一般采用结构体数组,链表,文件操作和自定义函数。主要是需要对基础知识掌握牢固。先定义结构体,然后对结构体的成员进行定义,选择数组存储书本各种信息。录入信息可以用for和do while循环等来做。存放信息需要文件操作函数,比如fopen,fwrite等。删除和添加可以删除节点或者增加节点。查找之类的可以用字符串操作的各种函数实现。附上参考源代码#include #include #include #include #define books "f:\\books.txt"#define booksbak "f:\\booksbak.txt"struct bookinfo{char isbn[20];char title[30];char author[20];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[20];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[20];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语言图书管理信息系统

借书的限制:教师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.数据结构的设计思想和任务的总体结构 链接: https://pan.baidu.com/s/11BBC4ec7x3l62u83lJeGpw 提取码:1234

基于 c 语言的图书管理系统实现

基于 C 语言的图书管理系统可以通过文件存储来实现,以下是简单的实现步骤: 1. 定义图书结构体(book),包括书名、作者、出版社、出版日期、价格等信息。 2. 定义图书管理结构体(library),包括所管理的图书数组指针、当前图书数量、图书数组大小、图书存储文件名等信息。 3. 实现图书的增加、删除、查找、编辑等操作,通过调用数组的相关操作来实现。 4. 数据的持久化保存,通过将当前图书数组保存到文件中,实现图书数据的持久化。【摘要】
基于 c 语言的图书管理系统实现【提问】
基于 C 语言的图书管理系统可以通过文件存储来实现,以下是简单的实现步骤: 1. 定义图书结构体(book),包括书名、作者、出版社、出版日期、价格等信息。 2. 定义图书管理结构体(library),包括所管理的图书数组指针、当前图书数量、图书数组大小、图书存储文件名等信息。 3. 实现图书的增加、删除、查找、编辑等操作,通过调用数组的相关操作来实现。 4. 数据的持久化保存,通过将当前图书数组保存到文件中,实现图书数据的持久化。【回答】
#include #include // 定义图书结构体typedef struct { char title[100]; // 书名 char author[50]; // 作者 char publisher[50]; // 出版社 char publish_date[20]; // 出版日期 float price; // 价格} Book;// 定义图书管理结构体typedef struct { Book *books; // 图书指针数组 int count; // 当前图书数量 int capacity; // 图书数组大小 char filename[100]; // 图书文件名} Library;【回答】
"); return; } lib->books[lib->count++] = book; } // 删除图书 void delete_book(Library *lib, char *title) { int index = -1; for (int i = 0; i lib->count; i++) { if (strcmp(lib->books[i].title, title) == 0) { index = i; break; } } if (index != -1) { for (int i = index; i lib->count - 1; i++) { lib->books[i] = lib->books[i + 1]; } lib->count--; } else { printf("Error: The book is not found. ");【回答】
小红书风格文案输入你想发布的内容,帮你生成小红书的风格。写文案为任何产品撰写介绍文案写日报定制生成各领域的工作日报翻译对各种语言进行翻译SWOT分析法详细描述目前事件的情势,小助手会帮你生成一份SWOT分析报告佛祖解惑佛祖为您解惑林黛玉以林黛玉的风格进行回答更多模板文案、效率工具、角色扮演、娱乐等模板小魔咒AI绘画打开每天可领 8 次AI问答次数哦 如需使用电脑版,可在电脑微信打开小程序 防止迷路,请尽量、尽量、尽量关注公众号左下角菜单点击每日领次数即可关注公众号点击查看历史记录TH车载syu一android非常抱歉,您的输入并不是一个完整的句子,我无法理解您想要什么帮助。请您提供更多信息或者明确您的问题。谢谢!长按信息复制TH车载syu一android是什么车载SYU是“智能车联网操作系统”,它是在汽车上运行的一款软件,提供了丰富的汽车信息和服务,包括导航、多媒体播放、语音识别、远程控制等功能。而Android是一种移动操作系统,目前主要用于智能手机、平板电脑等移动设备上。 因此,车载SYU一Android可以理解为在汽车上运行的使用Android系统的车载智能操作系统,【回答】
// 查找图书 void find_book(Library *lib, char *title) { int index = -1; for (int i = 0; i lib->count; i++) { if (strcmp(lib->books[i].title, title) == 0) { index = i; break; } } if (index != -1) { Book *book = &lib->books[index]; printf("Title: %s ", book->title); printf("Author: %s ", book->author); printf("Publisher: %s ", book->publisher); printf("Publish Date: %s ", book->publish_date); printf("Price: %.2f ", book->price);【回答】
book->price); } else { printf("Error: The book is not found. "); } } // 编辑图书 void edit_book(Library *lib, char *title, Book book) { int index = -1; for (int i = 0; i lib->count; i++) { if (strcmp(lib->books[i].title, title) == 0) { index = i; break; } } if (index != -1) { lib->books[index] = book; } else { printf("Error: The book is not found. "); }【回答】
// 加载图书 void load_books(Library *lib) { FILE *fp = fopen(lib->filename, "r"); if (fp == NULL) { return; } fread(&lib->count, sizeof(int), 1, fp); fread(lib->books, sizeof(Book), lib->count, fp); fclose(fp); } // 保存图书 void save_books(Library *lib) { FILE *fp = fopen(lib->filename, "w"); if (fp == NULL) { return; } fwrite(&lib->count, sizeof(int), 1, fp); fwrite(lib->books, sizeof(Book), lib->count, fp); fclose(fp); }【回答】
// 主函数 int main() { Library lib; init_library(&lib, "books.dat", 100); load_books(&lib); // 添加新图书 Book book1 = {"The C Programming Language", "Brian W. Kernighan and Dennis M. Ritchie", "Prentice Hall", "1978-02-22", 22.99}; add_book(&lib, book1); // 删除图书 char title[] = "C++ Primer Plus"; delete_book(&lib, title); // 查找图书 char title2[] = "The C Programming Language"; find_book(&lib, title2);【回答】
// 编辑图书 char title3[] = "Programming Perl"; Book book2 = {"Learning Perl", "Randal L. Schwartz and Tom Phoenix", "O'Reilly Media", "2011-07-01", 23.99}; edit_book(&lib, title3, book2); save_books(&lib); free(lib.books);【回答】
在上述实现中,我们定义了图书结构体和图书管理结构体,通过库函数malloc动态分配了空间。然后,我们实现了图书的增删查改等操作函数,并通过文件的读写操作,实现了数据的持久化,确保了图书信息不会因程序退出而消失。【回答】


上一篇:255010

下一篇:没有了