这篇文章主要介绍“怎么用C语言实现图书管理系统”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用C语言实现图书管理系统”文章能帮助大家解决问题。设计要求设计图书管理系统要求如下
这篇文章主要介绍“怎么用C语言实现图书管理系统”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用C语言实现图书管理系统”文章能帮助大家解决问题。
设计要求
设计图书管理系统
要求如下:
1.对书名,作者,编号,出版单位,出版日期,类别,存放位置进行添加、删除、修改
2.查询相关信息
3.保存所有信息
实现代码
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> typedef struct book /*定义结构体*/ { char bookname[100] ; /*书名*/ char writer[100]; /*作者*/ char classnumber[100]; /*编号*/ char publisher[100]; /*出版单位*/ char time[100]; /*出版日期*/ char type[100]; /*类别*/ char place[100]; /*存放位置*/ struct book *next; }Book; int mima() { int i=0; char user[10]="aa"; char Code[10]="123456"; char getuser[10]; char Getskey[10]; while(1) { printf("\\t\\t\\t请输入账号:"); scanf("%s",getuser); printf("\\t\\t\\t请输入密码:"); while(1) { Getskey[i]=getch(); if(Getskey[i]=='\\r') break; else if(Getskey[i]=='\\b') { if(i==0) continue; printf("\\b"); printf(" "); printf("\\b"); i--; } else { printf("*"); i++; } } Getskey[6]='\\0'; if(strcmp(user, getuser)==0&&strcmp(Code, Getskey)==0) return 1; else { printf("\\n\\n\\t\\t\\t账号不存在或密码输入错误,请重新输入\\n"); i = 0; } } } void showmenu1() /*显示管理员菜单*/ { system("cls"); printf("\\n\\n\\n\\n\\n"); printf("\\t \\n"); printf("\\t 欢迎来到图书信息管理系统 \\n"); printf("\\t \\n"); printf("\\t \\n"); printf("\\t 主菜单 \\n"); printf("\\t \\n"); printf("\\t 1.录入图书信息 \\n"); printf("\\t \\n"); printf("\\t 2.删除图书信息 \\n"); printf("\\t \\n"); printf("\\t 3.修改图书信息 \\n"); printf("\\t \\n"); printf("\\t 4.查询图书信息 \\n"); printf("\\t \\n"); printf("\\t 5.显示所有图书信息 \\n"); printf("\\t \\n"); printf("\\t 6.返回登录界面 \\n"); printf("\\t \\n"); printf("\\t 7.保存数据并退出系统 \\n"); printf("\\t \\n"); } void showmenu2() /*显示游客菜单*/ { system("cls"); printf("\\n\\n\\n\\n\\n"); printf("\\t \\n"); printf("\\t 欢迎来到图书信息管理系统 \\n"); printf("\\t \\n"); printf("\\t \\n"); printf("\\t 主菜单 \\n"); printf("\\t \\n"); printf("\\t 1.查询图书信息 \\n"); printf("\\t \\n"); printf("\\t 2.显示所有图书信息 \\n"); printf("\\t \\n"); printf("\\t 3.返回登录界面 \\n"); printf("\\t \\n"); printf("\\t 4.退出系统 \\n"); printf("\\t \\n"); } int savebookdata(Book *head) /*将数据保存到文件中*/ { Book *p; FILE*fp; fp=fopen("D:\\\\java\\\\zuoye.txt","w"); p=head->next; do { fprintf(fp,"%s\\t",p->bookname); /* 把这个结点的数据全部写入至文件内由于next指针不需要写入至文件,*/ fprintf(fp,"%s\\t",p->writer); /*因此,数据大小就是sizeof(book)-sizeof(book*)总数据大小减去指针的大小 */ fprintf(fp,"%s\\t",p->classnumber); fprintf(fp,"%s\\t",p->publisher); fprintf(fp,"%s\\t",p->time); fprintf(fp,"%s\\t",p->type); fprintf(fp,"%s\\t\\n",p->place); fprintf(fp,"\\n"); p=p->next; /*转换到下一个结点*/ }while(p!=NULL); fclose(fp); return 0; } void addnewbook(Book **head) /*录入图书信息*/ { int i; Book *p,*s; system("cls"); if(*head == NULL) { /* 如果表头为空,先为它分配内存 */ *head = (Book *)calloc(1, sizeof(Book)); p = *head; } else { /* 否则,就说明有内容,直接切换到尾结点 */ p = *head; while(p->next) p = p->next; } printf("\\n\\n\\n"); printf("\\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n"); printf("\\t\\t\\t请问添加几本书:"); scanf("%d",&i); printf("\\t--------------------------------------------------------\\n"); while(i) { s = (Book *)calloc(1, sizeof(Book)); /*为这个结点分配内存 */ printf("\\t\\t\\t请输入书名:"); scanf("%s",s->bookname); printf("\\t--------------------------------------------------------\\n"); printf("\\t\\t\\t请输入作者:"); scanf("%s",s->writer); printf("\\t--------------------------------------------------------\\n"); printf("\\t\\t\\t请输入编号:"); scanf("%s",s->classnumber); printf("\\t--------------------------------------------------------\\n"); printf("\\t\\t\\t请输入出版单位:"); scanf("%s",s->publisher); printf("\\t--------------------------------------------------------\\n"); printf("\\t\\t\\t请输入出版日期:"); scanf("%s",s->time); printf("\\t--------------------------------------------------------\\n"); printf("\\t\\t\\t请输入类别:"); scanf("%s",s->type); printf("\\t--------------------------------------------------------\\n"); printf("\\t\\t\\t请输入存放位置:"); scanf("%s",s->place); printf("\\t--------------------------------------------------------\\n"); printf("\\n"); printf("\\t--------------------------------------------------------\\n"); i--; p->next=s; /*保存输进去的这个结点*/ p=p->next; /*切换到下一个结点*/ p->next=NULL; /*最后一个结点为NULL*/ } printf("\\t\\t\\t图书添加成功!!!\\n"); system("pause"); } int readbookdata(Book **head) /*将数据从文件中读取*/ { int n; Book *s, *p; FILE *fp; fp=fopen("d:\\\\java\\\\zuoye.txt","r"); /* 如果文件打开失败,就返回-1 */ if(NULL == fp) { *head = NULL; return -1; } *head = (Book *)calloc(1, sizeof(Book)); p = *head; while (!feof(fp)) { s = (Book *)calloc(1, sizeof(Book)); /* 为下个结点分配内存空间 */ fscanf(fp,"%s",s->bookname); fscanf(fp,"%s",s->writer); fscanf(fp,"%s",s->classnumber); fscanf(fp,"%s",s->publisher); fscanf(fp,"%s",s->time); fscanf(fp,"%s",p->type); fscanf(fp,"%s\\n",p->place); p->next=s; /*保存该结点*/ p=p->next; /*切换到下一个结点*/ p->next=NULL; /*保证最后一个结点为NULL*/ } fclose(fp);/* 关闭文件 */ return 0; } void deletebook(Book *head) /*删除图书信息*/ { system("cls"); int flag=0; char name[100],ch[10]; Book *p,*t; /* 如果表头为空 */ if(head == NULL || head->next == NULL) { printf("没有记录图书信息!\\n"); system("pause"); return; } p=head; printf("\\n\\n\\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n"); printf("请输入要删除的书名;"); scanf("%s",&name); printf("----------------------------------------------------------------------\\n"); printf("书名\\t\\t作者名\\t\\t编号\\t出版单位\\t出版时间\\t类别\\t存放位置\\n"); printf("----------------------------------------------------------------------\\n"); while(p->next) { t=p; p=p->next; /*转换到下一个结点*/ if(strcmp(name,p->bookname)==0) { flag=1; printf("%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); break; } } if(flag==1) { printf("是否删除该本图书信息(y/n)"); scanf("%s",ch); printf("----------------------------------------------------------------------\\n"); if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) { t->next=p->next; printf("该书已删除!\\n"); } else return; } else if(flag==0) printf("没找到那本书!\\n"); system("pause"); } void modifybook(Book *head) /*修改图书信息*/ { system("cls"); int flag=0; char name[100],ch[10]; Book *p,*t; /* 如果表头为空 */ if(head == NULL || head->next == NULL) { printf("没有记录图书信息!\\n"); system("pause"); return ; } p=head; printf("\\n\\n\\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n"); printf("请输入要修改的书名:"); scanf("%s",name); printf("--------------------------------------------------------------------\\n"); while(p->next) { p=p->next; /*切换到下一个结点*/ if(strcmp(name,p->bookname)==0) { flag=1; t=p; printf("书名\\t\\t作者名\\t\\t编号\\t出版单位\\t出版时间\\t类别\\t存放位置\\n"); printf("--------------------------------------------------------------------\\n"); printf("%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n\\n",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); } } if(flag==1) { printf("--------------------------------------------------------------------\\n"); printf("\\t\\t是否修改该本图书信息(y/n):"); scanf("%s",ch); printf("\\t--------------------------------------------------------------------\\n"); if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) { int c; printf("\\t\\t【1】书名\\n"); printf("--------------------------------------------------------------------\\n"); printf("\\t\\t【2】作者\\n"); printf("--------------------------------------------------------------------\\n"); printf("\\t\\t【3】编号\\n"); printf("--------------------------------------------------------------------\\n"); printf("\\t\\t【4】出版单位\\n"); printf("--------------------------------------------------------------------\\n"); printf("\\t\\t【5】出版日期\\n"); printf("--------------------------------------------------------------------\\n"); printf("\\t\\t【6】类别\\n"); printf("--------------------------------------------------------------------\\n"); printf("\\t\\t【7】存放位置\\n"); printf("--------------------------------------------------------------------\\n"); printf("\\t请输入你要修改的内容;"); scanf("%d",&c); printf("--------------------------------------------------------------------\\n"); p=t; switch(c) { case 1: printf("\\t请输入书名:"); scanf("%s",p->bookname); break; case 2: printf("\\t请输入作者:"); scanf("%s",p->writer); break; case 3: printf("\\t请输入编号:"); scanf("%s",p->classnumber); break; case 4: printf("\\t请输入出版单位:"); scanf("%s",p->publisher); break; case 5: printf("\\t请输入出版日期:"); scanf("%s",p->time); break; case 6: printf("\\t请输入类别:"); scanf("%s",p->type); break; case 7: printf("\\t请输入存放位置:"); scanf("%s",p->place); break; } printf("--------------------------------------------------------------------\\n"); printf("\\t恭喜大佬修改成功!!!\\n"); } } else if(flag==0) printf("对不起,该书库没有该书\\n"); system("pause"); } void searchbook(Book *head) /*查询图书信息*/ { system("cls"); int choose,flag=0; Book *p; char b[100]; /* 如果表头为空 */ if(head == NULL || head->next == NULL) { printf("没有记录图书信息!\\n"); system("pause"); return ; } do { system("cls"); printf("\\n\\n\\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n"); printf("\\t\\t1.按书名查找\\n"); printf("----------------------------------------------------------------------\\n"); printf("\\t\\t2.按作者名查找\\n"); printf("----------------------------------------------------------------------\\n"); printf("\\t\\t3.按编号查找\\n"); printf("----------------------------------------------------------------------\\n"); printf("\\t\\t4.按出版单位查找\\n"); printf("----------------------------------------------------------------------\\n"); printf("\\t\\t返回主菜单(其他数字)\\n"); printf("----------------------------------------------------------------------\\n"); printf("\\t\\t请输入您的选择:"); scanf("%d",&choose); printf("----------------------------------------------------------------------\\n"); p=head; if(choose==1) { printf("输入所查书名:"); scanf("%s",b); printf("----------------------------------------------------------------------\\n\\n"); while(p->next) { p=p->next; /*转换到下一个结点*/ if(strcmp(b,p->bookname)==0) /*判断是否找到并输出*/ { flag=1; printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n"); printf("书名\\t作者名\\t编号\\t出版单位\\t出版时间\\t类别\\t存放位置\\n"); printf("----------------------------------------------------------------------\\n"); printf("%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); } } if(flag==0) printf("不存在该信息\\n"); } else if(choose==2) { printf("输入所查作者名:"); scanf("%s",b); printf("----------------------------------------------------------------------\\n\\n"); while(p->next) { p=p->next; /*转换到下一个结点*/ if(strcmp(b,p->writer)==0) /*判断是否找到并输出*/ { flag=1; printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n"); printf("书名\\t作者名\\t编号\\t出版单位\\t出版时间\\t类别\\t存放位置\\n"); printf("----------------------------------------------------------------------\\n"); printf("%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); } } if(flag==0) printf("不存在该信息\\n"); } else if(choose==3) { printf("输入所查编号:"); scanf("%s",b); printf("----------------------------------------------------------------------\\n\\n"); while(p->next) { p=p->next; /*转换到下一个结点*/ if(strcmp(b,p->classnumber)==0) /*判断是否找到并输出*/ { flag=1; printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n"); printf("书名\\t作者名\\t编号\\t出版单位\\t出版时间\\t类别\\t存放位置\\n"); printf("----------------------------------------------------------------------\\n"); printf("%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); } } if(flag==0) printf("不存在该信息\\n"); } else if(choose==4) { printf("输入所查出版单位:"); scanf("%s",b); printf("----------------------------------------------------------------------\\n\\n"); while(p->next) { p=p->next; /*转换到下一个结点*/ if(strcmp(b,p->publisher)==0) /*判断是否找到并输出*/ { flag=1; printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n"); printf("书名\\t作者名\\t编号\\t出版单位\\t出版时间\\t类别\\t存放位置\\n"); printf("----------------------------------------------------------------------\\n"); printf("%s\\t%s\\t%s\\t%s\\t%s%s\\t%s\\n",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); } } if(flag==0) printf("不存在该信息\\n"); } else return; system("pause"); }while(1); } int printfbook(Book *head) /*显示所有图书信息*/ { Book *p; system("cls"); /* 如果表头为空 */ if(head == NULL || head->next == NULL) { printf("没有记录图书信息!\\n"); system("pause"); return 0; } p=head->next; printf("\\n\\n\\n"); printf("**********************************************************************************\\n"); printf(" 图书列表 \\n"); printf("----------------------------------------------------------------------------------\\n"); printf("书名\\t作者\\t编号\\t出版单位\\t出版时间\\t类别\\t存放位置\\n"); printf("----------------------------------------------------------------------------------\\n"); do { printf("%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n\\n",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); p=p->next; /*转换到下一个结点*/ }while(p!=NULL); system("pause"); } int main(void) { system("cls"); Book *head=NULL; readbookdata(&head); int choice,z,c; printf("\\n\\n\\n"); printf("\\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n"); printf("\\t\\t\\t欢迎光临图书信息管理系统\\n"); printf("\\t--------------------------------------------------------\\n"); printf("\\t\\t\\t【1】游客\\n"); printf("\\t\\t\\t【2】管理员\\n"); printf("\\t\\t\\t【3】退出系统\\n"); printf("\\t--------------------------------------------------------\\n"); while(printf("\\t\\t\\t请选择身份:")&&scanf("%d",&c)!=EOF) { if(c==1) { showmenu2(); while (printf("\\t请输入选择项(1-3):")&&scanf("%d",&choice)!=EOF) { switch (choice) { case 1: /*查询图书信息*/ searchbook(head); break; case 2: /*显示所有图书信息*/ printfbook(head); break; case 3: /*返回登录界面*/ main(); break; case 4: exit(0); default: printf("\\t输入错误!!!\\n"); system("pause"); break; } showmenu2(); } } else if(c==2) { z=mima(); showmenu1(); while (printf("\\t请输入选择项(1-6):")&&z==1&&scanf("%d",&choice)!=EOF) { switch (choice) { case 1: /*录入图书信息*/ addnewbook(&head); break; case 2: /*删除图书信息*/ deletebook(head); break; case 3: /*修改图书信息*/ modifybook(head); break; case 4: /*查询图书信息*/ searchbook(head); break; case 5: /*显示所有图书信息*/ printfbook(head); break; case 6: /*返回登录界面*/ main(); break; case 7: /*保存数据并退出系统*/ savebookdata(head); exit(0); default: printf("\\t输入错误!!!\\n"); system("pause"); break; } showmenu1(); } } else if(c==3) exit(0); else { printf("\\t\\t\\t输入错误!!!\\n\\n"); } } return 0; }
运行结果
这里提供的是管理员身份
这里提供游客身份(供选择的功能相对管理员少)
关于“怎么用C语言实现图书管理系统”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注恰卡网行业资讯频道,小编每天都会为大家更新不同的知识点。
本站部分文章来自网络或用户投稿,如无特殊说明或标注,均为本站原创发布。涉及资源下载的,本站旨在共享仅供大家学习与参考,如您想商用请获取官网版权,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。