欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    C语言图书馆管理系统课程设计.doc

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

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

    C语言图书馆管理系统课程设计.doc

    目录一、需求分析2二、概要设计2三、详细设计4四、调试分析6五、用户手册6六、测试数据6七、附录8一、需求分析1. 程序以菜单的方式工作,具备图书的添加、删除、修改、查询、统计操作,数据存储采用文件形式。2.定义结构体数组struct library bookinf30,用以存储ISBN、书名、作者名、图书类别、出版单位、出版时间、价钱、数量信息。利用文件开辟并将信息保存在“bookinf.txt”中。3.用户从键盘输入需要的操作,其中“ISBN、书名、作者名、图书类别、出版单位”需使用字符输入,“出版时间、价格、数量”采用数字输入。4.测试数据:(1)查找:若找到了所要查找的书本,则打印出书本信息;若没有找到,则打印“没有找到您要找的书本”(2)删除:若找到了所要查找的书本,按下y确认删除后,打印出“该书已删除”;若没有找到要删除的书本,则打印“没有找到该书,退出操作”(3)修改:若找到了要修改的书本,打印“请输入你要修改的信息”并开始修改;若没有找到要修改的书本,则打印“没有找到要修改的书本”5.程序执行命令为:(1)创建“bookinf.txt”文件(2)将图书信息用添加操作加进“bookinf.txt”文件中(3)用户选择所需操作(4)搜索结果二、概要设计1.定义结构体数组struct library bookinf50。bookinfi.ISBN / ISBN bookinfi.name /书名bookinfi.author / 作者名bookinfi.vari / 图书类别bookinfi.pubplace /出版单位bookinfi.pubtime / 出版时间bookinfi.price /价格bookinfi.num / 数量/* 用以下程序开辟存储文件"bookinf.txt" */FILE *fp; if(fp=fopen("bookinf.txt","r+")=NULL) printf("无法打开文件!n"); return; 2.程序构造add ()通过此函数将输入的书本信息添加存储进"bookinf.txt"文件中,用于下一次的查询或删、改、统操作的调用。del()通过此函数完成对"bookinf.txt"文件中书本信息的删除,“printf("确定要删除该书吗?(y/n) n");”键盘输入y/n确定书本信息的删除,删除后将不再有该书记录modify()通过此函数完成对书本信息的修改,修改内容包括:ISBN、书名、作者名、图书类别、出版单位、出版时间、价格、数量。search()此函数为查询书本信息操作,可查询"bookinf.txt"文件中存储的书本信息。count()此操作为统计操作,用于统计"bookinf.txt"文件中存储书本的总数量及金额数。main()通过对上述函数的调用,将所得信息打印出来3.主程序流程主函数 增加模块删除模块修改模块查询模块统计模块三、详细设计1.图书馆管理的数据类型struct librarychar ISBN20; /ISBNchar name30; /书名char author30; /作者名char vari10; /图书类别char pubplace50; /出版单位int pubtime; /出版时间int price; /价格int num; /数量;/-基本操作的算法描述-1.文件部分FILE *fp; if(fp=fopen("bookinf.txt","r+")=NULL) /检查打开的操作是否出错printf("无法打开文件!n"); /若出错则打印该行文字return; 2.查询操作部分printf("n请输入您要查找的书名n");scanf("%s",bookname); /输入想查询的书名 while(!feof(fp) /循环 直到文件尾部,函数值为真 fread(&bookinf,sizeof(struct library),1,fp); /从fp中读入1个长度为sizeof(struct library)的数据,存到bookinf 中if(strcmp(bookinf.name,bookname)=0) /比较输入的书名和文件中保存的书名,若相同printf("ISBN 书名 作者名 图书类别 出版单位 出版时间 价格 数量n");printf("%s %s %s %s %s %d %d %d n",bookinf.ISBN,bookinf.name,bookinf.author,bookinf.vari,bookinf.pubplace,bookinf.pubtime,bookinf.price,bookinf.num);/若相同,则打印出书本的信息i=1;break; if(i!=1) /若没有找到该书printf("没有找到您要找的书本n");3.删除部分strcpy(bookinfflag.ISBN,bookinfflag+1.ISBN);/将后一本书的ISBN复制给前一本书的ISBN strcpy(bookinfflag.name,bookinfflag+1.name); /将后一本书的书名复制给前一本书的书名strcpy(bookinfflag.author,bookinfflag+1.author); /将后一本书的作者名复制给前一本书的作者名strcpy(bookinfflag.vari,bookinfflag+1.vari); /将后一本书的图书种类复制给前一本书的图书类别strcpy(bookinfflag.pubplace,bookinfflag+1.pubplace); /将后一本书的出版单位复制给前一本书的出版单位bookinfflag.pubtime=bookinfflag+1.pubtime; /将后一本书的出版时间复制给前一本书的出版时间bookinfflag.price=bookinfflag+1.price; /将后一本书的价格复制给前一本书的价格bookinfflag.num=bookinfflag+1.num; /将后一本书的数量复制给前一本书的数量4修改部分if(strcmp(bookinfi.ISBN,nbook)=0) /如果输入的书本nbook与文件中存储的ISBN相同,则开始修改5.统计部分int tn,total=0,alprice=0;/初始化总数和总价格的值为0for(i=0;i<=tn;i+)total=total+bookinfi.num;/运用递归,新的总数和为上一次的总数值加上这一次的值alprice=alprice+(bookinfi.num)*(bookinfi.price); /运用递归,新的总价钱和为上一次的总价钱值加上这一次的价钱 printf("图书总册书为%d 总金额数为%dn",total,alprice);/打印出图书总册书和总金额数6.菜单部分printf(" 欢迎登录图书管系统 n");printf("*n");printf("* 1.添加图书 2.删除图书 *n");printf("* 3.修改图书 4.查询图书 *n");printf("* 5.统计图书 0.退出系统 *n");printf("*n");7选择部分switch(b) case 1:add();break; /选择1时,执行添加操作 case 2:del();break; /选择2时,执行删除操作 case 3:modify();break; /选择3时,执行修改操作 case 4:search();break; /选择4时,执行查询操作 case 5:count();break; /选择5时,执行统计操作 case 0:flag=1;break; /选择0时,执行退出操作 default:printf("您输入的选择错误!n"); /否则,打印输入错误四调试部分1.开始写程序时,没有运用文件保存函数,导致输入的书本信息不能被查看2程序删除函数部分产生左值方面的错误,后运用strcmp( )解决3. 程序删除函数部分,开始不论找到还是没找到要删除的书本,都会打印循环外的"该书已删除!",后运用i=n,解决了这个问题。五用户手册1.本程序执行文件为“bookinf.txt”.2. 进入菜单部分,会出现一下选择菜单 1.添加图书 2.删除图书 3.修改图书 4.查询图书 5.统计图书 0.退出系统 并提示"请输入你的选择!",用户仅需选择05运行该程序3.添加、修改图书部分,其中ISBN、name、author、vari、pubplace、需输入字符(即字母或数字),pubtime、price、num需输入数字。4. 添加、修改图书部分,输入的信息不可超标,需遵循ISBN为20字节,name、author为30字节,vari为10字节,pubplace为50字节。六、测试部分 欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 *请输入你的选择! 1 请输入需要添加的书本书以及您要添加的书本数信息 1 ISBN:1 书名:1 作者:1 图书类别:1 出版单位:1 出版时间:1 价钱:1 数量:1 欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 *请输入你的选择! 3 请输入您要修改的书号 2 没有找到要修改的书本欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 * 请输入你的选择! 3 请输入您要修改的书号 1 ISBN:2 书名:2 作者:2 图书类别:2 出版单位:2 出版时间:2 价钱:2 数量:2 修改成功!欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 * 请输入您的选择! 4 请输入您要查找的书名 2 ISBN书名 作者名 图书类别 出版单位 出版时间 价格 数量 2 2 2 2 2 2 2 2欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 * 请输入您的选择! 2 请输入您要删除的书本名 2 2 2 2 2 2 2 2 2 确定要删除该书吗?(y/n) y 该书已删除!欢迎登录图书管系统 * 1.添加图书 2.删除图书 * 3.修改图书 4.查询图书 * 5.统计图书 0.退出系统 * 请输入您的选择! 0 press any key to continue!七、附录#include"stdio.h"#include"string.h"#include"struct.h"#include"conio.h"struct library bookinf30;int n;struct librarychar ISBN20;char name30;char author30;char vari10;char pubplace50;int pubtime;int price;int num;/结构体部分void main()/主函数部分 int b,flag=0;while(1)/菜单部分printf(" 欢迎登录图书管系统 n");printf("*n");printf("* 1.添加图书 2.删除图书 *n");printf("* 3.修改图书 4.查询图书 *n");printf("* 5.统计图书 0.退出系统 *n");printf("*n");printf("请输入你的选择!n");scanf("%d",&b);switch(b) case 1:add();break;/选择1,执行添加操作 case 2:del();break; /选择2,执行删除操作 case 3:modify();break; /选择3,执行修改操作 case 4:search();break; /选择4,执行查询操作 case 5:count();break; /选择5,执行统计操作 case 0:flag=1;break; /选择0,退出程序操作 default:printf("您输入的选择错误!n");/否则,打印该句void add() /*添加函数*/int i;char x;printf("n请输入需要添加的书本书以及您要添加的书本数信息n");scanf("%d",&n);/输入要添加的书本数for(i=0;i<n;i+)/用循环添加书本信息printf("ISBN:");scanf("%s",bookinfi.ISBN);printf("书名:");scanf("%s",bookinfi.name);printf("作者:");scanf("%s",bookinfi.author);printf("图书类别:");scanf("%s",bookinfi.vari);printf("出版单位:");scanf("%s",bookinfi.pubplace);printf("出版时间:");scanf("%d",&bookinfi.pubtime);printf("价钱:");scanf("%d",&bookinfi.price);printf("数量:");scanf("%d",&bookinfi.num);x=getch();/按任意键返回菜单save(); /*调用保存函数*/void del()/删除函数int i=0,flag,t=0,tn=0;/tn为保存文件内的书本数char a,bookname20;FILE *fp;if(fp=fopen("bookinf.txt","r")=NULL) /如果无法打开文件 printf("无法打开文件!n"); return; printf("n请输入您要删除的书本名n");scanf("%s",bookname);rewind(fp); while(!feof(fp)/*没有结束时进行循环*/ fread(&bookinftn,sizeof(struct library),1,fp);tn+; fclose(fp); for(i=0;i<tn;i+) if(strcmp(bookinfi.name,bookname)=0)/如果输入的书名与文件内保存的书名相同printf("%s %s %s %s %s %d %d %dn",bookinfi.ISBN,bookinfi.name,bookinfi.author,bookinfi.vari,bookinfi.pubplace,bookinfi.pubtime,bookinfi.price,bookinfi.num); getch(); flag=i;t=1; printf("确定要删除该书吗?(y/n) n"); scanf("%s",&a);if(a = y) for(flag;flag<tn;flag+) strcpy(bookinfflag.ISBN,bookinfflag+1.ISBN); /将后一本书的ISBN复制给前一本书的ISBN strcpy(bookinfflag.name,bookinfflag+1.name); /将后一本书的书名复制给前一本书的书名strcpy(bookinfflag.author,bookinfflag+1.author); /将后一本书的作者名复制给前一本书的作者名strcpy(bookinfflag.vari,bookinfflag+1.vari); /将后一本书的图书类别复制给前一本书的图书类别 strcpy(bookinfflag.pubplace,bookinfflag+1.pubplace); /将后一本书的出版单位复制给前一本书的出版单位bookinfflag.pubtime=bookinfflag+1.pubtime; /将后一本书的出版时间复制给前一本书的出版时间bookinfflag.price=bookinfflag+1.price; /将后一本书的价格复制给前一本书的价格bookinfflag.num=bookinfflag+1.num; /将后一本书的数量复制给前一本书的数量tn-;/删除后书的数量减一 printf("n该书已删除!n");break;getch();if(t!=1)/如果没有找到要删除的书printf("n没有找到该书,退出操作n"); save();void search()/查询函数int i=0;FILE *fp;/文件打开struct library bookinf;char bookname20;if(fp=fopen("bookinf.txt","r")=NULL) printf("无法打开文件!n"); return; printf("n请输入您要查找的书名n");scanf("%s",bookname); while(!feof(fp) /循环 直到文件尾部,函数值为真 fread(&bookinf,sizeof(struct library),1,fp); /从fp中读入1个长度为sizeof(struct library)的数据,存到bookinf 中if(strcmp(bookinf.name,bookname)=0) /*比较输入的书名和文件中保存的书名*/printf("ISBN 书名 作者名 图书类别 出版单位 出版时间 价格 数量n");printf("%s %s %s %s %s %d %d %d n",bookinf.ISBN,bookinf.name,bookinf.author,bookinf.vari,bookinf.pubplace,bookinf.pubtime,bookinf.price,bookinf.num);i=1;break; if(i!=1)/如果没有找到要查询的书printf("没有找到您要找的书本n");printf("n按任意键返回菜单n"); getch();void modify()/修改函数int i=0,n=0;char nbook20;FILE *fp;/文件打开 char bookname20;printf("n请输入您要修改的书号n");.scanf("%s",nbook);if(fp=fopen("bookinf.txt","r+")=NULL) printf("无法打开文件!n"); return; while(!feof(fp) /*没有结束时进行循环*/ fread(&bookinfn,sizeof(struct library),1,fp);n+; for(i=0;i<n;i+) if(strcmp(bookinfi.ISBN,nbook)=0)/如果输入的nbook与文件内保存的ISBN相同printf("请输入你要修改的信息n"); printf("ISBN:"); scanf("%s",bookinfi.ISBN); printf("书名:"); scanf("%s",bookinfi.name); printf("作者:"); scanf("%s",bookinfi.author); printf("图书类别:"); scanf("%s",bookinfi.vari); printf("出版单位:"); scanf("%s",bookinfi.pubplace); printf("出版时间:"); scanf("%d",&bookinfi.pubtime); printf("价钱:"); scanf("%d",&bookinfi.price); printf("数量:"); scanf("%d",&bookinfi.num);printf("n修改成功!n");break;if(i=n)/如果没找到要修改的书本printf("没有找到要修改的书本n”);getch(); save();void count()/统计函数int total=0,alprice=0,i,tn=0;/先定义总数量 总价钱为0FILE *fp;/文件打开if(fp=fopen("bookinf.txt","r")=NULL) printf("无法打开文件!n"); return; while(!feof(fp) fread(&bookinftn,sizeof(struct library),1,fp);tn+; fclose(fp);for(i=0;i<=tn;i+)total=total+bookinfi.num;/ 运用递归,新的总数和为上一次的总数值加上这一次的值alprice=alprice+(bookinfi.num)*(bookinfi.price); /运用递归,新的总价钱为上一次的总价钱加上这一次的价钱 printf("图书总册书为%d 总金额数为%dn",total,alprice);printf("按任意键返回菜单n"); getch();void save() /保存函数FILE *fp; /文件打开 int i;if(fp=fopen("bookinf.txt","r+")=NULL) /打开一个二进制文本文件printf("无法打开文件!n"); return; for(i=0;i<n;i+) if(fwrite(&bookinfi,sizeof(struct library),1,fp)!=1)printf("文件写入错误n");fclose(fp); getch();主函数流程图b=0,flag=1,breakb=1,add()开始int b , flag=0menu()scanf(“%d”,&b)b=2,del()b=3,modify()b=4,search()b=5,count()end添加函数流程图开始extern int n,int i=0,char xprint请输入您要添加的书本数和书本信息scanf ni<nScanf(ISBN,书名,作者,图书类别,出版单位,出版时间,价格,数量)i+end删除函数流程图开始exrern int n,i=0,flag,tn=0,t=0char a,bookname20文件打开print 输入您要删除的书名scanf bookname!feof(fp)fread(),tn+i<tnbookinfi.name=booknamescanf aa=y删除操作没有找到该书i+end修改函数流程图开始extern int n,int i=0,char nbook20,bookname文件打开print(输入要修改的书名)scanf(nbook)i<nbookinfi.ISBN=nbookscanf(ISBN,书名,作者,图书类别,出版单位,出版时间,价格,数量)i+end

    注意事项

    本文(C语言图书馆管理系统课程设计.doc)为本站会员(土8路)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开