C程序设计图书信息管理系统.docx
- 文档编号:12312089
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:26
- 大小:123.47KB
C程序设计图书信息管理系统.docx
《C程序设计图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《C程序设计图书信息管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
C程序设计图书信息管理系统
图书信息管理系统
课程设计
姓名:
xxx
学号:
20091001509
班级:
014091
二0一三年一月九日
目录
一、问题概述-2-
二、系统目标-2-
三、设计的过程及步骤-3-
四、实训成果-5-
五、实训心得与体会-7-
六、附录:
代码设计-8-
一、问题概述
随着图书馆图书的不断增加,图书管理的难度也随之加大,一个好的图书馆图书信息管理系统,能够使图书管理工作简便,有条不紊。
通过C语言学习,我们已经能够完成基本的C语言编程,此次实训,是将学习和实践结合,充分感受C语言解决实践问题的魅力。
此次编写的图书馆信息管理系统,能够实现基本的图书管理功能。
它包括图书库的创建,打印图书信息表,录入新图书,修改图书信息,删除图书信息,借书,还书。
图书库包含图书的各方面信息,编号,类型,作者,出版社,总数,剩余量等等,并且打印图书信息表。
录入,修改,删除这些功能都是对图书库的操作。
借书,还书这两项最重要的功能也都能很好的实现。
把此系统应用于图书馆的图书管理,能使图书馆的各项工作便捷,可靠的完成。
二、系统目标
欢迎界面、主菜单、系统管理功能、图书信息管理、借阅功能模块、其中系统管理功能包括系统管理员添加、删除、修改信息以及用管理员身份登录系统等功能。
图书信息管理包括新增图书、修改图书、删除图书、等功能。
借阅功能模块包括借书功能、还书功能、查询已借图书、查询过期未还图书,其中借书还书功能可以按图书编号信息进行操作。
三、设计的过程及步骤
1、需求分析
根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
2、设计文件结构
此系统根据所要实现的功能,使用的函数等综合考虑,设计了两个,图书信息文件(tushu.red),借还书文件(borrow.red),录入新图书,修改,删除图书等一些操作时在图书信息文件上运行,借还书功能则在借还书文件上运行,同时也要在图书信息文件上运行。
两个文件相互结合,使各个功能很好的实现了,运用C语言的文件功能,也是整个程序的主线。
3、函数设计
此系统主要有7个功能,也就有主要的7个函数,他们分别是
voidshan()//删除图书信息
voidxiu()//修改图书信息
voidputin()//录入新图书
voidprint()//打印图书信息表
voidreturned()//还书
voidbooks()//创建图书文件
voidborrowed()//借书
其中每一个函数都用到了两个结构体,它们分别是:
structtushu
{
charbianhao1[10];
charbianhao2[10];
charleixing[20];
charshuming[50];
charchubanshe[50];
charwriter[20];
longzongshu;
longshengyu;
}shu;
structbooks
{
charbianhao1[10];
charbianhao2[10];
longnian;
longborrowmonth;
longborrowday;
longreturnedmonth;
longreturnedday;
longlimittime;
charstudent[10];
}book;
4、设计系统功能图
四、实训成果
经过几天的编写,修改,运行,最后完成时,预想的功能都能比较好的实现。
下面是各个功能运行的界面:
进入界面:
功能选择界面:
录入新图书界面:
还有各个功能各种界面,这里就不一一列出了。
五、实训心得与体会
此次系统编程,我感受很多,从开始编程时的迷茫,到修改时的烦躁,再到运行时的无奈,最后是成功时无法表达的喜悦和兴奋。
每一步都是自己努力走过来的,虽然这个过程比较辛苦,但是现在回过头去想想,这几天还是过得很有意义和价值的。
大家都说编程最需要的是耐心,我这次是深有体会,程序刚开始编,满身都是信心和兴趣,到修改的时候,检查一遍又一遍,修改一次有一次还是无法成功运行,这个时候只有耐心才能坚持完成。
同时,编程时,会发现许多以前学的概念都记错了,这时候要找出课本重新温习,所以这也是一个不断学习的过程。
还有,编程时不能太死板,要实现一个功能其实都会有很多种算法,我们应边做边学习新的方法。
对于我的不足之处,要实现一个功能时,我总是第一遍编程实现后,就不愿意在深探究下去,这种惰性很不适合做编程工作。
总而言之,通过此次C语言实践编程,使我对C语言的兴趣更加浓厚,也对C语言的实践应用更加了解,充分感受到了它的魅力,同时也明白了自身在这方面工作的优势和不足。
六、附录:
代码设计
#include
#include
#include
structtushu
{
charbianhao1[10];
charbianhao2[10];
charleixing[20];
charshuming[50];
charchubanshe[50];
charwriter[20];
longzongshu;
longshengyu;
}shu;
structbooks
{
charbianhao1[10];
charbianhao2[10];
longnian;
longborrowmonth;
longborrowday;
longreturnedmonth;
longreturnedday;
longlimittime;
charstudent[10];
}book;
voidshan()//删除图书信息
{
FILE*fp;
inti=0,j,n,m,l;
charbooknum[20];
structtushutu[1000];
if((fp=fopen("tushu.txt","r"))==NULL)
{
printf("cannotopenthetushu.txt.\n");
exit(0);
}
while(fread(&tu[i],sizeof(shu),1,fp))
{
i++;
m=i;
}
printf("要删除几本书:
");
scanf("%d",&n);
getchar();
for(i=0;i { printf("输入图书编号2: "); gets(booknum); for(j=0;j if(strcmp(booknum,tu[j].bianhao2)==0) break; if(j { for(l=0;l if(strcmp(tu[j].bianhao1,tu[l].bianhao1)==0) { tu[l].zongshu--; tu[l].shengyu--; } for(j;j tu[j]=tu[j+1]; } else { printf("输入有误重新输入\n"); i--; } } if((fp=fopen("tushu.txt","w"))==NULL) { printf("cannotopenthetushu.txt.\n"); exit(0); } for(i=0;i fwrite(&tu[i],sizeof(shu),1,fp); printf("删除成功! ! "); } voidxiu()//修改图书信息 { FILE*fp; inti=0,m,n; charbooknum[20],numchar[20]; structtushutu[1000]; if((fp=fopen("tushu.txt","r"))==NULL) { printf("cannotopentheborrow.txt.\n"); exit(0); } while(fread(&tu[i],sizeof(shu),1,fp)) { i++; m=i; } if((fp=fopen("tushu.txt","w"))==NULL) { printf("cannotopentheborrow.txt.\n"); exit(0); } printf("要修改几本书: "); scanf("%d",&n); getchar(); for(i=0;i { printf("输入要修改的图书编号2: "); gets(booknum); for(i=0;i { if(strcmp(booknum,tu[i].bianhao2)==0) break; } if(i { printf("》》》输入修改后的\n\n"); printf("》》》输入编号1: "); gets(tu[i].bianhao1); printf("\n"); printf("》》》编号2: "); gets(tu[i].bianhao2); printf("\n"); printf("》》》类型: "); gets(tu[i].leixing); printf("\n"); printf("》》》书名: "); gets(tu[i].shuming); printf("\n"); printf("》》》出版社: "); gets(tu[i].chubanshe); printf("\n"); printf("》》》作者: "); gets(tu[i].writer); printf("\n"); printf("》》》总数: "); gets(numchar); printf("\n"); tu[i].zongshu=atol(numchar); printf("》》》剩余: "); gets(numchar); printf("\n"); tu[i].shengyu=atol(numchar); } else printf("输入有误\n"); for(i=0;i fwrite(&tu[i],sizeof(shu),1,fp); } fclose(fp); } voidputin()//录入新图书 { charnumchar[20]; FILE*fp; inti=0,m,n; structtushutu[1000]; if((fp=fopen("tushu.txt","r"))==NULL) { printf("cannotopentheborrow.txt.\n"); exit(0); } while(fread(&tu[i],sizeof(shu),1,fp)) { i++; m=i; } if((fp=fopen("tushu.txt","w"))==NULL) { printf("cannotopentheborrow.txt.\n"); exit(0); } for(i=0;i { fwrite(&tu[i],sizeof(shu),1,fp); } printf("要录入几本书: "); scanf("%d",&n); getchar(); for(i=0;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"); 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.shengyu=atol(numchar); fwrite(&shu,sizeof(shu),1,fp); } fclose(fp); } voidprint()//打印图书信息表 { FILE*fp; if((fp=fopen("tushu.txt","r"))==NULL) { printf("cannotopenthetushu.txt.\n"); exit(0); } 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%-10ld\n",shu.bianhao1,shu.bianhao2,shu.leixing,shu.shuming,shu.writer,shu.chubanshe,shu.zongshu,shu.shengyu); } voidreturned()//还书 { FILE*fp; inti=0,m,flag=0,j; charbooknum[20]; structbooksbook1[1000]; if((fp=fopen("borrow.txt","r"))==NULL) { printf("cannotopentheborrow.txt.\n"); exit(0); } while(fread(&book1[i],sizeof(book),1,fp)) { i++; m=i; } if((fp=fopen("borrow.txt","w"))==NULL) { printf("cannotopentheborrow.txt.\n"); exit(0); } printf("输入要还的图书编号2: "); gets(booknum); for(j=0;j { if(strcmp(booknum,book1[j].bianhao2)==0) { flag=1; break; } } if(flag) { flag=0; printf("输入还书月份: "); scanf("%ld",&book1[i].returnedmonth); printf("输入还书日期: "); scanf("%ld",&book1[i].returnedday); getchar(); for(j=0;j fwrite(&book1[i],sizeof(book),1,fp); } else printf("输入有误\n"); fclose(fp); } voidbooks()//创建图书文件 { FILE*fp; charnumchar[50],ch='y'; if((fp=fopen("tushu.txt","wt"))==NULL) { printf("cannotopenthetushu.txt.\n"); exit(0); } while(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.shuming); 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); printf("\n"); shu.shengyu=atol(numchar); fwrite(&shu,sizeof(shu),1,fp); do{ printf("haveanotherbookrecord(y/n)? : "); gets(numchar); ch=numchar[0]; }while(! (ch=='y'||ch=='n'||ch=='Y'||ch=='N')); } fclose(fp); } voidborrowed()//借书 { structtushutu[1000]; structbooksbook1[1000]; FILE*fp,*fq; charnumchar[50]; inti=0,j,m1,m2,n,flag=0,x; printf("借几本书: "); scanf("%d",&x); getchar(); if((fq=fopen("tushu.txt","r"))==NULL) { printf("cannotopenthetushu.txt.\n"); exit(0); } while(fread(&tu[i],sizeof(shu),1,fq)) { i++; m1=i; } if((fp=fopen("borrow.txt","r"))==NULL) { printf("cannotopentheborrow.txt.\n"); exit(0); } while(fread(&book1[i],sizeof(book),1,fp)) { i++; m2=i; } for(i=0;i { printf("\n"); printf("输入编号2: "); gets(numchar); for(j=0;j { if(strcmp(numchar,tu[j].bianhao2)==0) { n=j; flag=1; break; } } if(flag) { printf("\n"); printf("输入正确\n\n"); flag=0; strcpy(book.bianhao2,numchar); printf("》》》输入编号1");gets(book.bianhao1);printf("\n"); printf("》》》借书年份: ");gets(numchar);printf("\n");book.nian=atol(numchar); printf("》》》借书月份: ");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(numchar);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("cannotopentheborrow.txt.\n"); exit(0); } fwrite(&book,sizeof(book),1,fp); for(j=0;j { fwrite(&book1[j],sizeof(book),1,fp); } for(j=0;j { if(strcmp(tu[n].bianhao1,tu[j].bianhao1)==0) tu[j].shengyu--; } if((fq=fopen(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 图书 信息管理 系统