《程序设计综合课程设计》报告图书馆管理系统_第1页
《程序设计综合课程设计》报告图书馆管理系统_第2页
《程序设计综合课程设计》报告图书馆管理系统_第3页
《程序设计综合课程设计》报告图书馆管理系统_第4页
《程序设计综合课程设计》报告图书馆管理系统_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 华科学院计算机系信息管理与信息系统专业程序设计综合课程设计报告 (2010/2011学年 第一学期)学生姓名: 学生班级: 信息管理092201h学生学号: 指导教师: 2011年1 月 10 日目 录第一章 课程设计的目的和要求11.1课程设计的目的11.2课程设计的要求2第二章 课程设计的任务内容32.1设计主要内容32.2系统功能模块图3第三章 详细设计说明43.1程序设计思路43.2详细设计说明5第四章 软件使用说明12第五章 课程设计心得与体会16附录1参考文献17附录2 源程序清单18第一章 课程设计的目的和要求1.1课程设计的目的在课堂上所讲授的内容,为了消化课堂所讲解的内容,

2、为了理解课堂内容的精髓,做出符合要求的自主练习,通过调试典型例题及习题积累调试c程序的经验,通过完成辅导教材中的编程习题,逐渐培养了编程能力和应用计算机解决实际问题的能力。c语言的设计在很多方面都可以用,不仅仅是在软件开发上,各类科研上都需要用到c语言的。具体到我们所在的信息管理与信息系统的方面的设计等。c语言不仅可以用来对应用程序进行开发,还可用来对信息系统程序进行设计。c 语言发展如此迅速, 而且成为最受欢迎的语言之一,主要因为其具有便捷的语言编辑方式、强大的功能以及广泛的应用领域。然而c语言其本身的复杂性也会给我们初学者带来学习上的困难。所以我们通过此次程序设计来复习巩固我们所学习过的相

3、关的知识,加深我们对c语言的认识和理解。首先,通过对此次“图书馆管理系统”的课题程序设计学会思考设计程序的方法和对程序设计的理解来加深对c语言的认识;其次,通过此次程序设计,在对实际程序的设计过程中理解c语言在程序设计时的思维模式,体会c语言的结构化方式和程序间层次条理,便于在今后的学习和实践中加强对使用程序的操作使用、维护以及调试;最后,通过此次实例的设计,培养了自己在设计程序是的思维方式和思考能力,提高了对c语言程序设计的理解能力,进而达到对c语言程序课程设计目的。 从理论走向实践,在整整半个月课程设计的日子里,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有

4、学到过的内容。通过这段时间的课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。加深对c语言课程所学知识的理解,进一步巩固c语言算法规则.学会了编制结构清晰、风格良好、数据结构适当的c语言程序,从而具备解决综合性问题的能力.首先 复习、巩固c语言的基础知识,进一步加深对c语言

5、的理解和掌握;其次课程设计为我们提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼了我们的分析解决实际问题的能力。提高了我们适应实际,实践编程的能力;针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。1.2课程设计的要求本次课程设计旨在培养学生运用c语言程序设计及相关课程的基础理论知识和技能解决相关的实际问题,进一步提高相关专业必要的基本技能、技巧方法和创新实践能力。通过此次课程设计提高了对c语言程序设计的理解和表达能力,进而达到在对c语言程序设计时进行正确的、系统的方法设计。通过课程设计的训练,应该了解在c语

6、言程序设计时的基本开发过程,掌握编写、调试和测试c语言程序的基本技巧,充分理解结构化程序设计的基本方法。能够正确的运用c语言设计出方法正确、结构严谨的程序。c语言程序设计的主要任务是遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试c语言程序及编写设计报告,以便达到解决综合实际问题能力的要求。依据教学大纲,从学生的实际水平出发,c语言课程设计的主要目的是培养学生综合运用c语言程序设计课程所学到的知识,编写c程序解决实际问题的能力,以及严谨的学习态度和良好的程序设计习惯。在编写的c语言程序应注意以下方面:在指导教师的辅导下针对所编写的c程序

7、,作出审核,是否存在语法错误、逻辑错误及运行错误,是否具有良好的可读性和可靠性,已达到符合题目要求、完成了其主要功能;针对提交的课程设计报告,考查程序设计的报告内容是否全面,观点是否正确,设计过程是否符合结构化程序设计方法的基本原则,层次是否清楚,语言是否通顺,各种图表是否规范等。c语言程序设计应在教师指导下由学生独立完成,在指导老师充分发挥主导作用的情况下,指导学生阅读相关参考资料,在难点和关键性问题上对学生进行启发、引导,是学生充分发挥主观能动性,以培养学生的独立设计能力和树立正确的设计思想。第二章 课程设计的任务内容2.1设计主要内容图书管理基本业务活动包括:对一本书的采编入库、清除库存

