图书馆管理系统系统设计(图书馆管理系统概要设计)
本文目录一览:
图书馆借阅管理数据库系统的设计
针对图书馆管理系统的需求,设计如下面所示的数据项和数据结构:
表1:书籍基本信住
包括的数据项有:索书号、图书名称、作者、出版社、出版日期、书价、ISBN、备注信息等。
表2:读者信息基本信息
包括的数据项有:读者编号、学号、姓名、性别、年龄、学院、专业、籍贯、读者类别、最大借阅数、已借阅数、可借阅数、有效日期、读者备注等。
表3:借书基本信息
包括的数据项有:索书号、借书日、应还日、续借次数、读者编号等。
表4:还书基本信息
包括的数据项有:索书号、还书日、逾期天数、逾期罚款、续借日、读者编号等。
表4:管理员基本信息:包括的数据项有:管理ID、管理员帐号、管理密码等。
我建议你再根据你设计的图书馆管理的需求,看下还有没有其它字段要添加上去,那样就更好了。
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=0;iMaxbor;i++)误写为for(int i=1;iMaxbor;i++),使循环发生错误。
2.指针使用错误,指针b和r混淆,导致编译错误得到“error C2660: 'retbook' : function does not take 1 parameters”错误报告。
图书馆管理系统设计??
8.某高校图书馆管理信息系统的分析、设计与实施
某高校图书馆藏书200余万册,拥有包括在校学生、教职员工在内的读者2万余名,每天的借阅量近万册。在手工操作方式下,图书的编目和借阅等工作量大、准确性低且不易修改维护,读者借书只能到图书馆手工方式查找书目,不能满足借阅需求。因此,需要建立图书管理信息系统,以实现对读者借阅、图书采购和保管等工作的信息化管理,并实现文献的电子化检索和阅读。
图书馆由馆长负责全面工作,下设办公室、技术部、信息咨询部、文献建设部、流通部、阅览部。各部门的主要功能是:
(1) 办公室:负责本馆的行政和总务工作。
(2) 技术部:负责图书馆计算机系统的开发、维护和多功能电子阅览室、多媒体制作室、视听室的管理。
(3) 信息咨询部:负责国际联机检索、光盘检索、手工检索查新和资源共享等工作。
(4) 文献建设部:负责图书、期刊、电子文献的采购、编目和典藏工作。
(5) 流通部:负责图书借阅流通工作。
(6) 阅览部:负责各个阅览室的管理工作。
图书馆管理系统所要实现主要功能和业务流程如下:
(1) 读者信息管理。读者分为学生读者和教职工读者两类,读者访问系统时将检验读者账号和密码,只有具有合法身份的读者才允许进入系统。读者的信息包括读者类型信息、读者借阅信息、读者预约信息、读者罚款信息等。
(2) 书目查询。读者进入图书管理系统后,可以根据需要检索书名或期刊。检索条件可以是书名、图书编号、作者姓名或关键字等条件,如果查询信息不确切还可以进行模糊查询。
(3) 图书采编。由文献建设部相关人员根据读者需求情况、书籍出版情况等定期进行书籍采购。图书采购入库经过编目等处理后,将其目录存入数据库,提供给读者检所使用。目录信息包括图书编号、图书类别、书名、作者、出版社、定价、出版日期、数量等。
(4) 图书借阅。可办理读者借阅、还书、续借等手续。读者查找到所需图书后,到图书馆办理借阅手续,借阅期限为60天,借阅期满后可续借一次,续借期为30天。办理借阅手续之前要先查询读者所借图书是否超额,如果超额,则不能办理。学生读者最多可借10册,教工读者最多可借15册。读者还书时要先查询是否超期,如果超期则进入罚款程序。
(5) 图书预约。读者检索到需要的图书后,如果该图书均已被借出,则可进行图书预约,当该图书归还后通知预约读者前来办理借阅手续,该图书可为预约读者保留三天,如果读者在三天内未办理借阅手续,则取消预约资格。
(6) 电子读物管理。电子读物管理处理电子读物的阅览、检索、下载等事务。
(7) 系统维护。为图书管理人员提供图书统计信息和读者统计信息,以便于管理人员从宏观上掌握图书馆运行的总体状况。
C语言程序设计 图书馆信息管理系统设计
#includewindows.h
#includestdio.h
#includestring.h
#includestdlib.h
#includeconio.h
struct book{
char number[100];
char tittle[100];
char writer[100];
char publisher[100];
char date[100];
char price[100];
char status[100];
char reader[100];
};
void search_book();
void borrow_book();
void return_book();
void add_book();
void delete_book();
void modify_book();
void scan_book();
int main()
{
int c1=0,c2,c3;
int l,x,z;
while(1)
{
system("color 2C");
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("color 2C");
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)
{
case 1:search_book(); break;
case 2:borrow_book(); break;
case 3:return_book(); break;
case 4:scan_book(); break;
case 5:system("cls"); return 0;
}
}
}
if(c1==2)
{
while(1){
system("color 2C");
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)
{
case 1:add_book(); break;
case 2:delete_book(); break;
case 3:modify_book(); break;
case 4:scan_book(); break;
case 5:system("cls"); return 0;
}
}
}
}
/*查询图书*/
void search_book()
{
FILE*fp;
struct book n;
struct book nn;
int l,r;
char x,z;
fp=fopen("F:\\课程设计\\图书管理系统.txt","rb");
while(1)
{
l=0;
system("cls");
printf("请输入图书名称:");
scanf("%s",n.tittle);
fflush(stdin);
rewind(fp);
while(1)
{
fread(nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle );
if(r==0)
{
l=1;
break;
}
}
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");
}
//添加
void add_book()
{
FILE *fp;
struct book n;
struct book nn;
char x,z;
int l,r;
fp=fopen("F:\\课程设计\\图书管理系统.txt","ab+");
do
{
system("cls");
do
{
l=0;
printf("\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=1;
printf(" 该图书已存在,请输入新的图书信息: \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");
}
//删除图书
void delete_book()
{
FILE *fp,*fp1;
char x,z;
struct book n;
struct book nn;
int l,r;
fp=fopen("F:\\课程设计\\图书管理系统.txt","ab+");
while(1)
{
l=0;
system("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))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
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')
break;
else
{
fp1=fopen("F:\\课程设计\\图书管理系统new.txt","wb");
rewind(fp);
while(1)
{
fread(nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=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))
break;
fwrite(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");
}
//修改图书信息
void modify_book()
{
FILE *fp;
struct book n;
struct book nn;
int l,r;
char x,z;
fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+");
while(1)
{
l=0;
printf("\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))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
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");
}
//借书
void borrow_book()
{
FILE*fp;
struct book n;
struct book nn;
char x,z;
int l,r;
fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+");
while(1)
{
l=0;
system("cls");
printf("\n");
printf("请输入需要借阅的图书名: \n");
fflush(stdin);
scanf("%s",n.tittle);
rewind(fp);
while(1)
{
fread(nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
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");
}
//还书
void return_book()
{
FILE*fp;
struct book n;
struct book nn;
char x,z;
int l,r;
fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+");
while(1)
{
l=0;
system("cls");
printf("\n");
printf("请输入需要借还的图书名: \n");
fflush(stdin);
scanf("%s",n.tittle);
rewind(fp);
while(1)
{
fread(nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
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");
}
//浏览
void scan_book()
{
FILE*fp;
char x,z;
struct book n;
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");
}
}
\\这是我在网上搜索的,你自己修改一下就行了,别说你不会修改.