您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > C语言--图书管理系统
重庆科技学院《C语言程序设计》课程设计报告11一、设计内容和要求内容:主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,至少具有如下功能:图书入库,按书名、出版社、价格、作者进行查询和分类统计。操作界面要符合用户的一般习惯,图形或文本界面都可以。要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。重庆科技学院《C语言程序设计》课程设计报告22二、详细设计2.1、数据结构链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储学生相关信息。且对结点的定义如下://图书的数据结构:structbook{intbooknum;//书号charbookname[20];//书名charbookcreat[10];//书的作者intturefalse;//用于借书和还书模块判断一本书是否借出的条件}book[1000];//定义一个比较大的1000本书//会员卡的数据类型structcar{intcarnum;//卡号charstudentsex[4];//性别charstudentname[20];//姓名intstudentclass;//所在班级}car[1000];//定义一千个会员//定义学生类型,用于存放借出的书籍structstudent{intcarnum;//卡号重庆科技学院《C语言程序设计》课程设计报告33charlendbook[10];//借出的书数}student[1000];//定义一千个学生2.2总体模块图图2.2主体模块图功能说明:查询图书用于查找存储的图书信息借阅图书用于借阅存储的图书管理图书可用于对图书的增加,删除,统计和修改并对会员进行管理会员管理系统能对会员进行增加,删除和借阅统计图书管理系统查询图书借阅图书管理系统归还图书按书名找按作者找增加图书删除图书修改图书会员管理图书统计定义会员删除会员卡号统计借书统计重庆科技学院《C语言程序设计》课程设计报告44部分模块间关系:经过管理系统对图书的处理,查询图书和借阅图书的功能才能得以实现经过会员管理系统的处理,才能实现对会员的查询和统计2.3总体流程图主函数是程序入口,采用模块化设计。首先在主程序中打印欢迎界面,定义一些必要变量,作一无限循环程序,循环体为一开关语句,该语句设置一个断点,其条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的功能函数,同时设置一个断点,当返回值为一定条件时结束程序。调用主函数判断YN图2.3总体流程图开始运行Case≠0N运行Y主函数END()重庆科技学院《C语言程序设计》课程设计报告552.4、chabook()查询图书函数模块在这个模块中又分为两个子模块:按书名查找模块和按作者查找。1、按书名查找:在这个子函数里使用指向文件的指针变量,定义指针变量fp,fp指向文件名为“book.txt”的首地址,如果不存在,则自动建立。从键盘输入书名,依次移动指针地址,直到找到输入的文件名,找到后显示图书信息,再判断状态值是否为1,真的话就显示“此书现在无人借阅”,假就显示“这本书已经有人借出!”,关闭文件,然后按任意键返回。如果找到最后一个地址仍没找到,就显示“没有你要查询的书籍!”。关闭文件。图2.4.1按书名查找图书关键代码:for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++)重庆科技学院《C语言程序设计》课程设计报告662、按作者查找:原理同上。图2.4.2按作者查找图书关键代码:for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++)重庆科技学院《C语言程序设计》课程设计报告772.5、lendbook()借书模块定义文件指针变量fp,fp2。fp指向“car.txt(会员卡记录文件)”首地址,从键盘输入卡号,与文件中保存的依次比较,如果一致,就找到这个地址,并赋给变量i。关闭这个文件。开始借书,输入要借的书,这时指针地址指向“book.txt”,以只读的方式打开,依次找与输入书名一致的图书,如果找到,又分两种情况:状态值为1,则把书借出,把此书的状态值改为0.否则,显示“书已被借出”。如故找不到,显示“不存在这样的书”,关闭文件,返回。图2.5借阅图书关键代码:fwrite(&student[n],sizeof(structstudent),1,fp);重庆科技学院《C语言程序设计》课程设计报告882.6huanbook()还书函数模块同样定义两个指针变量:fp,fp2。先从键盘输入要还图书者会员卡卡号,然后是还书人名字,与文件中的相对照,都一致就进入还书过程,删除掉所还图书的借书记录,将还的书的原来状态设为无人借阅的。如果没找到图书就显示“你没有借这样的书,任意键返回...”,如果没找到所输卡号,则显示“没这样的卡,和管理员联系,按任意键返回...”。还书过程结束。图2.6还书关键代码:for(i=0;fread(&car[i],sizeof(structcar),1,fp)!=0;i++)重庆科技学院《C语言程序设计》课程设计报告992.7、lendcount()借书统计函数模块定义指向文件的指针变量fp,并使fp指向“record.text”,以只写的方式打开文件,从首地址读取,找到借书信息,就把统计借出书个数的变量i的值加1。并显示借出的每一本书的信息。图2.7借书统计关键代码:for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!=0;i++)重庆科技学院《C语言程序设计》课程设计报告10102.8、delcar()删除会员卡的函数模块定义指向文件的指针变量fp,和fp2。分别以写入的方式打开“car.txt”,“bookl.txt”。从键盘输入要删除的会员卡卡号,然后把有关信息删除。图2.8删除会员卡关键代码:for(i=0;fread(&car[i],sizeof(structcar),1,fp2)!=0;i++){fwrite(&car[i],sizeof(structcar),1,fp);}重庆科技学院《C语言程序设计》课程设计报告11112.9、carcount()会员统计函数模块定义指向文件的指针变量fp,使其指向“car.txt”,以只读的方式打开,依次读取里面数据,把会员个数赋给表示会员个数的变量n,并输出每个会员信息图2.9会员统计关键代码:for(i=0;fread(&car[i],sizeof(structcar),1,fp)!=0;i++)重庆科技学院《C语言程序设计》课程设计报告12122.10、addbook()增加图书函数模块定义指向文件的指针变量fp,使其指向“book.txt”并以追加的方式打开文件,依次从键盘读入图书的各个信息,写入文件,然后关闭文件。图2.10增加图书关键代码:while(choice=='y'||choice=='Y')重庆科技学院《C语言程序设计》课程设计报告13132.11、delbook()删除图书函数模块定义两个文件指针,fp,fp2.从键盘输入图书名字。然后在文件中查找,找到后删除掉有关记录,找不到则报错。图2.11删除图书关键代码:if(strcmp(bookname,book[i].bookname)!=0){fwrite(&book[i],sizeof(structbook),1,fp2);}重庆科技学院《C语言程序设计》课程设计报告14142.12、changebook()修改图书信息函数模块定义两个文件指针,fp,fp2.从键盘输入要修改的图书名。然后从文件中找一致的,找到后询问修改哪一部分。在进入修改。完成后关闭文件。图2.12修改图书关键代码:if(strcmp(book[i].bookname,bookname)==0)重庆科技学院《C语言程序设计》课程设计报告15152.13、bookcount()图书统计函数模块定义文件指针fp,并使之指向“book.txt”依次从里面读取数据,并输出图2.13图书统计关键代码:for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++)重庆科技学院《C语言程序设计》课程设计报告1616三、函数运行结果1)主函数运行界面图3.1主函数界面2)查阅图书界面输入1可进行查阅图书操作图3.2查询图书界面重庆科技学院《C语言程序设计》课程设计报告17173)进入借书系统输入2可进行借阅图书操作图3.3借书系统4)还书界面输入4能进行还书操作图3.4还书界面重庆科技学院《C语言程序设计》课程设计报告18185)退出系统输入0退出系统图3.5退出系统6)进入管理系统输入3进入管理系统图3.6管理系统重庆科技学院《C语言程序设计》课程设计报告19197)会员管理系统在这输入5,进入会员管理系统图3.7学生管理系统8)图书统计再输入4可统计图书图3.8图书统计重庆科技学院《C语言程序设计》课程设计报告20209)卡号统计输入4则是查看已有会员图3.9会员卡统计10)增加图书在管理系统界面上输入1为增加图书图3.10增加图书重庆科技学院《C语言程序设计》课程设计报告212111)删除图书也可按2删除图书图3.11删除图书12)修改图书按3则可以修改图书图3.12修改图书重庆科技学院《C语言程序设计》课程设计报告2222四、总结在本次课程设计中,先使用结构化分析方法对系统进行分析,将整个系统细分为几个模块,再针对每个小模块编写代码。由于时间比较短,源代码70%来自网上下载的一个半成品,刚开始连编译都通不过。经过我精心调试,去掉了一些错误和漏洞,是之得到了完备。出于美观化考虑,增加了刷屏的应用,使程序好看一些,虽然没有界面。经过不到两个星期的课程设计,我对C语言有了更进一步的认识和了解,要学好它要重在实践,要通过不断的上机操作才能更好的学习好它。以前上课都是一些枯燥的东西,到真正用的时候才发现没学的还有好多好多,以前在课堂上只听而不实践地学习方法是错误的,虽然课堂上看似学会了,可到实际操作时一些问题就会出现。但是通过课程设计把所学的东西用在了实践上,设计出来一些有用的东西,这几天精力都放在了编程上,但是有好多次总是运行不了,找来找去只是一些小小的错误。这几天深深地感到自己上机编程能力很不足,编的程序可读性不太好.以后要多多学习别人的经验,增强程序的可读性。但经过这几天的改错,在查错方面也积累了一些经验。这些天虽然是有点累,但是还是学到了许多没有学到的知识,感觉很有收获。重庆科技学院《C语言程序设计》课程设计报告2323致谢在此我要向对我们的实践进行指导的李忠老师、金尚柱老师还有在程序调试过程中请教的同学进行感谢,感谢你们给我提供的帮助,使我的设计得以成功的实现各项功能。再次向您们致以真诚的感谢!重庆科技学院《C语言程序设计》课程设计报告2424参考文献[1]谭浩强等.C语言程序设计教程.北京:高等教育出版社,1997[2]谭浩强.C程序设计.第2版.北京:清华大学出版社,1999[3]郭浩志.C语言程序设计.北京.北京邮电大学出版社,2005[4]林学焦.TurboC2.0用户手册.北京.学苑出版社,1993[5]谭浩强、张基温.C语言程序设计教程.北京:高等教育出版社,2006[6][美]SCHILDTH.C语言大全[M].4版.王子恢等译.北京.电子工业出版社,2001重庆科技学院《C语言程序设计》课程设计报告2525附录(源程序清单)#i
本文标题:C语言--图书管理系统
链接地址:https://www.777doc.com/doc-3166856 .html