8、、借阅和归还等等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。(1)每种书的登记内容至少包括书号、书名、作者等(2)作为演示系统,不必使用文件,全部数据可以都内存存放。(3)系统应实现的操作及定义如下:a、采编入库:新购入一种书,经确定书号之后登记到图书帐目中去。如果这种书在帐中已有,则只将总库存量增加。b、清除库存:某种书已无保留价值,将它从图书帐目中注销。c、借阅:如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。d、归还:注销对借阅者的登记,改变该书的现存量。e、显示:用凹入表的形式显示b树。2.2系统功能模块图2-1系统功能模块图第三章 详细设计说明

9、3.1程序设计思路图书借阅系统的建立,需要进行用户需求调查与分析,以确定系统目标,提出解决问题的详细方案,这是系统建设的重要环节。要想使学生能够有效的借阅,功能上对系统的要求是全面的。因此对用户的需求可分为四个方面:一方面是图书管理人员对需要进行图书借阅的同学进行信息注册,获得借书;二方面是学生通过计算机进行图书浏览;三方面是学生通过计算机进行图书借阅;四方面是输出学生信息。 这四个方面形成了图书借阅的一个工作整体,利用计算机的自动化处理,可方便快捷地共享信息、交流信息,高效地协同工作。 在软硬件方面对系统的需求,软件要求易学,界面友好,容易掌握,可以很简单方便的进行图书借阅信息管理。硬件的配

10、置要求不能太高,这样可以很好的适应当前的学校图书馆的借阅。以下为程序设计总流程图。3-1图书馆管理流程图3.2详细设计说明3.2.1 添加图书 添加图书主要包括:为记录书本数量的变量,本系统设计的书本数量最大为100本,此处判断是否超出100本,如果超出100本书,输出:“对不起,储存已满,您无法继续添加!”;如果没有超出100本,调用书籍结构体copy函数,将要添加的书添加到books100中:books100中的书本数量加1,返回现有的书本数量。bookslength.copy(book); /调用书籍结构体copy函数,将要添加的书添加到books100中 length+; /books

11、100中的书本数量加1 return (length-1); /返回现有的书本数量3-2添加图书流程图3.2.2 修改图书修改书籍使用了void revisebook() /修改书籍函数定义变量来实现:存放修改书籍的书号,定义变量存放修改书籍的书号名,定义变量存放删除修改书籍的作者定义对象book,输入要修改书籍的书号,将要修改的书号对应于book中的值赋给index,若不存在则输出:对不起,您输入的书号不存在,请重新输入!跳转回去继续输入书号判断是否在馆,若该书目前处于状态,则可以继续操作!继续输入更改后的书名、作者。修改图书成功后输出:恭喜您!书籍资料修改成功!char numb10; /

12、定义变量存放修改书籍的书号char nameb20; /定义变量存放修改书籍的书号名char authorb10; /定义变量存放删除修改书籍的作者book book; /定义对象book3-3修改图书流程图3.2.3 删除图书 删除书籍包括:请输入要删除书籍的书号,将要删除的书号赋给变量numb.输入书号后输出:您确定要删除该书记录吗(y/n),若输入y,则输出:“删除成功!”若输入n,则输出:“删除取消!”书号不存在输出:对不起,系统没有该图书记录!;3-4删除图书流程图3.2.4查找图书有四种方式,分别是按借阅者名字查找,按书号查找,按书名查找,按作者查找。按借阅者名字查找函数,输入借阅

13、者的姓名,若没有找到则输出:“对不起,系统无您的借阅记录!”;按书号查找函数 ,输入要查找的书号,若没有找到则输出:“对不起,系统无该书籍记录!”;按书名查找函数 ,请输入您要查找的书名,如果不存在该书名则输出:对不起,系统无该书籍记录!;按作者查找函数,输入要查找的作者,如果没有找到该作者则输出:对不起,系统无该书籍记录!3-5查找图书流程图3.2.5 显示全部图书显示书籍包括显示:书号,书名,作者,状态,借阅人。cout书号;cout.width(10);cout书名;cout.width(20);cout作者;cout.width(10);cout状态;cout.width(10);co

