图书信息管理课设报告.docx

上传人:b****3 文档编号:5490185 上传时间:2023-05-08 格式:DOCX 页数:41 大小:301.31KB
下载 相关 举报
图书信息管理课设报告.docx_第1页
第1页 / 共41页
图书信息管理课设报告.docx_第2页
第2页 / 共41页
图书信息管理课设报告.docx_第3页
第3页 / 共41页
图书信息管理课设报告.docx_第4页
第4页 / 共41页
图书信息管理课设报告.docx_第5页
第5页 / 共41页
图书信息管理课设报告.docx_第6页
第6页 / 共41页
图书信息管理课设报告.docx_第7页
第7页 / 共41页
图书信息管理课设报告.docx_第8页
第8页 / 共41页
图书信息管理课设报告.docx_第9页
第9页 / 共41页
图书信息管理课设报告.docx_第10页
第10页 / 共41页
图书信息管理课设报告.docx_第11页
第11页 / 共41页
图书信息管理课设报告.docx_第12页
第12页 / 共41页
图书信息管理课设报告.docx_第13页
第13页 / 共41页
图书信息管理课设报告.docx_第14页
第14页 / 共41页
图书信息管理课设报告.docx_第15页
第15页 / 共41页
图书信息管理课设报告.docx_第16页
第16页 / 共41页
图书信息管理课设报告.docx_第17页
第17页 / 共41页
图书信息管理课设报告.docx_第18页
第18页 / 共41页
图书信息管理课设报告.docx_第19页
第19页 / 共41页
图书信息管理课设报告.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

图书信息管理课设报告.docx

《图书信息管理课设报告.docx》由会员分享,可在线阅读,更多相关《图书信息管理课设报告.docx(41页珍藏版)》请在冰点文库上搜索。

图书信息管理课设报告.docx

图书信息管理课设报告

*******************

实践教学

*******************

 

兰州理工大学

计算机与通信学院

2011年春季学期

 

C程序设计课程设计

 

题目:

图书信息管理系统

专业班级:

计算机1班

姓名:

ZWZ

学号:

10240136

指导教师:

周小健

成绩:

_______________

摘要

图书信息管理系统是一个图书馆不可缺少的管理工具,它能够实现图书的查询、借阅、管理、归还等操作。

使用计算机对图书信息进行管理,具有手工管理所无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高图书管理的效率。

本系统利用C语言开发,运用相对比较复杂的函数实现了图书信息管理。

通过本系统的开发,我们熟悉了面向过程的程序设计的基本方法和步骤,对于C语言有了更深入的理解,并且较好地掌握了C语言的编程方法和技术。

关键词:

C语言;图书;信息管理系统

一、需求分析

经过简单的调研分析,我确定图书信息管理系统主要包括查阅图书、借阅图书、图书管理系统、会员管理系统等一系列的功能。

1、查阅图书系统

(1)读者可以通过书名来查找有需要的书籍。

(2)读者可以通过作者来查找有需要的书籍。

2、借阅图书系统

读者输入卡号可以借阅有需要的书籍。

3、图书管理系统

(1)通过输入图书的书号、书名、作者增加图书。

(2)直接输入图书的书号删除相关图书。

(3)发现图书相关信息有问题可通过书号进行修改。

(4)可以查看系统中一共有多少本书。

4、会员管理系统

(1)读者可以通过输入姓名、性别等相关信息申请新的会员卡。

(2)如有遗失、损坏会员卡通过输入卡号直接删除该会员卡。

(3)进入会员系统查看借书统计的相关信息。

(4)管理员进入系统可以查看会员总数、会员相关的卡号等信息,便于管理。

二、总体设计

根据需求分析,为了实现系统功能,我确定图书信息管理系统总体模块如图1所示。

图1图书信息管理系统总体模块图

三、详细设计

3.1数据定义

3.1.1图书的数据结构

structbook

{

intbooknum;//书号

charbookname[20];//书名

charbookcreat[10];//书的作者

intturefalse;//用于借书和还书模块判断一本书是否借出的条件

}book[1000];//定义一个比较大的1000本书

