图书馆程序设计报告书马澜.docx

上传人:b****1 文档编号:2871696 上传时间:2023-05-04 格式:DOCX 页数:53 大小:437.13KB
下载 相关 举报
图书馆程序设计报告书马澜.docx_第1页
第1页 / 共53页
图书馆程序设计报告书马澜.docx_第2页
第2页 / 共53页
图书馆程序设计报告书马澜.docx_第3页
第3页 / 共53页
图书馆程序设计报告书马澜.docx_第4页
第4页 / 共53页
图书馆程序设计报告书马澜.docx_第5页
第5页 / 共53页
图书馆程序设计报告书马澜.docx_第6页
第6页 / 共53页
图书馆程序设计报告书马澜.docx_第7页
第7页 / 共53页
图书馆程序设计报告书马澜.docx_第8页
第8页 / 共53页
图书馆程序设计报告书马澜.docx_第9页
第9页 / 共53页
图书馆程序设计报告书马澜.docx_第10页
第10页 / 共53页
图书馆程序设计报告书马澜.docx_第11页
第11页 / 共53页
图书馆程序设计报告书马澜.docx_第12页
第12页 / 共53页
图书馆程序设计报告书马澜.docx_第13页
第13页 / 共53页
图书馆程序设计报告书马澜.docx_第14页
第14页 / 共53页
图书馆程序设计报告书马澜.docx_第15页
第15页 / 共53页
图书馆程序设计报告书马澜.docx_第16页
第16页 / 共53页
图书馆程序设计报告书马澜.docx_第17页
第17页 / 共53页
图书馆程序设计报告书马澜.docx_第18页
第18页 / 共53页
图书馆程序设计报告书马澜.docx_第19页
第19页 / 共53页
图书馆程序设计报告书马澜.docx_第20页
第20页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

图书馆程序设计报告书马澜.docx

《图书馆程序设计报告书马澜.docx》由会员分享,可在线阅读,更多相关《图书馆程序设计报告书马澜.docx(53页珍藏版)》请在冰点文库上搜索。

图书馆程序设计报告书马澜.docx

图书馆程序设计报告书马澜

华科学院计算机科学与技术系

信息管理与信息系统专业

《程序设计综合课程设计》报告

(2010/2011学年第一学期)

 

学生姓名:

马澜

学生班级:

信息管理与信息系统092201H

学生学号:

200922040114

指导教师:

荀亚玲

 

2010年月日

目录

课程设计的目的..........................................3

课程设计实任务内容.......................................3

课程设计要求.............................................3

系统功能模块图...........................................3

详细设计说明.............................................4

部分函数流程图..........................................6

程序调试.................................................7

课程设计心得与体会......................................11

附录:

源程序代码........................................12

 

一、课程设计的目的

加深对C语言课程所学知识的理解,进一步巩固C语言算法规则.学会编制结构清晰.风格良好.数据结构适当的C程序,从而具备解决综合性问题的能力.

二、课程设计实任务内容:

图书馆

图书管理基本业务活动包括:

对一本书的采编入库、清除库存、借阅和归还等等。

试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。

三、课程设计要求

(1)每种书的登记内容至少包括书号、书名、著者、现存量和总库量等五项

(2)作为演示系统,不必使用文件,全部数据可以都内存存放。

但是由于上述四项基本业务活动都是通过书号(关键码)进行的,所以要用B树(2-3阶数)对书号建立索引,以获得高效率。

(3)系统应实现的操作及定义如下:

A、采编入库:

新购入一种书,经分类和确定书号之后登记到图书帐目中去。

如果这种书在帐中已有,则只将总库存量增加。

B、清除库存:

某种书已无保留价值,将它从图书帐目中注销。

C、借阅:

如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。

D、归还:

注销对借阅者的登记,改变该书的现存量。

E、显示:

用凹入表的形式显示B树。

 

四、系统功能模块图

五、详细设计说明

书籍结构体(Book)

①私有数据

charbnum[10];//书号

charbname[20];//书名

charbauthor[10];//作者

charrname[10];//借阅人

②公有数据及公有函数

inttag;//状态标记判断指标(已借/在架)

Book()//构造函数初始化信息

voidset_bnum(char*no)//设置书号

char*get_bnum()//获得书号

