中南c++程序课程设计图书管理系统.docx
《中南c++程序课程设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《中南c++程序课程设计图书管理系统.docx(52页珍藏版)》请在冰点文库上搜索。
中南c++程序课程设计图书管理系统
中南大学
本科生C++语言课程设计
题目图书管理系统
成员姓名学号班级:
指导教师樊广军
学院机电工程学院
完成时间2012年6月24日
1前言
编写一个程序来实现图书管理系统的基本查询、管理以及用户和管理员对图书库的操作功能。
通过结构体数组来存放输入的每一操作记录和通过文本文件来充当库存文件,用于记录并充当数据库和再次访问。
操作特点:
依据系统提示输入选项,以此来对库存数据进行操作。
2需求分析
2.1要求
(1)用C++语言实现程序设计;
(2)利用结构体和各个函数模块进行相关信息处理;
(3)画出查询模块的流程图;
(4)系统的各个功能模块要求用函数的形式实现;
(5)界面友好(良好的人机互交),程序要有注释。
2.2任务
(1)定义三个结构体类型数组,用于暂时储存管理员信息、用户信息、和图书信息,并进一步将其信息存入文件中;
(2)输入系统提示的选项,并对三个数据库进行相关操作;
(3)画出部分模块的流程图;
(4)编写代码;
(5)程序分析与调试。
2.3运行环境
(1)WINDOWS2000/XP/7系统
(2)VisualC++6.0编译环境
2.4开发工具
C++语言
3概要设计
3.1主程序系统流程图
如图3.1所示。
图3.1系统流程图
3.2使用说明
进入程序
选择1、2、3来进入不同功能区域
如果选1则出现
输入:
“管理员登录”
则进入管理员功能界面
管理员共有5个功能模块
模块1:
新管理员加入
输入要添加的管理员数目
姓名:
字符型,可输入一个管理员的姓名,中英文均可,长度小于15个字符
输入工龄:
输入数字1~50
输入工薪:
格式“数字/月”
管理员添加完成。
该功能模块可以在已有的管理员信息库中添加新管理员。
此外还
2.信息修改模块
输入要修改信息的管理员的姓名
输入要修改的选项1为姓名,2为工龄,3为月薪
输入选项则可修改相应选项。
3.新书添加和4.旧书处理模块
3
4
图书编号要求:
由三位大写的英文字母和六位数组成中间用斜杠封开
书名
藏书地点
分为新校和本部
借出情况
分为借出和入藏
第二功能区
用户功能区
输入“用户登录”进入用户功能界面
用户有4个功能模块
1.图书查询
输入书名
2.借书
输入姓名
输入“机械设计指导”
照编号输入即可
身份验证
学号、姓名、输入借书日期即可借出图书。
3.还书
或
4.图书总览
图书目录自动生成,其中还包含图书排序、以及统计功能,如图所示
图书自动按编号排序,并统计共有32本书。
4.成员设计分工及程序内容简介
4.1成员设计分工
组长:
谭佳伟
任务1:
总体界面设计以及程序组装。
组员:
聂帅
任务2:
图书排序、图书添加、图书查询、旧书处理、逾期还书处理模块的编译。
组员:
李国梁
任务3:
管理员添加、管理员信息修改、借书、还书、图书总览模块的编译。
4.2程序内容简介
任务1:
#include
#include
#include
#include
usingnamespacestd;
structTushuku//图书库结构体
{
charbianhao[15];
charshuming[25];
chardidian[15];
charjiehuan[15];
};
structYonghu//用户结构体
{
charxuehao[15];
charxingming[15];
charjieshu[15];
charjieshi[15];
charhuanshi[15];
};
#include"图书的排序.cpp"//插入排序函数
#include"图书的添加.cpp"//插入添加函数
#include"新管理员的添加.cpp"//插入管理员添加函数
#include"处理旧书.cpp"//插入旧书处理函数
#include"管理员信息修改.cpp"//插入管理员信息修改函数
#include"图书查询.cpp"//插入图书查询函数
#include"借书.cpp"//插入借书函数
#include"还书.cpp"//插入还书函数
#include"逾期还书处理.cpp"//插入逾期还书函数
#include"图书总览.cpp"//插入图书总览函数
staticintf;
intmain()
{
while
(1)
{
inti=0;
//主界面
cout<cout<<"********************************"<cout<<"*****欢迎进入图书管理系*****"<cout<<"********************************"<cout<cout<<"请选择要执行的任务:
1,管理员登陆2,学生或教师登陆3,退出"<cin>>i;
system("CLS");
switch(i)
{
case1:
//管理员登录
line1:
charGmima[20];
cout<<"请输入管理员密码"<cin>>Gmima;
if(strcmp(Gmima,"管理员登录")==0)
{
cout<<"********************************"<cout<<"*****欢迎登陆*****"<cout<<"********************************"<}
else
{
cout<<"********************************"<cout<<"*****输入出错,请再次输入*****"<cout<<"********************************"<gotoline1;
i=0;
}
break;
case2:
//用户登录
charYmima[20];
line2:
cout<<"请输入用户密码"<cin>>Ymima;
if(strcmp(Ymima,"用户登录")==0)
{
cout<<"********************************"<cout<<"*****欢迎登陆*****"<cout<<"********************************"<}
else
{
cout<<"********************************"<cout<<"*****输入出错,请再次输入*****"<cout<<"********************************"<gotoline2;
i=0;
}
break;
case3:
//退出
cout<<"********************************"<cout<<"*****谢谢使用*****"<cout<<"********************************"<i=3;
break;
default:
cout<<"********************************"<cout<<"*****输入出错,请再次输入*****"<cout<<"********************************"<break;
}
if(i==1||i==2||i==3)
{
f=i;
break;
}
}
intflag=0;
if(f==1)
{
line4:
cout<<"请选择要进行的操作:
1,新管理员的加入2,管理员信息修改3,新书添加4,旧书处理5,用户欠交款处理6,退出"<cin>>flag;
system("CLS");
switch(flag)
{
case1:
tianjiaguanliyuan();
break;
case2:
Gxinxixiugai();
break;
case3:
tianjiatushu();
break;
case4:
jiushuchuli();
break;
case5:
yuqichuli();
break;
case6:
gotoline5;
default:
cout<<"输入出错!
请重新选择:
"<gotoline4;
}
}
else
{
if(f==2)
{
line6:
cout<<"请选择要进行的操作:
1,图书查询2,借书3,还书4,图书总览5,退出"<cin>>flag;
system("CLS");
switch(flag)
{
case1:
tushuchaxun();
break;
case2:
jieshu();
break;
case3:
huanshu();
break;
case4:
tushuzonglan();
case5:
gotoline5;
default:
cout<<"输入出错!
请重新选择:
"<gotoline6;
}
}
else
{
if(f==3)
{
line5:
return0;
}
}
}
return0;
}
任务2:
模块一:
图书排序
/*#include
#include
#include
#include
usingnamespacestd;
structTushuku
{
charbianhao[15];
charshuming[25];
chardidian[15];
charjiehuan[15];
};*/
voidpaixu(Tushuku*a,intb)
{
//利用冒泡法排序
Tushukutemp;
intn=0;
while(n<=b-1)
{
inti=1;
for(;i{
if(strcmp(a[i].bianhao,a[i+1].bianhao)>0)
{
strcpy(temp.bianhao,a[i].bianhao);
strcpy(temp.shuming,a[i].shuming);
strcpy(temp.didian,a[i].didian);
strcpy(temp.jiehuan,a[i].jiehuan);
strcpy(a[i].bianhao,a[i+1].bianhao);
strcpy(a[i].shuming,a[i+1].shuming);
strcpy(a[i].didian,a[i+1].didian);
strcpy(a[i].jiehuan,a[i+1].jiehuan);
strcpy(a[i+1].bianhao,temp.bianhao);
strcpy(a[i+1].shuming,temp.shuming);
strcpy(a[i+1].didian,temp.didian);
strcpy(a[i+1].jiehuan,temp.jiehuan);
}
}
n++;
}
}
/*//创建一个包含"编号、书名、藏书地点、借出与否"的三个数据的结构体
intmian()
{
Tushukup1[50];//限定了图书库的最大库存50
ifstreaminfile("图书库.txt");
if(!
infile)
{
cout<<"文件打开失败!
";
return1;
}
intn=0;
//数据库的读入
while(!
infile.eof())
{
infile>>p1[n].bianhao>>p1[n].shuming>>p1[n].didian>>p1[n].jiehuan;
n++;//计数变量,同时记录图书库包含的图书数目
}
infile.close();
paixu(p1,n);
//文件对文本文件的输出
ofstreamoutfile("图书库.txt");
for(intj=0;j{
outfile<}
outfile.close();
return0;
}*/
模块二:
图书添加
/*#include
#include
#include
#include
usingnamespacestd;
//创建一个包含编号、书名、藏书地点、借出与否的三个数据的结构体
structTushuku
{
charbianhao[15];
charshuming[25];
chardidian[15];
charjiehuan[15];
};*/
//插入排序函数模块
inttianjiatushu()
{
inti=1;
cout<<"请输入要添加的图书数目"<cin>>i;//记录添加书的数目
Tushukup1[50];//限定了图书库的最大库存50
ifstreaminfile("图书库.txt");
if(!
infile)
{
cout<<"文件打开失败!
";
return1;
}
intn=0;
//数据库的读入
while(!
infile.eof())
{
infile>>p1[n].bianhao>>p1[n].shuming>>p1[n].didian>>p1[n].jiehuan;
n++;//计数变量,同时记录图书库包含的图书数目
}
//输入要添加的书目
for(intj=0;j
{
cout<<"请输入第"<cin>>p1[j+n-1].bianhao;
cout<<"请输入第"<cin>>p1[j+n-1].shuming;
cout<<"请输入第"<cin>>p1[j+n-1].didian;
cout<<"请输入第"<cin>>p1[j+n-1].jiehuan;
}
infile.close();
ofstreamoutfile("图书库.txt");
if(!
outfile)
{
cout<<"文件打开失败!
";
return1;
}
//此处添加排序函数模块
paixu(p1,n);
//文件对文本文件的输出
for(j=0;j
{
outfile<}
outfile.close();
return0;
}
模块三:
图书查询
/*#include
#include
#include
#include
usingnamespacestd;
//创建一个包含编号、书名、藏书地点、借出与否的三个数据的结构体
structTushuku
{
charbianhao[15];
charshuming[25];
chardidian[15];
charjiehuan[15];
};*/
//插入排序函数模块
inttianjiatushu()
{
inti=1;
cout<<"请输入要添加的图书数目"<cin>>i;//记录添加书的数目
Tushukup1[50];//限定了图书库的最大库存50
ifstreaminfile("图书库.txt");
if(!
infile)
{
cout<<"文件打开失败!
";
return1;
}
intn=0;
//数据库的读入
while(!
infile.eof())
{
infile>>p1[n].bianhao>>p1[n].shuming>>p1[n].didian>>p1[n].jiehuan;
n++;//计数变量,同时记录图书库包含的图书数目
}
//输入要添加的书目
for(intj=0;j
{
cout<<"请输入第"<cin>>p1[j+n-1].bianhao;
cout<<"请输入第"<cin>>p1[j+n-1].shuming;
cout<<"请输入第"<cin>>p1[j+n-1].didian;
cout<<"请输入第"<cin>>p1[j+n-1].jiehuan;
}
infile.close();
ofstreamoutfile("图书库.txt");
if(!
outfile)
{
cout<<"文件打开失败!
";
return1;
}
//此处添加排序函数模块
paixu(p1,n);
//文件对文本文件的输出
for(j=0;j
{
outfile<}
outfile.close();
return0;
}
模块四:
旧书处理
/*#include
#include
#include
#include
usingnamespacestd;
//创建一个包含编号、书名、藏书地点、借出与否的三个数据的结构体
structTushuku
{
charbianhao[15];
charshuming[25];
chardidian[15];
charjiehuan[15];
};*/
constY=1,N=0;
intjiushuchuli()
{
Tushukup2[50];//限定了图书库的最大库存50
ifstreaminfile("图书库.txt");
if(!
infile)
{
cout<<"文件打开失败!
";
return1;
}
intn=0;
//数据库的读入
while(!
infile.eof())
{
infile>>p2[n].bianhao>>p2[n].shuming>>p2[n].didian>>p2[n].jiehuan;
n++;//计数变量,同时记录图书库包含的图书数目
}
infile.close();
chartemp[20];
line3:
cout<<"请输入要处理的图书的编号:
"<cin>>temp;
inta=0;
for(inti=0;i{
if(!
strcmp(temp,p2[i].bianhao))
{
cout<break;
}
}
if(i==n)
{
cout<<"输入出错!
请重新输入"<gotoline3;
}
intb=0;
cout<<"是否要删除该项(1.Y/2.N)?
"<cin>>b;
ofstreamoutfile("图书库.txt");
if(!
outfile)
{
cout<<"文件打开失败!
";
return1;
}
if(b==1)
{
for(intj=0;j
{
outfile<}
j++;
for(;j{