ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:301.31KB ,
资源ID:11218381      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11218381.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(图书信息管理课设报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

图书信息管理课设报告.docx

1、图书信息管理课设报告*实践教学* 兰州理工大学计算机与通信学院2011年春季学期 C程序设计 课程设计题 目:图书信息管理系统专业班级: 计算机1班 姓 名: ZWZ 学 号: 10240136 指导教师: 周小健 成 绩:_摘 要图书信息管理系统是一个图书馆不可缺少的管理工具,它能够实现图书的查询、借阅、管理、归还等操作。 使用计算机对图书信息进行管理,具有手工管理所无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书管理的效率。本系统利用C语言开发,运用相对比较复杂的函数实现了图书信息管理。通过本系统的开发,我们熟悉了面向过程的程

2、序设计的基本方法和步骤,对于C语言有了更深入的理解,并且较好地掌握了C语言的编程方法和技术。关键词:C语言;图书;信息管理系统一、需求分析经过简单的调研分析,我确定图书信息管理系统主要包括查阅图书、借阅图书、图书管理系统、会员管理系统等一系列的功能。1、查阅图书系统(1)读者可以通过书名来查找有需要的书籍。(2)读者可以通过作者来查找有需要的书籍。2、借阅图书系统读者输入卡号可以借阅有需要的书籍。3、图书管理系统(1)通过输入图书的书号、书名、作者增加图书。(2)直接输入图书的书号删除相关图书。(3)发现图书相关信息有问题可通过书号进行修改。(4)可以查看系统中一共有多少本书。4、会员管理系统

3、(1)读者可以通过输入姓名、性别等相关信息申请新的会员卡。(2)如有遗失、损坏会员卡通过输入卡号直接删除该会员卡。(3)进入会员系统查看借书统计的相关信息。(4)管理员进入系统可以查看会员总数、会员相关的卡号等信息,便于管理。二、总体设计根据需求分析,为了实现系统功能,我确定图书信息管理系统总体模块如图1所示。图1 图书信息管理系统总体模块图三、详细设计3.1 数据定义3.1.1图书的数据结构struct book int booknum; /书号char bookname20; /书名char bookcreat10; /书的作者int turefalse; /用于借书和还书模块判断一本书是

4、否借出的条件book1000; /定义一个比较大的1000本书3.1.2会员卡的数据类型struct car int carnum; /卡号 char studentsex4; /性别 char studentname20; /姓名 int studentclass; /所在班级 car1000; /定义一千个会员3.1.3定义学生类型,用于存放借出的书籍 struct student int carnum; /卡号 char lendbook10; /借出的书数 student1000; /定义一千个学生3.2 函数设计3.2.1 main() 主函数模块主函数是程序入口,采用模块化设计。首

5、先在主程序中打印欢迎界面,定义一些必要变量,作一无限循环程序,循环体为一开关语句,该语句设置一个断点,其条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的功能函数,同时设置一个断点,当返回值为一定条件时结束程序。3.2.2 chabook() 查询图书函数模块在这个模块中又分为两个子模块:按书名查找模块和按作者查找。按书名查找模块:在这个子函数里使用指向文件的指针变量,定义指针变量fp,fp指向文件名为“book.txt”的首地址,如果不存在,则自动建立。从键盘输入书名,依次移动指针地址,直到找到输入的文件名,找到后显示图书信息,再判断状态值是否为1,真的话就显示“此书现在无人借阅”

6、,假就显示“这本书已经有人借出!”,关闭文件,然后按任意键返回。如果找到最后一个地址仍没找到,就显示“没有你要查询的书籍!”。关闭文件。3.2.3 lendbook() 借书函数模块定义文件指针变量fp,fp2。fp指向“car.txt(会员卡记录文件)”首地址,从键盘输入卡号,与文件中保存的依次比较,如果一致,就找到这个地址,并赋给变量i。关闭这个文件。开始借书,输入要借的书,这时指针地址指向“book.txt”,以只读的方式打开,依次找与输入书名一致的图书,如果找到,又分两种情况:状态值为1,则把书借出,把此书的状态值改为0.否则,显示“书已被借出”。如果找不到,显示“不存在这样的书”,关

7、闭文件。返回。3.2.4 huanbook() 还书函数模块同样定义两个指针变量:fp,fp2。先从键盘输入要还图书者会员卡卡号,然后是还书人名字,与文件中的相对照,都一致就进入还书过程,删除掉所还图书的借书记录,将还的书的原来状态设为无人借阅的。如果没找到图书就显示“你没有借这样的书,任意键返回.”,如果没找到所输卡号,则显示“没这样的卡,和管理员联系,按任意键返回.”。还书过程结束。3.2.5 lendcount() 借书统计函数模块定义指向文件的指针变量fp,并使fp指向“record.txt”,以只写的方式打开文件,从首地址读取,找到借书信息,就把统计借出书个数的变量i的值加1。并显示

8、借出的每一本书的信息。3.2.6 addcar() 增加会员卡函数模义指向文件的指针变量fp,并使fp指向“car.txt”的首地址,以追加的方式打开文件“car.txt”,从键盘输入会员信息,并写入文件。3.2.7 delcar() 删除会员卡函数模块定义指向文件的指针变量fp,和fp2。分别以写入的方式打开“car.txt”,和“bookl.txt”。从键盘输入要删除的会员卡卡号,然后把有关信息删除。3.2.8carcount() 会员统计函数模块定义指向文件的指针变量fp,使其指向“car.txt”,以只读的方式打开,依次读取里面数据,把会员个数赋给表示会员个数的变量n,并输出每个会员信

9、息。3.2.9 addbook() 增加图书函数模块定义指向文件的指针变量fp,使其指向“book.txt”并以追加的方式打开文件,依次从键盘读入图书的各个信息,写入文件,然后关闭文件。3.2.10 delbook() 删除图书函数模块定义两个文件指针,fp,fp2.从键盘输入图书名字。然后在文件中查找,找到后删除掉有关记录,找不到则报错。3.2.11 changebook() 修改图书信息函数模块定义两个文件指针,fp,fp2.从键盘输入要修改的图书名。然后从文件中找一致的,找到后询问修改哪一部分。在进入修改。完成后关闭文件。3.2.12 bookcount() 图书统计函数模块定义文件指针

10、fp,并使之指向“book.txt”依次从里面读取数据,并输出。3.2.13 end() 结束函数模块定义退出界面。3.3算法流程图3.3.1按照作者名查找算法流程图如图2所示。图2 按照作者名查找算法流程图3.3.2保存函数Save()的算法流程图如图3所示。图3 保存函数Save()的算法流程图3.3.3增加会员卡的算法流程图如图4所示。图4 增加会员卡的算法流程图四、编码本系统源代码详见附录1,主要编码实现了以下模块:1.图书查询:实现对图书馆所有馆藏图书的精确查询。2.借阅图书:完成学生对指定图书的借阅。3.查询个人借阅信息:完成对指定学生个人借阅图书记录的查询,显示该学生借阅的所有图

11、书的信息。4.归还图书:完成学生对自己已借阅的指定图书的归还。 5.超期图书归还: 对超期的情况能自动给出提示信息。6.图书管理:能够实现图书基本情况的录入、修改、删除等基本操作。通过运用该系统,实现对图书馆图书的图书的信息管理,学生的查寻、借阅、归还等操作,达到对图书信息管理的功能。五、测试5.1 系统主菜单界面在Visual C+ 6.0中运行本系统,可以得到图5所示的主菜单界面。图5 系统主菜单界面5.2 图书查阅界面在图5中,选择1,进入图6所示的图书查阅界面。图6 图书查阅界面在图6中,选择1,进入“按书名查找”的界面。例如输入书名“”,得到图7所示的显示。图7 按书名查找在图6中,

12、选择2,进入“按作者查找”的界面。例如输入作者“”,得到图8所示的显示。图8 按作者查找5.3 借书系统界面在图5中,选择2,进入图9所示的借书系统界面。图9 借书系统界面5.4 还书界面在图5中,选择4,进入图10所示的还书界面。图10 还书界面5.5 管理系统在图5中输入3,进入图11所示的管理系统界面。图11管理系统界面在图11中输入1,进入图12所示的增加图书界面。图12 增加图书界面在图11中输入2,进入图13所示的删除图书界面。图13 删除图书界面在图11中输入3,进入图14的修改图书界面。图14 修改图书界面在图6中输入3,进入图15的管理系统界面。图15 管理系统界面包六、设计

13、总结第一次做课设,第一次接触这么庞大的c程序,首先读懂它就有很大的难度,所以我们查阅了很多的资料,接触了很多的新的东西,遇到一些看不懂的东西时,我们会在一起互相探讨,互相沟通。编程看起来似乎是一件很枯燥、乏味的事情,但是经历了这次大程序的编辑之后,但是其实里面还是充满乐趣的,一旦真的钻研下去什么事情都可以放下,来认真研究。编程尤其是调试是一项细致深入的工作,需要下工夫、动脑子、善于积累经验,这往往能反映出一个人的水平、经验和科学态度。C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的

14、复杂程序。在这里,我作为其中的参与者,感触良多。在这次课程设计中我对C语言有了一个更深的了解和认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的课程设计使我对C语言的学习产生浓厚的兴趣。还是这次课程设计最令人激动的就是合作做项目,虽然那只是一个很小很小的项目,大家在一起学习,取长补短,我们很好的在课设中长知识,提高我们的学习热情。对于以后的学习及我们的专业知识的学习我都有了很大的信心。只要我们努力,所有的事就像我们的C程序一样,只要我们编好了程序,就能正确的运行的。致谢结束了一周

15、的课程设计,首先要感谢周老师在课程设计上给予我的指导,支持与帮助。这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,要感谢和我共同做同一个课程设计的任飞翔同学,他为我解决了很多我不明白的知识以及技术上的难题,让我们共同完成了这个课程设计。参考文献1姜灵芝,余健. C语言课程设计案例精编.北京:清华大学出版社,20082王新,孙雷. C语言课程设计.北京:清华大学出版社,20093游洪跃、彭骏、谭斌.C语言程序设计实验与课程设计教程.北京:清华大学出版社,201

16、14王连相.C/C+程序设计上机指导与测试. 北京:中国铁道出版社,20065C语言函数手册,机械工业出版社,1999附录1#include #include #include #include #include #define STACK_INIT_SIZE 10 #define OK 1 #define TRUE 1 #define ERROR 0/*定义学生类型,用于存放借出的书籍*/ struct student int carnum; char lendbook10; student1000; /*定义书的类型*/ struct book int booknum; char book

17、name20; float bookprice;char bookcreat20; int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/ book1000;/*借书卡的数据类型*/ struct car int carnum; char sex5;char studentname20; int studentclass; car1000;/查询图书信息模块/(1)按书名查找findbook() FILE *fp; char bookname10; int i; fp=fopen(book.txt,r); printf(请输入你要查找的书名:n); scanf(%s,

18、bookname); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookname,booki.bookname)=0) if(booki.turefalse=1) printf( 书号 书名 作者 n %d %s %s n,booki.booknum,booki.bookname,booki.bookcreat); printf(此书现在无人借阅n按任意键返回n); else printf(这本书已经有人借出n);fclose(fp);return 0; fclose(fp); return 0; print