voidset_bname(char*n)//设置书名

char*get_bname()//获得书名

voidset_bauthor(char*a)//设置作者

char*get_bauthor()//获得作者姓名

voidset_tag(intt)//状态设置

voidset_rname(char*rn)//设置借阅人

char*get_rname()//获得借阅人姓名

voidshow_tag()//显示图书状态

voidcopy(Bookm)//Book结构体copy函数

书籍管理结构体(BookManage)

①私有数据及函数

Bookbooks[100];//定义Book书籍结构体数组对象,最大容量100本

intlength;//计数

voidsaveFile()//保存书籍文件

voidreadFile()//读取书籍文件

②公有数据及函数

BookManage()//构造函数,读取磁盘文件

~BookManage()//析构函数,保存磁盘文件

booladd(Bookbook)//添加图书资料

intbnu_search(char*bnu)//按书号查找书籍

intbna_search(char*bna)//按书名查找书籍

intbau_search(char*bau)//按作者查找书籍

intrn_search(char*rn)//按借阅人查找书籍

voidrevise(Bookbook,inti)//带参的修改书籍函数

voiddeleteBook(intindex)//带参的删除书籍资料函数

voidshow_book()//不带参的显示书籍函数

voidshow_book(inti)//带参的显示书籍函数

voidbr_book()//读者借、还书功能函数

boolin(inti)//判断图书是否在架函数

读者结构体(Reader)

①私有数据及函数

charrname[10];//读者姓名

charrclass[10];//班级

charrtel[10];//电话

②公有数据及函数

Reader()//构造函数,实现数据初始化

voidset_rname(char*rn)//设置读者姓名

char*get_rname()//获得读者姓名

voidset_rclass(char*rc)//设置班级

char*get_rclass()//获得班级

voidset_rtel(char*rt)//设置电话

char*get_rtel()//获得电话

voidcopy(Readerm)//读者Reader结构体copy函数

读者管理结构体(ReaderManage)

①私有数据及函数

Readerreaders[50];//定义读者结构体数组对象,最多50位

intlength;//计数

voidreadFile()//读取读者文件函数

voidsaveFile()//保存读者文件

②公有数据及函数

ReaderManage()//构造函数,读取读者文件

~ReaderManage()//析构函数,保存读者文件

voidadd_reader(Readerr)//添加读者用户函数

intsearch(char*rn)//按姓名查找读者函数

boolrevise(Readerreader,inti)//修改读者资料函数

voiddelete_reader(intindex)//删除读者函数

boollog_reader(Readerr)//登录时判断读者用户是否存在函数

voidreg_reader()//注册用户函数

voidshow_reader()//不带参的显示读者信息函数

voidshow_reader(inti)//带参的显示读者信息函数

菜单结构体(Menu)

①私有数据及函数

BookManagebm;//定义书籍管理结构体对象bm

ReaderManagerm;//定义读者管理结构体对象rm

Readerr;//定义读者结构体对象r

intchoice;//菜单序号选择

intkey;//管理员密码

②公有数据及函数

voidheader()//页眉

voidlog_menu()//主界面登录菜单

voidadmin_menu()//管理员管理菜单

voidreader_menu()//读者服务菜单

voidbsearch_menu()//读者查找书籍菜单

voidabsearch_menu()//管理员查找书籍菜单

voidreader_lr()//读者登录或注册菜单

voidlog_admin()//管理员登录

voidrn_search()//按书号查找函数

voidbnu_search()//按书号查找函数

voidbna_search()//按书名查找函数

voidbau_search()//按作者查找函数

voidaddBook()//新增书籍函数

voidreviseBook()//修改书籍函数

voiddelBook()//删除书籍函数

voidreviseReader()//修改读者用户函数

voiddelReader()//删除读者用户函数

主函数(main)

intmain()

六、部分函数流程图

①管理员登录

②读者登录

③读者借阅图书

④管理员或读者按书名查找图书

七、程序调试

各界面菜单显示

①主登录界面

 

②系统管理界面

③读者登录界面

④读者服务界面

⑤书籍查找界面

登录验证

①管理员登录

A.输入错误密码B.输入正确密码

②读者登录

A.

输入已注册姓名B.输入未注册姓名

注册新读者用户

 

添加新的图书资料

