借书的限制:教师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语言编程图书管理系统?
图书管理系统是运行于Windows系统下的应用软件,主要用于对图书馆中的图书信息进行增、删、改、查等操作,并且还可对使用该系统的用户进行登录名和密码的管理等。系统给用户提供了一个简单的人机界面,使用户可以根据提示输入操作项,调用系统提供的管理功能。
所需功能类似于学生成绩管理系统,界面可参考附录C。用户分为管理员和一般人员两大类。
功能需求描述如下。
①用户登录:根据用户输入的用户名和密码判断是否允许该用户使用本系统,并且当用户登录后根据用户权限判断用户可以使用哪些功能。学生只有浏览等权限而不能进行实质性改动。
②提供系统主控平台:系统主控平台也应根据用户权限不同而有所区别,只列出在用户权限范围内的功能供用户选择。系统主控平台包括输入功能选项、调用相应程序两大需求。教师和学生对应的系统主控平台是不同的。所能进行的操作也不相同。
③创建图书信息文件:用户根据提示输入图书编号、图书分类号、书名、作者姓名、出版社名、出版年月、定价、存库数量和借阅和上架情况等等信息存储在系统磁盘的文件中。以便进行管理、查找和备份。
④增加图书信息:可在原有图书信息文件的基础上增加新的图书信息记录并继续保存至磁盘,并且将增加后的文件存储状况显示给用户。
⑤删除图书信息:提示用户输入要进行删除操作的图书编号,如果在文件中有该信息存在,则将该书号所对应的记录删除。并选择是否继续进行删除操作。
⑥修改图书信息:提示用户输入要进行修改操作的书号,如果在文件中有该息存在,则将提示用户输入该书号对应的要修改的选项,结果存储于文件。该部分需求也需要提示用户选择是否继续进行修改操作。
⑦查询图书信息:提供按书号或书名等查询。在该功能中,也需提示用户是否需要继续查再继续查找,则返回主界面。
⑧一般用户查询个人的借阅情况并按日期进行排序:。
⑨管理员和一般用户管理:管理员对用户的管理也需要进行用户的创建、增加、删除、浏览。管理员创建的用户存储在名为yonghu的磁盘文件中,每当有用户登录系统时,会根据该文件中的用户名和密码进行核实判断,用户才能够顺利登录。管理员还具有用户的功能。增加的用户及密码、权限等也被继续存储在yonghu文件中。当某些用一用该系统时,还可以进行删除操作,并且管理员具有修改用户权限的功能,一般用户和管理员对于系统的权限是不一样的。
c语言图书管理系统程序设计
#include#include#include#include#includestructbook{charnumber[100]chartittle[100]charwriter[100]charpublisher[100]chardate[100]charprice[100]charstatus[100]charreader[100]}voidsearch_book()voidborrow_book()voidreturn_book()voidadd_book()voiddelete_book()voidmodify_book()voidscan_book()intmain(){intc1=0,c2,c3intl,x,zwhile(1){system(”color2C”)printf(”\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n”)printf(”\t\t\t|*-*-*-图书管理系统*-*-*|\n”)printf(”\t\t\t*[1]用户登录*\n”)printf(”\t\t\t*[2]管理员登录*\n”)printf(”\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n”)printf(”\n”)printf(”请选择你的操作:”)scanf(”%d”,&c1)system(”cls”)break}if(c1==1){while(1){system(”color2C”)printf(”\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n”)printf(”\t\t\t|*-*-*-图书管理系统*-*-*|\n”)printf(”\t\t\t*[1]查询图书*\n”)printf(”\t\t\t|[2]借阅图书|\n”)printf(”\t\t\t*[3]借还图书*\n”)printf(”\t\t\t*[4]浏览图书信息*\n”)printf(”\t\t\t|[5]退出图书管理系统|\n”)printf(”\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n”)printf(”\n”)printf(”请选择你的操作:”)scanf(”%d”,&c2)getchar()switch(c2){case1:search_book()breakcase2:borrow_book()breakcase3:return_book()breakcase4:scan_book()breakcase5:system(”cls”)return0}}}if(c1==2){while(1){system(”color2C”)printf(”\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n”)printf(”\t\t\t|*-*-*-图书管理系统*-*-*|\n”)printf(”\t\t\t|[1]添加图书|\n”)printf(”\t\t\t*[2]删减图书*\n”)printf(”\t\t\t|[3]修改图书信息|\n”)printf(”\t\t\t*[4]浏览图书信息*\n”)printf(”\t\t\t|[5]退出图书管理系统|\n”)printf(”\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n”)printf(”\n”)printf(”请选择你的操作:”)scanf(”%d”,&c3)getchar()switch(c3){case1:add_book()breakcase2:delete_book()breakcase3:modify_book()breakcase4:scan_book()breakcase5:system(”cls”)return0}}}}/*查询图书*/voidsearch_book(){FILE*fpstructbooknstructbooknnintl,rcharx,zfp=fopen(”F:\\课程设计\\图书管理系统.txt”,”rb”)while(1){l=0system(”cls”)printf(”请输入图书名称:”)scanf(”%s”,n.tittle)fflush(stdin)rewind(fp)while(1){fread(&nn,sizeof(nn),1,fp)if(feof(fp))breakr=strcmp(n.tittle,nn.tittle)if(r==0){l=1break}}if(l==0){printf(”没有要查询的图书!!!\n\n”)}else{printf(”查询的图书为:”)printf(”\n”)printf(”****************************************\n”)printf(”编号书名作者出版社出版时间价格状态借阅者\n”)printf(”\n”)printf(”%s%s%s%s%s%s%s”,nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader)printf(”\n\n\n”)}printf(”是否继续查询图书?[是(y)/否(n)]?\n\n”)do{x=getche()}while(x!=’n’&&x!=’y’)if(x==’n’)break}fclose(fp)system(”cls”)}//添加voidadd_book(){FILE*fpstructbooknstructbooknncharx,zintl,rfp=fopen(”F:\\课程设计\\图书管理系统.txt”,”ab+”)do{system(”cls”)do{l=0printf(”\n”)printf(”编号书名作者出版社出版时间价格状态借阅者\n”)fflush(stdin)scanf(”%s%s%s%s%s%s%s%s”,n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader)system(”cls”)rewind(fp)while(!feof(fp)){fread(&nn,sizeof(nn),1,fp)r=strcmp(n.tittle,nn.tittle)if(r==0){l=1printf(”该图书已存在,请输入新的图书信息:\n\n”)break}}}while(l)fwrite(&n,sizeof(n),1,fp)printf(”\n”)printf(”是否继续输入新的图书信息[y/n]\n\n”)do{x=getche()}while(x!=’n’&&x!=’y’)}while(x==’y’)fclose(fp)system(”cls”)}//删除图书voiddelete_book(){FILE*fp,*fp1charx,zstructbooknstructbooknnintl,rfp=fopen(”F:\\课程设计\\图书管理系统.txt”,”ab+”)while(1){l=0system(”cls”)printf(”\n”)printf(”请输入需要删除的图书名:\n\n”)fflush(stdin)scanf(”%s”,&n.tittle)rewind(fp)while(1){fread(&nn,sizeof(nn),1,fp)if(feof(fp))breakr=strcmp(n.tittle,nn.tittle)if(r==0){l=1break}}if(l==0){printf(”\n”)printf(”对不起,未找到该图书\n”)}else{printf(”\n”)printf(”****************************************\n”)printf(”编号书名作者出版社出版时间价格状态借阅者\n”)printf(”\n”)printf(”%s%s%s%s%s%s%s%s”,nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader)printf(”\n”)printf(”确认删除图书信息?[是(y)/否(n)]\n\n”)do{z=getche()}while(z!=’n’&&z!=’y’)if(z==’n’)breakelse{fp1=fopen(”F:\\课程设计\\图书管理系统new.txt”,”wb”)rewind(fp)while(1){fread(&nn,sizeof(nn),1,fp)if(feof(fp))breakr=strcmp(n.tittle,nn.tittle)if(r!=0)fwrite(&nn,sizeof(nn),1,fp1)}fclose(fp)fclose(fp1)fp=fopen(”F:\\课程设计\\图书管理系统.txt”,”wb”)fp1=fopen(”F:\\课程设计\\图书管理系统new.txt”,”rb”)while(1){fread(&nn,sizeof(nn),1,fp1)if(feof(fp1))breakfwrite(&nn,sizeof(nn),1,fp)}fclose(fp)fclose(fp1)}}printf(”\n”)printf(”是否继续删除图书信息?[是(y)/否(n)]\n”)do{x=getche()}while(x!=’n’&&x!=’y’)if(x==’n’)break}fclose(fp)system(”cls”)}//修改图书信息voidmodify_book(){FILE*fpstructbooknstructbooknnintl,rcharx,zfp=fopen(”F:\\课程设计\\图书管理系统.txt”,”rb+”)while(1){l=0printf(”\n”)system(”cls”)printf(”请输入需要修改的图书名:\n\n”)fflush(stdin)scanf(”%s”,&n.tittle)system(”cls”)rewind(fp)while(1){fread(&nn,sizeof(nn),1,fp)if(feof(fp))breakr=strcmp(n.tittle,nn.tittle)if(r==0){l=1break}}if(l==0){printf(”\n”)printf(”对不起,未找到该图书信息\n\n”)}else{printf(”\n”)printf(”****************************************\n”)printf(”编号书名作者出版社出版时间价格状态借阅者\n”)printf(”\n”)printf(”%s%s%s%s%s%s%s%s”,nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader)printf(”请依次修改图书信息\n\n\n”)fflush(stdin)scanf(”%s%s%s%s%s%s%s%s”,n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader)fseek(fp,sizeof(nn),1)fwrite(&n,sizeof(nn),1,fp)}printf(”\n”)printf(”是否继续修改用户信息[y/n]?\n\n”)do{x=getch()}while(x!=’n’&&x!=’y’)if(x==’n’)break}fclose(fp)system(”cls”)}//借书voidborrow_book(){FILE*fpstructbooknstructbooknncharx,zintl,rfp=fopen(”F:\\课程设计\\图书管理系统.txt”,”rb+”)while(1){l=0system(”cls”)printf(”\n”)printf(”请输入需要借阅的图书名:\n”)fflush(stdin)scanf(”%s”,&n.tittle)rewind(fp)while(1){fread(&nn,sizeof(nn),1,fp)if(feof(fp))breakr=strcmp(n.tittle,nn.tittle)if(r==0){l=1break}}if(l==0){printf(”\n”)printf(”对不起,未找到该图书。\n”)}else{printf(”\n”)printf(”****************************************\n”)printf(”编号书名作者出版社出版时间价格状态借阅者\n”)printf(”\n”)printf(”%s%s%s%s%s%s%s%s”,nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader)printf(”\n”)fflush(stdin)printf(”请输入图书信息并修改在库状态及借阅者信息”)printf(”****************************************\n”)printf(”编号书名作者出版社出版时间价格状态借阅者\n”)printf(”\n”)scanf(”%s%s%s%s%s%s%s%s”,n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader)fseek(fp,sizeof(nn),1)fwrite(&n,sizeof(nn),1,fp)}printf(”\n”)printf(”是否继续借书?[是(y)/否(n)]\n\n”)do{x=getch()}while(x!=’n’&&x!=’y’)if(x==’n’)break}fclose(fp)system(”cls”)}//还书voidreturn_book(){FILE*fpstructbooknstructbooknncharx,zintl,rfp=fopen(”F:\\课程设计\\图书管理系统.txt”,”rb+”)while(1){l=0system(”cls”)printf(”\n”)printf(”请输入需要借还的图书名:\n”)fflush(stdin)scanf(”%s”,&n.tittle)rewind(fp)while(1){fread(&nn,sizeof(nn),1,fp)if(feof(fp))breakr=strcmp(n.tittle,nn.tittle)if(r==0){l=1break}}if(l==0){printf(”\n”)printf(”对不起,未找到该图书。\n”)}else{printf(”\n”)printf(”****************************************\n”)printf(”编号书名作者出版社出版时间价格状态借阅者\n”)printf(”\n”)printf(”%s%s%s%s%s%s%s%s”,nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader)printf(”\n”)fflush(stdin)printf(”请输入图书信息并修改在库状态\n\n”)printf(”****************************************\n”)printf(”编号书名作者出版社出版时间价格状态借阅者\n”)printf(”\n”)scanf(”%s%s%s%s%s%s%s%s”,n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader)fseek(fp,-(int)sizeof(nn),1)fwrite(&n,sizeof(nn),1,fp)}printf(”\n”)printf(”是否继续还书?[是(y)/否(n)]\n”)do{x=getche()}while(x!=’n’&&x!=’y’)if(x==’n’)break}fclose(fp)system(”cls”)}//浏览voidscan_book(){FILE*fpcharx,zstructbooknfp=fopen(”F:\\课程设计\\图书管理系统.txt”,”rb”)rewind(fp)system(”cls”)while(1){fread(&n,sizeof(n),1,fp)if(feof(fp))breakelse{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”)}}
c语言链表实现图书管理系统
一 程序设计说明书
【设计题目】 图书馆借阅管理
【问题描述】图书馆,适合用C++面向对象的功能来描述。图书馆管理系统分为借书、还书、图书管理和读者服务等四个部分。设计一个读者类Reader,记录每个读者基本信息;读者库类Rdatabase,记录所有读者信息;图书类Book, 记录每本书的基本信息;图书库类Bdatabase, 记录所有图书信息。
【基本要求】
1读者库类RDatabase中,其构造函数中,将read.txt文件中所有读入读者记录rede[]中。处理完毕,在析构函数中将read[]中的所有未删记录写入到read.txt中。
2图书库类BDatabase中,其构造函数中,将book.txt文件中所有读入图书记录book[]中。处理完毕,在析构函数中将book[]中的所有未删记录写入到book.txt中。
3 利用构造函数完成读者和图书数据初始化,完成内存分配。程序结束前,析构函数完成所申请的堆内存空间。
4 编写主函数,对所编写的矩阵类进行全面测试。要求用户界面采用菜单方式。测试中需要读者和图书数据通过I/O流从磁盘文件读入,同时显示在屏幕上。得到的数据通过I/O流写入磁盘文件保存,同时显示在屏幕上。
5 源程序中要有充分的注释,报告中要有详细的流程图和文字材料。
【类的设计】
该程序包含了四个类,如下:
1.Reader类,有读者的基本管理功能,具有以下私有数据:
int tag//删除标记 1:已删;0:未删
int no//读者编号
char name[10]//读者姓名
int borbook[Maxbor]//所借图书
2.读者库类Rdatabase, 具有以下私有数据:
int top//读者记录指针
Reader read[Maxr]//读者记录
3.图书库类Book,有一本图书的基本功能,有以下私有数据:
int tag//删除标记 1:已删;0:未删
int no//图书编号
char name[20]//书名
int onshelf//是否在架 1在架 0已借
4.图书库类BDatabase,有以下私有数据:
int top//图书记录指针
Book book[Maxb]//图书记录
【特殊函数的设计说明】
构造函数
1.Reader类中构造函数Reader(),初始化函数;
2.读者库类RDatabase中,其构造函数Rdatabase(),将read.txt文件中所有读入读者记录rede[]中。
3.Book类中构造函数Book(),初始化函数;
4.图书库类BDatabase中,其构造函数中,将book.txt文件中所有读入图书记录book[]中。
拷贝构造函数
Reader类中的拷贝构造函数将getname()的返回值读者姓名拷贝到setname()中,Book类中的拷贝构造函数将getname()函数的返回值图书名拷贝到图书名设置函数setname()中。
析构函数
1.读者库类RDatabase中,其析构函数~Rdatabase(),将read[]中的所有未删记录写入到read.txt中;
2.图书库类BDatabase中,其析构函数~Bdatabase(),将book[]中的所有未删记录写入到book.txt中。
运算符重载
重载了“=”,当比较读者编号和图书编号时,重载;重载位运算符“〈〈”和“〉〉”等。
【主要函数算法流程图】
【程序的使用方法】
1.进入操作页面,按提示操作;
2.首先,新增图书和读者信息,之后就可以对以存在的信息进行操作;
3.操作当中,可以随时增加,更改和删除图书或读者信息;
4.当选择退出时,进行清屏。
二 程序上机调试报告
【语法错误及其排除】
1.在敲程序时,有很多拼写错误,例好多处把Readdata()误打Readdate();结束的分号,在不同的输入法状态下输入,这些小错误刚开始很难发现,不过有了经验,就很容易了。
2.创建新的构造函数时,使用出现了错误。重载构造函数要注意函数的访问权限,结果就不会出现错误。
【算法错误及其排除】
1.读者类中借书操作函数中,采用循环语句时判断读者已借图书量时for(int i=0i<Maxbori++)误写为for(int i=1i<Maxbori++),使循环发生错误。
2.指针使用错误,指针b和r混淆,导致编译错误得到“error C2660: ’retbook’ : function does not take 1 parameters”错误报告。
#include <dos.h>#include <bios.h>#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <math.h>#define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define SPACE 0x3920 #define ESC 0x011b #define ENTER 0x1c0d #define Backspace 0xe08 #define ALT_B 12288 #define ALT_M 12800 #define ALT_H 8960 int key; int textx,textystruct menustruct { char name[10]char str[10][20]int n}ml[3]typedef struct BookList { char num[20] char name[20] int pricechar person[20] int yes struct BookList *next}Book 希望你能采纳~~
以上就是关于C语言图书管理信息系统全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!