3.1.2会员卡的数据类型structcar{intcarnum;//卡号charstudentsex[4];//性别charstudentname[20];//姓名intstudentclass;//所在班级}car[1000];//定义一千个会员

3.1.3定义学生类型,用于存放借出的书籍structstudent{intcarnum;//卡号charlendbook[10];//借出的书数}student[1000];//定义一千个学生

3.2函数设计

3.2.1main()主函数模块

主函数是程序入口,采用模块化设计。

首先在主程序中打印欢迎界面,定义一些必要变量,作一无限循环程序,循环体为一开关语句,该语句设置一个断点,其条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的功能函数,同时设置一个断点,当返回值为一定条件时结束程序。

3.2.2chabook()查询图书函数模块

在这个模块中又分为两个子模块:

按书名查找模块和按作者查找。

按书名查找模块:

在这个子函数里使用指向文件的指针变量,定义指针变量fp,fp指向文件名为“book.txt”的首地址,如果不存在,则自动建立。

从键盘输入书名,依次移动指针地址,直到找到输入的文件名,找到后显示图书信息,再判断状态值是否为1,真的话就显示“此书现在无人借阅”,假就显示“这本书已经有人借出!

”,关闭文件,然后按任意键返回。

如果找到最后一个地址仍没找到,就显示“没有你要查询的书籍!

”。

关闭文件。

3.2.3lendbook()借书函数模块

定义文件指针变量fp,fp2。

fp指向“car.txt(会员卡记录文件)”首地址,从键盘输入卡号,与文件中保存的依次比较,如果一致,就找到这个地址,并赋给变量i。

关闭这个文件。

开始借书,输入要借的书,这时指针地址指向“book.txt”,以只读的方式打开,依次找与输入书名一致的图书,如果找到,又分两种情况:

状态值为1,则把书借出,把此书的状态值改为0.否则,显示“书已被借出”。

如果找不到,显示“不存在这样的书”,关闭文件。

返回。

3.2.4huanbook()还书函数模块

同样定义两个指针变量:

fp,fp2。

先从键盘输入要还图书者会员卡卡号,然后是还书人名字,与文件中的相对照,都一致就进入还书过程,删除掉所还图书的借书记录,将还的书的原来状态设为无人借阅的。

如果没找到图书就显示“你没有借这样的书,任意键返回...”,如果没找到所输卡号,则显示“没这样的卡,和管理员联系,按任意键返回...”。

还书过程结束。

3.2.5lendcount()借书统计函数模块

定义指向文件的指针变量fp,并使fp指向“record.txt”,以只写的方式打开文件,从首地址读取,找到借书信息,就把统计借出书个数的变量i的值加1。

并显示借出的每一本书的信息。

3.2.6addcar()增加会员卡函数模

义指向文件的指针变量fp,并使fp指向“car.txt”的首地址,以追加的方式打开文件“car.txt”,从键盘输入会员信息,并写入文件。

3.2.7delcar()删除会员卡函数模块

定义指向文件的指针变量fp,和fp2。

分别以写入的方式打开“car.txt”,和“bookl.txt”。

从键盘输入要删除的会员卡卡号,然后把有关信息删除。

3.2.8carcount()会员统计函数模块

定义指向文件的指针变量fp,使其指向“car.txt”,以只读的方式打开,依次读取里面数据,把会员个数赋给表示会员个数的变量n,并输出每个会员信息。

3.2.9addbook()增加图书函数模块

定义指向文件的指针变量fp,使其指向“book.txt”并以追加的方式打开文件,依次从键盘读入图书的各个信息,写入文件,然后关闭文件。

3.2.10delbook()删除图书函数模块

定义两个文件指针,fp,fp2.从键盘输入图书名字。

然后在文件中查找,找到后删除掉有关记录,找不到则报错。

3.2.11changebook()修改图书信息函数模块

定义两个文件指针,fp,fp2.从键盘输入要修改的图书名。

然后从文件中找一致的,找到后询问修改哪一部分。

在进入修改。

完成后关闭文件。

3.2.12bookcount()图书统计函数模块

定义文件指针fp,并使之指向“book.txt”依次从里面读取数据,并输出。

3.2.13end()结束函数模块

定义退出界面。

3.3算法流程图

3.3.1按照作者名查找算法流程图如图2所示。

图2按照作者名查找算法流程图

3.3.2保存函数Save()的算法流程图如图3所示。

图3保存函数Save()的算法流程图

3.3.3增加会员卡的算法流程图如图4所示。

图4增加会员卡的算法流程图

四、编码

本系统源代码详见附录1,主要编码实现了以下模块:

1.图书查询:

实现对图书馆所有馆藏图书的精确查询。

2.借阅图书:

完成学生对指定图书的借阅。

3.查询个人借阅信息:

完成对指定学生个人借阅图书记录的查询,显示该学生借阅的所有图书的信息。

4.归还图书:

完成学生对自己已借阅的指定图书的归还。

5.超期图书归还:

对超期的情况能自动给出提示信息。

6.图书管理:

能够实现图书基本情况的录入、修改、删除等基本操作。

通过运用该系统,实现对图书馆图书的图书的信息管理,学生的查寻、借阅、归还等操作,达到对图书信息管理的功能。

五、测试

5.1系统主菜单界面

在VisualC++6.0中运行本系统,可以得到图5所示的主菜单界面。

图5系统主菜单界面

5.2图书查阅界面

在图5中,选择1,进入图6所示的图书查阅界面。

图6图书查阅界面

在图6中,选择1,进入“按书名查找”的界面。

例如输入书名“”,得到图7所示的显示。

图7按书名查找

在图6中,选择2,进入“按作者查找”的界面。

例如输入作者“”,得到图8所示的显示。

图8按作者查找

5.3借书系统界面

在图5中,选择2,进入图9所示的借书系统界面。

图9借书系统界面

5.4还书界面

在图5中,选择4,进入图10所示的还书界面。

图10还书界面

5.5管理系统

在图5中输入3,进入图11所示的管理系统界面。

图11管理系统界面

在图11中输入1,进入图12所示的增加图书界面。

图12增加图书界面

在图11中输入2,进入图13所示的删除图书界面。

图13删除图书界面

在图11中输入3,进入图14的修改图书界面。

图14修改图书界面

在图6中输入3,进入图15的管理系统界面。

图15管理系统界面包

六、设计总结

第一次做课设,第一次接触这么庞大的c程序,首先读懂它就有很大的难度,所以我们查阅了很多的资料,接触了很多的新的东西,遇到一些看不懂的东西时,我们会在一起互相探讨,互相沟通。

编程看起来似乎是一件很枯燥、乏味的事情,但是经历了这次大程序的编辑之后,但是其实里面还是充满乐趣的,一旦真的钻研下去什么事情都可以放下,来认真研究。

编程尤其是调试是一项细致深入的工作,需要下工夫、动脑子、善于积累经验,这往往能反映出一个人的水平、经验和科学态度。

C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。

好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。

在这里,我作为其中的参与者,感触良多。

在这次课程设计中我对C语言有了一个更深的了解和认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。

通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。

这次的课程设计使我对C语言的学习产生浓厚的兴趣。

还是这次课程设计最令人激动的就是合作做项目,虽然那只是一个很小很小的项目,大家在一起学习,取长补短,我们很好的在课设中长知识,提高我们的学习热情。

对于以后的学习及我们的专业知识的学习我都有了很大的信心。

只要我们努力,所有的事就像我们的C程序一样,只要我们编好了程序,就能正确的运行的。

致谢

结束了一周的课程设计,首先要感谢周老师在课程设计上给予我的指导,支持与帮助。

这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。

在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。

其次,要感谢和我共同做同一个课程设计的任飞翔同学,他为我解决了很多我不明白的知识以及技术上的难题,让我们共同完成了这个课程设计。

参考文献

1.姜灵芝,余健.C语言课程设计案例精编.北京:

清华大学出版社,2008

2.王新,孙雷.C语言课程设计.北京:

清华大学出版社,2009

3.游洪跃、彭骏、谭斌.C语言程序设计实验与课程设计教程.北京:

清华大学出版社,2011

4.王连相.C/C++程序设计上机指导与测试.北京:

中国铁道出版社,2006

5.C语言函数手册,机械工业出版社,1999

附录1

#include

#include

#include

#include

#include

#defineSTACK_INIT_SIZE10

#defineOK1

#defineTRUE1

#defineERROR0

/*定义学生类型,用于存放借出的书籍*/

structstudent{

intcarnum;

charlendbook[10];

}student[1000];

/*定义书的类型*/

structbook

{

intbooknum;

charbookname[20];

floatbookprice;

charbookcreat[20];

intturefalse;/*用于借书和还书模块判断一本书是否借出的条件*/

}book[1000];

/*借书卡的数据类型*/

structcar

{

intcarnum;

charsex[5];

charstudentname[20];

intstudentclass;

}car[1000];

//////////////////////////////////查询图书信息模块//////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////

//////

(1)按书名查找

findbook()

{

FILE*fp;

charbookname[10];

inti;

fp=fopen("book.txt","r");

printf("请输入你要查找的书名:

\n");

scanf("%s",bookname);

for(i=0;fread(&book[i],sizeof(structbook),1,fp)!

=0;i++)

{

if(strcmp(bookname,book[i].bookname)==0)

{

if(book[i].turefalse==1)

{

printf("书号书名作者\n%d%s%s\n",book[i].booknum,book[i].bookname,book[i].bookcreat);

printf("此书现在无人借阅\n按任意键返回\n");}

else{printf("这本书已经有人借出\n");fclose(fp);return0;}

fclose(fp);

return0;

}

}

printf("没有你要查询的书籍!

\n");

fclose(fp);

return0;

}

//////////

(2)按作者查找

findbook1()

{

FILE*fp;

charbookcreat[10];

inti;

fp=fopen("book.txt","r");

printf("请输入你要查找的作者名:

\n");

scanf("%s",bookcreat);

for(i=0;fread(&book[i],sizeof(structbook),1,fp)!

=0;i++)

{

if(strcmp(bookcreat,book[i].bookcreat)==0)

{

if(book[i].turefalse==1)

{

printf("书号书名作者\n%d%s%s\n",book[i].booknum,book[i].bookname,book[i].bookcreat);

printf("此书现在无人借阅\n按任意键返回\n");

}

else{printf("这本书已经有人借出!

\n");

fclose(fp);

return0;

}

fclose(fp);

return0;

}

}

printf("没有你要查询的书籍\n");

fclose(fp);

return0;

}

chabook()/////查找图书主模块

{

charch5;

do

{

printf("◎◎◎欢迎进入图书查询系统◎◎◎\n");

printf("1:

按书名查找\n");

printf("2:

按作者查找\n");

printf("0:

返回\n");

printf("请输入0━2:

\n");

ch5=getch();

switch(ch5)

{

case'1':

findbook();getch();break;

case'2':

findbook1();getch();break;

case'0':

break;

default:

printf("无此操作!

\n");getch();break;

}

}while(ch5!

='0');

return0;

}

/////////////////////////////////////////////////////////////////

//////////借书与还书模块

/////

(1).借书模块

lendbook()

{

FILE*fp,*fp2;

inti,n;

intcarnum;

system("cls");

printf("\t\t◎◎◎欢迎进入借书系统◎◎◎\n\n");

printf("请输入借书人的:

\n卡号:

\n");

scanf("%d",&carnum);

fp=fopen("car.txt","r");

for(i=0;fread(&car[i],sizeof(structcar),1,fp)!

=0;i++)

{

if(car[i].carnum==carnum)

{

n=i;

fclose(fp);

printf("书名:

\n");

scanf("%s",student[n].lendbook);

fp=fopen("book.txt","r");

for(i=0;fread(&book[i],sizeof(structbook),1,fp)!

=0;i++)

{

if(strcmp(book[i].bookname,student[n].lendbook)==0)

{

if(book[i].turefalse==0){printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return0;}

else

fclose(fp);

fp=fopen("record.txt","a+");

student[n].carnum=carnum;

fwrite(&student[n],sizeof(structstudent),1,fp);

fclose(fp);

fp=fopen("book.txt","r");

fp2=fopen("bookl.txt","w");

for(i=0;fread(&book[i],sizeof(structbook),1,fp)!

=0;i++)

{

if(strcmp(book[i].bookname,student[n].lendbook)==0)

{

book[i].turefalse=0;

fwrite(&book[i],sizeof(structbook),1,fp2);

continue;

}

fwrite(&book[i],sizeof(structbook),1,fp2);

}

fclose(fp);

fclose(fp2);

fp=fopen("book.txt","w");

fp2=fopen("bookl.txt","r");

for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!

=0;i++)

{

fwrite(&book[i],sizeof(structbook),1,fp);

}

fclose(fp);

fclose(fp2);

fopen("bookl.txt","w");

fclose(fp2);

printf("借书完毕,按任意键返回...\n");

getch();

return0;

}

}

printf("不存在这样的书,任意键返回...\n");

fclose(fp);

getch();

return0;

}

}

printf("你的卡号不存在,请申请新卡,按任意键返回...\n");

fclose(fp);

getch();

return0;}

///////

(2).还书函数

huanbook()

{

FILE*fp,*fp2;/*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/

inti,n;

intcarnum;

charlendbook[10];

system("cls");

printf("\t\t◎◎◎欢迎进入还书界面◎◎◎");

printf("\n请你输入你的\n卡号:

\n");

scanf("%d",&carnum);

fp=fopen("car.txt","r");/*读取卡号记录*/

for(i=0;fread(&car[i],sizeof(structcar),1,fp)!

=0;i++)/*for循环判断卡号是否存在*/

{

if(car[i].carnum==carnum)/*卡号存在,进入下一循环*/

{

n=i;

fclose(fp);

printf("请输入你要还的书的名字:

\n");

scanf("%s",lendbook);

fp=fopen("record.txt","r");

for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!

=0;i++)/*判断是否借阅了输入的书*/

{

if(strcmp(student[i].lendbook,lendbook)==0)/*借阅了该书,进入下一循环,否则出错显示*/

{

fclose(fp);

fp=fopen("record.txt","r");

fp2=fopen("bookl.txt","w");

for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!

=0;i++)

{

if(strcmp(student[i].lendbook,lendbook)==0)

{

continue;/*删除还掉的书的借书记录*/

}

fwrite(&student[i],sizeof(structstudent),1,fp2);/*写入原来没还的书的记录*/

}

fclose(fp);

fclose(fp2);

fp=fopen("record.txt","w

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2