欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C课程报告图书管理系统Word文件下载.docx

    • 资源ID:5744747       资源大小:342.72KB        全文页数:36页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C课程报告图书管理系统Word文件下载.docx

    1、 输入读者的编号, 所借图书的书号, 先判断姓名是否在文件”reader.dat” 中, 若有则将书号存入一张借书卡上( 注: 初始时借书卡的信息都为零, 借书后借书卡的信息改为所借书的书号), 并修改文件”reader.dat”的相应内容, 同时修改文件”book.dat”中此书的现存量. 若”reader.dat”无此姓名, 则应提示错误(3)还书管理: 输入读者的编号, 所还图书的书号, 将借书卡的信息置为零, 并修改文件”reader.dat”的相应内容, 同时修改文件”book.dat”中此书的现存量. 四、输出全部图书信息和全部读者信息五、退出系统.2.2功能需求本系统有新书入库,

    2、查询,借书管理,还书管理,保存信息功能,显示读者信息和图书信息,可以按书号实现图书查询。2.3 性能需求在运行本程序时只要按照正确的操作方法就能正常运行,系统稳定性好,安全,可靠。3. 总体设计3.1功能模块设计根据分析整个系统主要划分为6个功能模块,分别执行要求中的功能。该系统新书入库,图书查询,借阅管理,输出图书信息,输出读者信息,退出系 仔细阅读系统要求,首先将此系统化分为如下模块1)新书入库模块:可用一个函数insert_new_book(char book_num,char book_name,int number)来实现。形参分别为:书名, 书号,以及有多少本书要入库,再根据要求将

    3、信息写入文件boot.dat中。又由于最开始要输入三本新书,故可以加一个初始化函数init_book(),但是初始化函数只执行一次,也就是在系统第一次运行的时候执行,此时可以根据判断是否存在boot.dat这个文件来决定是否执行初始化函数.2)查询模块:可用一个函数void find_book(char book_num)来实现。找到就输出此书全部信息,找不到就输出查找失败信息。3)借阅管理模块:(1)三个读者的信息可以在系统初始化时完成.即可用初始化函数init_reader()来实现对读者的初始化。因为读者初始化函数也只是在系统第一次运行的时候执行一次,故也可以根据是否存在reader.d

    4、at文件来确定是否执行此函数。(到现在可以发现在系统初始化函数里,至少已经需要调用两个初始化函数了)(2)借书登记模块:可用一个函数borrow_book(char reader_num,char book_num)来实现。在函数中要分别判断A 该读者的编号是否已经存在,如果不存在,则提示错误。B 该读者的借阅书是否已满(即最多只能借1本书)如果是,则提醒该用户先去还书C 输出的书号对应的书是否存在,如果不存在,则提醒读者不存在此书。借书过程完成后,则对读者信息里的借书信息写上所借书号,并修改库存量。(3)还书管理模块:可用一个函数return_book(char reader_num,cha

    5、r book_num)来实现。在实现此函数时要判断:A 该读者的姓名是否已经存在,如果不存在,则提示错误。B 该读者是否已经借阅此书。如果没有,则提示错误。C 还书过程完成后,则对读者信息里的借书信息清零,并修改库存量。(4)输出图书和读者信息:可分别用模块print_book()和print_reader()来实现直接从book.dat文件和reader.dat文件中读取信息并输出。(5)退出系统:可用一个函数exit()来实现。首先将信息保存到文件,释放动态创建的内存空间,再退出此程序。3.2系统设计方案(1) 菜单设计一个总菜单,1、新书入库2、图书查询3、借书登记、4还书登记5 、输出

    6、图书信息6、输出读者信息。(2) 数据结构建立结构体如下:图书类型:typedef struct bkchar book_num11; /* 书号采用10位编码最后1位为字符串结束标志(下同). */char book_name41; /* 书名规定不超过40个字母(20 个汉字) */ unsigned book_kc,book_xc; /* book_kc 代表库存量,book_xc代表现存量 */struct bk *next; book;读者类型:typedef struct rdchar reader_num11; /* 读者编号采用10位编码 */char reader_name1

    7、1; /* 读者姓名 */ char reader_book_num11; /*表示所借书号,初始值为“0”*/struct rk *next; reader;(3) 函数定义了15个函数,都实现以下功能:void Form_Insert_New_Book(); /*新书入库菜单*/void Form_Find_Book(); /*查询图书菜单 */void Form_Borrow_Book(); /*借书菜单*/void Form_Return_Book(); /*还书菜单*/void Find_Book(char *); /*查询图书*/void Insert_New_Book(char

    8、*,char * ,int ); /*新书入库,即在链表中插入一个新节点*/void Borrow_Book(char *,char *);/*借书,修改读者借阅信息和图书的现存信息*/void Return_Book(char *,char *);/*还书,修改读者借阅信息和图书的现存信息*/void print_book(struct bk *);/*输出全部图书信息*/void print_reader(struct rd *);/*输出全部读者信息*/void load_data();/*从文件中读取数据,链表头指针指向第一个节点*/void init_reader();/*第一次运行

    9、程序时对三个读者的初始化*/void init_book();/*第一次运行程序时对三本图书的初始化*/void save();/*将链表中的信息保存到文件中*/void M_Form()/*主菜单*/4. 详细设计4.1页面设计模块此系统界面采用图形和数字化菜单设计。主界面设计如下: 图书管理系统主系统请选择相应的数字执行相应的功能:0:退出此系统1:新书入库2:图书查询3:借书登记4:还书管理5:输出全部图书信息和读者信息各子界面如下:1新书入库界面:10:返回主菜单11:请输入新书名:请输入新书号:请输入新书数量: (注:新书入库成功后,程序返回到子界面1)2图书查询界面界面: 请选择相

    10、应的数字执行相应的功能:20:21:请输入需要查询的书号:图书查询完成后,返回到子界面2) 3、借书登记界面:30:31: 请输入读者编号: 请输入所借书号:借书过程完成后,返回到子界面3) 4、还书管理:40:41:还书登记还书过程完成后,返回到子界面4) 5、输出全部图书和读者信息:50:51:输出全部图书信息: 书号 书名: 库存量 现存量 52:输出全部读者信息: 读者编号 读者姓名 所借书号(注:输出图书和读者信息后,返回到子界面5) 4.2主要功能模块2、新书入库流程图 Y 根据数量修改库存 N book.dat中增加此新书,根据数量设置库存3、图书查询程序结构图: N Y4、借书

    11、登记程序结构流程图: N N Y NN 借书登记,修改book.dat 中的现存信息,reader.dat 中的借书卡信息 Y5、还书登记程序结构流程图: N Y 错误正确还书将读者信息借书卡清0修改book.dat现存信息N6、输出读者和图书信息图书4.3保存模块 可执行文件book.dat、reader.dat,都存储在c:文件夹下。5. 调试与测试5.1 调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。调试的任务是及时改正测试过程中发现的软件错误。具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找

    12、出哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原因,并设法改正。调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到问题、原因和解决方法如下面介绍。(1)程序在储存图书信息时只能一次存入,并且读取。再次添加新的程序时将会把原来添加的图书信息覆盖。原因时存储函数只能只写2进制文件不能追加填写2进制文件。(2)运行完程序一次有错误提醒原因是上次运行程序后没有关闭操作界面当点击编译时会有一个错误提示,解决方法:将上一次运行时的操作界面关闭。(3) 程序不能运行程序运行到添加新图书时自动提示错误需要调试,其原因是指针指向的位置出现错误

    13、导致程序传参错乱无法运行,解决办法:使程序进入调试状态在传参出现错误的位置一句一句查找传递的参数是否是你所希望的,如若不是就加以修正。5.2 测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代价。问题:借书管理模块中

    14、,当正确输入存在的读者编号和所借的书的编号,系统进行判断时,提示不存在此读者。解决办法及步骤:1、一个个输出所有的读者的编号,检查文件中是否有此读者,发现有。 2、既然有此读者,那么检查循环判断是否有此读者的语句发现没有错3、输出用于循环检查语句中的读者信息,发现乱码 4、仔细分析乱码的原因,最后发现是变量的类型错误,错将读者类型的结构体指针变量定义为了图书类型的指针变量。6. 结论课程设计顺利完成,任务书中所提出的要求全部实现,可以对图书信息进行查询、借阅及各种信息查找,并且将各种信息保存到文本文件中。不过这个程序还有些不够完善,例如:没有删除、修改功能。结束语通过这次课程设计,我对复杂程序

    15、的开发有了一个深刻的认识,使我进一步明白了模块化思想在程序开发中的重要性。两个星期的C语言综合课程设计实习终于顺利完成,在这期间真正的学到了一些经验,能够熟练的掌握一些C语言的编程思路,能够熟练的运用学到的函数,意识到编程并不是一件很简单的事情,知道学习编程必须亲自动手去做,只有自己做的程序才能找出错误,这样才能真正的达到目的。当程序编写完成而且能够正常运行心里非常高兴,虽然这对于一名程序员来说可能非常简单,但对我来说,如果要想在编程方面能够有所发展的话,我面临的困难还很多,要继续加强,努力,达到一种较高的水平。参考文献1 谭浩强. C语言程序设计(第三版). 北京:清华大学出版社 20052

    16、 高涛,陆丽娜. C语言设计. 西安:西安交通大学出版社 2007.3 林碧英. C语言程序设计教程. 北京:中国电力出版社 2006.4 王立武,陈艳,张宇,汪晔君.C语言程序设计.北京.清华大学出版社2009附录1用户手册点击运行,首先是进入菜单选择界面,可进行如图1所示。图1 进入菜单选择界面输入1回车进入新书入库功能系统,可进行如图2所示。图2 进入新书入库选择界面输入1回车输入新书功能系统,可进行如图3所示。图3 进入新书入库选择界面输入2回车进入图书查询功能系统,可进行如图4所示。图4 进入新书入库选择界面输入1回车开始时图书查询系统,可进行如图5所示。图5 进入图书查询界面输入3

    17、回车借书登记系统,可进行如图6所示图6 进入借书登记界面输入4回车还书管理系统,可进行如图7所示图7 进入图书查询界面输入5回车显示信息系统,可进行如图8所示图8输出信息界面附录2源程序#include math.hstring.htypedef struct bk char book_num11; char book_name41; int book_kc; int book_xc; struct bk * next; /* 图书信息*/typedef struct rd char reader_num11; char reader_name11; char reader_book_num1

    18、1; struct rd * next ;/*读者信息*/struct bk * h_book,* h_reader; /*全局变量,分别为指向图书信息链表和读者信息链表的头指针*/ char ch; printf(n 图书管理系统主窗口);n 0:退出系统n 1:新书入库n 2:图书查询n 3:借书登记n 4:还书管理n 5:输出全部信息do /*此循环用来保证选择正确的数字键执行相应的功能*/nn 请选择相应的功能代码: scanf(%c,&ch); fflush(stdin); /*用于清除键盘缓冲区中的多余字符*/ while(ch!=0&ch!12345 switch(ch) /*根

    19、据输入的字符进行选择执行相应的模块*/ case :exit(0); case Form_Insert_New_Book();break;Form_Find_Book();Form_Borrow_Book();Form_Return_Book();load_data();print_book(h_book);print_reader(h_reader);M_Form(); default:printf(errorn void Form_Find_Book()n 图书查询功能模块,请选择相应的功能代码:n 0:返回到主菜单n 1: do switch(ch) /*选择0,则返回到上一级目录,即主

    20、菜单*/ printf( n请输入需要需要查询的书的编号:%s,book_num); Find_Book(book_num); /*执行查询*/ Form_Find_Book();/*查询完毕后继续返回到查询窗口,执行下一个查询*/void Find_Book(char book_num) /*查询图书模块,根据图书编号查询*/ struct bk *p; p=h_book; while(p!=NULL&strcmp(p-book_num,book_num)!=0)p=p-next;/*此循环用于查找,如果在中间找到,则p就不可能到末尾指向空*/ if(p=NULL) printf(nt此编号

    21、对应的图书不存在! else printf(nt图书编号t图书名t库存量t现存量 n %10st %10st %dt %dtn,p-book_num,p-book_name,p-book_kc,p-book_xc); getch();void init_book() /*初始化图书模块*/ book ba3; FILE *fp; int i;n 系统即将进行初始化,图书初始化模块:n 请分别输入三本书的书号,书名,数量(以空格隔开):n for(i=0;i3;i+) /*输入3本图书进行初始化*/%s%s%d,bai.book_num,bai.book_name,&bai.book_kc);i+) bai.book_xc=bai.book_kc; /*开始时库存=现存*/ if(fp=fopen(book.dat,wb)=NULL)/*建立新文件book.dat准备写入数据*/不能建立图书文件,初始化失败!请重新启动系统! return;i+)/*将初始化的3本图书写入文件book.dat中*/ if(fwrite(&bai,sizeof(struct bk),1,fp)!=1)写数据错误! exit(0); fclose(fp);void init() int drive=DETECT,mode=0; initgraph(&drive,&mode, init_book


    注意事项

    本文(C课程报告图书管理系统Word文件下载.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开