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

上传人:仙人指路1688 文档编号:2385920 上传时间:2023-02-17 格式:DOC 页数:29 大小:336KB
返回 下载 相关 举报
图书馆程序设计报告书马澜.doc_第1页
第1页 / 共29页
图书馆程序设计报告书马澜.doc_第2页
第2页 / 共29页
图书馆程序设计报告书马澜.doc_第3页
第3页 / 共29页
图书馆程序设计报告书马澜.doc_第4页
第4页 / 共29页
图书馆程序设计报告书马澜.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《图书馆程序设计报告书马澜.doc》由会员分享,可在线阅读,更多相关《图书馆程序设计报告书马澜.doc(29页珍藏版)》请在三一办公上搜索。

1、 华科学院计算机科学与技术系信息管理与信息系统专业程序设计综合课程设计报告 (2010/2011学年 第一学期)学生姓名: 马 澜 学生班级: 信息管理与信息系统092201H学生学号: 200922040114指导教师: 荀亚玲2010年 月 日目 录课程设计的目的. 3课程设计实任务内容.3课程设计要求.3 系统功能模块图.3 详细设计说明.4部分函数流程图 .6程序调试.7 课程设计心得与体会.11附录:源程序代码.12一、 课程设计的目的 加深对C语言课程所学知识的理解,进一步巩固C语言算法规则.学会编制结构清晰.风格良好.数据结构适当的C程序,从而具备解决综合性问题的能力.二、 课程

2、设计实任务内容:图书馆图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。三、 课程设计要求(1)每种书的登记内容至少包括书号、书名、著者、现存量和总库量等五项(2)作为演示系统,不必使用文件,全部数据可以都内存存放。但是由于上述四项基本业务活动都是通过书号(关键码)进行的,所以要用B树(2-3阶数)对书号建立索引,以获得高效率。(3)系统应实现的操作及定义如下:A、采编入库:新购入一种书,经分类和确定书号之后登记到图书帐目中去。如果这种书在帐中已有,则只将总库存量增加。B、清除库存:某种书已无保留价值,将它从图书

3、帐目中注销。C、借阅:如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。D、归还:注销对借阅者的登记,改变该书的现存量。E、显示:用凹入表的形式显示B树。四、 系统功能模块图五、 详细设计说明书籍结构体(Book)私有数据 char bnum10; /书号 char bname20; /书名 char bauthor10; /作者 char rname10; /借阅人公有数据及公有函数 int tag; /状态标记判断指标(已借/在架) Book() /构造函数初始化信息 void set_bnum(char *no) /设置书号 char *get_bnum() /获得书

4、号 void set_bname(char *n) /设置书名 char *get_bname() /获得书名 void set_bauthor(char *a) /设置作者 char * get_bauthor() /获得作者姓名 void set_tag(int t) /状态设置 void set_rname(char *rn) /设置借阅人 char *get_rname() /获得借阅人姓名 void show_tag() /显示图书状态 void copy(Book m) /Book结构体copy函数 书籍管理结构体(BookManage)私有数据及函数 Book books100;

5、 /定义Book书籍结构体数组对象,最大容量100本int length; /计数void saveFile() /保存书籍文件void readFile() /读取书籍文件 公有数据及函数 BookManage() /构造函数,读取磁盘文件 BookManage() /析构函数,保存磁盘文件 bool add(Book book) /添加图书资料int bnu_search(char *bnu) /按书号查找书籍 int bna_search(char *bna) /按书名查找书籍 int bau_search(char *bau) /按作者查找书籍 int rn_search(char *

6、rn) /按借阅人查找书籍 void revise(Book book,int i)/带参的修改书籍函数 void deleteBook(int index)/带参的删除书籍资料函数void show_book()/不带参的显示书籍函数 void show_book(int i)/带参的显示书籍函数 void br_book()/读者借、还书功能函数 bool in(int i) /判断图书是否在架函数 读者结构体(Reader)私有数据及函数 char rname10; /读者姓名 char rclass10; /班级 char rtel10; /电话公有数据及函数 Reader() /构造

