图书管理系统

控制台界面的图书管理系统:

程序分为两块:管理员操作(收录图书、删除图书等)和会员操作(注册、借书、还书等);

2019.12.16更新:上传了程序文件,工程可直接用DEV-CPP打开。

下载地址://download.csdn.net/download/u013053268/12034863

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

1、管理员操作界面

 

2、会员操作界面:

 

global.h头文件:(程序中只使用了一个编写的头文件,在这里存放了所有的接口函数以及需要使用到的头文件,还有结构体的定义)

 

#include "iostream"
#include "string"
#include "fstream"
#include "conio.h"			//getch();
#include "algorithm"		//sort();
using namespace std;

#define Max_BookNum 10240			//最大存书数目
#define Max_MemberNum 10240			//最大会员数目

typedef enum{//图书借阅状态
	Borrowed=1,				//已被借阅
	available=0				//当前可借
}Book_Status;

typedef struct{//图书信息
	char name[20];			//书名
	char author[20];		//作者
	string isbn;			//图书编号
	string price;			//价格
	string pub;				//出版社
	string pubtime;			//出版时间
	string addtime;			//收录日期
	string Class;			//分类号
	Book_Status Book_sta;	//借阅状态,初始化为可借
}Book_Message;

typedef struct{//借阅人信息
	string name;		//姓名
	string sex;				//性别
	string number;			//学号
	char login[20];			//登录号 以A1001开始
	char code[20];			//登录密码
	Book_Message Borrow_Book[10];		//最大可借书本数目:10本
	int BorBook_Cnt;		//借书数量
}Member_Message;


void Show_WelMenu();	//Welcome菜单
void Book_InfoInput();	//图书信息录入
void Book_InfoShow(Book_Message *Book_Info);	//输出图书信息
void Book_Search();		//搜索书本		0,按书名;1,按作者
void Book_Delete();		//删除图书信息
void Book_InfoChange();	//修改图书信息
void Book_Sort();		//图书排序	
void Book_RecordSave();	//图书信息保存	
int  Book_RecordLoad();	//读档


void Admin_Login();			//管理员登录
void Member_WelMenu();		//会员菜单界面
void Book_WelMenu();		//管理员菜单界面

void Member_Login();		//会员登录
void Member_Reg();		//会员注册
void Member_Bor();		//借书手续
void Member_Ret();		//还书
void Member_Search();	//会员资料查询	0,按姓名;1,按学号
void Member_Delete();	//会员资料注销
void Member_RecordSave();//会员信息保存
int  Member_RecordLoad();//会员信息读档 
void Member_InfoChange();


//void Member_BookMsgSave();
//int	 Member_BookMsgLoad();
void Member_MsgShow(Member_Message *Member_Msg);//信息显示
void Member_CodeAdjust();//会员修改密码


主程序:main.c文件:

 

 

#include "global.h"
int Book_Record=0;					
int Member_Record=0;
Book_Message Book_List[Max_BookNum];			//图书登记表
Member_Message Member_List[Max_MemberNum];		//会员登记表

int main()
{
	char key[2];
	while(1){
		Show_WelMenu();
		int cmd;
		cin>>cmd;
		if(!cmd)
			Admin_Login();			//进入管理员登录界面
		else
			Member_Login();			//进入会员登录界面
	
		cout<<"\t\t\t\t是否退出图书管理系统?\ty/n\n";
		cin>>key;
		if(strcmp(key,"y")==0)
			break;
	}
	cout<<"系统即将退出"<<endl;
	getch();
	return 0;
}

 

 

以下分别是各个功能模块的函数实现:

1、输出界面(选择登录界面)

 

void Show_WelMenu()
{
	system("cls");
	cout<<"\t\t\t\t欢迎使用图书管理系统"<<endl<<endl;
	cout<<"\t\t\t\t0:管理员登录"<<endl;
	cout<<"\t\t\t\t1:会员登录"<<endl;
}

 

 

