C语言图书管理系统课设报告(共25页).docx
《C语言图书管理系统课设报告(共25页).docx》由会员分享,可在线阅读,更多相关《C语言图书管理系统课设报告(共25页).docx(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上程序设计语言-C课程设计报告 题目:图书管理系统 班级: 学号: 姓名:2016年5月12日专心-专注-专业目录1. 程序总体功能2. 新增功能3. 函数调用关系4. 主要算法流程图1. 排序算法流程图2. 插入算法流程图5. 过程难点及解决方法6. 附录:源程序一:程序总体功能本图书管理系统可以实现图书管理的基本功能,包括图书信息的录入、输出、排序、删除、查找及批量导入/导出等。图书属性信息包括书号、书名、第一作者、版次、出版年信息。二:新增功能1. 数据校验功能:即在程序运行之前对输入数据的有效性进行判断,若输入数据不合逻辑则输出“数据输入有误,请核实后再输”不再
2、执行后续程序,以此增加程序运行的效率。在本课程设计的删除记录功能中,按照要求输入要删除图书的书名后要接着输入书号来删除图书,若所输入书号不在正确书号范围内(书号输入错误),将直接终止程序,不再执行后续的删除程序。三:函数调用关系函数说明:0.退出系统1.数据输入函数:int Input(Bookinfo books,int n)2.数据输出函数:void Display(Bookinfo books,int n)3.删除记录函数(1):int Delete(Bookinfo books,int n,char *book) 删除记录函数(2):int Delete_a_record(Bookin
3、fo books,int n)4.排序函数:void Sort_by_name(Bookinfo books,int n)5.有序插入函数(1):int Insert(Bookinfo books,int n, Bookinfo *s) 有序插入函数(2):int Insert_a_record(Bookinfo books,int n)6. 数据查询函数(1):int Query(Bookinfo books,int n,char *book) 数据查询函数(2):void Query_a_record(Bookinfo books,int n)7. 从文件导入数据函数:int Addfro
4、mText(Bookinfo books,int n)8. 记录数据写入文件函数:void WritetoText(Bookinfo books,int n)9. 主菜单函数:int menu_select()10. 主函数:void main()函数调用关系:(箭头指向被调用函数)数据输入函数11主函数10 数据输出函数22循环调用 删除记录函数3(1)删除记录函数3(2) 3 排序函数4 4主菜单函数9有序插入函数5(1)有序插入函数5(2) 5 数据查询函数6(1)数据查询函数6(2) 6 从文件导入数据函数7 7 将记录数据写入文件函数8 8 退出系统 0 四:主要算法流程图1. 排序
5、算法(数组按书名升序排序)已有结构体数组Bookinfo books及数组元素个数n;定义整型量i,j,p;定义结构体变量 l;开始 i=0; j=0;p=0;否 i<n-1是p=ij=i+1 否 j<n是strcmp(booksj.book,booksp.book)=-1是否p=j j=j+1否 pii=i+1是 l=booksp booksp=booksi booksi=l 结束2. 插入算法(输入图书信息,按书名有序插入)已有结构体数组Bookinfo books及数组元素个数n;(1)输入待插入的图书信息,调用Insert函数开始 Bookinfo s;Bookinfo *
6、p;int l; p=&s 输入图书信息 调用Insert函数,l=Insert(books,n,p) 返回主函数,输出“现在共有l本书” 结束 (2) Insert函数部分 Insert(books,n, *s) int k=n-1 否 k>=n-1 是 是 strcmp(booksk.book,(*s).book)<0 否 booksk+1=(*s) booksk+1=booksk; k=k-1 return (n+1) 五:过程难点及解决方法1. 结构体定义及指向结构体变量的指针定义是新尝试:上机指导书用typedef 定义了新的结构体类型,而这种定义方式上课时未讲,
7、需要重新学习这部分知识,并尝试使用。同时,指向结构体变量的指针也是新学习的知识,并首次使用。2. 变量的作用域及存储类别需严格区分:结构体数组中的元素个数n(主函数中用m接收函数返回的n值)需要在程序整个运行期间始终存在,而在一开始运行程序期间未意识到这个问题,把n简单地定义成int型,导致程序运行始终错误。在多次尝试后才意识到调用不同函数时,变量n应该保留上次函数调用结束时的值,于是把n定义成全局变量,m定义成静态局部变量,问题得以解决。3. 从文件批量导入数据多次失败:自己首先新建了“Dictory”文本文档并输入了图书信息,然而从文本文档导入数据时却总是得到一堆乱码,而不是正确的图书信息
8、。最后经过和同学的讨论才得以找到原因,原来是因为文本文档中的数据之间有空格,而写scanf函数时却忽略了空格。调整之后,程序终于得以正常运行。4. 函数之间调用关系复杂:本程序调用的函数众多,函数中符号众多,写函数需要非常细心认真。也正因如此,我的程序在编译阶段出现了几十项错误,其中“C语言课设图书管理系统.cpp(174) : error C2601: 'Delete' : local function definitions are illegal”这条错误出现10多次。查阅资料后才意识到这是由我编写的函数程序中花括号缺失造成的,排查后才得以解决。这只是众多编写过程中问题及
9、难点的部分展示,其他的问题也多是由于不细心造成的,此处不再赘述。六:附录:源程序/图书管理系统 #include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>typedef structchar ISBN10; char book30;char author20;int edition;char press50;int year;Bookinfo; /定义结构体数组Bookinfo books500; /定义含500个变量的结构体数组存放图书信息int menu_sel
10、ect();/显示主菜单int Input(Bookinfo books,int n); /1.数据输入void Display(Bookinfo books,int n); /2.输出数据int Delete_a_record(Bookinfo books,int n); /3.删除记录void Sort_by_name(Bookinfo books,int n); /4.排序int Insert_a_record(Bookinfo books,int n); /5.有序插入void Query_a_record(Bookinfo books,int n); /6.查询数据int Addfr
11、omText(Bookinfo books,int n); /7.从文件中整批输入数据void WritetoText(Bookinfo books,int n); /8.将记录写到文件static int n=0;void main() /主函数static int m=0; /定义静态局部变量for(; ;)switch(menu_select()case 1:m=Input(books,n) ;printf("现在共有%d本书n",m);system("pause");break;case 2:Display(books,m);system(&qu
12、ot;pause");break;case 3:Delete_a_record(books,m) ;system("pause");break;case 4:Sort_by_name(books,m);system("pause");break; case 5: m=Insert_a_record(books,m); printf("现在共有%d本书n",m);system("pause");break;case 6:Query_a_record(books,m);system("pause&q
13、uot;);break;case 7:m=AddfromText(books,m);printf("现在共有%d本书n",m);system("pause");break;case 8:WritetoText(books,m);system("pause");break;case 0:printf("再见!欢迎再次光临图书管理系统n");system("pause");exit(0);int menu_select() /显示主菜单程序char c;dosystem("cls"
14、;);printf("n");printf("n");printf("n");printf("*/欢迎光临图书管理系统V30.0+/*n");printf("*designed by lichenyang*n");printf("*Put into use in May 2016*n");printf("1. Input recordsn");printf("2. Display All Recordsn");printf("
15、3. Delete a Recordn");printf("4. Sortn");printf("5. Insert a Recordn");printf("6. Queryn");printf("7. Add Record from a Text Filen");printf("n");printf("n");printf("n");printf("8. Write to a Text Filen");printf(&quo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图书 管理 系统 报告 25
限制150内