7、函数,实现数据初始化 void set_rname(char *rn) /设置读者姓名 char * get_rname() /获得读者姓名 void set_rclass(char *rc) /设置班级 char *get_rclass() /获得班级 void set_rtel(char *rt) /设置电话 char *get_rtel() /获得电话 void copy(Reader m) /读者Reader结构体copy函数读者管理结构体(ReaderManage)私有数据及函数Reader readers50; /定义读者结构体数组对象,最多50位int length; /计数 v

8、oid readFile() /读取读者文件函数void saveFile() /保存读者文件公有数据及函数 ReaderManage() /构造函数,读取读者文件ReaderManage() /析构函数,保存读者文件 void add_reader(Reader r) /添加读者用户函数int search(char *rn) /按姓名查找读者函数bool revise(Reader reader,int i) /修改读者资料函数 void delete_reader(int index) /删除读者函数 bool log_reader(Reader r) /登录时判断读者用户是否存在函数

9、void reg_reader() /注册用户函数void show_reader() /不带参的显示读者信息函数 void show_reader(int i) /带参的显示读者信息函数菜单结构体(Menu)私有数据及函数BookManage bm; /定义书籍管理结构体对象bmReaderManage rm; /定义读者管理结构体对象rmReader r; /定义读者结构体对象rint choice; /菜单序号选择 int key; /管理员密码公有数据及函数void header() /页眉void log_menu() /主界面登录菜单void admin_menu() /管理员管理

10、菜单void reader_menu() /读者服务菜单void bsearch_menu() /读者查找书籍菜单 void absearch_menu() /管理员查找书籍菜单 void reader_lr() /读者登录或注册菜单void log_admin() /管理员登录void rn_search() /按书号查找函数 void bnu_search() /按书号查找函数 void bna_search() /按书名查找函数 void bau_search() /按作者查找函数 void addBook() /新增书籍函数void reviseBook() /修改书籍函数 void

11、delBook() /删除书籍函数 void reviseReader()/修改读者用户函数 void delReader() /删除读者用户函数 主函数(main) int main()六、 部分函数流程图 管理员登录 读者登录 读者借阅图书 管理员或读者按书名查找图书 七、 程序调试各界面菜单显示主登录界面 系统管理界面读者登录界面读者服务界面书籍查找界面 登录验证管理员登录A. 输入错误密码 B.输入正确密码 读者登录A. 输入已注册姓名 B.输入未注册姓名 注册新读者用户 添加新的图书资料输入已存在图书书号 输入未存在图书书号 修改已有图书资料输入不存在图书书号 输入已存在图书书号删除

12、已有图书资料输入不存在图书书号 输入已存在图书书号 查找已有图书资料(以按书号查找为例)输入不存在图书书号 输入已存在图书书号 2.4.8显示所有图书资料八、 课程设计心得与体会经过近三个星期的努力,前后修修改改,调试又调试,我的C+图书管理系统终于得以诞生!在这个过程中,我发现自己还有很多很多知识都没有学好,看别人的例子的时候好像很简单,自己一上机操作就有问题。调试的时候系统总是报错,还有很多警告,每添加一个函数,往往都要要调试很久,有时候仅仅只是少了一个大括号,却花上近半个小时才找到问题的瓶颈所在。系统虽然完成了,也可以运行,一些基本的功能也能够实现,但我知道,还有很多的不足。另外,我发现

13、帮助文件真的很有用,每当我看别人例子看不懂的时候,都是去帮助文件搜索,如果里面的信息不够完整,再利用各大网站的搜索引擎来寻找答案,比如更改背景颜色的问题,之前试了很多次都不行,后来偶然发现一个MS-DOS命令大全,然后再去网上搜索color命令的使用语法,原来以为很复杂的代码,只需一句system(color fd),问题就迎刃而解了。以后还会有很多课程设计,一定要吸取这次的教训,知识不是看过就可以了,而是要把知识学透、学精,才能够真正做到为我所用。九、 附录#include #include #include #include #include #define BookFile book.t

