C语言课程设计 图书馆书目采编系统报告Word文档下载推荐.docx
- 文档编号:6000298
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:23
- 大小:692.62KB
C语言课程设计 图书馆书目采编系统报告Word文档下载推荐.docx
《C语言课程设计 图书馆书目采编系统报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言课程设计 图书馆书目采编系统报告Word文档下载推荐.docx(23页珍藏版)》请在冰点文库上搜索。
一、系统设计目的
为提高图书书目采编处理效率及正确性,本系统利用计算机对图书书目采编进行统一管理,包括添加、浏览、排序、查找、统计书目等功能,实现图书书目采编的系统化和规范化,进一步减轻工作人员的工作负担,而设计了图书书目采编系统。
二、系统设计内容
使用结构数组或数据文件技术开发一个图书书目的采编系统,通过该系统的运行能实现在编图书的采编、查找、与统计等功能。
具体要求:
(1)系统以菜单方式工作,界面应清晰直观,便于用户操作;
(2)书目信息录入:
对新进图书书目加以录入,每本书包括书号(不重复)、书名、作者、价格、出版社、出版日期、进馆时间等;
(3)定时采编:
将所有的图书信息按书名排序,形成采编结果,并将采编结果显示出来(可以一页一页动态详细显示);
(4)查找:
对按书名采编后的图书书目,指定书名用二分查找法查找其信息,并显示其信息(可另外扩展查找);
(5)统计:
统计指定图书的库存量、统计指定时间段所进的书目和出版的书目。
一、
三、功能描述
(1)采编图书书目信息模块:
采编记录模块主要完成将数据存入数组中的工作。
在此系统中,图书书目信息可以从以文本形式存储的数据文件中读入,也可以从键盘逐个输入记录。
当从文件中读入记录时,它就是在以记录为单位存储的数据文件中,讲记录逐条复制到结构体类型的数组元素中,
(2)浏览图书书目信息模块:
浏览图书书目信息模块主要完成两个任务。
第一,判断对刚采编的图书书目是否存储,若是:
它将实现对记录的存盘操作,即将数组中各元素中存储的记录信息写入数据文件中;
第二,它将实现对讲数组中存储的记录信息以表格形式在屏幕上显示出来。
(3)排序图书书目信息模块:
排序图书书目信息模块主要是把图书先按书号排序,然后按书名排序,将它排序后的记录进行存储到文件中,为下面的模块做准备,并把存储的记录以表格形式在屏幕上显示出来。
(4)查找图书书目信息模块:
查找图书书目信息模块主要有两种选择查找,一个是指定书名,另一个是指定作者,都采用二分法查找,并将查找到的图书书目信息记录以表格的形式显示出来。
(5)统计图书书目信息模块:
统计图书书目信息模块主要是统计三种:
一是指定图书书名,二是约定一段时间出版社出版的数目,三是约定一段时间图书馆所进的图书书目,以表格形式打印出来。
四、总体设计
(一)功能模块设计
1.主控函数main()函数执行流程
系统首先以可读写的方式打开文本类型的数据文件,此文件默认为“book”,若该文件不存在,则新建此数据文件。
当打开文件操作成功后。
从文件中一次读出一条记录,添加到新建的数组中,然后执行显示主菜单和进入主循环操作,进行按键判断。
在判断键值时,有效的输入为0—7之间的任意数值,其他输入都被视为错误按键。
若输入为0,(即变量select=0),则会继续判断是否在对纪录进行了更新操作之后进行存盘操作,若未存盘,则全局变量saveflag=1,系统会提示用户是否需要进行数据存盘操作,用户输入y或Y,系统会进行存盘操作,最后,系统执行退出图书书目采编系统的操作。
若选择1.则调用add()函数,先提醒打开文件是否成功,再提醒用户是否增加图书书目记录;
若选择2,则调用disp()函数,执行将图书书目记录以表格形式显示在屏幕上并能进行以一页一页地浏览图书书目信息的操作;
若选择3,则调用sort()函数,执行对图书书目信息进行排序并以表格形式在屏幕上显示的操作,并提醒是否将排序后的结果存入文件中覆盖原有文件;
若选择4,则调用search()函数,执行对图书书目信息进行查找相关的图书信息的操作;
若选择5,则调用tongji()函数,执行对图书书目信息指定要求进行相关的统计并把结果显示到屏幕上;
若选择6,则调用save函数,执行讲记录存入磁盘的数据文件的操作;
若输入为0·
·
6以外的值,则调用wrong()函数,给出按键错误的提示。
盒图如下:
输入是否为0
2.增加图书书目记录模块
增加图书书目记录主要是实现将数据存入数组中。
当从数据文件中读出记录时,它调用fread(&
book【count】,sizeof(BOOKLIST),1,fp)文件读取函数。
执行一次从文件中读取一条图书书目记录存入数组元素中的操作,并且这个操作在main()函数中调用执行,即在图书书目采编系统进入显示菜单界面时,该操作已经执行,但成功与否,是在增加图书书目函数中给出提醒,通过全程变量openfile,若openfile=1,则显示openfilesuccess!
若该文件中没有数据,系统会提醒文件为空,没有任何记录可操作,此时用户可以进入增加图书书目中,进行记录的输入,即完成在数组中添加元素的操作。
值得注意的是,因为图书书目采编书号不能重复,若当输入书号重复时,则提醒出错并可以选择是否继续增加图书书目记录,这样符合现实化特点。
盒图如下:
3.浏览图书书目记录模块
浏览图书书目记录主要是实现将数据显示到屏幕上以便工作人员核对确认。
当数据从文件中读出时并存入结构体数组中时,可对结构体数组中信息加以选择的输出并以表格的形式显示在屏幕上,还要以一页一页动态地显示出来,调用系统停留函数system(“pause”)和系统清屏函数system(“cls”),这样就能达到目的(但每页下方有错误提醒的瑕疵)。
最后显示图书书目的总数,以便用户仔细浏览图书书目的情况。
盒图如下
4.排序图书书目记录模块
选择排序法也属于内部排序法中的一种,它是运用字段值比较后,从欲排序的数组元素中,按指定规则选出其字段最小的元素,并依原则交换数组元素位置后,更新欲排序的数组元素,以达到排序的目的。
这里我采用选择排序法来实现按照图书书目记录编号或图书书目书名字段的值(ASCII码的大小)从低到高对记录进行升序排序。
选择法排序的方法为:
从欲排序的n个数组元素中,以线性查找的方式找出最小的元素和第一个元素交换,再从剩下的(n-1)个数组元素中,找出最小的元素和第二个元素交换,以此类推,直到所有元素均已排序完成。
一种排序完成后,将以表格形式在屏幕上显示,然后继续提醒用户是否想使用另一种排序法进行排序,通过输入字符y或Y表示是判断用户的意图。
若是则回到子菜单继续进行排序;
否则继续执行下面命令。
当上面的都执行后,系统会提醒用户是否帮排序后的数据存入磁盘文件中,若是,则现有数组元素数据将覆盖原有的数组的元素;
若不想,则回到主菜单;
否
5.查找图书书目记录模块
查找图书书目信息模块主要是实现在数组中按图书书目信息中的书名或作者查找满足条件的记录。
在查找图书书目函数search()中,为了遵循模块化编程的原则,我在对数组的记录定位设计了一个单独的函数intlocate(BOOKLISTtemp[],intm,intn,charsearchtitle[])来查找指定书名的位置,先通过排序图书书目记录模块对图书书目按对书名排序后,采用二分查找法查找,若找到指定的书名,则返回该图书书目的数组下标位置值给变量p;
否则返回一个-1值给p。
若p不等于-1,则通过循环把相应的图书书目信息通过调用disp()函数以表格的形式显示到屏幕上。
执行完一种查找方法后,系统将提醒用户是否想继续查找,可以通过输入y或Y继续进行查找功能。
欢迎进入图书书目查找模块
n是否为0
是
选择按键值是否正确
是否按书名查找
循环查找指定作者的书目
查找之后询问是否继续:
一回子菜单;
二回主菜单
调用locate()函数用二分法查找
返回主菜单
6.统计图书书目记录模块
统计图书书目信息模块主要实现在数组中按指定的书名统计库存量、统计指定一段时间出版社出版的图书量或统计指定一段时间进馆的图书量,并把相应的图书书目信息以表格形式显示出来。
统计书名时可以调用前面已经使用过的函数intlocate(BOOKLISTtemp[],intm,intn,charsearchtitle[]),查找到一个指定书名的位置,再通过循环统计库存量并显示符合要求的数组元素信息。
统计一段时间的图书书目只要通过循环把在符合这段时间要求的图书书目信息通过调用disp()函数以表格显示出来。
其余统计类似。
当统计完一种后,系统会提醒用户是否还想进行另外的统计,通过输入y或Y,若是则回到统计选择的类型的子菜单,否则程序继续执行,将回到主菜单。
(二)数据结构设计
本程序定义了结构体Booklist,用于存放图书书目的基本信息。
typedefstructdate
{
intyear;
intmonth;
}DATA;
typedefstructbooklist
intnum;
chartitle[20];
charauthor[20];
charprice[10];
charpcompany[20];
DATAtimeofp;
DATAtimeofs;
}BOOKLIST;
其各字段的值的含义如下:
●intnum;
保存图书书目记录的编号。
●title[20];
保存图书书目记录的书名。
●author[20];
保存图书书目记录的作者。
●charprice[10];
保存图书书目记录的价格。
●charpcompany[20];
保存图书书目记录的出版社。
●DATAtimeofp;
保存图书书目记录的出版时间。
●DATAtimeofs;
保存图书书目记录的进馆时间。
(三)函数功能描述
1)printheader()
函数原型:
voidprintheader()
printheader()函数用于在以表格形式显示图书书目记录时,打印输出表头信息。
2)printdata()
voidprintdata(BOOKLISTpp)
printdata()函数用于以表格显示的方式,打印输出单个数组元素pp中的图书书目记录信息。
3)disp()
voiddisp(BOOKLISTtemp[],intn)
disp()函数用于显示temp数组中存储的n条记录,内容为booklist结构体定义的内容。
4)stringinput()
voidstringinput(char*t,intlens,char*searchtitle)
stringinput()函数用于输入字符串,并进行字符串长度验证(长度<
lens),t用于保存输入的字符串,因为是以指针形式传递的,所以t相当于该函数的返回值。
notice用于保存printf()中输出的提示信息。
5)locate()
intlocate(BOOKLISTtemp[],intm,intn,charsearchtitle[])
locate()函数用于定位函数中符合要求的元素的位置。
6)add()
intadd(BOOKLISTtemp[],intn)
add()函数用于在数组temp中增加图书书目记录,并返回数组中的当前记录数。
7)search()
voidsearch(BOOKLISTtemp[],intn)
search()函数用于在数组temp中按书名或作者查找满足条件的记录,并显示出来。
8)sort()
voidsort(BOOKLISTtemp[],intn)
sort()函数用于在数组temp中按编号或书名排序,并显示出来。
9)统计()
voidtongji(BOOKLISTtemp[],intn)
tongji()函数用于在数组temp中统计指定书名的库存量、指定一段时间出版社出版的图书量和进馆的图书量。
10)save()
voidsave(BOOKLISTtemp[],intn)
save()函数用于将保存图书书目信息的数组temp中的n个元素,并写入磁盘的数据文件中,覆盖原有的图书书目信息。
11)main()
main()是整个图书书目采编系统控制部分。
五、调试与测试
(一)、程序调试
1.在调试程序中遇到第一个难题是:
怎样打开并读出文件中结构体的图书书目信息并使用这些数据。
先采用单独设立一个初始化函数,但不怎么好使,不稳定。
因此我经过几次修改后直接将初始化文件的打开与建立放在了主函数中,并在增加图书书目模块提醒打开文件是否成功,经过几次调试修改,终于稳定可以操作。
2.第二个难题就是怎么样能回到每个模块的子菜单,而不是返回到主菜单再次进入,这样很不方便,因此为了人性化,我重新设置循环,设置函数原型、添加辅助函数,甚至有的地方还是用了goto语句(逼不得已,时间太紧),调试之后很成功。
程序使用也很人性化,操作很方便,提醒语句通俗易懂。
3.第三个问题是如何设置界面和界面的颜色搭配以及界面的提醒语句的设置。
这个问题经过重复多次的系统函数system(“cls”)、system(“pause”)等的巧妙运用和设置,一个个迎刃而解。
4.最后我在调试程序阶段学到了许多东西,一:
要模块化设计;
二:
模块接口设计;
三函数原型设置等都要从总体全局出发,这样才能开发出高层次的程序。
(二)、程序测试与运行
1.菜单调用屏幕操作函数,制作美观。
用户按任意键进入主菜单,提示输入选择,界面如下:
2.进入主菜单选择1增加图书书目记录:
第一提醒打开文件是否成功;
第二增加新进的图书书目信息,并每增加一条记录就显示该记录,以便于用户核对。
打开文件提醒
书号重复提醒
增加图书书目详情。
显示刚增加图书书目记录
3.返回主菜单,选择2浏览图书书目信息:
以表格形式显示在屏幕上,并以一页一页动态显示(但存在一点瑕疵)。
动态显示的瑕疵
接着上面接着显示:
4.返回主菜单,选择3排序图书书目信息:
按书号排序
调用disp()函数动态显示排序结果。
5.返回主菜单,选择4进入查找图书书目:
查找子菜单
按书名查找
显示查找结果。
没有查找的相应的书目
6.返回主菜单,输入5进入统计图书记录:
统计子菜单。
按出版时间统计
按书名统计
按时间统计的输入栏
7.返回主菜单,选择6保存刚输入的新的图书书目纪录:
8.返回主菜单,选择0退出图书书目采编系统:
※备注
※指导老师评语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课程设计 图书馆书目采编系统报告 语言 课程设计 图书馆 书目 采编 系统 报告