2、管理员登录程序(这里选择了固定密码登录,Init_Code就是初始密码。当然也可以自行修改密码)

 

void Admin_Login()
{
	short count=0;
	char code[20];
	char Init_Code[10]="0";
	cout<<"请输入管理员密码:"<<endl;
	while(1){
		cin>>code;
		if(strcmp(code,Init_Code)==0){
			break;
		}
		else{
			cout<<"密码错误请重新输入"<<endl;
			count++;
			if(count>3){
				cout<<"密码错误超过三次,程序即将退出"<<endl;
				break;
			}
		}
	}
	Book_WelMenu();			//enter Admin Menu
}

 

 

3、会员登录程序(使用账户密码登录,若无账号,可自行注册)

 

void Member_Login()
{	
	Book_Record = 0;
	Member_Record = 0;
	Book_Record = Book_RecordLoad();
	Member_Record = Member_RecordLoad();		//从文件读入当前注册表
	char code[20],login[20],Req[2];
	bool Login_Sta = false;
	while(1){	//登录程序,登录成功后退出
		if(Login_Sta)  break;
		if((Member_Record==0)){
			cout << "\t\t\t\t用户库为空,请先注册" << endl;
			cout << "\t\t\t\t按任意键注册";
			getch();
			system("cls");
			Member_Reg();	
		}
		else{
			cout << "\t\t\t\t请输入会员登录号:" << endl;
			cin>>login;
			for(Mem_Point=0; Mem_Point<Member_Record; Mem_Point++){
				if((strcmp(login,Member_List[Mem_Point].login) == 0)){
					cout << "\t\t\t\t请输入密码:" << endl;
					cin >> code;
					while(strcmp(code, Member_List[Mem_Point].code) != 0){
							cout << "密码错误,请重新输入" << endl;
							cin >> code;
					}
					Login_Sta = true;
					cout << "\t\t\t\t登录成功,按任意键继续";
					break;
				}
			}
			if(Mem_Point >= Member_Record){
				cout << "\t\t\t该用户未注册,不能使用图书管理系统" << endl;
				cout << "\t\t\t\t是否现在注册(Y/N)" << endl;
				cin >> Req;
				if((strcmp(Req,"y") == 0) || (strcmp(Req,"Y") == 0))
					Member_Reg();
			}
		}
	}
	getch();
	system("cls");
	Member_WelMenu();
	getch();
}

 

 

4、文件操作(读入与写入,这里只贴出会员信息部分的文件操作,图书收录的文件操作类似)

 

/*导出会员注册表到文件*/
void Member_RecordSave()	
{
	ofstream outfile;
	outfile.open("E:\\Course\\002\\Member_Info.txt",ios::ate|ios::out);	//若有文件,先清空,再写入
	for(int i=0;i<Member_Record;i++){
		outfile << Member_List[i].name	<<" " << Member_List[i].sex  <<" " << Member_List[i].number <<" "
				<< Member_List[i].login <<" " << Member_List[i].code << endl;
	}
	outfile.close();
}

/*从文件导入会员注册表*/
int Member_RecordLoad()
{
	int Member_FileLoad=0;
	ifstream infile;
	infile.open("E:\\Course\\002\\Member_Info.txt",ios::in);
	string n,s,num;
	char l[20],c[20];
	while(1){
		infile >> n >> s >> num >> l >> c;		//从文件导入信息,并注册会员信息
		Member_Add(n,s,num,l,c);
		if(infile.eof() != 0)break;
		Member_FileLoad++;
	}
	infile.close();
	return Member_FileLoad;
}


5、会员注册程序(先扫描注册表,若已被注册返回失败。注册就是在文件中添加会员信息)

 

 

//内部函数
void Member_Add(string n,string s,string num,char* l,char* c)
{
	Member_List[Member_Record].name		= n;
	Member_List[Member_Record].sex		=s;
	Member_List[Member_Record].number	=num;
	strcpy(Member_List[Member_Record].login,(const char*)l);
	strcpy(Member_List[Member_Record].code,(const char*)c);
	Member_Record++;
}