①输入已存在图书书号②输入未存在图书书号

修改已有图书资料

①输入不存在图书书号②输入已存在图书书号

 

删除已有图书资料

①输入不存在图书书号②输入已存在图书书号

查找已有图书资料(以按书号查找为例)

①输入不存在图书书号

②输入已存在图书书号

2.4.8显示所有图书资料

八、课程设计心得与体会

经过近三个星期的努力,前后修修改改,调试又调试,我的C++图书管理系统终于得以诞生!

在这个过程中,我发现自己还有很多很多知识都没有学好,看别人的例子的时候好像很简单,自己一上机操作就有问题。

调试的时候系统总是报错,还有很多警告,每添加一个函数,往往都要要调试很久,有时候仅仅只是少了一个大括号,却花上近半个小时才找到问题的瓶颈所在。

系统虽然完成了,也可以运行,一些基本的功能也能够实现,但我知道,还有很多的不足。

另外,我发现帮助文件真的很有用,每当我看别人例子看不懂的时候,都是去帮助文件搜索,如果里面的信息不够完整,再利用各大网站的搜索引擎来寻找答案,比如更改背景颜色的问题,之前试了很多次都不行,后来偶然发现一个MS-DOS命令大全,然后再去网上搜索color命令的使用语法,原来以为很复杂的代码,只需一句system(colorfd),问题就迎刃而解了。

以后还会有很多课程设计,一定要吸取这次的教训,知识不是看过就可以了,而是要把知识学透、学精,才能够真正做到为我所用。

九、附录

#include

#include

#include

#include

#include

#defineBookFile"book.txt"//将字符串BookFile替换原文件中的宏名称book

#defineReaderFile"reader.txt"

usingnamespacestd;

//**********读者结构体,用于存放读者基本信息**********

classReader

{

private:

charrname[10];

charrclass[10];

charrtel[10];

public:

Reader()//构造函数,实现数据初始化

{strcpy(rname,"");strcpy(rclass,"");strcpy(rtel,"");}

voidset_rname(char*rn)//设置读者姓名

{strcpy(rname,rn);}//将rn的字符复制给rname

char*get_rname()//获得读者姓名

{returnrname;}//返回rname的值

voidset_rclass(char*rc)//设置班级

{strcpy(rclass,rc);}

char*get_rclass()//获得班级

{returnrclass;}

voidset_rtel(char*rt)//设置电话

{strcpy(rtel,rt);}

char*get_rtel()//获得电话

{returnrtel;}

voidcopy(Readerm)//读者Reader结构体copy函数

{strcpy(rname,m.get_rname());strcpy(rclass,m.get_rclass());strcpy(rtel,m.get_rtel());}

};

//*********读者管理结构体,实现对读者用户的管理*********

classReaderManage