14、ut借阅人n;3.2.6 修改读者修改读者用户可以实现:输入要修改读者用户的姓名,若没有该读者记录则输出:对不起,系统无该读者记录,重新输入请按1,返回请按0。否则输出:请输入更改后的读者姓名,请输入更改后的班级名称,请输入更改后的联系电话,是否真的修改该记录(y/n),输入y修改成功,否则操作取消。coutnamer;coutclassr;coutsh;int index=bnu_search(sh); /定义一个变量等于查找到的号 3-10借还书流程图第四章 软件使用说明各界面菜单显示 主登录界面4-1主登陆运行结果系统管理界面4-2管理员登陆运行结果读者登录界面4-3读者登陆运行结果读者

15、服务界面4-4读者服务运行结果书籍查找界面 登录验证4-5查找书籍运行结果 管理员登录a. 输入错误密码 b.输入正确密码 读者登录a. 输入已注册姓名 b.输入未注册姓名 注册新读者用户添加新的图书资料输入已存在图书书号 输入未存在图书 修改已有图书资料输入不存在图书书号 输入已存在图书书号 删除已有图书资料输入不存在图书书号 输入已存在图书书号 查找已有图书资料(以按书号查找为例)输入不存在图书书号 输入已存在图书书号2.4.8显示所有图书资料第五章 课程设计心得与体会经过此次程序设计的三周的努力,前后修修改改,和反复的调试,我的c语言设计的图书管理系统终于得以诞生!在这个过程中,我发现自

16、己还有很多很多知识都没有学好,调试的时候系统总是报错,还有很多警告,每添加一个函数,往往都要要调试很久,有时候仅仅只是少了一个大括号,却花上近半个小时才找到问题的瓶颈所在。系统虽然完成了,也可以运行,一些基本的功能也能够实现,但我知道,还有很多的不足。在对此次“图书馆管理程序”的课题程序设计中我学会思考设计程序的方法,加深了对c语言程序设计的理解,在对实际程序的设计过程中理解了c语言在程序设计时的思维模式,体会到了c语言的结构化方式和程序间层次条理。在此次程序设计的过程中我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的内容,加深了自己对c语言的学习和认识。

17、通过这段时间的课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识和技巧是远远不够的,只有把所学的理论知识与对应的实践相结合起来,从理论中得出结论,才算是真正的掌握了知识,才能提高自己的实际动手操作能力和独立思考的能力。在今后的学习和实践中我会继续加强对c语言程序的操作使用、维护以及调试,通过此次实例的设计,培养了自己在设计程序时一定的思维方式和思考能力,提高了自己对c语言程序设计的理解能力,达到了此次c语言程序设计课程目的和要求。在今后还会有许多课程设计,我一定会汲取此次的经验和教训,做到把知识应用于实践,是自己掌握的知识真正的学透、学精,做到为我所用。附录1参考文献1谭浩强c+程序设

18、计 清华大学出版社 ,20042孙辉 吴润秀c语言程序设计教程 人民邮电出版社 ,20043温秀梅c+语言程序设计教程与实验 清华大学出版社 ,20044梁冰c#程序开发范例宝典 人民邮电出版社 ,2009附录2 源程序清单 #include #include #include #include #include #define bookfile book.txt /将字符串bookfile替换原文件中的宏名称book#define readerfile reader.txtusing namespace std;/*读者结构体,用于存放读者基本信息*class reader private:

19、 char rname10; char rclass10; char rtel10;public: reader() /构造函数,实现数据初始化 strcpy(rname,);strcpy(rclass,);strcpy(rtel,); void set_rname(char *rn) /设置读者姓名 strcpy(rname,rn); /将rn的字符复制给rname char * get_rname() /获得读者姓名 return rname; /返回rname的值 void set_rclass(char *rc) /设置班级strcpy(rclass,rc); char *get_rc

