《C语言程序设计报告__图书馆信息管理系统.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计报告__图书馆信息管理系统.pdf(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 word 可自由复制编辑 一、问题概述(对问题背景及主要实现的功能进行简要说明。)随着图书馆图书的不断增加,图书管理的难度也随之加大,一个好的图书馆图书信息管理系统,能够使图书管理工作简便,有条不紊。通过 C 语言学习,我们已经能够完成基本的 C 语言编程,此次实训,是将学习和实践结合,充分感受 C 语言解决实践问题的魅力。此次编写的图书馆信息管理系统,能够实现基本的图书管理功能。它包括图书库的创建,打印图书信息表,录入新图书,修改图书信息,删除图书信息,借书,还书。图书库包含图书的各方面信息,编号,类型,作者,出版社,总数,剩余量等等,并且打印图书信息表。录入,修改,删除这些功能都是对图书
2、库的操作。借书,还书这两项最重要的功能也都能很好的实现。把此系统应用于图书馆的图书管理,能使图书馆的各项工作便捷,可靠的完成。二、系统目标 (主要是对系统技术目标和要求)欢迎界面、主菜单、系统管理功能、图书信息管理、借阅功能模块、其中系统管理功能包括系统管理员添加、删除、修改信息以及用管理员身份登录系统等功能。图书信息管理包括新增图书、修改图书、删除图书、等功能。word 可自由复制编辑 借阅功能模块包括借书功能、还书功能、查询已借图书、查询过期未还图书,其中借书还书功能可以按图书编号信息进行操作。三、设计的过程及步骤 1、需求分析(描述系统需求,既详细分析系统需求和功能)根据题目要求,应当把
3、图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。2、设计文件结构(设计文件结构,并扼要说明设计缘由)此系统根据所要实现的功能,使用的函数等综合考虑,设计了两个,图书信息文件(tushu.red),借还书文件(borrow.red),录入新图书,修改,删除图书等一些操作时在图书信息文件上运行,借还书功能则在借还书文件上运行,同时也要在图书信息文件上运
4、行。两个文件相互结合,使各个功能很好的实现了,运用 C 语言的文件功能,也是整个程序的主线。word 可自由复制编辑 3、设计系统功能图(根据需求分析结果和文件结构,应用结构化分析与设计技术设计功能结构图,如下图所示)4、函数设计(详细分析每一个子模块的子功能,定义主要的子函数原型,并对每一个函数的功能加以说明)此系统主要有 7 个功能,也就有主要的 7 个函数,他们分别是 void shan()/删除图书信息 void xiu()/修改图书信息 void putin()/录入新图书 void print()/打印图书信息表 void returned()/还书 void books()/创建
5、图书文件 图书管理信息系统 创建文件信息 基本信息管理 图书流通管理 图书统计 借书管理 还书管理 本月借出统计 超期未还统计 统计按期归还率 按图书类别查询 按书名查询 按作者名查询 图书查询 图书管理信息系统 图书输入与追加 删除图书记录 修改图书记录 显示图书信息 借书统计报表 word 可自由复制编辑 void borrowed()/借书 其中每一个函数都用到了两个结构体,它们分别是:struct tushu char bianhao110;char bianhao210;char leixing20;char shuming50;char chubanshe50;char write
6、r20;long zongshu;long shengyu;shu;struct books char bianhao110;char bianhao210;long nian;long borrowmonth;long borrowday;long returnedmonth;long returnedday;long limittime;char student10;book;四、实训成果(对自己的最后的实验成果进行概括)word 可自由复制编辑 经过长达 9 天的编写,修改,运行,最后完成时,预想的功能都能比较好的实现。下面是各个功能运行的界面:进入界面:功能选择界面:word 可自由复
7、制编辑 录入新图书界面:还有各个功能各种界面,这里就不一一列出了。五、实训心得与体会 word 可自由复制编辑 此次系统编程,我感受很多,从开始编程时的迷茫,到修改时的烦躁,再到运行时的无奈,最后是成功时无法表达的喜悦和兴奋。每一步都是自己努力走过来的,虽然这个过程比较辛苦,但是现在回过头去想想,这几天还是过得很有意义和价值的。大家都说编程最需要的是耐心,我这次是深有体会,程序刚开始编,满身都是信心和兴趣,到修改的时候,检查一遍又一遍,修改一次有一次还是无法成功运行,这个时候只有耐心才能坚持完成。同时,编程时,会发现许多以前学的概念都记错了,这时候要找出课本重新温习,所以这也是一个不断学习的过
8、程。还有,编程时不能太死板,要实现一个功能其实都会有很多种算法,我们应边做边学习新的方法。对于我的不足之处,要实现一个功能时,我总是第一遍编程实现后,就不愿意在深探究下去,这种惰性很不适合做编程工作。总而言之,通过此次 C 语言实践编程,使我对 C 语言的兴趣更加浓厚,也对 C 语言的实践应用更加了解,充分感受到了它的魅力,同时也明白了自身在这方面工作的优势和不足。六、附录#include#include#include word 可自由复制编辑 struct tushu char bianhao110;char bianhao210;char leixing20;char shuming50
9、;char chubanshe50;char writer20;long zongshu;long shengyu;shu;struct books char bianhao110;char bianhao210;long nian;long borrowmonth;long borrowday;word 可自由复制编辑 long returnedmonth;long returnedday;long limittime;char student10;book;void shan()/删除图书信息 FILE*fp;int i=0,j,n,m,l;char booknum20;struct tu
10、shu tu1000;if(fp=fopen(tushu.txt,r)=NULL)printf(can not open the tushu.txt.n);exit(0);while(fread(&tui,sizeof(shu),1,fp)word 可自由复制编辑 i+;m=i;printf(要删除几本书:);scanf(%d,&n);getchar();for(i=0;in;i+)printf(输入图书编号 2:);gets(booknum);for(j=0;jm;j+)if(strcmp(booknum,tuj.bianhao2)=0)break;if(jm)for(l=0;lm;l+)i
11、f(strcmp(tuj.bianhao1,tul.bianhao1)=0)word 可自由复制编辑 tul.zongshu-;tul.shengyu-;for(j;jm;j+)tuj=tuj+1;else printf(输入有误 重新输入n);i-;if(fp=fopen(tushu.txt,w)=NULL)printf(can not open the tushu.txt.n);exit(0);for(i=0;im-n;i+)word 可自由复制编辑 fwrite(&tui,sizeof(shu),1,fp);printf(删除成功!);void xiu()/修改图书信息 FILE*fp;
12、int i=0,m,n;char booknum20,numchar20;struct tushu tu1000;if(fp=fopen(tushu.txt,r)=NULL)printf(can not open the borrow.txt.n);exit(0);while(fread(&tui,sizeof(shu),1,fp)i+;m=i;word 可自由复制编辑 if(fp=fopen(tushu.txt,w)=NULL)printf(can not open the borrow.txt.n);exit(0);printf(要修改几本书:);scanf(%d,&n);getchar(
13、);for(i=0;in;i+)printf(输入要修改的图书编号 2:);gets(booknum);for(i=0;im;i+)if(strcmp(booknum,tui.bianhao2)=0)break;word 可自由复制编辑 if(im)printf(输入修改后的nn);printf(输入编号 1:);gets(tui.bianhao1);printf(n);printf(编号 2:);gets(tui.bianhao2);printf(n);printf(类型:);gets(tui.leixing);printf(n);printf(书名:);gets(tui.shuming);
14、printf(n);printf(出版社:);gets(tui.chubanshe);printf(n);word 可自由复制编辑 printf(作者:);gets(tui.writer);printf(n);printf(总数:);gets(numchar);printf(n);tui.zongshu=atol(numchar);printf(剩余:);gets(numchar);printf(n);tui.shengyu=atol(numchar);else printf(输入有误n);for(i=0;im;i+)fwrite(&tui,sizeof(shu),1,fp);fclose(f
15、p);word 可自由复制编辑 void putin()/录入新图书 char numchar20;FILE*fp;int i=0,m,n;struct tushu tu1000;if(fp=fopen(tushu.txt,r)=NULL)printf(can not open the borrow.txt.n);exit(0);while(fread(&tui,sizeof(shu),1,fp)i+;m=i;word 可自由复制编辑 if(fp=fopen(tushu.txt,w)=NULL)printf(can not open the borrow.txt.n);exit(0);for(
16、i=0;im;i+)fwrite(&tui,sizeof(shu),1,fp);printf(要录入几本书:);scanf(%d,&n);getchar();for(i=0;in;i+)printf(n);printf(输入编号 1:);gets(shu.bianhao1);printf(n);word 可自由复制编辑 printf(编号 2:);gets(shu.bianhao2);printf(n);printf(类型:);gets(shu.leixing);printf(n);printf(书名:);gets(shu.shuming);printf(n);printf(出版社:);get
17、s(shu.chubanshe);printf(n);printf(作者:);gets(shu.writer);printf(n);printf(总数:);gets(numchar);printf(n);word 可自由复制编辑 shu.zongshu=atol(numchar);printf(剩余:);gets(numchar);printf(n);shu.shengyu=atol(numchar);fwrite(&shu,sizeof(shu),1,fp);fclose(fp);void print()/打印图书信息表 FILE*fp;if(fp=fopen(tushu.txt,r)=NU
18、LL)printf(can not open the tushu.txt.n);exit(0);word 可自由复制编辑 puts(_);puts(-);puts(|编号 1|编号 2|类型|书名|作者|出版社|总数|剩余|);fseek(fp,0L,SEEK_SET);while(fread(&shu,sizeof(shu),1,fp)=1)printf(%-9s%-10s%-10s%-10s%-10s%-10s%-10ld%-10ldn,shu.bianhao1,shu.bianhao2,shu.leixing,shu.shuming,shu.writer,shu.chubanshe,sh
19、u.zongshu,shu.shengyu);void returned()/还书 FILE*fp;int i=0,m,flag=0,j;word 可自由复制编辑 char booknum20;struct books book11000;if(fp=fopen(borrow.txt,r)=NULL)printf(can not open the borrow.txt.n);exit(0);while(fread(&book1i,sizeof(book),1,fp)i+;m=i;if(fp=fopen(borrow.txt,w)=NULL)printf(can not open the bor
20、row.txt.n);exit(0);printf(输入要还的图书编号 2:);word 可自由复制编辑 gets(booknum);for(j=0;jm;j+)if(strcmp(booknum,book1j.bianhao2)=0)flag=1;break;if(flag)flag=0;printf(输入还书月份:);scanf(%ld,&book1i.returnedmonth);printf(输入还书日期:);scanf(%ld,&book1i.returnedday);getchar();for(j=0;jm;j+)word 可自由复制编辑 fwrite(&book1i,sizeof
21、(book),1,fp);else printf(输入有误n);fclose(fp);void books()/创建图书文件 FILE*fp;char numchar50,ch=y;if(fp=fopen(tushu.txt,wt)=NULL)printf(can not open the tushu.txt.n);exit(0);while(ch=y|ch=Y)word 可自由复制编辑 printf(n);printf(输入编号 1:);gets(shu.bianhao1);printf(n);printf(编号 2:);gets(shu.bianhao2);printf(n);printf
22、(类型:);gets(shu.leixing);printf(n);printf(书名:);gets(shu.shuming);printf(n);printf(出版社:);gets(shu.chubanshe);printf(n);printf(作者:);gets(shu.writer);word 可自由复制编辑 printf(n);printf(总数:);gets(numchar);printf(n);shu.zongshu=atol(numchar);printf(剩余:);gets(numchar);printf(n);shu.shengyu=atol(numchar);fwrite(
23、&shu,sizeof(shu),1,fp);do printf(have another book record(y/n)?:);gets(numchar);ch=numchar0;while(!(ch=y|ch=n|ch=Y|ch=N);fclose(fp);word 可自由复制编辑 void borrowed()/借书 struct tushu tu1000;struct books book11000;FILE*fp,*fq;char numchar50;int i=0,j,m1,m2,n,flag=0,x;printf(借几本书:);scanf(%d,&x);getchar();if
24、(fq=fopen(tushu.txt,r)=NULL)printf(can not open the tushu.txt.n);exit(0);while(fread(&tui,sizeof(shu),1,fq)word 可自由复制编辑 i+;m1=i;if(fp=fopen(borrow.txt,r)=NULL)printf(can not open the borrow.txt.n);exit(0);while(fread(&book1i,sizeof(book),1,fp)i+;m2=i;for(i=0;ix;i+)printf(n);printf(输入编号 2:);word 可自由复
25、制编辑 gets(numchar);for(j=0;jm1;j+)if(strcmp(numchar,tuj.bianhao2)=0)n=j;flag=1;break;if(flag)printf(n);printf(输入正确nn);flag=0;strcpy(book.bianhao2,numchar);printf(输入编号1);gets(book.bianhao1);printf(n);printf(借书年份:);gets(numchar);printf(n);word 可自由复制编辑 book.nian=atol(numchar);printf(借书月份:);gets(numchar)
26、;printf(n);book.borrowmonth=atol(numchar);printf(借 书 日 期:);gets(numchar);printf(n);book.borrowday=atol(numchar);printf(还书月份:);gets(numchar);printf(n);book.returnedmonth=atol(numchar);printf(还书日期:);gets(numchar);printf(n);book.returnedday=atol(numchar);printf(期 限:);gets(numchar);printf(n);book.limitt
27、ime=atol(numchar);printf(学 生 学 号:);gets(book.student);printf(n);if(fp=fopen(borrow.txt,w)=NULL)printf(can not open the borrow.txt.n);exit(0);fwrite(&book,sizeof(book),1,fp);word 可自由复制编辑 for(j=0;jm2;j+)fwrite(&book1j,sizeof(book),1,fp);for(j=0;jm1;j+)if(strcmp(tun.bianhao1,tuj.bianhao1)=0)tuj.shengyu
28、-;if(fq=fopen(tushu.txt,w)=NULL)printf(can not open the tushu.txt.n);exit(0);for(j=0;jm1;j+)fwrite(&tuj,sizeof(shu),1,fq);word 可自由复制编辑 else printf(输入错误n);i-;fclose(fq);fclose(fp);void main()int flag=1;char a20;puts();puts();puts();puts();word 可自由复制编辑 puts();puts();puts(欢迎使用图书信息管理系统 );puts();puts();p
29、uts();puts();puts();puts(田田 );puts(田田 );puts(田田 );puts(田田 );puts();puts();puts();puts();puts(请选择您需要的功能:);puts();word 可自由复制编辑 puts((直接键入对应数字));puts();puts();puts();puts(1.图书创建 );puts();puts(2.打印图书信息表 );puts();puts(3.图书追加与录入 );puts();puts(4.修改图书信息 );puts();puts(5.删除图书信息 );puts();puts(6.借书 );puts();put
30、s(7.还书 );puts();word 可自由复制编辑 puts();puts();puts();puts();puts();puts();while(flag)flag=0;scanf(%s,a);getchar();if(strcmp(a,3)=0)putin();else if(strcmp(a,1)=0)books();else if(strcmp(a,6)=0)borrowed();else if(strcmp(a,2)=0)word 可自由复制编辑 print();else if(strcmp(a,7)=0)returned();else if(strcmp(a,4)=0)xiu();else if(strcmp(a,5)=0)shan();else printf(输入错误 请重新输入:);flag=1;