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

    C-图书管理程序(共20页).doc

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

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

    C-图书管理程序(共20页).doc

    精选优质文档-倾情为你奉上题目:图书登记管理程序需求分析:一: 设计一个图书登记管理程序,其功能描述如下:1、管理功能:1.1录入某图书的信息(图书信息内容包括:ISBN号、书名、作者、出版社、出版日期、价格),即为添加该图书信息1.2给定图书ISBN编号,显示该图书信息1.2给定图书ISBN编号,修改该图书信息1.3给定图书ISBN编号,删除该图书信息2、检索功能:2.1给定某个字符串(关键字),查找并显示所有书名中包括该字符串的图书的信息2.2给定出版社名称,查找并显示该出版社的所有图书的信息2.3给定图书ISBN号,查找并显示该图书信息3、统计功能:3.1统计已登记的图书数量二、函数描述1、addbook()/添加图书信息 FILE *fp; int i=0; char choice='y' fp=fopen("book.txt","a+"); while(choice='y'|choice='Y') p=(struct book*)malloc(sizeof(struct book); printf("请你输入第%d本书的ISBN编号n",+i); scanf("%s",p->bookISBN); printf("请你输入书名n"); scanf("%s",p->bookname); printf("请你输入书的作者n"); scanf("%s",p->bookauthor); printf("请你输入出版社名称n"); scanf("%s",p->bookpublisher); printf("请你输入出版日期n"); scanf("%s",p->bookdate); printf("请你输入书的价格n"); scanf("%s",p->bookprice); p->state=1; fwrite(p,sizeof(struct book),1,fp); printf("是否要输入下本书(Y/N)n"); scanf("%s",&choice); fclose(fp); 2、delbook()/删除图书信息void delbook() /删除图书信息 FILE *fp,*fp2; int i; char bookISBN20,choice; fp=fopen("book.txt","r"); fp2=fopen("bookl.txt","w"); printf("请输入你要删除的图书ISBN号n"); printf("如果你输入的图书ISBN号存在,系统自动删除该信息!如果不存在,系统不做任何改动n"); scanf("%s",bookISBN); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookISBN,booki.bookISBN)!=0) fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); printf("是否真的要删除该书籍?删除后该书籍的所有信息将无法恢复(Y/N)n"); scanf("%s",&choice); if(choice='y'|choice='Y') fp=fopen("book.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); fp2=fopen("bookl.txt","w"); fclose(fp2); printf("删除完毕,按任意键返回n"); getch(); return; else printf("按任意键返回n"); getch(); return; 3、changebook()/修改图书信息 FILE *fp,*fp2; char bookISBN20,choice; int i; fp=fopen("book.txt","r+"); fp2=fopen("bookl.txt","w"); p=(struct book*)malloc(sizeof(struct book); printf("请你输入要修改的图书ISBN编号: "); scanf("%s",bookISBN); for(i=0;fread(p,sizeof(struct book),1,fp)!=0;i+) if(strcmp(p->bookISBN,bookISBN)!=0) fwrite(p,sizeof(struct book),1,fp2); else printf("你所要修改的书的资料如下,请选择你要修改的内容n"); printf("ISBN号:%s 书名:%s 作者:%s 出版社:%s 出版日期:%s 价格:%sn",booki.bookISBN,booki.bookname,booki.bookauthor,booki.bookpublisher,booki.bookdate,booki.bookprice); printf("1:修改书的ISBN号n"); printf("2:修改书名n"); printf("3:修改作者n"); printf("4:修改出版社n"); printf("5:修改出版日期n"); printf("6:修改价格n"); printf("请输入1-6:"); scanf("%s",&choice); switch(choice) case '1': printf("请输入新的ISBN号n"); scanf("%s",p->bookISBN); fwrite(p,sizeof(struct book),1,fp2); break; case '2': printf("请输入新的书名n"); scanf("%s",p->bookname); fwrite(p,sizeof(struct book),1,fp2); break; case '3': printf("请输入新的作者n"); scanf("%s",p->bookauthor); fwrite(p,sizeof(struct book),1,fp2); break; case '4': printf("请输入新的出版社n"); scanf("%s",p->bookpublisher); fwrite(p,sizeof(struct book),1,fp2); break; case '5': printf("请输入新的出版日期n"); scanf("%s",p->bookdate); fwrite(p,sizeof(struct book),1,fp2); break; case '6': printf("请输入新的价格n"); scanf("%s",p->bookprice); fwrite(p,sizeof(struct book),1,fp2); break; default:printf("没有这样的操作");break; fclose(fp2); fp=fopen("book.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(p,sizeof(struct book),1,fp2)!=0;i+) fwrite(p,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); printf("修改成功!n");getchar();printf("按任意键返回n"); getchar(); 4、findbook()/按图书ISBN编号查询 FILE *fp; int i;char bookISBN20; p=(struct book*)malloc(sizeof(struct book);fp=fopen("book.txt","r"); if(fp=NULL) putchar('n');printf("这个系统还没有书籍信息,请先添加书籍信息n");printf(" 按任意键返回n");getch();return;putchar('n');printf(" 请输入你要查找的图书ISBN编号: "); scanf("%s",bookISBN); putchar('n');for(i=0;fread(p,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookISBN,p->bookISBN)=0) if(p->state=1) printf("这本书的详细资料是:图书ISBN编号:%s 书名:%s 作者:%s 出版社:%s 出版日期:%s 价格:%s 此书现在无人借阅n 按任意键返回n",p->bookISBN,p->bookname,p->bookauthor,p->bookpublisher,p->bookdate,p->bookprice); else printf("这本书已经有人借出,按任意键返回n");fclose(fp);return ; fclose(fp); getch(); return; printf("没有你要查询的书籍,按任意键返回n"); fclose(fp); getch();return; 5、findbook1()/根据出版社名称查询书目 FILE *fp; char bookpublisher20; int i;int count1=0;/标记存在要查找的书目数量,如果count1为0,即没有要查询的书籍,则退出fp=fopen("book.txt","r"); if(fp=NULL) printf("这个系统还没有书籍信息,请先添加书籍信息n");printf(" 按任意键返回n");getch();return;printf("请输入你要查找的出版社名称: "); scanf("%s",bookpublisher); putchar('n');p=(struct book*)malloc(sizeof(struct book);for(i=0;fread(p,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookpublisher,p->bookpublisher)=0) count1+; printf("这本书的详细资料是:图书ISBN编号:%s 书名:%s 作者:%s 出版社:%s 出版日期:%s 价格:%s 此书现在无人借阅nn",p->bookISBN,p->bookname,p->bookauthor,p->bookpublisher,p->bookdate,p->bookprice); if(count1=0)printf("没有你要查询的书籍,按任意键返回n"); elseprintf("按任意键返回n");fclose(fp); getch(); return; 6、findbook2()/根据关键字查找图书 FILE *fp; char bookname20; int i;int count=0;p=(struct book*)malloc(sizeof(struct book);fp=fopen("book.txt","r"); if(fp=NULL) printf("这个系统还没有书籍信息,请先添加书籍信息n");printf(" 按任意键返回n");getch();return;printf("请输入你要查找的关键字: "); scanf("%s",&bookname); putchar('n');for(i=0;fread(p,sizeof(struct book),1,fp)!=0;i+) char *a=strstr(p->bookname,bookname); if(a!=NULL) count+; if(p->state=1) printf("这本书的详细资料是:图书ISBN编号:%s 书名:%s 作者:%s 出版社:%s 出版日期:%s 价格:%s 此书现在无人借阅nn ",p->bookISBN,p->bookname,p->bookauthor,p->bookpublisher,p->bookdate,p->bookprice); else printf("这本书已经有人借出n");fclose(fp);return; if(count=0)printf("没有你要查询的书籍,按任意键返回n"); else printf("按任意键返回n");fclose(fp); getch();return; 7、bookcount()/统计已登记图书数量并显示其图书信息 FILE *fp; int i,n=0; system("cls");printf("【统计图书数量】nn");fp=fopen("book.txt","r"); if(fp=NULL) printf("这个系统还没有书籍信息,请先添加书籍信息n");printf(" 按任意键返回上一级n");getch();return;for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strlen(booki.bookISBN)!=0|strlen(booki.bookname)!=0|strlen(booki.bookauthor)!=0|strlen(booki.bookpublisher)!=0|strlen(booki.bookdate)!=0|strlen(booki.bookprice)!=0) printf("第%d本书:n",i+1); printf("<ISBN编号:%s 书名:%s 作者:%s 出版社:%s 出版日期:%s 价格:%s 状态:%d>nn",booki.bookISBN,booki.bookname,booki.bookauthor,booki.bookpublisher,booki.bookdate,booki.bookprice,booki.state); n=n+1; fclose(fp); printf("n");printf("统计:目前共有 %d 本书(状态'0'指借出,'1'指在馆)nn",n); printf("按任意键返回上一级菜单n"); getch();return;主要是用链表和文件的操作实现的 源代码:#include<stdio.h>#include<string.h> #include<conio.h> #include<ctype.h> #include <stdlib.h>void search_system();/查询界面void manage_system();/管理界面void addbook();/添加图书信息void delbook();/删除图书信息void changebook();/修改图书信息void bookcount();/统计图书数量void findbook();/按图书ISBN编号查询void findbook1();/根据出版社名称查询书目void findbook2();/根据关键字查询书目struct book/定义一个struct book类型的结构体数组,并定义一个指针变量p,它指向struct book结构体类型 char bookISBN20; char bookname20; char bookauthor20; char bookpublisher20;char bookdate20;char bookprice10;int state; book1000,*p;void main() char ch1; do system("cls"); printf(" 欢迎使用图书登记管理程序nn"); printf(" 请选择需要操作的类型nn"); printf(" |n"); printf(" |-1:<图书检索>-|n"); printf(" |-2:<管理界面>-|n"); printf(" |-0:<离开界面>-|n"); printf(" |nn"); printf(" 请输入0-2,其他输入非法!nn"); printf(" 选择菜单: "); scanf("%s",&ch1); putchar('n'); switch(ch1) case '1':search_system();break; case '2':manage_system();break; case '0':break; default:printf("输入无效,按任意键返回");getch();break; while(ch1!='0'); void search_system()/查询控制界面 char ch2;do system("cls"); printf(" -欢迎进入图书检索界面!-nn"); printf(" |n"); printf(" |-1:<按图书ISBN编号查询>-|n"); printf(" |-2:<根据出版社名称查询>-|n"); printf(" |-3:<根据书目关键字查询>-|n"); printf(" |-0:<离开界面>-|n"); printf(" |nn"); printf(" 请输入0-2,其他输入非法!nn"); printf(" 选择菜单: "); scanf("%s",&ch2); putchar('n'); switch(ch2) case '1':findbook();break; case '2':findbook1();break; case '3':findbook2();break; case '0':break; default:printf("输入无效,按任意键返回");getch();break; while(ch2!='0'); void manage_system()/管理控制界面char ch3; do system("cls"); printf(" *书目信息管理*n");printf(" |n"); printf(" |-1:<添加图书>-|n"); printf(" |-2:<删除图书>-|n"); printf(" |-3:<修改图书信息>-|n"); printf(" |-4:<统计图书数量>-|n"); printf(" | |n"); printf(" |-0:<返回>-|n"); printf(" |n"); printf(" 请输入0-4,其他输入非法!nn"); printf(" 选择菜单: "); scanf("%s",&ch3); putchar('n'); switch(ch3) case '1':addbook();break; case '2':delbook();break; case '3':changebook();break; case '4':bookcount();break; case '0':break; default:printf("无此操作,按任意键返回");getch();break; while(ch3!='0'); void addbook() /添加图书信息 FILE *fp; /定义一个FILE结构体变量,fp指向这个FILE结构体变量int i=0; char choice='y' fp=fopen("book.txt","a+");/打开一个book.txt指向的文件,文件操作方式为读写操作(a+),即为读写打开一个字符文件,进行追加 while(choice='y'|choice='Y') /输入Y则判断是否进行添加图书信息 p=(struct book*)malloc(sizeof(struct book);/开辟一个结点,malloc返回的指针转换为指向struct book类型数据的指针 printf(" 请你输入第%d本书的ISBN编号: ",+i); scanf("%s",p->bookISBN); /输入第一成员 putchar('n'); printf(" 请你输入书名: "); scanf("%s",p->bookname); putchar('n'); printf(" 请你输入书的作者: "); scanf("%s",p->bookauthor); putchar('n'); printf(" 请你输入出版社名称: "); scanf("%s",p->bookpublisher); putchar('n'); printf(" 请你输入出版日期: "); scanf("%s",p->bookdate); putchar('n'); printf(" 请你输入书的价格: "); scanf("%s",p->bookprice); putchar('n'); p->state=1; fwrite(p,sizeof(struct book),1,fp); /从p所代表的数组起始地址开始,输出长度为sizeof(struct book)的一个数据项,将它们写入由fp指定的文件中 printf(" 是否要输入下本书(Y/N): "); scanf("%s",&choice); putchar('n'); fclose(fp); /关闭文件void delbook() /删除图书信息 FILE *fp,*fp2; int i; char bookISBN20,choice; fp=fopen("book.txt","r");/打开fp指定的文件book.txt,文件操作为只读方式 fp2=fopen("bookl.txt","w"); /打开fp2指定的文件book1.txt,文件操作为只写方式 printf("请输入你要删除的图书ISBN号n"); printf("如果你输入的图书ISBN号存在,系统自动删除该信息!如果不存在,系统不做任何改动n"); scanf("%s",bookISBN); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) /每次读一个数据项 if(strcmp(bookISBN,booki.bookISBN)!=0) /比较字符串,判断是不是要删除的bookISBN fwrite(&booki,sizeof(struct book),1,fp2); /不是则写进fp2指定的文件中 fclose(fp); /关闭文件fclose(fp2);/关闭文件printf("是否真的要删除该书籍?删除后该书籍的所有信息将无法恢复(Y/N)n"); scanf("%s",&choice); if(choice='y'|choice='Y') /如果确定要删除此书,则将不包含要删除书目的文件全部更换到fp指定的文件中 fp=fopen("book.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); fp2=fopen("bookl.txt","w"); fclose(fp2); printf("删除完毕,按任意键返回n"); getch(); return; else printf("按任意键返回n"); getch(); return; void changebook() /修改图书信息 FILE *fp,*fp2; char bookISBN20,choice; int i; fp=fopen("book.txt","r+");/读写方式打开 fp2=fopen("bookl.txt","w"); /只写方式打开 p=(struct book*)malloc(sizeof(struct book); printf("请你输入要修改的图书ISBN编号: "); scanf("%s",bookISBN); for(i=0;fread(p,sizeof(struct book),1,fp)!=0;i+) /循环,将不需要修改的数据项写入fp2指定的文件中,修改后的也写进去,避免顺序错乱 if(strcmp(p->bookISBN,bookISBN)!=0) fwrite(p,sizeof(struct book),1,fp2); /将不需要修改的书写入fp2指定的文件中 else printf("你所要修改的书的资料如下,请选择你要修改的内容n"); printf("ISBN号:%s 书名:%s 作者:%s 出版社:%s 出版日期:%s 价格:%sn",booki.bookISBN,booki.bookname,booki.bookauthor,booki.bookpublisher,booki.bookdate,booki.bookprice); printf("1:修改书的ISBN号n"); printf("2:修改书名n"); printf("3:修改作者n"); printf("4:修改出版社n"); printf("5:修改出版日期n"); printf("6:修改价格n"); printf("请输入1-6:"); scanf("%s",&choice); switch(choice) case '1': printf("请输入新的ISBN号n"); scanf("%s",p->bookISBN); fwrite(p,sizeof(struct book),1,fp2); /修改后的数据项写入fp2指定的文件中 break; case '2': printf("请输入新的书名n"); scanf("%s",p->bookname); fwrite(p,sizeof(struct book),1,fp2); break; case '3': printf("请输入新的作者n"); scanf("%s",p->bookauthor); fwrite(p,sizeof(struct book),1,fp2); break; case '4': printf("请输入新的出版社n"); scanf("%s",p->bookpublisher); fwrite(p,sizeof(struct book),1,fp2); break; case '5': printf("请输入新的出版日期n"); scanf("%s",p->bookdate); fwrite(p,sizeof(struct book),1,fp2); break; case '6': printf("请输入新的价格n"); scanf("%s",p->bookprice); fwrite(p,sizeof(struct book),1,fp2); break; default:printf("没有这样的操作");break; fclose(fp2); /关闭文件fp=fopen("book.txt","w"); fp2=fopen("bookl.txt","r"); for(i=0;fread(p,sizeof(struct book),1,fp2)!=0;i+) /将bookl.txt中的数据写入并覆盖book.txt中的数据 f

    注意事项

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

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




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

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

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

    收起
    展开