14、xt /将字符串BookFile替换原文件中的宏名称book#define ReaderFile reader.txtusing namespace std;/*读者结构体,用于存放读者基本信息*class Reader private: char rname10; char rclass10; char rtel10;public: Reader() /构造函数,实现数据初始化 strcpy(rname,);strcpy(rclass,);strcpy(rtel,); void set_rname(char *rn) /设置读者姓名 strcpy(rname,rn); /将rn的字符复制给r

15、name char * get_rname() /获得读者姓名 return rname; /返回rname的值 void set_rclass(char *rc) /设置班级strcpy(rclass,rc); char *get_rclass() /获得班级return rclass; void set_rtel(char *rt) /设置电话strcpy(rtel,rt); char *get_rtel() /获得电话 return rtel; void copy(Reader m) /读者Reader结构体copy函数 strcpy(rname,m.get_rname();strcpy

16、(rclass,m.get_rclass();strcpy(rtel,m.get_rtel();/*读者管理结构体,实现对读者用户的管理*class ReaderManage Reader readers50; /定义读者结构体数组对象,最多50位int length; void readFile() /读取读者文件函数ifstream fread; /定义输入文件流对象fread length=0; /计数 if(!fread)cout读取磁盘文件失败!endl;exit(1); fread.open(ReaderFile,ios:binary);/使文件流与文件关联,以二进制方式打开int

17、 i=0;while(fread.read(char *)&readersi,sizeof(Reader)/计算并返回所占字节数i+; length=i; fread.close();/关闭磁盘文件void saveFile() /保存读者文件ofstream fwrite; /定义输出文件流对象fwrite if(!fwrite)cout=50) cout对不起,注册人数已满!n;return ; readerslength.copy(r); /调用读者结构体copy函数 length+;int search(char *rn) /按姓名查找读者函数for(int i=0;ilength;i

18、+)if(strcmp(readersi.get_rname(),rn)=0)/判断是否相等return i; return -1; bool revise(Reader reader,int i) /修改读者资料函数 readersi.copy(reader); /调用读者结构体cpoy函数return true;void delete_reader(int index) /删除读者函数 for(int i=index;ilength-1;i+)readersi.copy(readersi+1); /用后面的地址覆盖前面的地址 length-;bool log_reader(Reader r

19、) /登录时判断读者用户是否存在函数 for(int i=0;ilength;i+) if(strcmp(readersi.get_rname(),r.get_rname()=0)return true;return false; void reg_reader() /注册用户函数char n10; /姓名namechar c10; /班级classchar t10; /电话tel Reader reader; coutn; coutc; coutt; reader.set_rname(n); /调用读者结构体设置读者姓名函数 reader.set_rclass(c); /调用读者结构体设置读

20、者班级函数 reader.set_rtel(t); /调用读者结构体设置联系电话函数 add_reader(reader); /调用读者结构体添加读者函数coutnt注册成功!;void show_reader() /不带参的显示读者信息函数 coutn *读*者*信*息*列*表*nn; cout姓名ttt班级ttt电话n; for(int i=0;ilength;i+) coutreadersi.get_rname();couttttreadersi.get_rclass();couttttreadersi.get_rtel()n; void show_reader(int i) /带参的显

21、示读者信息函数 coutn *读*者*信*息*列*表*nn; cout姓名ttt班级ttt电话n; coutreadersi.get_rname(); couttttreadersi.get_rclass(); couttttreadersi.get_rtel()n; ; /*书籍结构体,用于存放书籍基本信息*class Bookprivate: char bnum10; /书号 char bname20; /书名char bauthor10; /作者char rname10; /借阅人public:int tag; /状态标记判断指标(已借/在架)Book() /构造函数初始化信息 strc

22、py(bnum,);strcpy(bname,);strcpy(bauthor,);strcpy(rname,);tag=0; void set_bnum(char *no) /设置书号 strcpy(bnum,no); /把字符串no中的字符复制到字符串bnum中 char *get_bnum() /获得书号 return bnum; /返回值为bnum void set_bname(char *n) /设置书名 strcpy(bname,n); char *get_bname() /获得书名 return bname; void set_bauthor(char *a) /设置作者 str

23、cpy(bauthor,a); char * get_bauthor() /获得作者姓名 return bauthor; void set_tag(int t) /状态设置 tag=t; void set_rname(char *rn) /设置借阅人 strcpy(rname,rn); char *get_rname() /获得借阅人姓名 return rname; void show_tag() /显示图书状态 if(tag=1) cout已借; else cout在架; void copy(Book m) /Book结构体copy函数 strcpy(bnum,m.get_bnum(); /

24、将获得书号函数里的返回值里的字符复制到bnum strcpy(bname,m.get_bname(); strcpy(bauthor,m.get_bauthor(); tag=0; ;/*书籍管理结构体,实现管理书籍功能*class BookManageprivate: Book books100; /定义Book书籍结构体数组对象,最大容量100本int length; void saveFile() /保存书籍文件ofstream fwrite; /定义输出文件流ofstream结构体对象fwriteif(!fwrite)cout文件保存失败!n; exit(1); fwrite.open

25、(BookFile,ios:binary);/使文件流与文件建立关联,以二进制方式打开fwrite.write(char *)books,length*sizeof(Book); /计算并返回所占字节数 fwrite.close(); /关闭磁盘文件void readFile() /读取书籍文件 ifstream fread; /定义输入文件流对象fread length=0; if(!fread)cout文件读取失败!=100) cout对不起,储存已满,您无法继续添加!n; return -1; else bookslength.copy(book); /调用书籍结构体copy函数 len

26、gth+; return (length-1);int bnu_search(char *bnu) /按书号查找书籍 for(int i=0;ilength;i+) if(strcmp(booksi.get_bnum(),bnu)=0) /字符串比较,判断是否相等 return i; return -1; int bna_search(char *bna) /按书名查找书籍 for(int i=0;ilength;i+) if(strcmp(booksi.get_bname(),bna)=0) /判断 return i; return -1; int bau_search(char *bau)

27、 /按作者查找书籍 for(int i=0;ilength;i+) if(strcmp(booksi.get_bauthor(),bau)=0)/判断 return i; return -1; int rn_search(char *rn) /按借阅人查找书籍 for(int i=0;ilength;i+) if(strcmp(booksi.get_rname(),rn)=0)/判断 return i; return -1; void revise(Book book,int i)/带参的修改书籍函数 booksi.copy(book); /调用Book结构体copy函数void delete

28、Book(int index)/带参的删除书籍资料函数 for(int i=index;ilength-1;i+) booksi.copy(booksi+1);/用后面的地址将当前的地址覆盖 length-; void show_book()/不带参的显示书籍函数 cout *书*籍*信*息*列*表*nn; cout书号; cout.width(10); cout书名; cout.width(20); cout作者; cout.width(10); cout状态; cout.width(10); cout借阅人n; for(int i=0;ilength;i+) coutbooksi.get_

29、bnum(); cout.width(10); coutbooksi.get_bname(); cout.width(20); coutbooksi.get_bauthor(); cout.width(10); booksi.show_tag(); cout.width(10); coutbooksi.get_rname()n; void show_book(int i)/带参的显示书籍函数 cout *书*籍*信*息*列*表*nn; cout书号; cout.width(10); cout书名; cout.width(20); cout作者; cout.width(10); cout状态;

30、cout.width(10); cout借阅人n; coutbooksi.get_bnum(); cout.width(10); coutbooksi.get_bname(); cout.width(20); coutbooksi.get_bauthor(); cout.width(10); booksi.show_tag(); cout.width(10); coutbooksi.get_rname()sh; int index=bnu_search(sh); /定义一个变量等于查找到的书号 if(index=0) if(booksindex.tag=1) /已借 a=1; if(booksindex.tag=0) /在架 a=2; sw

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号