求图书馆管理系统程序(c语言)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求图书馆管理系统程序(c语言)相关的知识,希望对你有一定的参考价值。
C程序项目-图书管理系统收藏#include"stdio.h"#include"stdlib.h"#include"windows.h"#include"string.h"
/*图书相关信息*/struct bookinf //定义图书相关信息结构体 int num; char bname[20]; char wname[10]; char clanum[14]; char pubcom[10]; char pubtime[10]; float price;;
structmanage //定义管理员相关信息结构体 char manage_name[10]; char password[10];;
/*首页*/void index() //首页打印设置 char input; printf("\n\n\t\t\t*****************************\n"); printf("\t\t\t Paladin图书信息查询管理系统\n"); printf("\t\t\t*****************************\n\n\n"); printf("------------------------------------------------------------------------------\n"); printf("\n\t\t\t书山有路勤为径\n"); printf("\t\t\t\t 学海无涯苦作舟\n"); printf("\n\n\t 总策划:吴昊\n\n"); printf("\t 程式设计:肖书明樊启恒芦丹覃枝霞况轩 (排名不分先后)\n\n"); printf("\t 联系方式:QQ:6828000 or Mail To:ivanleo@sohu.com\n"); printf("\t________________________________________________________________\n"); printf("\t\tCopyrights @ Accp SIT25 Leo Workgroup 2004.8\n"); printf("\t\t\t All RightsReserved\n"); printf("\t\t\t\tVer 1.03\n"); printf("\t<按任意键进入>\n\t"); input=getchar(); //让用户输入一个字符后再进行下一步(以后在本程序中用得很多) system("cls"); //清屏
/*登陆方式*/ void login() void tra_view(); //声明包含的函数 void adm_view(); void byebye(); void about(); void coloregg();
int input; char input_1; do //循环显示登陆选项(当输入的数不为选项数的时候重复循环) system("cls"); printf("\n\n\n\t1.以游客身份进入\n"); printf("\t2.以管理员身份进入\n"); printf("\t3.关于本系统\n"); printf("\t4.退出本系统\n\n\n"); printf("\t请选择服务类别:"); scanf("%d",&input); if(input!=1&&input!=2&&input!=3&&input!=4&&input!=99) //输入数不等于选项的时候打印画面 printf("\n\t输入出错!请重新选择~\n"); printf("\n\t按任意键返回选择页面~\n\t"); input_1=getchar(); input_1=getchar(); system("cls"); if (input==4) byebye(); //如果输入数为4,则执行byebye()函数 while (input!=1&&input!=2&&input!=3&&input!=4&&input!=99);
switch(input) //分支选择 case 1:tra_view(); break; //选1执行游客进入方式 case 2:adm_view(); break; //选2执行管理员进入方式 case 3:about(); break; //选3执行关于界面函数 case 99:coloregg(); break; //选99执行彩蛋函数 /*关于界面*/void about() void login(); char input; //关于界面的打印设置 system("cls"); printf("\n\n\t\t\t\t欢迎使用帮助\n"); printf("\t_______________________________________________________________"); printf("\n\t1.本系统采用模块化设计\n"); printf("\t每一项功能由单独的函数块控制,一个功能块有错不会影响全局\n\n"); printf("\t2.人性化设计\n"); printf("\t相关提示信息丰富,以人为本\n\n"); printf("\t3.功能强大\n\n"); printf("\t 实现了:\n"); printf("\t\t1 图书信息录入\n"); printf("\t\t2 图书信息查询\n"); printf("\t\t3 图书信息修改\n"); printf("\t\t4 图书信息删除\n"); printf("\t\t5 图书信息排序\n"); printf("\t\t6 提供游客和管理员两种登陆方式\n"); printf("\t\t 加以修改可以满足网络的需要\n\n"); printf("\t\t7 管理员的帐号密码可以自我设定,修改\n"); printf("\t\t8 彩蛋~~(进入方法嘛,嘿嘿)\n"); printf("\n\t按任意键返回登陆界面!"); input=getchar(); input=getchar(); login(); //任意键返回登陆界面
/*彩蛋*/void coloregg() //打印界面 char inp; void login(); system("cls"); printf("\n\n\n\t\t一直以为\n\t\t"); inp=getchar(); inp=getchar(); printf("\t\t隐了身别人就找不到我\n\t\t"); inp=getchar(); printf("\t\t可是我错了\n\t\t"); inp=getchar(); printf("\t\t象我这么出众的男人\n\t\t"); inp=getchar(); printf("\t\t不管到哪都是受人瞩目的焦点\n\t\t"); inp=getchar(); printf("\t\t我那忧郁的眼神\n\t\t"); inp=getchar(); printf("\t\t唏嘘的胡渣子\n\t\t"); inp=getchar(); printf("\t\t还有那神乎其技的AK扫射\n\t\t"); inp=getchar(); printf("\t\t以及那杯82年的马爹利和发哥给的牙签\n\t\t"); inp=getchar(); printf("\t\t无不深深出卖了我~~~\n\t\t"); inp=getchar(); printf("\t\t\t\t--------狂人\n\t\t"); inp=getchar();
login();
/*离开界面*/void byebye() //离开界面 char input; system("cls"); printf("\n\n\n\n\n\t\t\t路漫漫其修远兮"); printf("\n\n\n\n\t\t\t\t\t吾将上下而求索"); printf("\n\n\t________________________________________________________________"); printf("\n\n\n\t\t*感谢您的使用*\n\n\t\t"); printf("按任意键退出本系统\n\t\t"); input=getchar(); input=getchar(); printf("\n\t\t"); exit(0); //exit()函数跳出整个程序
/*删除所有相关信息*/void delall() //管理员选项中的初始化函数 void login(); void adm_servelist(); int inp; char input; do //如果输入的不是界面提供的选项值,则重复显示输入界面 system("cls"); printf("\n\n\t----------!!警告!!----------\n"); printf("\n\t一旦选择了全部初始化将清除全部数据!包括图书信息和管理员信息!\n"); printf("\n\t初始化完毕后返回登陆界面\n"); printf("\n\n\t你确定要初始化吗\n"); printf("\n\n\t1.是的~我要初始化\t2.不要~让我再想想\n"); printf("\n\t请输入服务选项:"); scanf("%d",&inp); switch (inp) case 1: //如果输入为1则删除book.dat和password.dat文件 remove("book.dat"); remove("password.dat"); printf("\n\n\t初始化完毕!\n\t所有数据全部清空!\n\t按任意键返回登陆界面!"); input=getchar(); input=getchar(); login(); //并返回登陆界面 break; case 2: //选2则返回管理员登陆界面 adm_servelist(); break; default: //否则打印如下字样并重复循环 printf("\n\n\t对不起~没有这项服务!\n\t按任意键重新选择\n\t"); input=getchar(); input=getchar(); break; while (inp!=1&&inp!=2&&inp!=3);
/*游客登陆方式*/void tra_view() void tra_book_view(); void tra_book_search(); void login();
int inp; char input;
do //同以往的dowhile一样,用来保证用户输入的数能够被执行 system("cls"); printf("\n\n\t------------欢迎光临ACCP图书馆------------"); printf("\n\n\n\t1.图书信息浏览\n"); printf("\t2.查询指定图书\n"); printf("\t3.退出\n"); printf("\n\n\t请选择服务类别:"); scanf("%d",&inp); if (inp!=1&&inp!=2&&inp!=3) printf("\n\t没有这项服务~\n"); printf("\t按任意键重新选择"); input=getchar(); input=getchar(); while (inp!=1&&inp!=2&&inp!=3);
switch(inp) //分支选择 case 1: tra_book_view(); break; //选1则执行游客浏览 case 2: tra_book_search(); break; //选2则执行游查询 case 3: login(); break; //选3返回登陆界面
/*游客浏览方式*/void tra_book_view() void tra_view(); void tra_book_view();
intinp,i=0,n=0; FILE *fp; char input; struct bookinf bookview[100]; if((fp=fopen("book.dat","rb"))==NULL) //判断图书信息文件是否存在,不存在则显示如下字样 system("cls"); printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n"); printf("\n\t<按任意键返回管理菜单>\n\t"); input=getchar(); input=getchar(); tra_view(); //并返回游客进入画面 else //存在的话则循环读取文件中的信息直到文件指针到达文件尾部 do fread(&bookview[i],sizeof(struct bookinf),1,fp); i=i+1; while (!feof(fp)); //这一段代码以后也会经常用到 fclose(fp); //关闭文件指针 do system("cls"); //显示读取数据的第一条,条数用变量n控制 printf("\n\t--------共有%d条记录--------",i-1); printf("\n\n\t编号: %d\n",bookview[n].num); printf("\n\t书名: %s\n",bookview[n].bname); printf("\n\t作者名: %s\n",bookview[n].wname); printf("\n\t分类号: %s\n",bookview[n].clanum); printf("\n\t出版单位: %s\n",bookview[n].pubcom); printf("\n\t出版时间: %s\n",bookview[n].pubtime); printf("\n\t价格: %f\n",bookview[n].price);
printf("\n\n\t1.上一页\t2.下一页\t3.回目录\n"); printf("\n\t请选择:"); scanf("%d",&inp); switch (inp) case 1: //如果选择了上一页 if (n==0) //如果n到首页则输出以下字样 printf("\n\t已到达首页\n\t按任意键重新选择"); input=getchar(); input=getchar(); else //否则就让n自减1跳出选择重复循环 n=n-1; break; case 2: //如果选择了下一页 if (n==i-2) //如果n到达最尾页 printf("\n\t已到达最末页\n\t按任意键重新选择"); input=getchar(); input=getchar(); else //否则就让n自加1跳出选择重复循环 n=n+1; break; case 3: //选择3的话回到游客登陆界面 tra_view(); break; default: //没有这项选择时的提示 printf("\n\t没有这项服务\n\t按任意键重新选择"); input=getchar(); input=getchar(); break; while (inp!=3);
/*游客查询方式*/void tra_book_search() void tra_view(); void tra_id_search(); void tra_wr_search(); void tra_bn_search();
char input; FILE *fp; int inp; if((fp=fopen("book.dat","rb"))==NULL) //判断图书信息是否存在 system("cls"); //不存在则打印的界面 printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n"); printf("\n\t<按任意键返回管理菜单>\n\t"); input=getchar(); input=getchar(); tra_view(); else do //同以前一样用dowhile来重复显示 system("cls"); printf("\n\n\n\t1.按图书编号查询\n"); printf("\n\t2.按图书作者查询\n"); printf("\n\t3.按图书名查询\n"); printf("\n\t4.回到主菜单\n"); printf("\n\n\t请选择查询类别:"); 参考技术A
#include <malloc.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define len sizeof(Book)
typedef struct Book
char no[8]; //8位书号
char name[20]; //书名
char price[8]; //定价
struct Book *next;
Book;
Book *L;
int b1,n1;
void CreateList()
int i,n;
Book *p,*q;
if(!b1)
L=(Book*)malloc(len);
L->next=NULL; //生成只包含头结点的空链表
b1=1;
n1=0;
p=L;
printf("要输入的图书数为:");
scanf("%d",&n);
for(i=1;i<=n;i++) //通过n控制输入图书数
q=(Book*)malloc(len);
printf("请输入第%d个图书信息:\\n",i);
printf("书号:");
scanf("%s",q->no);
printf("书名:");
scanf("%s",q->name);
printf("定价:");
scanf("%s",q->price);
q->next=L->next;L->next=q;
n1=n1+1;
else
printf("已输入完毕,请插入信息!"); //每次执行程序只能生成一次链表,之后只能进行插入、删除操作
getch();
void FindBook()
char ch[20];
int s2=0;
Book *p;
p=L->next;
printf("请输入图书名:");
scanf("%s",ch);
while(p)
if(strcmp(p->name,ch)==0) //判断和查询图书名是否相等
printf("图书名:%-12.9s 书号:%-12.10s 定价:%s",p->name,p->no,p->price); //控制字符串输出的长度、格式
s2=1;
getch();
p=p->next;
if(!s2)
printf("没有该图书信息!");
getch();
void Getlocation()
Book *p ;
int i,j;
p=L->next; //初始化,p指向第一个结点
j=1;// j为计数器
printf("请输入位置:");
scanf("%d",&i);
while(p && j<i) p=p->next; ++j;
if(!p||j>i) printf("ERROR"); //i大于表长或小于1
printf("图书名:%-12.9s 书号:%-12.10s 定价:%s",p->name,p->no,p->price);
getch();
void ListInsert()
int j,i;
Book *p,*s;
p=L;j=0;
printf("请输入位置:");
scanf("%d",&i);
while (p&&j<i-1) p=p->next;++j;
if(!p||j>i-1) printf("error");
s=(Book*)malloc(len); //生成新结点
printf("请输入新的图书信息:\\n");
printf("书号:");
scanf("%s",s->no);
printf("书名:");
scanf("%s",s->name);
printf("定价:");
scanf("%d",s->price);
s->next=p->next; p->next=s;
printf("插入成功!");
getch();
void ListDelete()
int i,n;
Book *p,*q;
p=L;
printf("请输入删除图书位置");
scanf("%d",&n);
if(n>n1||n<=0)
printf("输入错误!"); //容错处理
getch();
else
for(i=1;i<n;i++)
p=p->next ;
q=p->next; p->next=q->next;
free(q); //删除指定位置的学生信息
n1--;
printf("已将原表中第%d个 图书信息删除!",n);
getch();
void ListLength()
Book *p;
int i;
p=L->next;
i=0;
while(p)i++;
p=p->next ;
printf("图书个数为:%d",i);
getch();
void main()
char c;
while(1)
system("cls");
printf("**************************** 欢迎使用图书信息查询系统!*************************\\n");//菜单选项
printf("\\n");
printf("(1)输入图书信息;\\n");
printf("(2)根据图书名进行查找;\\n");
printf("(3)根据指定位置进行查找;\\n");
printf("(4)插入图书信息到指定位置;\\n");
printf("(5)删除指定位置的图书记录;\\n");
printf("(6)统计表中图书数;\\n");
printf("\\n");
c=getch();
switch(c)
case '1':CreateList();break;
case '2':if(b1)FindBook(); //通过b1的值,控制先执行(1)的操作,即生成链表
else
printf("请先输入图书信息!");
getch();;break;
case '3':if(b1)Getlocation(); //通过b1的值,控制先执行(1)的操作,即生成链表
else
printf("请先输入图书信息!");
getch();;break;
case'4':if(b1)ListInsert(); //通过b1的值,控制先执行(1)的操作,即生成链表
else
printf("请先输入图书信息!");
getch();;break;
case '5':if(b1)ListDelete(); //通过b1的值,控制先执行(1)的操作,即生成链表
else
printf("请先输入图书信息!");
getch();;break;
case '6':if(b1)ListLength(); //通过b1的值,控制先执行(1)的操作,即生成链表
else
printf("请先输入图书信息!");
getch();;break;
default :printf("输入错误,请重新选择!");
本回答被提问者采纳
西电C语言程序设计实验之图书馆管理系统
简单文件数据库-模拟图书馆管理系统
题目简介
涉及知识点:文件读写、内存管理、结构体定义、基本数据结构、高级格式化输入输出
要求:编写一个程序模拟图书管理系统。
用户分为管理员和读者两类,分别显示不同文本格式菜单,通过菜单项对应数字进行选择。
读者菜单包括借书、还书、查询等功能。
管理员菜单包括图书和读者信息录入、修改和删除。
图书信息至少应包括:编号、书名、数量。
读者信息至少应包括:编号、姓名、所借图书。
可根据图书名称或编号进行图书信息查询,可查询某本书现在被哪些读者借走。
命令行参数如下:
Libsim –a(-u) xxxx
第一个参数为可执行程序名称;
第二个参数为用户身份,-a表示管理员,-u表示读者;
第三个参数为用户名
程序解析
几个函数说明
1.展示读者和图书信息
void ShowBook(char* bname);
void ShowReader(char* rname);
2.图书借阅和归还
void BookLend(char *rname, char *bname);
void BookReturn(char *rname, char* bname);
3.图书和读者信息增删
void AddBook(char* bname);
void DelBook(char* bname);
void AddReader(char* rname, char* reroot);
void DelReader(char* rname);
4.读取读者,管理员和图书信息
void ReadBooksInfo();
void ReadReadersInfo();
void ReadAdministratorsInfo();
5.更新读者,管理员和图书信息
void UpdateBorrowerList();
void UpdateBorrowedBookList();
void UpdateBookleft();
void UpdateBooks();
void UpdateReaders();
void UpdateAdministrators();
void UpdateReroots();
void UpdateAdroots();
文件数据库信息编写规则
每个文件以end作为结尾
而null表示该书或读者已经被删除
books.txt:
每行一本书,第一行的书编号为1
readers.txt:
每行一个读者姓名,第一行的读者编号为1
administrators.txt:
每行一个管理员姓名,第管理员一行的读者编号为1
books'borrowers.txt:
每行若干个人名,第一行对应编号为1的书的借阅人
borrowers'books.txt:
每行若干个书名,第一行对应编号为1的人的在借书
reroots.txt:
每行一个密码,第一行对应编号为1的读者的密码
adroots.txt
每行一个密码,第一行对应编号为1的管理员的密码
后记
完整源码详见我的github项目:xdu-exp-c。
以上是关于求图书馆管理系统程序(c语言)的主要内容,如果未能解决你的问题,请参考以下文章