c语言图书管理系统

c语言图书管理系统1、题目意义图书馆,作为文献的聚集地和展示平台,常常扮演着引领文化前进的角色,是每个大学不可或缺的基础设施,而图书管理系统则是一个图书馆能够正常运转的关键。本次课程设计使用C语言制作程序来实现图书的登记,删除,查询,浏览以及读者的借阅,还书,会员登录,修改密码等功能。程序中涉及到数据链表和文件指针的操作,包括结构体数据定义,使用及文件的读写,定位,修改等。…

  • 题目意义和设计思想

    1、题目意义

    图书馆,作为文献的聚集地和展示平台,常常扮演着引领文化前进的角色,是每个大学不可或缺的基础设施,而图书管理系统则是一个图书馆能够正常运转的关键。本次课程设计使用C语言制作程序来实现图书的登记,删除,查询,浏览以及读者的借阅,还书,会员登录,修改密码等功能。程序中涉及到数据链表和文件指针的操作,包括结构体数据定义,使用及文件的读写,定位,修改等。

    2、设计思想

    ①新建账号密码,然后通过二者的匹配登录系统,这样可以保证是本校同学才能使用,另外还可以修改密码。

    ②添加图书的基本信息,如 书号,书名,作者,出版社,类别,进库量;

    ③删除图书,通过图书的书名进行删除;

    ④图书查询,通过图书的书号,书名,作者或者类别进行检索;

    ⑤浏览图书的库存,将所有数目展示出来;

    ⑥借书登记,先判断是否有这本数,然后进行借书人学号,姓名,归还截止期限,借书书名进行登记

    ⑦还书情况查看。

    ⑧借阅情况查看。

    ⑨会员登录,通过数据文件中的已注册的账号密码来登录到图书管理系统。

    ⑩修改密码

    2.1总设计框架图

    c语言图书管理系统

     

  • 二、采用的主要技术、遇到的难点和解决方法

  • 三、实现的主要功能和系统结构1.采用的主要技术

    ①switch()函数

    在多级菜单的功能选择上,需要大量运用switch()函数来实现函数与函数之间的联系,功能与功能之三、实现的主要功能和系统结构间的交替。如通过switch语句来选择打开图书管理系统还是结束管理系统

    ②循环结构

    为了实现一些文件的遍历和链表的创建等,需要用到各种循环结构,如,查询图书功能,修改密密码功能等。

    ③文件的新建,打开,读取,写入,关闭。

    图书管理系统每次的功能执行都是需要产生持续性的影响,因此就需要大量使用文件来保存各种数据,如储存注册的账号密码,储存读者的借阅信息等。

    ④结构体及链表的创建,修改,遍历。

    整个图书管理系统包含的数据结构非常复杂,有字符型,字符数组型,指针型,整型,浮点型等等,通过结构体可以将其中有关联但类型不相同的数据集中到一起,方便数据的保存和修改,另外通过链表将数组相连,更方便对文件件中的数据进行修改和删除。如,删除图书信息,删除旧的密码。

    ⑤指针

       通过指针可以很好的对数据进行访问,在链表和文件的使用中指针的功能无可替代,如在还书功能和修改密码中,都有很大的作用。

    2.遇到的难点及解决办法

    (1)不知道如何停止程序,以及只让程序在ESC和回车按下后才继续工作。

    解:查阅资料getch()

    所在头文件:conio.h

    函数用途:从控制台读取一个字符,但不显示在屏幕上

    函数原型:int getch(void)

    返回值:读取的字符

           代码: for(;i!=13&&i!=27;)

                  i=getch();

       

    (2)不知道C语言未初始化的变量的值,导致无限循环。

        解:全局变量 、静态变量初始值为0
    局部变量,自动变量初始值随机分配

       

    (3)不知道如何快速清理文件和新建文件

        解:查阅览书本后知道,先只写文件,如果文件名和已存在的相同,那么就会先删除原有文件,而且如果不存在文件将会之间新建文件。

            fp=fopen(“library.txt”,”w”); \\清空

    fclose(fp);

     if ((fp=fopen(“library.txt”,”r”))==NULL)//快速新建

    {

          fp=fopen(“library.txt”,”w”);

          fclose(fp);

        }

    (4)对a!=2和a=!2弄混淆

      解:a!=2:表示a不等于“2”;

    a=!2:表示a等于“!2”(0);

    (5)编译正确,但是有的时候scanf语句好像没有执行,输入数据回车,程序没反应

        解:查阅得知:

    这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的’\n’遗留在了输入缓冲区,而当前的scanf(“%c”,…);又会把’\n’当一个字符接收,又由于scanf在%c控制下只接收一个字符,所以就不能接收正式输入的字符了。解决这一问题的最简单办法是在接收字符的scanf的控制符”%c”中的%前加一个空格写成” %c”,把前一次输入遗留在输入缓冲区里的所有广义空格(‘ ‘、’\t’、’\n’等)都吸收掉。在接收字符的scanf前加getchar()等的办法其实是有漏洞的——当缓冲区里只遗留了一个广义字符时可正常工作,若多于一个则同样出错。按回车没反应

    (6),关于“feof”的误区

    For(;!feof(fp););

    n++;

    n–;来判断文件里面字符的个数为什么错误,

    查阅得知:

    1.EOF

    EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。通常在文本的最后存在此字符表示资料结束。这个定义的意思是,文档的结尾都有一个隐藏字符”EOF”,当程序读取它的时候,就会知道文件已经到达结尾。通常使用while循环加EOF判断作为读取结束的标志。

    EOF 的值通常为 -1,但它依系统有所不同。

    2.feof()

    feof()的原理: 

    feof()函数,并不是通过读取到文件的EOF来评判,这个文件是否为空。

    对feof()来说,它的工作原理是,站在光标所在位置,向后看看还有没有字符。如果有,返回0;如果没有,返回非0。它并不会读取相关信息,只是查看光标后是否还有内容。

    直接使用时的错误分析: 
    对于一个空文件来说,当程序打开它的时候,它的光标会停在文件的开头,但是由于文件里什么内容都没有存(但是EOF是存在的),即整个文件就存贮了一个EOF。当程序打开文件,并直接调用feof()时,这个函数就会站在光标的位置向后张望,结果就看见了EOF,然后就当然返回0了。所以使用feof()函数时,必须要读取文件,让光标移动。

    (7)错因:用正确的格式写入文件,结果却没有数据

    解:没有及时fclose(fp),不弥补数据储存的原理。

    打开文件fopen函数把返回值赋给fp,用fclose关闭文件,如果不关闭文件就结束程序将会丢失数据,因为,在向文件里面写入数据时,是先将数据输入到缓冲区,待缓冲区从满后才正式输出给文件。因此用fclose函数关闭文件时,先把缓冲区中的数据输出到磁盘文件,然后才撤销文件信息区。

今天的文章c语言图书管理系统分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/5247.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注