/*会员注册程序*/
void Member_Reg()
{	
	string n,s,num;
	char l[20],c[20],choice[2];
	cout << "\t\t\t\t会员注册" << endl;
	cout << "\t\t请以此输入 姓名、性别、学号、登录号、密码" << endl;
	cin >> n >> s >> num >> l >> c;
	for(int i=0; i<Member_Record; i++){
		if(strcmp(Member_List[i].login,l) == 0){
			cout << "\t\t\t\t该登录号已存在,注册失败" << endl;
			getch();
			system("cls");
			return;
		}
	}
	Member_Add(n,s,num,l,c);
	cout << "\t\t\t\t注册成功" << endl; 
	cout << "\t\t\t\t是否存入文件\ty/n?" << endl;;
	cin  >> choice;
	if((strcmp(choice,"y")==0) || (strcmp(choice,"Y") == 0))
		Member_RecordSave();
	getch();
	system("cls");		//clear screan
}

 

 

 

 

 

6、会员注销和密码修改

 

/*会员资料注销*/
void Member_Delete()
{
	bool key=false;
	char Del_Name[20],cmd[2];
	cout<<"请输入要注销的会员登录号"<<endl;
	cin>>Del_Name;
	for(int i=0;i<Member_Record;i++){
		if(strcmp(Member_List[i].login,Del_Name)==0){	//found
			key=true;
			Member_MsgShow(&Member_List[i]);
			cout<<"是否需要删除该会员,y/n?"<<endl;
			cin>>cmd;
			if((strcmp(cmd,"y")==0)||(strcmp(cmd,"Y")==0)){	//ensure delete
				while(i<=Member_Record-1){
					Member_List[i]=Member_List[i+1];
					i++;
				}
				Member_Record--;
				Member_RecordSave();
				cout<<"会员 "<<Del_Name<<" 已注销"<<endl;
				break;
			}	
		}
	}
	if(!key)	cout<<"没有找到该会员"<<endl;
}

void Member_CodeAdjust()
{	
	char TempCode[20],choice[2],Temp[20];
	strcpy(Temp,Member_List[Mem_Point].code);
	while(1){
		cout<<"请输入原来的密码:";
		cin>>TempCode;
		if(strcmp(Temp,TempCode)==0){
			cout<<"请输入新的密码:";
			cin>>TempCode;
			cout<<"请再次输入新的密码:";
			strcpy(Member_List[Mem_Point].code,TempCode);
			cin>>TempCode;
			if(strcmp(Member_List[Mem_Point].code,TempCode)==0){
				cout<<"\t\t\t\t修改密码成功,新密码为"<<Member_List[Mem_Point].code<<endl;				//test
				Member_RecordSave();
				break;
			}
			else{
				cout<<"两次输入的密码不一致,修改失败!"<<endl;
				cout<<"\t\t\t\t输入Y继续,输入N放弃修改"<<endl;
				cin>>choice;
				if((strcmp(choice,"n")==0)||(strcmp(choice,"N")==0))
					return ;
				continue;
			}
		}
		cout<<"密码错误,请按任意键重新输入!"<<endl;
		getch();
	}	
}

 


管理员操作的大部分程序和会员操作是类似的,这里只贴一个图书排序的操作

 

 

7、图书排序

 

