小型图书信息管理系统的设计与实现.docx_第1页
小型图书信息管理系统的设计与实现.docx_第2页
小型图书信息管理系统的设计与实现.docx_第3页
小型图书信息管理系统的设计与实现.docx_第4页
小型图书信息管理系统的设计与实现.docx_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附录2:课程设计报告示例1. 题目:小型图书信息管理系统的设计与实现2.功能:(1)每一条记录包括一个图书号,图书名,作者名,出版社,出版日期,图书价格。(2)输入功能:可以多次完成您所需的图书记录的输入的功能。(3信息录入功能:完成对“图书号,图书名,作者名,出版社,出版日期,图书价格”信息的录入。(4)信息浏览功能:完成全部图书信息记录的显示和浏览,包括排序后的信息的功能。(5)查找功能:完成按书名查询,按作者名查询,并显示的图书信息功能。(6) 图书价格排序功能:按图书价格进行排序,并显示排序好的的图书信息功能。(7)删除功能:完成删除图书的信息的功能。(8)修改功能:完成删除图书的信息的功能。(8) 文件读取数据功能:实现将保存在文件中的图书信息读取出来的功能。(9)图书信息保存功能:能够将所输入的图书信息进行保存的功能。(10)图书信息帮助功能:能够给用户提供所有函数的帮助功能,并作相应得介绍。 (10)使得小型图书信息管理系统有一个清晰美观界面来调用各个功能。3.要求:(1)整个系统均用c语言实现;(2)利用指针、链表来实现学生成绩的数据结构设计;(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;(4)系统的各个功能模块都用函数的形式来实现;(5)可以将学生成绩信息保存在文件中。(6)可以将学生信息从文件中读取出来。4.设计内容:整个系统除了主函数外,另外还有13个函数,包括主函数在内,以实现六大功能:图 书 信 息 录 入功能,图 书 信 息 浏 览功能,图 书 信 息 查 询功能,图 书 信 息 的 排 序功能, 图 书 信 息 的 删 除 ,图 书 信 息 的 修 改功能,图书信息保存,图书信息读取, 图书信息帮助功能 ,退 出 系 统 功能。各个函数的详细设计说明分别如下:其功能流程图如下所示:图书信息保存图书信息浏览图书信息查询图书信息删除小型图书信息管理系统图书信息录入菜单选择模块。菜单菜单选择模块。(1) 择模块。图书信息修改功能表菜单选择图书信息排序图书信息帮助图书信息读取图1 主菜单选择功能流程图4.1主函数void main()该函数利用while语句来实现主菜单的无限次调用,通过选择各选项,完成相应的功能,当选择退出选项时,退出循环,具体的选择项有:(1). 图 书 信 息 录 入;(2). 图 书 信 息 浏 览;(3). 图 书 信 息 查 询;(4). 图 书 信 息 的 排 序 (5). 图 书 信 息 的 删 除;(6). 图 书 信 息 的 修 改 ;(7). 图书信息保存,(8).图书信息读取,(9).图书信息帮助功能 ,(10). 退 出 系 统 。具体代码如下:/*主函数*/void main() int a; while(1) printf( n); printf( n); printf( n); printf( 欢迎来到您小型图书信息管理系统 n);printf( *n);printf( 功 能 表: n);printf( (1). 图 书 信 息 录 入 n);printf( (2). 图 书 信 息 浏 览 n);printf( (3). 图 书 信 息 查 询 n); printf( (4). 图 书 信 息 的 排 序 n);printf( (5). 图 书 信 息 的 删 除 n);printf( (6). 图 书 信 息 的 修 改 n); printf( (7). 图 书 信 息 的 保 存 n); printf( (8). 图 书 信 息 的 读 取 n);printf( (9). 图 书 信 息 的 帮 助 n);printf( (0). 退 出 系 统 n);printf( *n);fflush(stdin); / 清空输入缓冲区。scanf(%d,&a);scanf(%c,&c);scanf(%d,&a);switch(a)case 1:inputinfor();break;case 2:liulaninfor(); break;case 3:shusearch();break; case 4: shupaixun();break;case 5:shanchu();break;case 6:xiugaitushu();break; case 7:baocun();break; case 8: readouttushu();break;case 9:bangzhu();break;case 0: printf( 欢迎您再次使用小型图书信息管理系统!谢谢您的使用! n); exit(0);default:printf(n对不起!您输入有错误n); 4.2初始化结构体定义了一个图书信息的结构体,包括chartushunumber20;chartushuname50; char zuoauthor50; char publisher50; char chubantime50; float shuprice; 等,使“图书号,图书名,作者名,出版社,借出版时间,书的价格”等功能得以实现。具体代码如下: /*定义数据结构*/ struct stubook char tushunumber20; /*图书号*/char tushuname50; /*图书名*/char zuoauthor50; /*作者名*/char publisher50; /*出版社*/char chubantime50; /*出版时间*/float shuprice; /*书的价格*/ ; struct stu_shulibrary int count; /*图书的本数*/ stubook book50; /*最大可有的图书:50本*/information; /*在定义结构体类型同时,定义结构体变量*/4.3图书信息保存函数 voidbaocun ()该函数利用文件指针把图书信息写入文件,并主要对输入的信息进行保存,如果没有写入过数据则不能打开文件,则不能对文件进行保存,当打开文件时,对图书的具体信息进行保存。通过详细信息保存,以备下次查询使用的功能,并能够多用户所输入的具体图书信息进行保存,也为下次使用带来了方便,给图书文件打开函数提供了基础的功能。具体代码如下:/*图书信息保存函数*/void baocun()file *fp;if(fp=fopen(e:information.txt,wb)=null)printf(n不能保存图书信息n);return;fwrite(&information.count,sizeof(int),1,fp);fwrite(information.book,sizeof(information.book0),information.count,fp); printf(n保存图书信息成功n);4.4打开图书文件函数 void readouttushu()该函数利用文件指针打开文件,并主要对已经输入的保存信息进行调用,从而保证了信息得以继续编辑和使用,不使得信息会丢失不见。同样的,如果之前没有输入过信息,那么则不能打开文件,则不能对文件进行里的数据进行读取,当打开文件时,对图书的具体的详细信息读取,以备下次查询使用,以及排序,修改,删除等的功能实现,也为下次使用带来了方便,给接下来的函数使用提供了基础的功能。具体代码如下:/*打开图书文件函数*/void readouttushu() file *fp;if(fp=fopen(e:information.txt,rb)=null)printf(n不能读取图书信息n);return;elsefread(&information.count,sizeof(int),1,fp);fread(information.book,sizeof(information.book0),information.count,fp);printf(n读取图书信息成功,请浏览!n);fclose(fp);4.5图书信息数据录入函数 void inputinforma()该函数的功能:完成对“图书号,图书名,作者名,出版社,出版日期,图书价格”信息的录入,实现图书信息的输入,为以后的保存函数,浏览函数,查询函数,排序函数,删除函数,修改函数等功能的实现提供了基础。并通过information.count+来计数,记着输入信息的总数,且通过if (y!=1)来判别是1录入,0不录入,来实现是否继续录入的功能。其功能流程图如下所示:(1).图 书 信 息 录 入 输入图书号输入图书名输入作者名输入出版社 输入出版时间书的价格信息是否继续录入结束否 输入出版时间是 输入出版时间图2 图书信息数据录入流程图具体代码如下:/*图书信息录入函数*/void inputinfor() int y=1;system(cls); /*清屏*/while(y) printf( 请输入您的书籍的图书号:);scanf(%s,information.bookinformation.count.tushunumber);printf( 请输入图书名:);scanf(%s,information.bookinformation.count.tushuname);printf( 请输入作者名:);scanf(%s,information.bookinformation.count.zuoauthor);printf( 请输入出版社:);scanf(%s,information.bookinformation.count.publisher);printf( 请输入出版时间:);scanf(%s,information.bookinformation.count.chubantime);printf( 请输入该书的价格:);fflush(stdin);scanf(%f,&information.bookinformation.count.shuprice);information.count+;printf(n是否继续录入请选择,谢谢!n);printf(n(1).继续; (0).退出录入; n);fflush(stdin);scanf(%d,&y);if (y!=1)y=0;break;4.6图书信息浏览函数 void liulaninfor()算法:首先清屏,通过information.count计入的图书数,运用for语句实现对图书信息的输出,并写到屏幕上,并通过fflush(stdin);来 清空输入缓冲区。最终实现信息浏览功能:完成全部图书信息记录的显示和浏览,包括排序后的信息的功能。具体代码如下:/*图书信息浏览函数*/void liulaninfor()system(cls);printf(图书号 图书名 作者名 出版社 出版日期 图书价格n);for (int i=0;iinformation.count;i+)printf(%s %s %s %s %s %6.4fn,information.booki.tushunumber,information.booki.tushuname,information.booki.zuoauthor,information.booki.publisher,information.booki.chubantime,information.booki.shuprice);printf(请按任何键返回!n);fflush(stdin);getchar();4.7信息查询菜单函数void chaxun ( ) 通过void chaxun ( )查询函数来实现查询,先清屏system(cls);然后通过switch(a)来判断查询方式是:1. 按书名查询,还是:2. 按作者名查询,最终图书信息查询功能:完成按书名查询,按作者名查询,并显示的图书信息功能。其功能流程图如下所示:输入要查询方式switch(a)2. 按作者名查询1. 按书名查询12显示主菜单,输入数字3开 始图3 图书信息查询流程图具体代码如下:void shusearch() int a;system(cls); /*进行清屏*/printf(现在开始查询!n); printf(* 小型图书管理系统查询功能*n); printf(*n);printf( 1. 按书名查询 n);printf( 2. 按作者名查询 n);printf( 3. 返回主菜单 n);printf(*n); printf(tt请选择你想要的查询方式:);fflush(stdin); scanf(%d,&a); switch(a) case 1:search_shuname();break; case 2:search_inauthor();break;case 0:return;4.8按书名查询函数void search_shuname( ) 和 按作者名查询函数void search_inauthor( )这两个函数的功能基本相同,只不过一个是按书名查询的函数,而另一个是按作者名查询的函数。查询到信息写到屏幕上的信息有 :图书号,图书名,作者名,出版社,出版日期,图书价格。并主要通过strcmp比较函数来判断找到符合输入图书信息的书本与否,找到输出,找不到则显示:不能找到该图书信息。其按书名查询功能流程图如下所示:开 始 按图书名查询函数 请输入图书号 请输入图书名 请输入作者名 请输入出版社 请输入出版日期 请输入图书价格 if (flag!=0) 否找到该图书信息 是不能找到该图书信息! 结 束图4 按书名查询查询流程图具体代码如下:/*按书名查询函数*/void search_shuname() char shu250; int flag=1;printf(n请输入要查询的书名: n);fflush(stdin);scanf(%s,shu2);printf(图书号 图书名 作者名 出版社 出版日期 图书价格 n );for(int i=0;iinformation.count;i+ )if(strcmp(shu2,information.booki.tushuname)=0) flag=0;printf(%s %s %s %s %s %6.4fn,information.booki.tushunumber,information.booki.tushuname,information.booki.zuoauthor,information.booki.publisher,information.booki.chubantime,information.booki.shuprice); printf(请按任何键返回!n);if (flag)printf(不能找到该图书信息!n);fflush(stdin);getchar();/*按作者名查询函数*/void search_inauthor() char shu350;int flag=1;printf(请输入要查询的书的作者: );fflush(stdin);scanf(%s,shu3);printf(图书号 图书名 作者名 出版社 出版日期 图书价格n);for(int i=0;iinformation.count;i+ )if(strcmp(shu3,information.booki.zuoauthor)=0) flag=0;printf(%s %s %s %s %s %6.4fn,information.booki.tushunumber,information.booki.tushuname,information.booki.zuoauthor,information.booki.publisher,information.booki.chubantime,information.booki.shuprice); printf(请按任何键返回!n);if (flag!=0)printf(不能找到该图书信息!);fflush(stdin); / 清空输入缓冲区。scanf(%d,&a);scanf(%c,&c);getchar();4.9排序函数 void shupaixun( ) 定义了j,w来实现冒泡法图书信息的排序,该函数主要是用图书的价格来排序的。一次找到其中书本价格大的书放到最后,通过计数count来确认要排序多少次,图书价格排序功能:按图书价格进行排序,并显示排序好的的图书信息功能。具体代码如下:/*排序函数*/void shupaixun()int j,w;stubook temp;for(j=0;jinformation.count-1;j+) for(w=0;w=information.bookw+1.shuprice)temp=information.bookw;information.bookw=information.bookw+1; information.bookw+1=temp; liulaninfor(); fflush(stdin); / 清空输入缓冲区。scanf(%d,&a);scanf(%c,&c);getchar();4.10删除函数void delate( ) 首先定义了一个让用户输入信息的书本号的字符数组char tushunumber20,通过它来存放用户输入的要删除的图书号的信息,然后进行清除内部数据缓存区。用for(i=0;iinformation.count;i+)来依次实现图书信息的删除,用strcpy符串复制函数,在找出了对于的图书信息后,直接把要删除的信息通过后一信息直接复制到要删除的信息上,依次这样执行,来保证不会打乱顺序,并能够实现删除功能:即完成删除图书的信息的功能。这是一个不返回值的有参函数,形参为“链表头的指针”,可以把学生记录保存在电脑上由自己任意命名的二进制文件。其图书删除流程图如下所示:开 始首先选择5选项请输入将删除的图书号是否对应的图书号 否 对不起,不能找到图书信息! 是 删除图书文件成功,请继续选择! 结 束图5 图书删除流程图具体代码如下:/*删除函数*/void shanchu() char tushunumber20;system(cls); /*清屏*/printf(n 请输入要删除的书本号: );fflush(stdin);scanf(%s,tushunumber);int i;for (i=0;iinformation.count;i+)if(strcmp(tushunumber,information.booki.tushunumber)=0)break;if (i!=information.count)for(;iinformation.count-1;i+)strcpy(information.booki.tushuname,information.booki+1.tushuname);strcpy(information.booki.tushunumber,information.booki+1.tushunumber);strcpy(information.booki.publisher,information.booki+1.publisher);strcpy(information.booki.zuoauthor,information.booki+1.zuoauthor);strcpy(information.booki.chubantime,information.booki+1.chubantime);information.booki.shuprice=information.booki+1.shuprice;information.count-;printf(n 删除图书文件成功,请继续选择!n);elseprintf(n 对不起!文件不能找到!n);fflush(stdin);getchar();4.11修改图书信息函数void xiugai( )void xiugaitushu()是该功能实现的函数,其使得用户能够对已经输入的信息进行修改,并且保持入数据库当中,保证了以后信息的更改和完善。首先定义了一个让用户输入信息的书本号的字符数组char tushunumber20,通过它来存放用户输入的要删除的图书号的信息,然后进行清除内部数据缓存区。用for(i=0;iinformation.count;i+)来依次实现图书信息的修改,第一,先用strcmp来判断是不是能找到用户所要修改的信息,当找到用户所要修改的信息,然后用stubook book实现将用户新输入的图书信息保存到结构体成员之中,接着用strcpy字符串复制函数,在找出了对于的图书信息后,直接把要新输入已经存入结构体的图书信息直接复制到要修改的信息上,依次这样执行,并来保证不会打乱顺序,并最终能够实现修改功能:即完成修改图书的信息的功能。具体代码如下:/*修改图书信息函数*/void xiugaitushu()char tushunumber20;system(cls); /*清屏*/printf(n 请输入要修改的书本号: );fflush(stdin);scanf(%s,tushunumber);int i;for (i=0;iinformation.count;i+) if(strcmp(tushunumber,information.booki.tushunumber)=0) printf(图书号 图书名 作者名 出版社 出版日期 图书价格n); printf(%s %s %s %s %s %6.4fn,information.booki.tushunumber,information.booki.tushuname,information.booki.zuoauthor,information.booki.publisher,information.booki.chubantime,information.booki.shuprice); break; if (i!=information.count) stubook book;printf(n 请输入修改后此图书的信息n);printf( 请输入图书号:);scanf(%s,book.tushunumber);printf( 请输入图书名:);scanf(%s,book.tushuname);printf( 请输入作者名:);scanf(%s,book.zuoauthor);printf( 请输入出版社:);scanf(%s,book.publisher);printf( 请输入出版时间:);scanf(%s,book.chubantime);printf( 请输入该书的价格:);fflush(stdin);scanf(%f,&book.shuprice); strcpy(information.booki.tushunumber,book.tushunumber);strcpy(information.booki.tushuname,book.tushuname);strcpy(information.booki.publisher,book.publisher);strcpy(information.booki.zuoauthor,book.zuoauthor);strcpy(information.booki.chubantime,book.chubantime);information.booki.shuprice=book.shuprice;printf(n修改图书文件成功,请继续选择!n);elseprintf(n 对不起!文件不能找到!n);fflush(stdin);getchar();4.12图书信息帮助函数void bangzhu( )简单的帮助功能,来使用户能够熟练的掌握本程序的使用,并逐一介绍了各个功能。具体代码如下:/*帮助图书信息函数*/void bangzhu() printf( 下方显示的是您所需的帮助信息:n);printf( n); printf( 如果选择1,则进入第一个选项(1).图 书 信 息 录 入:完成对图书号,图书名,作者名,出版社,出版日期,图书价格信息的录入。n);printf( 如果选择2,则进入第二个选项(2).图 书 信 息 浏 览:完成全部图书信息记录的显示和浏览,包括排序后的信息的功能。n);printf( 如果选择3,则进入第三个选项(3).图 书 信 息 查 询 :完成按书名查询,按作者名查询,并显示的图书信息功能。n); printf( 如果选择4,则进入第四个选项(4).图 书 信 息 的 排 序:按图书价格进行排序,并显示排序好的的图书信息功能。n);printf( 如果选择5,则进入第五个选项(5).图 书 信 息 的 删 除:完成删除图书的信息的功能。n);printf( 如果选择6,则进入第六个选项(6).图 书 信 息 的 修 改:完成修改图书的信息的功能。n);printf( 如果选择7,则进入第七个选项(7).图 书 信 息 保 存 :能够将所输入的图书信息进行保存的功能。n); printf( 如果选择8,则进入第八个选项(8).图 书 文 件 读 取 :实现将保存在文件中的图书信息读取出来的功能。n);printf( 如果选择9,则进入第九个选项(9).帮 助 功 能:提供一些帮助给用户使用,以备更好的使用。n);printf( 如果选择0,则进入第零个选项(0).退 出 系 统:用来退出系统,以备下次再使用。n);printf(nn 请按任何键返回,谢谢!n);fflush(stdin); getchar();5.调试分析(1).我刚开始用一组简单的数据对程序进行调试的时候,主函数已经定义好了,可是当我进行排序的时候发现不能排序,排序功能已经定义好了,这是为什么了,它提示我:syntax error : missing ; before identifier temp;temp : undeclared identifier两个错误,经过仔细查找原来是数据结构定义错误这里的“information temp”不应该这样定义而是“stubook temp”,再进行调试的时候发现错误没有了,再进行排序选择后能够实现对图书的价格进行排序。(2).在当数据测试时,我已经定义好了主函数,并且有7个功能,包括退出程序,可是当我选择第2项浏览图书信息时候,直接出现了:“liulannfor : undeclared identifier”,经过查询和分析,原来是查询函数的名称出错,经过修改后,能够实现查询信息,并且没有错误。(3).当我选择的排序函数的时候,之前我已经往程序中输入了相关图书信息数据,然后通过主函数选择“void shupaixun()”,可是当我按下排序功能选择项之后,函数又直接返回到了主函数菜单函数的界面上,这是怎么回事呢?经过不断的测试与分析,最终我选择了在排序函数后加上之前已经定义好的图书浏览函数“liulaninfor();”,来使排序好的图书得以在屏幕上显示。并最终实现了所需要的功能。(4).在调试时,当我选择了查询函数中的按书名查询函数“void search_shuname()”时候,之前已经录入了信息,当我确认了之后,发现图书信息是可以完全显示出来,可是信息下面直接把主函数给掉了出来,这可不是我想要的结果,于是为了更加的美观和完善,我在“按书名查询函数search_shuname()”中添加了这么一句程序语音“getchar();”,而当用户输入任意一个字符的时候才会退出查询界面,并且主函数界面不会随着查询的结果一起出现,只有在用户输入任何一个字符的时候才会退出,并返回主函数菜单界面;接着再进行测试的时候发现功能能够实现了,并且得以完善。6.总结在经过两个多星期的c语言课程设计小型图书信息管理系统,使我受益倍多,虽然这次课程设计虽然花了我不少时间,但正是这些时间,能够让我了解到了c语言的重要性。我设计的小型图书信息管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能功能不是很完美,但我深信其功能是可以的!从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。相信这次的课程设计为我以后继续从事计算机工作打了一个小小的开头,在以后的日子里将会有许多这样的设计需要我完成,但是我深信自己能够逐渐开始掌握这门技巧,并熟练的运用到以后的工作当中,这离不开老师的细心教导和辅助。在此,学生谢谢老师的谆谆教导!老师您辛苦了!因为这是第一次进行设计该课题的内容,难免会有许多的不足,有许多不良的地方!还希望老师能及时给出意见,谢谢老师的观看与批阅!附:程序所有源代码如下:/*头文件*/#include#include#include/*定义数据结构*/ struct stubook char tushunum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论