19、f(没有你要查询的书籍!n); fclose(fp); return 0; /(2)按作者查找findbook1() FILE *fp; char bookcreat10; int i; fp=fopen(book.txt,r); printf(请输入你要查找的作者名:n); scanf(%s,bookcreat); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookcreat,booki.bookcreat)=0) if(booki.turefalse=1) printf( 书号 书名 作者 n %d %s

20、 %s n,booki.booknum,booki.bookname,booki.bookcreat); printf(此书现在无人借阅n按任意键返回n); else printf(这本书已经有人借出!n); fclose(fp); return 0; fclose(fp); return 0; printf(没有你要查询的书籍n); fclose(fp); return 0; chabook()/查找图书主模块 char ch5; do printf(欢迎进入图书查询系统n); printf( 1: 按书名查找 n); printf( 2: 按作者查找 n); printf( 0: 返回 n

21、); printf(请输入02:n); ch5=getch(); switch(ch5) case 1:findbook();getch();break; case 2:findbook1();getch();break; case 0:break; default:printf(无此操作!n);getch();break; while(ch5!=0);return 0; /借书与还书模块/(1).借书模块lendbook() FILE *fp,*fp2; int i,n; int carnum; system(cls);printf(tt欢迎进入借书系统nn);printf(请输入借书人的:

22、n卡号:n); scanf(%d,&carnum); fp=fopen(car.txt,r); for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) if(cari.carnum=carnum) n=i; fclose(fp); printf(书名:n); scanf(%s,studentn.lendbook); fp=fopen(book.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(booki.bookname,studentn.lendboo

23、k)=0) if(booki.turefalse=0) printf(对不起,此书有人借出,请借其他书n);fclose(fp);getch();return 0; else fclose(fp); fp=fopen(record.txt,a+); studentn.carnum=carnum; fwrite(&studentn,sizeof(struct student),1,fp); fclose(fp); fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&booki,sizeof(struct book),1,fp)

