C语言图书管理系统课设报告.docx_第1页
C语言图书管理系统课设报告.docx_第2页
C语言图书管理系统课设报告.docx_第3页
C语言图书管理系统课设报告.docx_第4页
C语言图书管理系统课设报告.docx_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

C语言课程设计报告程序设计语言-C课程设计报告 题目:图书管理系统 班级: 学号: 姓名:2016年5月12日透过完成上述工作,使我认识到一个称职的管理人员应当具有良好的语言表达潜力、流畅的文字写作潜力、较强的组织领导潜力、灵活的处理问题潜力、有效的对外联系潜力、大型活动的策划及筹备潜力。第 25 页目录1. 程序总体功能2. 新增功能3. 函数调用关系4. 主要算法流程图1. 排序算法流程图2. 插入算法流程图5. 过程难点及解决方法6. 附录:源程序一:程序总体功能本图书管理系统可以实现图书管理的基本功能,包括图书信息的录入、输出、排序、删除、查找及批量导入/导出等。图书属性信息包括书号、书名、第一作者、版次、出版年信息。二:新增功能1. 数据校验功能:即在程序运行之前对输入数据的有效性进行判断,若输入数据不合逻辑则输出“数据输入有误,请核实后再输”不再执行后续程序,以此增加程序运行的效率。在本课程设计的删除记录功能中,按照要求输入要删除图书的书名后要接着输入书号来删除图书,若所输入书号不在正确书号范围内(书号输入错误),将直接终止程序,不再执行后续的删除程序。三:函数调用关系函数说明: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(Bookinfo 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 AddfromText(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. 排序算法(数组按书名升序排序)已有结构体数组Bookinfo books及数组元素个数n;定义整型量i,j,p;定义结构体变量 l;开始 i=0; j=0;p=0;否 in-1是p=ij=i+1 否 j=n-1 是 是 strcmp(booksk.book,(*s).book)0 否 booksk+1=(*s) booksk+1=booksk; k=k-1 return (n+1) 五:过程难点及解决方法1. 结构体定义及指向结构体变量的指针定义是新尝试:上机指导书用typedef 定义了新的结构体类型,而这种定义方式上课时未讲,需要重新学习这部分知识,并尝试使用。同时,指向结构体变量的指针也是新学习的知识,并首次使用。2. 变量的作用域及存储类别需严格区分:结构体数组中的元素个数n(主函数中用m接收函数返回的n值)需要在程序整个运行期间始终存在,而在一开始运行程序期间未意识到这个问题,把n简单地定义成int型,导致程序运行始终错误。在多次尝试后才意识到调用不同函数时,变量n应该保留上次函数调用结束时的值,于是把n定义成全局变量,m定义成静态局部变量,问题得以解决。3. 从文件批量导入数据多次失败:自己首先新建了“Dictory”文本文档并输入了图书信息,然而从文本文档导入数据时却总是得到一堆乱码,而不是正确的图书信息。最后经过和同学的讨论才得以找到原因,原来是因为文本文档中的数据之间有空格,而写scanf函数时却忽略了空格。调整之后,程序终于得以正常运行。4. 函数之间调用关系复杂:本程序调用的函数众多,函数中符号众多,写函数需要非常细心认真。也正因如此,我的程序在编译阶段出现了几十项错误,其中“C语言课设图书管理系统.cpp(174) : error C2601: Delete : local function definitions are illegal”这条错误出现10多次。查阅资料后才意识到这是由我编写的函数程序中花括号缺失造成的,排查后才得以解决。这只是众多编写过程中问题及难点的部分展示,其他的问题也多是由于不细心造成的,此处不再赘述。六:附录:源程序/图书管理系统 #include#include#include#includetypedef structchar ISBN10; char book30;char author20;int edition;char press50;int year;Bookinfo; /定义结构体数组Bookinfo books500; /定义含500个变量的结构体数组存放图书信息int menu_select();/显示主菜单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 AddfromText(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(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);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);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(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(0. Quitn);printf(Give your choice: n);c=getchar();while(c8);return(c-0);int Input(Bookinfo books,int n) /1.数据输入函数 char c; int i=0; printf(please input the information of a book:n);printf(The information of a book includes its ISBN,name,author,edition,press,year)n);/版本请输入数字for(n=0;c!=e;n+,i+)scanf(%s%s%s%d%s%d,booksi.ISBN,booksi.book,booksi.author,&booksi.edition,booksi.press,&booksi.year);printf(Now you can input e to stop or coutinue to input the informationn);getchar();c=getchar();printf(输入数据已终止!n); return n;void Display(Bookinfo books,int n) /2.数据输出函数 int i;char c;c=a; /赋初值for(i=0;in&c!=e;i+)printf(%st%stt%st%dt%st%dn,booksi.ISBN,booksi.book,booksi.author,booksi.edition,booksi.press,booksi.year);if(i%10=0&i!=0)printf(press enter to continue or input e to stopn); getchar(); c=getchar();system(pause); int Delete(Bookinfo books,int n,char *book) /3.1.删除记录被调用函数int i;int j=-1;/用于后续判断s是否输入正确char c;char s10;printf(以下是所有同名图书n);for(i=0;in;i+)if(strcmp(book,booksi.book)=0)printf(%s%s%s%d%s%dn,booksi.ISBN,booksi.book,booksi.author,booksi.edition,booksi.press,booksi.year);printf(input the ISBN of the book you want to delete!n);scanf(%s,s);printf(确认删除吗?(输入“Y”执行删除程序或者按任意键退出删除)n);getchar();c=getchar();if(c=y|c=Y)for(i=0;in;i+)if(strcmp(s,booksi.ISBN)=0)j=i;break;if(j!=i)printf(数据输入有误,请核实后再输n);elsefor(;jn;j+)booksj=booksj+1;printf(删除数据成功!n);return(n-1);else return(n);int Delete_a_record(Bookinfo books,int n) /3.2.删除记录char b30;char *book=b;char c;int m;printf(please input the name of a book you want to delete:n); scanf(%s,b);printf(确认删除吗?(输入“Y”执行删除程序或者按任意键退出删除)n);getchar();c=getchar();if(c=y|c=Y)m=Delete(books,n,book);return(m); void Sort_by_name(Bookinfo books,int n) /4.按照书名升序排列printf(已按照书名升序排列,返回2查看n);int i,j,p;Bookinfo l;for(i=0;in-1;i+)p=i;for(j=i+1;j=-1;k-)if(strcmp(booksk.book,(*s).book)=-1)n=n+1;return(n);int Insert_a_record(Bookinfo books,int n) /5.2.输入待插入的图书信息,调用Insert函数Bookinfo s;Bookinfo *p; /定义指向结构体变量的指针p=&s;int l;printf(please input the information of a book:n); printf(Theinformationof a book includes its ISBN,name,author,edition,pre

温馨提示

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

评论

0/150

提交评论