{

Readerreaders[50];//定义读者结构体数组对象,最多50位

intlength;

voidreadFile()//读取读者文件函数

{

ifstreamfread;//定义输入文件流对象fread

length=0;//计数

if(!

fread)

{cout<<"读取磁盘文件失败!

"<

(1);}

fread.open(ReaderFile,ios:

:

binary);//使文件流与文件关联,以二进制方式打开

inti=0;

while((fread.read((char*)&readers[i],sizeof(Reader))))//计算并返回所占字节数

i++;

length=i;

fread.close();//关闭磁盘文件

}

voidsaveFile()//保存读者文件

{

ofstreamfwrite;//定义输出文件流对象fwrite

if(!

fwrite)

{cout<<"文件保存失败!

\n";exit

(1);}

fwrite.open(ReaderFile,ios:

:

binary);//使文件流与文件关联,以二进制方式打开

fwrite.write((char*)readers,length*sizeof(Reader));//计算并返回所占字节数

fwrite.close();//关闭磁盘文件

}

public:

ReaderManage()//构造函数,读取读者文件

{readFile();}

~ReaderManage()//析构函数,保存读者文件

{saveFile();}

voidadd_reader(Readerr)//添加读者用户函数

{

if(length>=50)

{cout<<"对不起,注册人数已满!

\n";return;}

readers[length].copy(r);//调用读者结构体copy函数

length++;

}

intsearch(char*rn)//按姓名查找读者函数

{

for(inti=0;i

if(strcmp(readers[i].get_rname(),rn)==0)//判断是否相等

returni;

return-1;

}

boolrevise(Readerreader,inti)//修改读者资料函数

{

readers[i].copy(reader);//调用读者结构体cpoy函数

returntrue;

}

voiddelete_reader(intindex)//删除读者函数

{

for(inti=index;i

readers[i].copy(readers[i+1]);//用后面的地址覆盖前面的地址

length--;

}

boollog_reader(Readerr)//登录时判断读者用户是否存在函数

{

for(inti=0;i

if(strcmp(readers[i].get_rname(),r.get_rname())==0)

returntrue;

returnfalse;

}

voidreg_reader()//注册用户函数

{

charn[10];//姓名name

charc[10];//班级class

chart[10];//电话tel

Readerreader;

cout<<"\n\t请输入您的姓名:

";

cin>>n;

cout<<"\n\t请输入您的所在班级:

";

cin>>c;

cout<<"\n\t请输入您的联系电话:

";

cin>>t;

reader.set_rname(n);//调用读者结构体设置读者姓名函数

reader.set_rclass(c);//调用读者结构体设置读者班级函数

reader.set_rtel(t);//调用读者结构体设置联系电话函数

add_reader(reader);//调用读者结构体添加读者函数

cout<<"\n\t注册成功!

";

}

voidshow_reader()//不带参的显示读者信息函数

{

cout<<"\n**********************读****者****信****息****列****表**********************\n\n";

cout<<"姓名\t\t\t班级\t\t\t电话\n";

for(inti=0;i

{

cout<

cout<<"\t\t\t"<

cout<<"\t\t\t"<

}

}

voidshow_reader(inti)//带参的显示读者信息函数

{

cout<<"\n**********************读****者****信****息****列****表**********************\n\n";

cout<<"姓名\t\t\t班级\t\t\t电话\n";

cout<

cout<<"\t\t\t"<

cout<<"\t\t\t"<

}

};

//********书籍结构体,用于存放书籍基本信息********

classBook

{

private:

charbnum[10];//书号

charbname[20];//书名

charbauthor[10];//作者

charrname[10];//借阅人

public:

inttag;//状态标记判断指标(已借/在架)

Book()//构造函数初始化信息

{strcpy(bnum,"");strcpy(bname,"");strcpy(bauthor,"");strcpy(rname,"");tag=0;}

voidset_bnum(char*no)//设置书号

{strcpy(bnum,no);}//把字符串no中的字符复制到字符串bnum中

char*get_bnum()//获得书号

{returnbnum;}//返回值为bnum

voidset_bname(char*n)//设置书名

{strcpy(bname,n);}

char*get_bname()//获得书名

{returnbname;}

voidset_bauthor(char*a)//设置作者

{strcpy(bauthor,a);}

char*get_bauthor()//获得作者姓名

{returnbauthor;}

voidset_tag(intt)//状态设置

{tag=t;}

voidset_rname(char*rn)//设置借阅人

{strcpy(rname,rn);}

char*get_rname()//获得借阅人姓名

{returnrname;}

voidshow_tag()//显示图书状态

{

if(tag==1)

{cout<<"已借";}

else

{cout<<"在架";}

}

voidcopy(Bookm)//Book结构体copy函数

{

strcpy(bnum,m.get_bnum());//将获得书号函数里的返回值里的字符复制到bnum

strcpy(bname,m.get_bname());

strcpy(bauthor,m.get_bauthor());

tag=0;

}

};

//**********书籍管理结构体,实现管理书籍功能**********

classBookManage

{

private:

Bookbooks[100];//定义Book书籍结构体数组对象,最大容量100本

intlength;

voidsaveFile()//保存书籍文件

{

ofstreamfwrite;//定义输出文件流ofstream结构体对象fwrite

if(!

fwrite)

{cout<<"文件保存失败!

\n";exit

(1);}

fwrite.open(BookFile,ios:

:

binary);//使文件流与文件建立关联,以二进制方式打开

fwrite.write((char*)books,length*sizeof(Book));//计算并返回所占字节数

fwrite.close();//关闭磁盘文件

}

voidreadFile()//读取书籍文件

{

ifstreamfread;//定义输入文件流对象fread

length=0;

if(!

fread)

{cout<<"文件读取失败!

"<

(1);}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2