




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、 问题概述(对问题背景及主要实现的功能进行简要说明。)随着图书馆图书的不断增加,图书管理的难度也随之加大,一个好的图书馆图书信息管理系统,能够使图书管理工作简便,有条不紊。通过C语言学习,我们已经能够完成基本的C语言编程,此次实训,是将学习和实践结合,充分感受C语言解决实践问题的魅力。此次编写的图书馆信息管理系统,能够实现基本的图书管理功能。它包括图书库的创建,打印图书信息表,录入新图书,修改图书信息,删除图书信息,借书,还书。图书库包含图书的各方面信息,编号,类型,作者,出版社,总数,剩余量等等,并且打印图书信息表。录入,修改,删除这些功能都是对图书库的操作。借书,还书这两项最重要的功能
2、也都能很好的实现。把此系统应用于图书馆的图书管理,能使图书馆的各项工作便捷,可靠的完成。二、 系统目标 (主要是对系统技术目标和要求)欢迎界面、主菜单、系统管理功能、图书信息管理、借阅功能模块、其中系统管理功能包括系统管理员添加、删除、修改信息以及用管理员身份登录系统等功能。图书信息管理包括新增图书、修改图书、删除图书、等功能。借阅功能模块包括借书功能、还书功能、查询已借图书、查询过期未还图书,其中借书还书功能可以按图书编号信息进行操作。三、 设计的过程及步骤1、需求分析(描述系统需求,既详细分析系统需求和功能)根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个
3、程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。2、设计文件结构(设计文件结构,并扼要说明设计缘由)此系统根据所要实现的功能,使用的函数等综合考虑,设计了两个,图书信息文件(tushu.red),借还书文件(borrow.red),录入新图书,修改,删除图书等一些操作时在图书信息文件上运行,借还书功能则在借还书文件上运行,同时也要在图书信息文件上运行。两个文件相互结合,使各个功能很好的实现了,运用C语言的文件
4、功能,也是整个程序的主线。3、设计系统功能图(根据需求分析结果和文件结构,应用结构化分析与设计技术设计功能结构图,如下图所示)图书管理信息系统创建文件信息基本信息管理图书流通管理图书统计借书管理还书管理本月借出统计超期未还统计统计按期归还率按图书类别查询按书名查询按作者名查询图书查询图书管理信息系统图书输入与追加删除图书记录修改图书记录显示图书信息借书统计报表 4、函数设计( 详细分析每一个子模块的子功能,定义主要的子函数原型,并对每一个函数的功能加以说明)此系统主要有7个功能,也就有主要的7个函数,他们分别是void shan() /删除图书信息void xiu() /修改图书信息void
5、putin() /录入新图书void print() /打印图书信息表void returned() /还书void books() /创建图书文件void borrowed() /借书其中每一个函数都用到了两个结构体,它们分别是:struct tushu char bianhao110; char bianhao210; char leixing20; char shuming50; char chubanshe50; shu;struct books char bianhao110; char bianhao210; long nian; long borrowmonth; long bo
6、rrowday; long returnedmonth; long returnedday; long limittime; char student10; book;四、 实训成果(对自己的最后的实验成果进行概括)经过长达9天的编写,修改,运行,最后完成时,预想的功能都能比较好的实现。下面是各个功能运行的界面:进入界面 :功能选择界面 :录入新图书界面 :还有各个功能各种界面,这里就不一一列出了。五、 实训心得与体会此次系统编程,我感受很多,从开始编程时的迷茫,到修改时的烦躁,再到运行时的无奈,最后是成功时无法表达的喜悦和兴奋。每一步都是自己努力走过来的,虽然这个过程比较辛苦,但是现在回过头
7、去想想,这几天还是过得很有意义和价值的。大家都说编程最需要的是耐心,我这次是深有体会,程序刚开始编,满身都是信心和兴趣,到修改的时候,检查一遍又一遍,修改一次有一次还是无法成功运行,这个时候只有耐心才能坚持完成。同时,编程时,会发现许多以前学的概念都记错了,这时候要找出课本重新温习,所以这也是一个不断学习的过程。还有,编程时不能太死板,要实现一个功能其实都会有很多种算法,我们应边做边学习新的方法。对于我的不足之处,要实现一个功能时,我总是第一遍编程实现后,就不愿意在深探究下去,这种惰性很不适合做编程工作。总而言之,通过此次C语言实践编程,使我对C语言的兴趣更加浓厚,也对C语言的实践应用更加了解
8、,充分感受到了它的魅力,同时也明白了自身在这方面工作的优势和不足。六、 附录#include<stdio.h>#include<stdlib.h>#include<string.h>struct tushu char bianhao110; char bianhao210; char leixing20; char shuming50; char chubanshe50; char writer20; long zongshu; long shengyu; shu;struct books char bianhao110; char bianhao210;
9、long nian; long borrowmonth; long borrowday; long returnedmonth; long returnedday; long limittime; char student10; book;void shan() /删除图书信息 FILE *fp; int i=0,j,n,m,l; char booknum20; struct tushu tu1000; if(fp=fopen("tushu.txt","r")=NULL) printf("can not open the tushu.txt.n
10、"); exit(0); while(fread(&tui,sizeof(shu),1,fp) i+; m=i; printf("要删除几本书:"); scanf("%d",&n); getchar(); for(i=0;i<n;i+) printf("输入图书编号2:"); gets(booknum); for(j=0;j<m;j+) if(strcmp(booknum,tuj.bianhao2)=0) break; if(j<m)for(l=0;l<m;l+)if(strcmp(t
11、uj.bianhao1,tul.bianhao1)=0)tul.zongshu-; tul.shengyu-; for(j;j<m;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;i<m-n;i+) fwrite(&tui,sizeof(shu),1,fp);printf
12、("删除成功!");void xiu() /修改图书信息 FILE *fp; 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; if(fp=fopen("tushu.txt&
13、quot;,"w")=NULL) printf("can not open the borrow.txt.n"); exit(0); printf("要修改几本书:"); scanf("%d",&n); getchar(); for(i=0;i<n;i+) printf("输入要修改的图书编号2:"); gets(booknum); for(i=0;i<m;i+) if(strcmp(booknum,tui.bianhao2)=0) break; if(i<m) pri
14、ntf("输入修改后的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);printf("n"); pri
15、ntf("出版社:"); gets(tui.chubanshe);printf("n"); printf("作者:"); gets(tui.writer);printf("n"); printf("总数:"); gets(numchar);printf("n"); tui.zongshu=atol(numchar); printf("剩余:"); gets(numchar);printf("n"); tui.shengyu=atol(n
16、umchar); else printf("输入有误n"); for(i=0;i<m;i+) fwrite(&tui,sizeof(shu),1,fp); fclose(fp);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);
17、 while(fread(&tui,sizeof(shu),1,fp) i+; m=i; if(fp=fopen("tushu.txt","w")=NULL) printf("can not open the borrow.txt.n"); exit(0); for(i=0;i<m;i+) fwrite(&tui,sizeof(shu),1,fp); printf("要录入几本书:"); scanf("%d",&n); getchar(); for(i=0;i<
18、;n;i+) printf("n"); printf("输入编号1:"); gets(shu.bianhao1); printf("n"); printf("编号2:"); gets(shu.bianhao2); printf("n"); printf("类型:"); gets(shu.leixing); printf("n"); printf("书名:"); gets(shu.shuming); printf("n"
19、;); printf("出版社:"); gets(shu.chubanshe); printf("n"); printf("作者:"); gets(shu.writer); printf("n"); printf("总数:"); gets(numchar); printf("n"); shu.zongshu=atol(numchar); printf("剩余:"); gets(numchar); printf("n"); shu.she
20、ngyu=atol(numchar); fwrite(&shu,sizeof(shu),1,fp); fclose(fp);void print() /打印图书信息表 FILE *fp; if(fp=fopen("tushu.txt","r")=NULL) printf("can not open the tushu.txt.n"); exit(0); puts("_"); puts("-"); puts("| 编号1 | 编号2 | 类型 | 书名 | 作者 | 出版社 |
21、总数 | 剩余 |"); 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,shu.zongshu,shu.shengyu);void returned() /还书 FILE *fp; int i=0,m,flag=0,j; char
22、 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 borrow.txt
23、.n"); exit(0); printf("输入要还的图书编号2:"); gets(booknum); for(j=0;j<m;j+) if(strcmp(booknum,book1j.bianhao2)=0)flag=1; break; if(flag) flag=0; printf("输入还书月份:"); scanf("%ld",&book1i.returnedmonth); printf("输入还书日期:"); scanf("%ld",&book1i.re
24、turnedday); getchar(); for(j=0;j<m;j+)fwrite(&book1i,sizeof(book),1,fp); elseprintf("输入有误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); wh
25、ile(ch='y'|ch='Y') printf("n"); printf("输入编号1:"); gets(shu.bianhao1); printf("n"); printf("编号2:"); gets(shu.bianhao2); printf("n"); printf("类型:"); gets(shu.leixing); printf("n"); printf("书名:"); gets(shu.s
26、huming); printf("n"); printf("出版社:"); gets(shu.chubanshe); printf("n"); printf("作者:"); gets(shu.writer); printf("n"); printf("总数:"); gets(numchar); printf("n"); shu.zongshu=atol(numchar); printf("剩余:"); gets(numchar); pr
27、intf("n"); shu.shengyu=atol(numchar); fwrite(&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);void borrowed() /借书 struct tushu tu1000; struct book
28、s book11000; FILE *fp,*fq; char numchar50; int i=0,j,m1,m2,n,flag=0,x;printf("借几本书:");scanf("%d",&x);getchar(); if(fq=fopen("tushu.txt","r")=NULL)printf("can not open the tushu.txt.n"); exit(0); while(fread(&tui,sizeof(shu),1,fq)i+; m1=i; if(
29、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;i<x;i+)printf("n");printf("输入编号2:"); gets(numchar); for(j=0;j<m1;j+)if(strcmp(numchar,tuj.bianhao2)=
30、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"); book.nian=atol(numchar); printf("借书月份:"
31、); gets(numchar); 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(n
32、umchar); printf("n"); book.returnedday=atol(numchar); printf("期限:"); gets(numchar); printf("n"); book.limittime=atol(numchar); printf("学生学号:"); gets(book.student); printf("n"); if(fp=fopen("borrow.txt","w")=NULL)printf("can n
33、ot open the borrow.txt.n"); exit(0);fwrite(&book,sizeof(book),1,fp); for(j=0;j<m2;j+)fwrite(&book1j,sizeof(book),1,fp);for(j=0;j<m1;j+)if(strcmp(tun.bianhao1,tuj.bianhao1)=0)tuj.shengyu-; if(fq=fopen("tushu.txt","w")=NULL)printf("can not open the tushu.txt
34、.n"); exit(0);for(j=0;j<m1;j+)fwrite(&tuj,sizeof(shu),1,fq);elseprintf("输入错误n"); i-; fclose(fq); fclose(fp);void main() int flag=1; char a20; puts(""); puts(" "); puts(" ");puts(" ");puts(" "); puts(" "); puts(" 欢迎使用图书信息管理系统 "); puts(" "); puts(" "); puts(" ");puts(" ");puts(" ");puts(" 田田 ");puts(" 田田 ");
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025精算师考试资料:合同责任保险合同所形成的负债
- 借款居间服务合同及借款合同
- 商场简装修店面转让合同书二零二五年
- 大学生职业规划大赛《工程力学专业》生涯发展展示
- 2025《我的雇佣合同》
- 2025房产买卖转让合同
- 一年级 学习生活探索
- 2025个体工商户的股权转让合同
- 2025环卫服务合同范本
- 2025购车贷款合同模板
- 立绘买断合同协议
- 2025春季学期国开电大本科《人文英语3》一平台在线形考综合测试(形考任务)试题及答案
- 针灸推拿治疗失眠的禁忌
- 利达消防L0188EL火灾报警控制器安装使用说明书
- 河南省驻马店市部分学校2024-2025学年高三下学期3月月考地理试题(含答案)
- 2025江苏盐城市射阳县临港工业区投资限公司招聘8人高频重点模拟试卷提升(共500题附带答案详解)
- 2025至2030年中国声音感应控制电筒数据监测研究报告
- DB50T 1041-2020 城镇地质安全监测规范
- 2025-2030年中国冰激凌市场需求分析与投资发展趋势预测报告
- 体育赛事运营方案投标文件(技术方案)
- 海绵城市施工质量保证措施
评论
0/150
提交评论