24、!=0;i+) if(strcmp(booki.bookname,studentn.lendbook)=0) booki.turefalse=0; fwrite(&booki,sizeof(struct book),1,fp2); continue; fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite

25、(&booki,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); fopen(bookl.txt,w); fclose(fp2); printf(借书完毕,按任意键返回.n); getch(); return 0; printf(不存在这样的书,任意键返回.n); fclose(fp); getch(); return 0; printf(你的卡号不存在,请申请新卡,按任意键返回.n); fclose(fp); getch(); return 0;/(2).还书函数huanbook() FILE *fp,*fp2; /*定义两个文件指针,f

26、p2用于修改数据时设立临时文件用,防止数据遭破坏*/ int i,n; int carnum; char lendbook10; system(cls);printf(tt欢迎进入还书界面);printf(n请你输入你的n卡号:n); scanf(%d,&carnum); fp=fopen(car.txt,r); /*读取卡号记录*/ for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) /*for循环判断卡号是否存在*/ if(cari.carnum=carnum) /*卡号存在,进入下一循环*/ n=i; fclose(fp); print

27、f(请输入你要还的书的名字:n); scanf(%s,lendbook); fp=fopen(record.txt,r); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) /*判断是否借阅了输入的书*/ if(strcmp(studenti.lendbook,lendbook)=0) /*借阅了该书,进入下一循环,否则出错显示*/ fclose(fp); fp=fopen(record.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) if(strcmp(studenti.lendbook,lendbook)=0) continue; /*删除还掉的书的借书记录*/ fwrite(&studenti,sizeof(struct student),1,fp2); /*写入原来没还的书的记录*/ fclose(fp); fclose(fp2); fp=fopen(record.txt,w

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1