C语言-图书管理系统

上传人:新** 文档编号:487410052 上传时间:2023-01-13 格式:DOC 页数:44 大小:306.50KB
返回 下载 相关 举报
C语言-图书管理系统_第1页
第1页 / 共44页
C语言-图书管理系统_第2页
第2页 / 共44页
C语言-图书管理系统_第3页
第3页 / 共44页
C语言-图书管理系统_第4页
第4页 / 共44页
C语言-图书管理系统_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《C语言-图书管理系统》由会员分享,可在线阅读,更多相关《C语言-图书管理系统(44页珍藏版)》请在金锄头文库上搜索。

1、 一、 设计内容和要求内容:主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,至少具有如下功能:图书入库,按书名、出版社、价格、作者进行查询和分类统计。操作界面要符合用户的一般习惯,图形或文本界面都可以。 要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识; 提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。二、详细设计2.1、数据结构链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位

2、置上也相 邻,因此可以随机存取表中任一元素。链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储学生相关信息。且对结点的定义如下:/图书的数据结构:struct book int booknum; /书号char bookname20; /书名char bookcreat10; /书的作者int turefalse; /用于借书和还书模块判断一本书是否借出的条件book1000; /定义一个比较大的1000本书 /会员卡的数据类型struct car int carnum; /卡号char student

3、sex4; /性别char studentname20; /姓名int studentclass; /所在班级car1000; /定义一千个会员/定义学生类型,用于存放借出的书籍 struct student int carnum; /卡号char lendbook10; /借出的书数student1000; /定义一千个学生2.2总体模块图图书管理系统查询图书借阅图书管理系统归还图书按书名找按作者找增加图书删除图书修改图书会员管理图书统计定义会员删除会员卡号统计借书统计图2.2主体模块图功能说明:查询图书用于查找存储的图书信息借阅图书用于借阅存储的图书管理图书可用于对图书的增加,删除,统计和

4、修改并对会员进行管理会员管理系统能对会员进行增加,删除和借阅统计部分模块间关系:经过管理系统对图书的处理,查询图书和借阅图书的功能才能得以实现经过会员管理系统的处理,才能实现对会员的查询和统计2.3总体流程图主函数是程序入口,采用模块化设计。首先在主程序中打印欢迎界面,定义一些必要变量,作一无限循环程序,循环体为一开关语句,该语句设置一个断点,其条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的功能函数,同时设置一个断点,当返回值为一定条件时结束程序。开始运行END()Y主函数NCase0运行调用主函数判断YN图2.3总体流程图2.4、chabook() 查询图书函数模块在这个模块中

5、又分为两个子模块:按书名查找模块和按作者查找。1、按书名查找:在这个子函数里使用指向文件的指针变量,定义指针变量fp,fp指向文件名为“book.txt”的首地址,如果不存在,则自动建立。从键盘输入书名,依次移动指针地址,直到找到输入的文件名,找到后显示图书信息,再判断状态值是否为1,真的话就显示“此书现在无人借阅”,假就显示“这本书已经有人借出!”,关闭文件,然后按任意键返回。如果找到最后一个地址仍没找到,就显示“没有你要查询的书籍!”。关闭文件。图2.4.1 按书名查找图书关键代码:for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+)2

6、、按作者查找:原理同上。图2.4.2按作者查找图书关键代码:for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+)2.5、lendbook() 借书模块定义文件指针变量fp,fp2。fp指向“car.txt(会员卡记录文件)”首地址,从键盘输入卡号,与文件中保存的依次比较,如果一致,就找到这个地址,并赋给变量i。关闭这个文件。开始借书,输入要借的书,这时指针地址指向“book.txt”,以只读的方式打开,依次找与输入书名一致的图书,如果找到,又分两种情况:状态值为1,则把书借出,把此书的状态值改为0.否则,显示“书已被借出”。如故找不到,显示

7、“不存在这样的书”,关闭文件,返回。图2.5借阅图书关键代码:fwrite(&studentn,sizeof(struct student),1,fp);2.6 huanbook() 还书函数模块同样定义两个指针变量:fp,fp2。先从键盘输入要还图书者会员卡卡号,然后是还书人名字,与文件中的相对照,都一致就进入还书过程,删除掉所还图书的借书记录,将还的书的原来状态设为无人借阅的。如果没找到图书就显示“你没有借这样的书,任意键返回.”,如果没找到所输卡号,则显示“没这样的卡,和管理员联系,按任意键返回.”。还书过程结束。图2.6还书关键代码:for(i=0;fread(&cari,sizeof

8、(struct car),1,fp)!=0;i+)2.7、lendcount() 借书统计函数模块 定义指向文件的指针变量fp,并使fp指向“record.text”,以只写的方式打开文件,从首地址读取,找到借书信息,就把统计借出书个数的变量i的值加1。并显示借出的每一本书的信息。图2.7借书统计关键代码:for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+)2.8、delcar()删除会员卡的函数模块 定义指向文件的指针变量fp,和fp2。分别以写入的方式打开“car.txt”,“bookl.txt”。从键盘输入要删除的会员卡卡