20、lass() /获得班级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(rclass,m.get_rclass();strcpy(rtel,m.get_rtel();/*读者管理结构体,实现对读者用户的管理*class readermanage reader readers50; /定义读者结构体数组对象,

21、最多50位int length; void readfile() /读取读者文件函数ifstream fread; /定义输入文件流对象fread length=0; /计数 if(!fread)cout读取磁盘文件失败!endl;exit(1); fread.open(readerfile,ios:binary);/使文件流与文件关联,以二进制方式打开int i=0;while(fread.read(char *)&readersi,sizeof(reader)/计算并返回所占字节数i+; length=i; fread.close();/关闭磁盘文件void savefile() /保存读

22、者文件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+)if(strcmp(readersi.get_rname(),rn)=0)/判断是否相等return i; return -1; bool revise(reader reader,int i) /修改读者资料函数 readersi.

23、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) /登录时判断读者用户是否存在函数 for(int i=0;ilength;i+) if(strcmp(readersi.get_rname(),r.get_rname()=0)return true;return false; voi

24、d reg_reader() /注册用户函数char n10; /姓名namechar c10; /班级classchar t10; /电话tel reader reader; coutn; coutc; coutt; reader.set_rname(n); /调用读者结构体设置读者姓名函数 reader.set_rclass(c); /调用读者结构体设置读者班级函数 reader.set_rtel(t); /调用读者结构体设置联系电话函数 add_reader(reader); /调用读者结构体添加读者函数coutnt注册成功!;void show_reader() /不带参的显示读者信息

25、函数 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) /带参的显示读者信息函数 coutn *读*者*信*息*列*表*nn; cout姓名ttt班级ttt电话n; coutreadersi.get_rname(); couttttreadersi.get_rclass(); couttttreader

26、si.get_rtel()n; ; /*书籍结构体,用于存放书籍基本信息*class bookprivate: char bnum10; /书号 char bname20; /书名char bauthor10; /作者char rname10; /借阅人public:int tag; /状态标记判断指标(已借/在架)book() /构造函数初始化信息 strcpy(bnum,);strcpy(bname,);strcpy(bauthor,);strcpy(rname,);tag=0; void set_bnum(char *no) /设置书号 strcpy(bnum,no); /把字符串no中

27、的字符复制到字符串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) /设置作者 strcpy(bauthor,a); char * get_bauthor() /获得作者姓名 return bauthor; void set_tag(int t) /状态设置 tag=t; void set_rname(char *rn)

28、/设置借阅人 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(); /将获得书号函数里的返回值里的字符复制到bnum strcpy(bname,m.get_bname(); strcpy(bauthor,m.get_bauthor(); tag=0; ;/*书籍管理结构体,实现管理书籍功能*class bo

29、okmanageprivate: book books100; /定义book书籍结构体数组对象,最大容量100本int length; void savefile() /保存书籍文件ofstream fwrite; /定义输出文件流ofstream结构体对象fwriteif(!fwrite)cout文件保存失败!n; exit(1); fwrite.open(bookfile,ios:binary);/使文件流与文件建立关联,以二进制方式打开fwrite.write(char *)books,length*sizeof(book); /计算并返回所占字节数 fwrite.close(); /

30、关闭磁盘文件void readfile() /读取书籍文件 ifstream fread; /定义输入文件流对象fread length=0; if(!fread)cout文件读取失败!=100) cout对不起,储存已满,您无法继续添加!n; return -1; else bookslength.copy(book); /调用书籍结构体copy函数 length+; return (length-1);int bnu_search(char *bnu) /按书号查找书籍 for(int i=0;ilength;i+) if(strcmp(booksi.get_bnum(),bnu)=0)

31、/字符串比较,判断是否相等 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) /按作者查找书籍 for(int i=0;ilength;i+) if(strcmp(booksi.get_bauthor(),bau)=0)/判断 return i; return -1; int rn_search(char *rn

32、) /按借阅人查找书籍 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 deletebook(int index)/带参的删除书籍资料函数 for(int i=index;ilength-1;i+) booksi.copy(booksi+1);/用后面的地址将当前的地址覆盖 length-; void show_book

33、()/不带参的显示书籍函数 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_bnum(); cout.width(10); coutbooksi.get_bname(); cout.width(20); coutbooksi.get_bauthor(); cout.width(10); booksi.show_t

34、ag(); 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状态; cout.width(10); cout借阅人n; coutbooksi.get_bnum(); cout.width(10); coutbooksi.get_bname(); cout.width(20); coutbooksi.get

35、_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; switch(a) case 1: coutnt该书目前状态为n; coutchoi; cin.ignore(); /清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响 if(choi!=1&choi!=0) coutnt操作有误,请重新选择(0/1)!n; return; else if(choi=1) coutdz; cin.ignore(); int index1=reader.search(dz); if(index1=-1) coutnt对不起,系统无该读者记录,新用户请先注册!; return; else strcpy(dz,);/将读者姓名已空白代替 booksi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论