/* 内部函数,供图书排序功能调用*/
bool cmp( Book_Message a, Book_Message b ){
	if(strcmp( a.author, b.author ) == 0)
		return strcmp( a.name, b.name ) < 0;
	return strcmp( a.author , b.author ) < 0;
}
/*
*	@brief  图书排序,根据作者姓名升序排序,若作者相同,则按书名升序排序
*	@param  None
*	@retval None
*/
void Book_Sort()
{
	sort( Book_List, Book_List+Book_Record, cmp );
	cout << "排序已完成" << endl;
	cout << "所有图书信息如下" << endl;
	cout << "书名\t作者\t价格\t出版社\t出版时间\t分类号  编号  收录日期  是否可借" << endl;
	for(int i=0; i<Book_Record; i++){
		Book_InfoShow( &Book_List[i] );
	}
	getch();
}

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 18
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
目 录 摘 要 ……………………………………………………………………………… I 第一章 绪 论 …………………………………………………………………… 1 '1.1 数据库应用系统开发简介 ……………………………………………… 1 '1.2 图书管理系统 ……………………………………………………… 4 '1.3 本文所做的主要工作 …………………………………………………… 6 第二章 数据库理论基础 ………………………………………………………… 7 '2.1 数据库系统设计及范式分析 …………………………………………… 7 '2.2 SQL语言介绍………………………………………………………………… 11 2.2.1 SQL基础 ………………………………………………………………… 11 2.2.2 SQL语句 ………………………………………………………………… 12 第三章 应用系统开发工具………………………………………………… 16 '3.1 Delphi6.0 VCL组件的体系结构……………………………………… 16 '3.2 数据库组件介绍 …………………………………………………………… 17 '3.3 SQL语言在Delphi中的应用 …………………………………………… 18 '3.4 MS SQL Server简述 …………………………………………………… 22 第四章 图书管理系统设计分析 ………………………………………… 24 '4.1 应用需求分析 …………………………………………………………… 24 '4.2 系统功能模块划分 ……………………………………………………… 29 '4.3 系统数据库设计 ………………………………………………………… 29 第五章 图书管理系统应用程序设计 …………………………………… 37 '5.1 系统窗体模块组成 ………………………………………………………… 37 '5.2 数据模块窗体的设置 ……………………………………………………… 37 '5.3启动画面的实现…………………………………………………………… 38 '5.4用户登录窗体的的实现……………………………………………………… 39 '5.5用户密码认证窗体的的实现………………………………………………… 39 '5.6借阅者服务模块的实现…………………………………………………… 40 5.6.1图书查询功能的实现………………………………………………… 41 5.6.2借阅者登录功能的实现………………………………………………… 42 5.6.3借阅者借阅情况功能的实现…………………………………………… 43 5.6.4借阅者个人资料维护功能的实现……………………………………… 47 '5.7工作人员-图书借阅/归还模块的实现……………………………………… 49 5.7.1工作人员进行图书借阅功能实现……………………………………… 50 5.7.2工作人员进行图书归还功能实现……………………………………… 53 '5.8图书管理员模块的实现…………………………………………… 54 5.8.1图书管理图书管理功能的实现…………………………………… 55 5.8.2图书管理员工作人员和管理管理功能的实现…………………… 58 5.8.3图书管理员修改图书类别及统记功能的实现……………………… 60 5.8.4图书管理员借阅者管理功能的实现………………………………… 62 5.8.5图书馆维护借阅者管理功能的实现………………………………… 62 5.8.6图书馆身份维护功能的实现……………………………………… 64 5.8.7图书馆借阅者统计功能的实现………………………………… 65 5.8.8图书馆统计借阅过期记录功能的实现………………………… 67 '5.9系统信息显示的实现………………………………………………… 68 第六章 结束语 ……………………………………………………………… 69 致 谢 ………………………………………………………………………………70 参考书目 …………………………………………………………………………… 70
课 程 设 计 报 告 课程名称 C语言程序设计 课题名称图书借阅管理系统 专 业机械设计 班 级 15机械二班 学 号2015030220 姓 名 指导教师 2016年 6 月 14日 理工大学高科学院 课 程 设 计 任 务 书 课程名称 C语言程序设计 课 题 图书借阅管理系统 专业班级 网络工程1002班 学生XX 学 号 4 指导教师 唐北平、淑红、谭小兰 审 批 任务书下达日期 2011 年 6 月20 日 任务完成日期 2011 年 7 月 03 日 一、设计容与设计要求 1.设计容:对一个有N本图书图书馆,通过该系统实现对该班级学生的根本信息 进展录入、显示、修改、删除、保存等操作的管理。 〔1〕、本系统采用一个包含N个数据的构造体数组,每个数据的构造应当包括:书号 、书名、作者、、出版日期、单价、是否借出等。 〔2〕、本系统显示这样的菜单: a. 图书根本信息录入 b. 图书根本信息显示 c. 图书根本信息删除 d. 图书根本信息修改 e. 图书根本信息查询〔按书号查询、书名等〕 g. 退出系统 〔3〕、执行一个具体的功能之后,程序将重新显示菜单。 2.设计要求:掌握构造化程序设计的主体思想,以自顶向下逐步求精的方法编制程 序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经历。 1. 设计正确,方案合理。 2. 界面友好,使用方便。 3. 程序精炼,构造清晰。 4. 设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。 5. 上机演示。 6. 按学号顺序选课题号,并在规定的时间单独完成相关课题的C源程序编写、调整和运行 。源程序及编译生成各文件均保存在软盘中; 7. 按本任务书的要求,按附录的要求编写?课程设计报告?〔Word文档格式〕。并用A4的复 印纸打印并装订; 二、进度安排 第 十八 周 星期1 8时00分——11时30分 星期2 14时00分——18时15分 星期3 8时00分——11时30分 星期4 8时00分——11时30分 第 十九 周 星期1 8时00分——11时30分 星期2 14时00分——18时15分 三、课程设计报告 1.程序设计准备 做系统前,首先,自己详细看了?C程序设计?〔教科书〕,根本自学会了文件的相关 容,理解了相关函数的用法和作用;另,上网查询了很多相关资料,还有找了很多相关 的系统,都详细的看了一遍,加深了对C的理解以及对文件的相关容进一步理解。学习了 C语言的容,图书信息管理系统有助于C语言学习的进一步稳固,在本系统可以增强对指 针、文件、函数、构造体变量等根本知识的进一步理解。另外图书信息管理系统也是学 校常用的根本系统之一,它有助于学校对图书馆书籍的根本管理。 2.程序设计说明 根据题目要求,应当把图书信息用构造体形式输入,再定义一个全局变量和文件指针 进展整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个构造体和文件 的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操 作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时到达 所要求的目的。 3.程序的主要功能 图书管理在生活中运用非常广泛,因此需要用许多的程序来对它们进展管理图书借 阅管理系统是对图书信息的根本管理,它包括:图书信息的录入、图书信息的显示、图 书信息的删除、图书信息的修改、图书信息的查询。 通过编译一个C语言函数,其中包含一个主函数,多个子函数,主函数调用其余的子 函数实现人们能够简易、快捷的了解并找到自己所学要的信息的功能。 1、图书根本信息录入:对新到图书馆的图书的信息〔编号、书名、、作者、价格〕 进展录入。 2、图书根本信息显示:显示已被录入图书的所有信息。 3、图书根本信息删除:通过输入书名,判断此图书是否存在,假设存在, 那么删除该图书所有信息,假设不存在那么提示用户重新输入图书书名。 4、图书根本信息修改:通过输入书名,判断此图书是否存在,假设不存在那么提示 用户重新输入图书书名,假设存在,那么可对图书各项信息进展修改。 5、图书根本信息查询:将所有图书信息包括编号、书名、、作者、价格等显示在屏 幕上。 6、退出系统:即退出图书借阅管理系统。 使用模块化编程的方法每项功能有一个或多个函数组合来完成,其中菜单项选择项模 块对应如下: 图书根本信息录入==> void insert() 图书根本信息显示==> void print() 图书根本信息删除==> void del() 图书根本信息修改==> void modify() 图书根本信息查询==> void find() 这份代码中各个变量的定义如下: num 图书编号 name 书名 author 作者 pub where 出版日期
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值