图书管管理系统报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图书馆管理系统
设计报告
郑
2013
图书馆管理系统
设计报告
姓名:郑、卢
班级:12级通信工程十班
指导老师:管金称
一、概述
1、编写目的
以一简单的程序来实现图书馆的管理,重在程序开发功能,能运用合理的控制流程编写清晰高效的程序。
培养分析问题、解决实际问题的能力并提高分析问题、解决问题的能力。
2、系统需求说明
1、对功能的规定
经过详细的用户调查,在现行业务流程和数据分析的基础上,可以确定系统设计必须达到的目标。
以下是图书管理系统必须具备的功能:
1.新进图书的登记功能:对于购进的新书,系统必须具备图书信息资料的录入功能。
2.图书的查询修改功能:当图书资料发生变化,如图书丢失
或有错误信息输入时,则应能够及时对数据进行修改和补充。
3.借阅的登记,归还的登记功能:系统的主要功能之一,供本校学生借阅图书、归还图书,并进行登记。
4.学生信息的增加、删除和修改功能:系统主要功能之一,建立学生信息,并对其进行维护。
二、程序主体结构
主页面中包含有三大块:
1:书籍2:搜索3:登陆
运行情况:
书籍这为三大项目之一,主要功能方便用户来搜索当前最新的读物,内部设立有两大块1:最新读物2:热书榜
搜索在这个项目中主要有如下的搜索功能选项:
1:按书籍名称搜索2:按书籍作者搜索3:按关键字搜索
登陆这个项目包含两大块
1:管理员登陆2:学生登陆
2、搜索专栏和登陆专栏的功能介绍
1、搜索栏目包含有三大项目外加一返回主页的链接,编写时先是声明一个void menu_2()的函数,再用了一个switch(order )语句连接到它的子程序里。
子程序里有void search_by_bookName()通过书名来进行图书搜索的一个链接; void search_by_author()通过作者来进行书籍搜索的链接; void search_by_keyword()通过输入一些关键字来搜索书籍的链接; system("cls")清空屏幕上的信息; 返回主函数链接来组成。
2、登陆专栏主要有二个大项目和一个放回主页的链接,其中主要包括管理员登陆和学生登陆其分别在void
leaderpassword();void userpassword();函数下实现功能的。
1)、管理员登陆专栏
因为管理员的权限最大所以在这一栏中有分为很多小的部分包括如下其函数:
void change1();
void change2();
void change_bif_name();
void change_author();
void change_publisher();
void change_price();
void change_bif_number();
void change_stu_name();
void change_stu_sex();
void search_stu_by_borrow();
void search_stu_by_class();
其功能概览树状图:
2)、学生登陆专栏
学生登陆中首先进入用户验证,及密码的输入栏。
验证成功可以看到自己的借书情况,回车后进入借书登记栏目在该栏目中
你可以输入自己所借的书,以此进行登记记录。
其运行情况:
二、程序
#include<stdio.h>
#include<stdlib.h>//清空屏幕有关
#include<WinSock2.h>
#include<mysql.h>
MYSQL mysql, *sock; //声明MySQL句柄
#define ADD 1
#define DELETE 2
#define putout 3
#define UPDATE 4
#define PASSWORD 5
#define LENGTH 6
#define CLOSE 7
/*函数声明*/
void Connector(char*,int);void mainmenu();void menu_1();
void menu_2();void menu_3();void momenu();
void add_bif();void delete_bif();void leaderpassword();
void userpassword();void borrowbook();void returnbook();
void search_new(); void search_hot();void search_by_bookName();
void search_by_author();void search_by_keyword();void change1();
void change2();void change_bif_name();void change_author();
void change_publisher();void change_price();void change_bif_number();
void change_stu_name();void change_stu_sex();void search_stu_by_borrow();
void search_stu_by_class();
/*主函数*/
void main()
{
char *i_query; //声明 SQL 语句
mainmenu();
}
void mainmenu()
{ int choice;
printf("\t=================================================================\n\n");
printf("\t\t\t\t欢迎来到科成图书馆\n");
printf("\t\tHome page\n\n\t1.Books\n\n\t2.Search\n\n\t3.Log in\n\n");
printf("\t choice the number from 1 to 3\n");
printf("\t=================================================================\n\n");
printf("\t选择后按回车继续 ");
scanf("%d",&choice); //输入指令
switch(choice)
{ case 1: menu_1();
break;
case 2: menu_2();
break;
case 3: menu_3();
break;
} }
//insert into book(bookName,author,publisher,time,price,keyword,number) values("模电\","我\","科学\","2007\","45\","21\","4\","3\","难\")
//子页面1:books
void menu_1()
{ int choice; //输入指令
system("cls"); //清屏
printf("\t=================================================================\n\n");
printf("\t\t\t快速浏览\n\n");
printf("\t\t1:最新读物 2:热书榜 3:返回主页\n\n");
printf("\t choice the number from 1 to 3\n");
printf("\t=================================================================\n\n");
printf("\t选择后按回车继续 ");
scanf("%d",&choice); //输入指令
switch(choice)
{
case 1: search_new();
break;
case 2: search_hot();
break;
case 3: system("cls"); mainmenu();
break;
} }
//子页面2 search
void menu_2()
{ int order ; //输入指令
system("cls"); //清屏
printf("\t=================================================================\n\n");
printf("\t\t\t搜索专栏\n\n");
printf("\t\t1:书名搜索 2:关键字搜索 3:作者搜索 4:返回主页\n\n");
printf("\t choice the number from 1 to 4\n");
printf("\t=================================================================\n\n");
printf("\t选择后按回车继续 ");
scanf("%d",&order);
switch(order )
{
case 1:search_by_bookName();
break;
case 2:search_by_keyword();
break;
case 3: search_by_author();
break;
case 4: system("cls"); mainmenu();
break;
} }
//子页面3 manage
void momenu()
{ int order ; //输入指令
system("cls"); //清屏
printf("\t=================================================================\n\n");
printf("\t\t\t管理员专栏\n\n");
printf("\t\t1:增添书籍 2:删除书籍 3:修改书籍信息 4:修改学生信息 \n\n");
printf("\t5:返回主页\n\n");
printf("\t choice the number from 1 to 5\n");
printf("\t=================================================================\n\n");
printf("\t选择后按回车继续");
scanf("%d",&order);
switch(order )
{case 1:add_bif(); break;
case 2:delete_bif(); break;
case 3:change1(); break;
case 4:change2(); break;
case 5: system("cls"); mainmenu();break;
}}
//子页面4 log on
void menu_3()
{ int order ; //输入指令
system("cls"); //清屏
printf("\t=================================================================\n\n");
printf("\t\t\t\t登陆专栏\n\n");
printf("\t\t1:管理员登陆 2:学生登陆 3:返回主页\n\n");
printf("\t choice the number from 1 to 3\n");
printf("\t=================================================================\n\n");
printf("\t选择后按回车继续 ");
scanf("%d",&order);
switch(order )
{ case 1: leaderpassword(); break;
case 2:userpassword(); break;
case 3: system("cls"); mainmenu();break;
} }
/*=======================================================登陆页面
=================================================================================*/ /*1:管理员登陆界面*/
void leaderpassword()
{ int password ; //输入指令
system("cls"); //清屏
printf("\t=================================================================\n\n");
printf("\t\t\t\t管理员登陆专栏\n\n");
printf("\t输入密码或按“2”返回主页并回车结束\n");
printf("\t=================================================================\n\n");
scanf("%d",&password);
switch(password)
{ if(password=0000)
{ case 0000: momenu();break; }
else{ printf("输入密码错误!!输入2到主页面");
}
case 2: system("cls"); mainmenu();break; } }
/*2:学生登录界面*/
void userpassword()
{ char i_query[200] = "select * from userlist where name = \"";
char input[200];
char put[100];
char quotation[] = "\"";
char iput[50]="and password =\""; //select * from userlist where name =“”and password =“”的链接!!
system("cls"); //清屏
printf("\t=================================================================\n\n");
printf("\t\t\t\t学生登陆专栏\n\n");
printf("\t请按照下面提示进行操作! \n");
printf("\t=================================================================\n\n");
printf("\t请输入姓名: \n\t");
scanf("%s",&input);
strcat(i_query,input);
strcat(i_query,quotation);
strcat(i_query,iput);
printf("\t输入密码\n\t");
scanf("%s",&put);
strcat(i_query,put);
strcat(i_query, quotation);
Connector(i_query , PASSWORD);
//Connector(strcat(i_query,strcat(input,quotation)), PASSWORD); and password = \"";
}
/*=======================================================搜索功能项目!
============================================================================*/
//1:按书名查找
void search_by_bookName()
{ char i_query[50] = "select * from book where bookName = \"";
char input[20];
char quotation[] = "\"";
printf("请输入书名:");
scanf("%s",&input);
strcat(i_query,input);
strcat(i_query, quotation);
Connector(i_query,putout);
}
//2:按照关键字查找
void search_by_keyword()
{
char i_qurey[200] = "select * from book where keyword = \"";
char input[50];
char quotation[] = "\"";
printf("请输入关键字:" );
scanf("%s",&input);
strcat(i_qurey, input);
strcat(i_qurey, quotation);
Connector(i_qurey,putout);
}//3:通过作者名查找
void search_by_author()
{ char i_qurey[50] = "select * from book where author = \"";
char input[20];
char quotation[] = "\"";
printf("请输入作者名:" );
scanf("%s",&input);
strcat(i_qurey, input);
strcat(i_qurey, quotation);
Connector(i_qurey, putout);
}
/*4:按照出版年份查找
void search_by_time()
{
char i_qurey[50] = "select * from book where time = \"";
char input[2000];
char quotation[] = "\"";
printf("请输入书籍出版年份:" );
scanf("%s",&input);
strcat(i_qurey, input);
strcat(i_qurey, quotation);
Connector(i_qurey, putout);
}*/
//:books下查找新书
void search_new()
{
char i_query[100]="select * from hotnewbooks where new > 7 order by new ";
Connector(i_query,putout);
}
//2:books下查找热书
void search_hot()
{
char i_query[100]="select * from hotnewbooks where hot > 7 order by hot ";
Connector(i_query,putout);
}
/*===========================================================借书、换书系统
=======================================================================*/ void borrowbook()
{
int order;
system("cls"); //清屏
printf("\t=================================================================\n\n");
printf("\t\t\t\t借阅图书登记专栏\n\n");
printf("\t1:登记所借图书信息 2:返回主页 \n\n");
printf("\t=================================================================\n\n\t");
scanf("%d",&order);
if (order==1)
{
char i_query[200] = "update userlist set jieshu= \"";
char i_query_1[40] = "\" where id = \"";
char ID[11];
char price[50] ;
printf("\t请输学生ID:\n\t");
scanf("%s",&ID);
printf("\t请输入所借图书名称: ");
scanf("%s",&price);
Connector(strcat(i_query,strcat(price,strcat(i_query_1,strcat(ID,"\"")))), LENGTH );
}
else if (order==2)
{
system("cls"); mainmenu(); //清屏
}
}
/*=======================================================管理员:添加,更改,删除功能项目!========================================================*/
/*管理员增加图书信息*/
void add_bif()
{
//insert into book(bookName,author,publisher,time,price,keyword,number) values("模电\","我\","科学\","2007\","45\","21\","4\","3\","难\")的写入
char i_query[200] ="insert into book
(bookName,author,publisher,time,price,number,hot,new,keyword) values(";
char put[100];
char put1[100];
char put2[100];
char put3[100];
char put4[100];
char put5[100];
char put6[100];
char put7[100];
char put8[100];
char put9[100];
char iput[50]="\"";
char input[20]=",";
char iiput[10]=")";
system("cls"); //清屏
printf("\t=================================================================\n\n");
printf("\t\t\t\t增加图书信息专栏\n\n");
printf("\t请输入图书名并以回车结束 \n");
printf("\t=================================================================\n\n");
strcat(i_query,iput); scanf("%s",&put); strcat(i_query,put );
strcat(i_query,iput); strcat(i_query,input); strcat(i_query,iput);
printf("请输入作者\n"); scanf("%s",&put1); strcat(i_query,put1);
strcat(i_query,iput); strcat(i_query,input); strcat(i_query,iput);
printf("请输入出版社\n"); scanf("%s",&put2); strcat(i_query,put2);
strcat(i_query,iput); strcat(i_query,input); strcat(i_query,iput);
printf("请输入出版时间\n"); scanf("%s",&put3); strcat(i_query,put3);
strcat(i_query,iput); strcat(i_query,input); strcat(i_query,iput);
printf("请输入价格\n"); scanf("%s",&put4); strcat(i_query,put4);
strcat(i_query,iput); strcat(i_query,input); strcat(i_query,iput);
printf("请输入数量\n"); scanf("%s",&put5); s trcat(i_query,put5);
strcat(i_query,iput); strcat(i_query,input); strcat(i_query,iput);
printf("请输入热度\n"); scanf("%s",&put6); strcat(i_query,put6);
strcat(i_query,iput); strcat(i_query,input); strcat(i_query,iput);
printf("请输入新度\n"); scanf("%s",&put7); strcat(i_query,put7);
strcat(i_query,iput); strcat(i_query,input); strcat(i_query,iput);
printf("请输入关键字\n"); scanf("%s",&put8); strcat(i_query,put8);
strcat(i_query,iput);
printf("%s",strcat(i_query,iiput));
Connector(i_query ,ADD);
printf("录入成功");
} /*管理员删除图书信息*/
void delete_bif()
{
char i_query[100] = "delete from book where id = \'";
char input[10];
printf("请输入要删除图书的ID:\n");
scanf("%s",&input);
Connector(strcat(strcat(i_query,input),"\'"),DELETE);}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++修改图书信息项目
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*修改图书信息*/
void change1()
{
int order ; //输入指令
system("cls"); //清屏
printf("\t=================================================================\n\n");
printf("\t\t\t\t修改图书信息专栏\n\n");
printf("\t1:图书名称修改 2:图书作者修改 3:图书出版社修改\n\n\t4:图书价格修改 5:图书数量修改 \t6:返回上一页\n\n");
printf("\t choice the number from 1 to 10\n");
printf("\t=================================================================\n\n");
printf("\t选择后按回车继续 ");
scanf("%d",&order);
switch(order )
{
case 1:change_bif_name();
break;
case 2:change_author();
break;
case 3:change_publisher();
break;
case 4:change_price();
break;
case 5:change_bif_number();
break;
case 6: system("cls"); momenu(); //清屏
break;
}
}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++修改学生信息项目
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*修改学生信息*/
void change2()
{
int order ; //输入指令
system("cls"); //清屏
printf("\t=================================================================\n\n");
printf("\t\t\t\t修改学生信息专栏\n\n");
printf("\t1:学生名称修改 2:学生性别修改 3:学生班级修改 4:借书量修改 \n\n\t5:返回上一页\n\n");
printf("\t choice the number from 1 to 5\n");
printf("\t=================================================================\n\n");
printf("\t选择后按回车继续 ");
scanf("%d",&order);
switch(order )
{
case 1:change_stu_name();
break;
case 2:change_stu_sex();
break;
case 3:search_stu_by_borrow();
break;
case 4:search_stu_by_class();
break;
case 5: system("cls"); momenu(); //清屏
break;
}
}
/*===========================================================修改信息专项
===============================================================================*/
/*1修改书名*/
void change_bif_name()
{
char i_query[200] = "update book set bookName= \"";
char i_query_1[40] = "\" where id = \"";
char ID[11];
char bookName[50];
printf("请输入图书ID:\n\t");
scanf("%s",&ID);
printf("\t请输入图书名称:");
scanf("%s",&bookName);
Connector(strcat(i_query,strcat(bookName,strcat(i_query_1,strcat(ID,"\"")))),UPDATE );
}
/*2修改作者*/
void change_author()
{
char i_query[200] = "update book set author= \"";
char i_query_1[40] = "\" where id = \"";
char ID[11];
char author[50] ;
printf("请输入图书ID:\n\t");
scanf("%s",&ID);
printf("\t请输入作者名称:");
scanf("%s",&author);
Connector(strcat(i_query,strcat(author,strcat(i_query_1,strcat(ID,"\"")))),UPDATE); }
/*3修改出版社*/
void change_publisher()
{
char i_query[200] = "update book set publisher= \"";
char i_query_1[40] = "\" where id = \"";
char ID[11];
char publisher[50] ;
printf("请输入图书ID:\n\t");
scanf("%s",&ID);
printf("\t请输入出版社:");
scanf("%s",&publisher);
Connector(strcat(i_query,strcat(publisher,strcat(i_query_1,strcat(ID,"\"")))),UPDAT E);
}
/*4修改价格*/
void change_price()
{
char i_query[200] = "update book set price= \"";
char i_query_1[40] = "\" where id = \"";
char ID[11];
char price[50] ;
printf("请输入图书ID:\n\t");
scanf("%s",&ID);
printf("\t请输入图书价格:");
scanf("%s",&price);
Connector(strcat(i_query,strcat(price,strcat(i_query_1,strcat(ID,"\"")))),UPDATE); }
/*5修改图书数量*/
void change_bif_number()
{
char i_query[200] = "update book set number= \"";
char i_query_1[40] = "\" where id = \"";
char ID[11];
char number[50] ;
printf("请输入图书ID:\n\t");
scanf("%s",&ID);
printf("\t请输入新的图书数量:");
scanf("%s",&number);
Connector(strcat(i_query,strcat(number,strcat(i_query_1,strcat(ID,"\"")))),UPDATE); }
/*修改学生姓名*/
void change_stu_name()
{
char i_query[200] = "update userlist set name= \"";
char i_query_1[40] = "\" where id = \"";
char ID[11];
char bookName[50];
printf("请输入学生ID:\n\t");
scanf("%s",&ID);
printf("\t请输入新姓名:");
scanf("%s",&bookName);
Connector(strcat(i_query,strcat(bookName,strcat(i_query_1,strcat(ID,"\"")))),UPDATE );
}
/*修改学生性别*/
void change_stu_sex()
{
char i_query[200] = "update userlist set sex= \"";
char i_query_1[40] = "\" where id = \"";
char ID[11];
char bookName[50];
printf("请输入学生ID:\n\t");
scanf("%s",&ID);
printf("\t请输入性别:");
scanf("%s",&bookName);
Connector(strcat(i_query,strcat(bookName,strcat(i_query_1,strcat(ID,"\"")))),UPDATE );
}
/*修改学生借书数量*/
void search_stu_by_borrow()
{
char i_query[200] = "update userlist set jieshu= \"";
char i_query_1[40] = "\" where id = \"";
char ID[11];
char bookName[50];
printf("请输入学生ID:\n\t");
scanf("%s",&ID);
printf("\t请输新借书数:");
scanf("%s",&bookName);
Connector(strcat(i_query,strcat(bookName,strcat(i_query_1,strcat(ID,"\"")))),UPDATE );
}
/*修改学生班级*/
void search_stu_by_class()
{
char i_query[200] = "update userlist set class= \"";
char i_query_1[40] = "\" where id = \"";
char ID[11];
char bookName[50];
printf("请输入学生ID:\n\t");
scanf("%s",&ID);
printf("\t请输新班级:");
scanf("%s",&bookName);
Connector(strcat(i_query,strcat(bookName,strcat(i_query_1,strcat(ID,"\"")))),UPDATE );
}
/*===== ==================================================数据库
====================================================================================*/
/*连接数据库函数*/
void Connector(char *i_query, int function)
{ const char *host = "127.0.0.1";
const char *user = "root"; //这里改为你的用户名,即连接MySQL的用户名
const char *password = "103196";
const char *db = "bookinformation"; //这里改为你要连接的数据库的名字
unsigned int port = 3306; //这是MySQL的服务器的端口,如果你没有修改过的话就是3306。
const char *unix_socket = NULL;
unsigned long client_flag = 0;
// const char*i_query = "select * from book"; //查询语句
MYSQL_RES *result;
MYSQL_ROW row; //代表的是结果集中的一行
mysql_init(&mysql); //连接之前必须使用这个函数来初始化
sock = mysql_real_connect(&mysql, host, user, password, db, port, unix_socket, client_flag);
mysql_set_character_set(&mysql, "GBK"); //解决汉字乱码问题
result = mysql_store_result(&mysql);
switch (function)
{
/*添加图书信息*/
case ADD:
mysql_query(sock,i_query);
printf("添加图书信息成功\n");
system("pause");
momenu ();
break;
/*删除图书信息*/
case DELETE:
mysql_query(sock,i_query);
printf("删除图书信息成功\n");
system("pause");
momenu ();
break;
/*查询结果输出*/
case putout:
mysql_query(&mysql, i_query);
result = mysql_store_result(&mysql);
while((row = mysql_fetch_row(result)) != NULL) {
printf("\tID:\t%s\n",row[0]);
printf("\t书名:\t%s\n",row[1]);
printf("\t作者:\t%s\n",row[2]);
printf("\t出版社:\t%s\n",row[3]);
printf("\t价格:\t%s\n",row[5]);
printf("\t数量:\t%s\n",row[7]);
printf("\t图书热度:%s\n",row[8]);
printf("\t图书新度:%s\n",row[9]);
printf("\n");
}
system("pause");
menu_2(); //回到查询图书信息子菜单
break;
/*修改功能*/
case UPDATE:
mysql_query(sock,i_query);
printf("修改成功\n");
system("pause");
system("cls");
momenu(); //回到更新图书信息子菜单break;
/*添加新的借书*/
case LENGTH :
mysql_query(sock,i_query);
printf("修改成功\n");
system("pause");
system("cls");
menu_1(); //回到更新图书信息子菜单break;
/*登陆检查器*/
case PASSWORD :
mysql_query(&mysql,i_query);
system("cls"); //清屏
result = mysql_store_result(&mysql);
while((row = mysql_fetch_row(result)) != NULL)
{
printf("\t=================================================================\n\n");
printf("\t\t\t登陆成功\n\n");
printf("\tID:\t%s\n",row[0]);
printf("\t姓名:\t%s\n",row[1]);
printf("\t性别:\t%s\n",row[3]);
printf("\t已借书数目:\t%s\n",row[4]);
printf("\t班级:\t%s\n",row[5]);
printf("\n\n\n");
printf("\t\t回车可到借书页面\n");
}
system("pause");
borrowbook();//回到查书菜单
break;
/*关闭数据库*/
case CLOSE:
mysql_free_result(result);
mysql_close(sock);
break;}
}
四、程序的改进
此程序由于本人编写能力有限,还有很多地方存在问题。
比如说管理员的工作量巨大、数据更新、还有人力分配等还未能处理好。
但是应对简单的图书管理系统还是可以实现其最大的作用,希望各位读者能够给予更好的意见或建议,本人感激不尽!!。