9、号,然后把有关信息删除。图2.8删除会员卡关键代码:for(i=0;fread(&cari,sizeof(struct car),1,fp2)!=0;i+) fwrite(&cari,sizeof(struct car),1,fp); 2.9、carcount() 会员统计函数模块定义指向文件的指针变量fp,使其指向“car.txt”,以只读的方式打开,依次读取里面数据,把会员个数赋给表示会员个数的变量n,并输出每个会员信息图2.9会员统计关键代码:for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+)2.10、addbook() 增加图书函数模

10、块定义指向文件的指针变量fp,使其指向“book.txt”并以追加的方式打开文件,依次从键盘读入图书的各个信息,写入文件,然后关闭文件。图2.10增加图书关键代码:while(choice=y|choice=Y)2.11、delbook() 删除图书函数模块 定义两个文件指针,fp,fp2.从键盘输入图书名字。然后在文件中查找,找到后删除掉有关记录,找不到则报错。 图2.11删除图书关键代码:if(strcmp(bookname,booki.bookname)!=0) fwrite(&booki,sizeof(struct book),1,fp2); 2.12、changebook() 修改图

11、书信息函数模块 定义两个文件指针,fp,fp2.从键盘输入要修改的图书名。然后从文件中找一致的,找到后询问修改哪一部分。在进入修改。完成后关闭文件。图2.12修改图书关键代码:if(strcmp(booki.bookname,bookname)=0)2.13、bookcount() 图书统计函数模块 定义文件指针fp,并使之指向“book.txt”依次从里面读取数据,并输出 图2.13图书统计关键代码:for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+)三、函数运行结果1)主函数运行界面图3.1主函数界面2)查阅图书界面 输入1可进行查阅图

12、书操作图3.2查询图书界面3)进入借书系统 输入2可进行借阅图书操作图3.3借书系统4)还书界面 输入4能进行还书操作图3.4还书界面5)退出系统 输入0退出系统图3.5退出系统6)进入管理系统 输入3进入管理系统图3.6管理系统7)会员管理系统 在这输入5,进入会员管理系统图3.7学生管理系统8)图书统计 再输入4可统计图书图3.8图书统计9)卡号统计 输入4则是查看已有会员图3.9会员卡统计10)增加图书 在管理系统界面上输入1为增加图书图3.10增加图书11)删除图书 也可按2删除图书图3.11删除图书12)修改图书 按3则可以修改图书图3.12修改图书四、总结在本次课程设计中,先使用结

13、构化分析方法对系统进行分析,将整个系统细分为几个模块,再针对每个小模块编写代码。由于时间比较短,源代码70%来自网上下载的一个半成品,刚开始连编译都通不过。经过我精心调试,去掉了一些错误和漏洞,是之得到了完备。出于美观化考虑,增加了刷屏的应用,使程序好看一些,虽然没有界面。 经过不到两个星期的课程设计,我对C语言有了更进一步的认识和了解,要学好它要重在实践,要通过不断的上机操作才能更好的学习好它。以前上课都是一些枯燥的东西,到真正用的时候才发现没学的还有好多好多,以前在课堂上只听而不实践地学习方法是错误的,虽然课堂上看似学会了,可到实际操作时一些问题就会出现。但是通过课程设计把所学的东西用在了实践上,设计出来一些有用的东西,这几天精力都放在了编程上,但是有好多次总是运行不了,找来找去只是一些小小的错误。这几天深深地感到自己上机编程能力很不足,编的程序可读性不太好.以后要多多学习别人的经验,增强程序的可读性。但经过这几天的改错,在查错方面也积累了一些经验。这些天虽然是有点累,但是还是学到了许多没有学到的知识,感觉很有收获。致谢 在此我要向对我们的实践进行指导的李忠老师、金尚柱老师还有在程序调试过程中请教的同学进行感谢,感谢你们给我提供的帮助,使我的设计得以成功的实现各项功能。再次向您们致以真诚的感谢!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械/制造/汽车 > 汽车技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号