您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 数据结构(图书管理系统)课程设计模板1.0
课程设计题目题目:图书管理系统:一.实习目的通过实习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。二.问题描述简单的模拟学校图书管理系统,功能比较简单,容易上手。借书步骤如下:图书入库----学生注册---学生借书---查看图书馆图书信息-----查看学生信息---还书管理-----再查看图书和学生信息----退出图书管理系统三.需求分析需求提出:各大高校都有图书馆,每个学校的图书管理系统可能都不会完全相同,但大致主要功能还是差不多的。好的图书管理系统当然既方便学生借阅书籍,也方便学校图书的管理。需求描述:作为大学生,我们也都很清楚怎么去图书馆借书。1.首先,当然是要保证图书馆有书,在这个程序中,我们可以理解为图书的采编入库,得保证学生有书借才行。2.图书馆已经有各式的书了,如果你需要借,则先应该在学校的图书管理系统中注册才行,至少的确认你是该校的学生才有资格的。其实就是一个通行证。3.接下来就是借书的过程了。4.借了书最后还是要还的,所以还有一个还书的过程。四.概要设计系统用到的抽象数据类型定义:从整个管理系统来看,我们知道这里主要有两个对象,一个是图书馆的图书,另一个就是学生。这里这两个对象不单单是作为简单的主体存在,他们都有很多功能,所以我们使用结构体来定义这两个。1.图书结构体的定义:typedefstruct{charnumber[10];//书号charname[20];//书名charauthor[20];//作者intcountbook;//库存intshY;//剩余量}mbook;typedefstruct{intcount;//书的本数mbookbook[100];//最大可有100本书}mlibrary;mlibrarylibrary;2.学生结构体typedefstruct//学生系统{characcount[MAXCOUNT];//学生帐号charname[10];//学生姓名bookborrow_book[MAXNUM];//所借书目(书号)intborrownum;//借书数目}stu;typedefstruct{intu;//用于记录已注册的学生数目stuz[w];//最大学生数可以有1000人}Wstudent;Wstudentstudent;系统中子程序及功能要求的说明:1.voidputin()图书的采编入库:为了给学生提供较好的学习资源,我们可以采编多种类型的图书,而且每种类型的书籍可以入库一定数量,方便广大学生借阅。2.voidRegist()学生注册信息:在借阅之前,通常要有身份识别,主要是为了学校管理各种书籍借出,能够统一规则管理整个借书于还书的过程。3.voidborrow()(借书的方法)其实整个程序的主要目的就是学生借书,学生通过自己注册的唯一编号借阅图书馆在馆的图书。而且每个学生最多只能借8本。4voidlent()(还书的方法)借了书之后,在一定的时间内必须要归还,书是图书馆的,不是某个人的,不能总是占有它,当然也是从大众利益出发。5.voidlookStu()(查看学生信息)不管你是借了还是没有借书,只要你注册了,就会有你的信息。包括你的借阅号,姓名,所借书籍书证号,借阅的书的数目,还书日期等6.voidsave_student()(保存学生信息)如果只是你单方面的注册,而并没有将你的所有信息保存起来,那就等于你没有注册,如果你注册过了,借书时,没有保存,那就是说图书馆的系统并不承认你借过书。7.voidreadStu()(读取学生信息)看上去好像和查看学生信息类似,其实完全不同的过程,这是一个将学生的有关信息保存在文件中的过程,这个过程是我们视觉上感觉不到的。这和保存学生8.voidlookup()(查询图书信息)这个类似于查询学生信息的方法,都是将从文件中读取的信息打印出来。9.voidsave()(保存图书信息的方法)也就是将所有图书的信息记录在文件中,比如每次入库了多少图示,是哪些图书,数量是多少,或者是借出去一些后那些图书的现有量是多少等相关的信息。10.voidreadBook()(读取图书信息)这个跟读取学生的信息道理是一样的,只有将学生的所有信息读取得内存中,我们才能得到完整的图书信息。各程序模块之间的调用关系从上面每个方法差不多也可以知道每个方法之间的关系了。入库之前,我们也需要将已经入库的图书和已经注册好的学生信息读取到内存中,以便后面的操作。入库图书后,需要voidsave(),之后还要voidreadBook()也就是更新图书信息。学生注册和图书入库的道路是一样的,注册之后,需要保存,再读取到内存中,也就是及时更新信息。借书和还书的过程都是将图书和学生联系起来,每次借书时都需要同时更新图书的信息和学生的信息,借了书后,学生的记录中应该保存了他所借的书证号以及要还书的日期,而此时图书的信息也要相应的改变,借出后图书的数量或书目上要体现出来。还书也是如此,成功还书后,学生信息和图书信息也都要更新,就用到了对学生和图书的信息的保存和读取。五.详细设计图书管理系统的伪码描述如下://保存图书信息的算法fp=fopen(library.doc,w);//打开文件if(fp==NULL){printf(\n不能保存图书信息\n);return;}fwrite(&library.count,sizeof(int),1,fp);//读取sizeof(int)个数据到文件中fwrite(library.book,sizeof(library.book[0]),library.count,fp);//从文件中读取图书信息fp=fopen(library.doc,r);//打开文件if(fp==NULL){printf(\n不能打开图书信息\n);return;}fread(&library.count,sizeof(int),1,fp);//从文件中读取sizeof(int)个数据到library中printf(-图书数量-+library.count);fread(library.book,sizeof(library.book[0]),library.count,fp);//图书信息入库while(y){scanf(%s,num);strcpy(library.book[library.count].number,num);scanf(%s,library.book[library.count].name);scanf(%s,library.book[library.count].author);scanf(%d,&library.book[library.count].countbook);library.book[library.count].shY=library.book[library.count].countbook;library.count++;}//每次新书入库,要将图书的全部信息记录//查看所以图书信息for(i=0;ilibrary.count;i++){printf(%s\t%s\t%s\t%d\t%d\n,library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].shY,library.book[i].countbook);}//遍历图书的种类,将其打印出来//保存学生信息fwrite(&student.u,sizeof(int),1,fp);//从学生信息中,读取sizeof(int)个学生结构体类型数据信息保存到文件中fwrite(student.z,sizeof(student.z[0]),student.u,fp);//读取学生信息fread(&student.u,sizeof(int),1,fp);fread(student.z,sizeof(student.z[0]),student.u,fp);//借书管理scanf(%s,bnum);//选择要借的书籍序列号strcpy(student.z[i].borrow_book[student.z[i].borrownum].bName,bnum);//记录学生借书的信息scanf(%s,bo_day);strcpy(student.z[i].borrow_book[student.z[i].borrownum].borrow_day,bo_day);scanf(%s,lent_day);strcpy(student.z[i].borrow_book[student.z[i].borrownum].lent_day,lent_day);library.book[i].shY--;student.z[i].borrownum++;//每次借书后,学生的借书数目就会增加,而图书馆内的该类型书数目将减少1//还书管理for(i=0;istudent.u;i++){//遍历已经注册好的学生for(j=0;jstudent.z[i].borrownum;j++)//找到学生后,遍历他所借的所有图书library.book[i].shY++;student.z[i].borrownum--;//还书后,要将该信息清除掉六.测试分析按照附录中的测试数据,得出如下测试、分析结果:进入系统初始界面(未操作之前,图书和学生的文件也还不存在)注册读者(已经注册了的,就不需要注册了,可以直接借书)查询读者信息(未借书之前,没有借书记录)图书入库(可以入库不同的书)查询图书信息(没有借出之前,图书的现有量和库存是相同的)借书0101读者借01号图书一本此时查询图书信息01书本现有量减少10101读者的信息(借书后的学生信息)继续借7本书达到借书上限(一个学生只能借8本书)此时的0101读者的信息还书此时01号书的现有量增1此时0101读者的信息未借书七.使用说明a=1时,采编入库图书,a=2时,注册学生信息,a=3时,学生借书管理,a=4时,学生还书,a=5时,显示学生信息,a=6时,显示图书信息,a=0时,退出图书管理系统。八.附录:测试数据入库的图书书证号01书名11作者AA库存100书证号02书名22作者bb库存100书证号5书名cc作者vv库存100注册学生读者书证号0101读者姓名qq九.C语言代码实现#includestdio.h#includestdlib.h#includestring.h#defineMAXCOUNT10#defineMAXNUM20#definew1000typedefstruct{charnumber[10];//书号charname[20];//书名charauthor[20];//作者intcountbook;//库存intshY;//剩余量}mbook;typedefstruct{intcount;//书的本数mbookbook[100];//最大可有100本书}mlibrary;mlibrarylibrary;typedefstruct{charborrow_day[10];//借书日期charlent_day[10];//还书日期charbName[10];//}book;typedefstruct//学生系统{characcount[MAXCOUNT];//学生帐号charname[10];//学生姓名bookborrow_book[MAXNUM];//所借书目(书号)intborrownum;//借书数目}stu;typedefstruct{intu;//用于记录已注册的学生数目stuz[w];//最大学生数可以有1000人}Wstudent;Wstudentstudent;voidsave()//保存图书信息。{FILE*fp;fp=fopen(library.do
本文标题:数据结构(图书管理系统)课程设计模板1.0
链接地址:https://www.777doc.com/doc-6145797 .html