欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新C语言图书管理系统课设报告.docx

    • 资源ID:34722645       资源大小:150.84KB        全文页数:17页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新C语言图书管理系统课设报告.docx

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言图书管理系统课设报告C语言图书管理系统课设报告程序设计语言-C课程设计报告 题目:图书管理系统 班级: 学号: 姓名:2016年5月12日-目录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;否 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 *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 定义了新的结构体类型,而这种定义方式上课时未讲,需要重新学习这部分知识,并尝试使用。同时,指向结构体变量的指针也是新学习的知识,并首次使用。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<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_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(c<'0'|c>'8');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;i<n&&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;i<n;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;i<n;i+)if(strcmp(s,booksi.ISBN)=0)j=i;break;if(j!=i)printf("数据输入有误,请核实后再输n");elsefor(;j<n;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;i<n-1;i+)p=i;for(j=i+1;j<n;j+)if(strcmp(booksj.book,booksp.book)=-1) p=j;if(p!=i)l=booksp;booksp=booksi;booksi=l;int Insert(Bookinfo books,int n, Bookinfo *s) /5.1.按书名序插入记录s,返回记录个数int k; for(k=n-1;k>=-1;k-)if(strcmp(booksk.book,(*s).book)<0)booksk+1=(*s);break; booksk+1=booksk;if(k>=-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,press,year)n");scanf("%s%s%s%d%s%d",s.ISBN,s.book,s.author,&s.edition,s.press,&s.year); l=Insert(books,n,p); /函数调用printf("插入数据成功!n");printf("可重新返回5插入数据n");return(l);int Query(Bookinfo books,int n,char *book) /6.1.查询图书数据的被调用函数int i,j;for(i=0,j=0;i<n;i+)if(strcmp(booksi.book,book)=0)j+=1;printf("%s%s%s%d%s%dn",booksi.ISBN,booksi.book,booksi.author,booksi.edition,booksi.press,booksi.year);if(j!=0)return(j);else return(-1);void Query_a_record(Bookinfo books,int n) /6.2.输入待查找书名,调用Query函数查找记录char *book;char a30;int m;char c='q' /赋初值book=a;for(;c!='e')printf("please input the name of a book you want to queryn"); scanf("%s",a); m=Query(books,n,book); /结构体数组名作函数参数 if(m!=-1)printf("查询成功!n"); elseprintf("查询失败!n");printf("Now you can input 'e' to stop or press any key to coutinun");getchar();c=getchar();int AddfromText(Bookinfo books,int n) /7.从文件中整批输入数据FILE *fp;Bookinfo s500;int i,p;Bookinfo *q;fp=fopen("Dictory.txt","r");if(fp=NULL)printf("打开文件失败!n");exit(1); /判断打开是否成功 for(i=0;feof(fp)=0;i+) /此处格式控制字符之间必须有空格fscanf(fp,"%s %s %s %d %s %d ",si.ISBN,si.book,si.author,&si.edition,si.press,&si.year); for(p=i-1;p>=0;p-) q=&sp; n=Insert(books,n,q); /结构体数组名作函数参数 printf("从文件输入数据并有序插入成功!n"); fclose(fp);return (n);void WritetoText(Bookinfo books,int n) /8.将数组记录全部写入文件FILE *fp;int i=0;printf("即将把数据写入文件,请稍后.n");fp=fopen("WritetoText.txt","w");if(fp=NULL)printf("创建文件失败!n");exit(1); for(;i<n;i+)fprintf(fp,"%st%st%st%dt%st%dn",booksi.ISBN,booksi.book,booksi.author,booksi.edition,booksi.press,booksi.year);printf("数据写入文件成功!请到文件中查看数据!n"); fclose(fp);

    注意事项

    本文(最新C语言图书管理系统课设报告.docx)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开