课程设计报告课程名称C语言课程设计课题名称图书借阅管理系统专业电气工程及其自动化班级0783学号200713010309姓名曾泽钦指导教师王颖2008年3月20日1课程设计报告目录一、课程设计任务书二、课程设计主文档1、总体设计方案2、课程设计题目3、内容提要4、关键字1)、程序模块组成2)、各个函数的功能5、主控模块和各子模块的设计框图1)、mian函数的下属子功能函数及其调用示意图2)、主控模块和部分子模块流程图6、源程序清单7、心得体会8、参考资料三、程序设计过程部分图片2C程序课程设计任务书图书借阅管理系统一、问题描述:本系统主要实现对图书馆图书信息的管理。本系统的主要功能是:图书借出、归还图书以及新书注册,旧书注销,图书信息查询等功能二、功能描述:1、用户可以通过选择相应的数字键进入相应的服务区域。2、在不同的区域,输入相关的信息,可以完成查询、增加、删减、借出、归还图书等功能。3、用户输入的信息不对时,系统自动给出提示:输入信息错误。此时,当前界面继续提示:请按任意键返回上一操作界面。以便用户重新操作。4、界面设计简约。三、算法提示:1、用简单的程序设计方法2、简单的数据类型四、测试数据:用户自由输入。五、其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。3课程设计主文档一、课程设计题目:图书借阅管理系统二、内容提要:本系统管理对象为图书。该系统是针对图书借出、图书归还、新书注册、旧书注销这几个主要环节而设计的。它能够帮助用户准确无误的管理图书,提工作效率。三、关键字:图书管理系统四、总体设计方案:1、用户可以通过输入相应的数字进入相应的服务区域。2、用户进入每个区域时,屏幕上会给出相应提示,用户只需正确输入相关信息即可。3、设计的系统完全适合图书管理者。4、用户输入的信息不对时,系统自动给提示,用户重新操作。模块组成及各个函数的功能:4(1)借出函数book_out()首先是调用找书的函数,找到相匹配的项目之后(输入书的号码),要求输入读者的借书证的号码和该读者想要节约的天数.(2)归还函数book_in();输入书号,然后将借书的读者信息归零,时间归零,显示此时该书的所在状态,包括书号,书名,作者,借出了存储中的多少.(3)添加函数book_add()找到书未找到输入借阅证号码借书成功调用查找的函数输入要借的书的号码返回主菜单输入所还书的号码调用查找函数找到书未找到显示该书所在状态自动将信息恢复返回主菜单5实现增加新书的操作,要求输入书的号码,书名.作者,该本书的数量,存储之后,返回主菜单.(4)删除函数book_del();输入书的号码后找到该书,然后进行删除,释放存储空间(5)寻找图书search_book()在数组中找到图书号匹配的记录,显示其信息并返回数组下标,如果找不到相应记录则提示错误并返回。(7)返回确认return_confirm()返回前请求确认的函数打印page_title()打印页眉的函数五、主控模块和各子模块的设计框图1)、mian函数的下属子功能函数及其调用示意图62)、主控模块和部分子模块流程图return_confirm()search_book()book_del()book_add()book_in()book_out()main()Voidout()del()add()in()out()主菜单7开始菜单界面主功能退出系统借阅图书归还图书注册新书注销旧书输入图书序号显示图书信息输入借书蒸序号输入可借天数输入序列号输入借书蒸序号输入新书信息输入旧书信息退出结束!8六、源程序清单#includestdio.h#includestdlib.h#includeconio.hstructBOOK{intid,usr[10],total,store,days[10];charname[31],author[21];}books[100];/*上面是结构体的定义,用于存放书籍及借书的信息。*/voidpage_title(char*menu_item){clrscr();printf(图书管理系统\n\n-%s-\n\n,menu_item);}/*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/voidreturn_confirm(void){printf(\n按任意键返回……\n);getch();}/*上面是返回前请求确认的函数,以便在返回前观察结果*/intsearch_book(void){intn,i;printf(请输入图书序号:);scanf(%d,&i);for(n=0;n100;n++){if(books[n].id==i){9printf(书名:%s\n,books[n].name);printf(作者:%s\n,books[n].author);printf(存数:%dof,books[n].store);printf(%d\n,books[n].total);returnn;}}printf(\n输入错误或无效图书序号.\n);return-1;}/*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返回数组下标,如果找不到相应记录则提示错误并返回-1。*/voidbook_out(void){intn,s,l,d;page_title(借阅图书);if((n=search_book())!=-1&&books[n].store0){printf(请输入借书证序号:);scanf(%d,&s);printf(请输入可借天数:);scanf(%d,&d);for(l=0;l10;l++){if(books[n].usr[l]==0){books[n].usr[l]=s;books[n].days[l]=d;break;}}books[n].store--;}if(n!=-1&&books[n].store==0)printf(此书已经全部借出.\n);return_confirm();}/*上面是借书的函数,首先调用找书函数*/10voidbook_in(void){intn,s,l;page_title(归还图书);if((n=search_book())!=-1&&books[n].storebooks[n].total){printf(借阅者图书证列表:\n);for(l=0;l10;l++)if(books[n].usr[l]!=0)printf([%d]-%d天\n,books[n].usr[l],books[n].days[l]);printf(请输入借书证序号:);scanf(%d,&s);for(l=0;l10;l++){if(books[n].usr[l]==s){books[n].usr[l]=0;books[n].days[l]=0;break;}}books[n].store++;}if(n!=-1&&books[n].store==books[n].total)printf(全部入藏.\n);return_confirm();}voidbook_add(void){intn;page_title(注册新书);for(n=0;n100;n++)if(books[n].id==0)break;printf(序号:);scanf(%d,&books[n].id);printf(书名:);scanf(%s,&books[n].name);11printf(作者:);scanf(%s,&books[n].author);printf(数量:);scanf(%d,&books[n].total);books[n].store=books[n].total;return_confirm();}voidbook_del(void){intn;page_title(注销旧书);if((n=search_book())!=-1)books[n].id=0;printf(该书已注销.\n);return_confirm();}voidmain(void){menu:page_title(操作选单);printf(请用数字键选择操作\n\n);printf(1借阅图书\n2归还图书\n\n);printf(3注册新书\n4注销旧书\n\n);printf(\n0退出\n);switch(getch()){case'1':book_out();break;case'2':book_in();break;case'3':book_add();break;case'4':book_del();break;case'0':exit(0);}gotomenu;}12七、心得体会在本期C语言课程设计当中,我所选择的是设计一个图书管理系统,这对我来说是一次尝试与创新的过程,也可以说是一个挑战的过程,毕竟以前没有作过,缺少经验。现在利用自己学到的知识设计并制作一个图书管理系统,这本身就是一个知识转化为生产力的过程,所以我很兴奋,也投入了很高的热情与努力。虽然有的同学做得不很成功,但也在默默的给我加油。在具体的设计与实施中,我看到并感受到了一个管理系统从无到有的过程,对具体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。在设计中我基本能按照规范的方法和步骤进行,首先对现有的系统进行调查,并查阅有关资料,最后确定设计方案,然后设计并制作,实施过程中我深刻的认识到认真执行管理系统软件标准的重要性,我们由于对管理系统软件相关的标准和规范不太了解,缺少行为操作准则,所以在设计中手法比较生硬,主与次也没能很好把握住,这些方面通过这次我要加强了解。在这次课程设计中,我们被分配以小组为单位去完成图书管理系统的设计与制作,所以小组内的分工和相互协调很重要,大家可以在分工中扬长避短,个及所长,这样可以很好的提高大家的积极性,和合作意识,并有效的缩短开发时间,但我们在这方面做的还不够,缺乏人员管理与沟通,导致人力资源浪费,可以说是不足之处,且迫切的需要思考和改进,这一点必须指明。这在以后的工作与学习中将会非常重要。以下是课程设计中的错误总结和分析:1.变量是程序中不可缺少的一部分,要谨记先定义后使用。2.输入输出类型要一致。3.“;”是C语言的语句结束语,不可省略。4.{}的互相匹配。5.调用函数必先声明。6.形式参数和实际参数必须个数相等,类型相同。最后,谢谢王颖老师在C语言学习及课程设计中对我的指导!八、参考资料C程序设计(第三版)清华大学出版社C语言程序设计案例分析人民邮电出版社C语言程序设计北京邮电大学出版社C语言实例解析精粹人民邮电出版社13附录:程序设计过程部分图片一、主菜单界面14二、WIN-TC源代码界面(一)15三、WIN-TC源代码界面(二)