图书馆管理系统.docx

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

图书馆管理系统.docx

《图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统.docx(45页珍藏版)》请在冰点文库上搜索。

图书馆管理系统.docx

图书馆管理系统

课程设计(论文)任务书

学院

理学院

专业

光信息科学与技术

学生姓名

丁漪

学号

1109020202

课程设计

(论文)题目

图书管理系统

设计要求(技术参数):

进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解;针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

设计任务:

在图书管理系统中要实现—图书查阅,图书借阅,图书管理,还书,这四个大的功能。

同时实现按书名,作者查找,图书增加,图书删除,会员卡管理等一系列的子功能。

使本系统成为初步完善的图书管理系统。

 

进度安排:

第一周查阅资料

第二周第一、二天程序设计;第三、四天程序调试与测试;第五天答辩

成绩:

指导教师(签字):

年月日

专业负责人(签字):

 

年月日

学院院长(签字):

 

年月日

目录

一摘要…………………………………………………………………………………………3

二总体模块图………………………………………………………………………………4

三流程图……………………………………………………………………………………5

3.1总体流程图………………………………………………………………………………5

3.2chabook()查询图书函数模块…………………………………………………………6

3.3lendbook()借书模块…………………………………………………………………8

3.4huanbook()还书函数模块……………………………………………………………9

3.5lendcount()借书统计函数模块……………………………………………………10

3.6delcar()删除会员卡的函数模块……………………………………………………11

3.7carcount()会员统计函数模块………………………………………………………12

3.8addbook()增加图书函数模块………………………………………………………12

3.9delbook()删除图书函数模块………………………………………………………13

3.10changebook()修改图书信息函数模块……………………………………………14

3.11bookcount()图书统计函数模块……………………………………………………15

四源程序……………………………………………………………………………………16

五程序运行结果…………………………………………………………………………30

5.1主函数运行界面………………………………………………………………………30

5.2查阅图书界面…………………………………………………………………………30

5.3进入借书系统…………………………………………………………………………31

5.4还书界面………………………………………………………………………………31

5.5退出系统………………………………………………………………………………32

5.6进入管理系统…………………………………………………………………………32

5.7会员管理系统…………………………………………………………………………33

5.8图书统计………………………………………………………………………………33

5.9卡号统计………………………………………………………………………………34

5.10增加图书………………………………………………………………………………34

5.11删除图书………………………………………………………………………………35

5.12修改图书………………………………………………………………………………35

六总结………………………………………………………………………………………36

七参考文献…………………………………………………………………………………36

 

一摘要

本图书管理系统主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,至少具有如下功能:

图书入库,按书名、出版社、价格、作者进行查询和分类统计。

数据结构主要采用了链表。

链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。

线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。

链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。

链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储学生相关信息。

关键词:

C语言;文件;数据结构;链表

 

 

二总体模块图

功能说明:

查询图书用于查找存储的图书信息

借阅图书用于借阅存储的图书

管理图书可用于对图书的增加,删除,统计和修改并对会员进行管理

会员管理系统能对会员进行增加,删除和借阅统计

部分模块间关系:

经过管理系统对图书的处理,查询图书和借阅图书的功能才能得以实现

经过会员管理系统的处理,才能实现对会员的查询和统计

三流程图

3.1总体流程图

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

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

 

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

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

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

1、按书名查找:

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

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

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

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

”。

关闭文件。

 

关键代码:

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

=0;i++)

 

2、按作者查找:

原理同上

 

关键代码:

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

=0;i++)

 

3.3lendbook()借书模块

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

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

关闭这个文件。

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

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

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

关键代码:

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

 

3.4huanbook()还书函数模块

同样定义两个指针变量:

fp,fp2。

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

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

还书过程结束。

 

关键代码:

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

=0;i++)

 

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

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

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

关键代码:

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

=0;i++)

 

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

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

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

“bookl.txt”。

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

关键代码:

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

=0;i++)

{

fwrite(&car[i],sizeof(structcar),1,fp);

}

 

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

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

关键代码:

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

=0;i++)

 

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

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

关键代码:

while(choice=='y'||choice=='Y')

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

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

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

关键代码:

if(strcmp(bookname,book[i].bookname)!

=0)

{

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

}

 

 

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

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

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

在进入修改。

完成后关闭文件

 

关键代码:

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

 

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

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

关键代码:

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

=0;i

 

四源程序清单

#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];

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;

}

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;

}

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;

}

huanbook()

{

FILE*fp,*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++)

{

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");

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

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

=0;i++)

{

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

}

fclose(fp);

fclose(fp2);

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

fclose(fp2);

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

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

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

=0;i++)

{

if(i==n)

{

book[i].turefalse=1;

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();

return1;

}

}

printf("你没有借这样的书,任意键返回...\n");/*出错提示*/

fclose(fp);

getch();

return0;

}

}

printf("没这样的卡,和管理员联

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

当前位置:首页 > 医药卫生 > 基础医学

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

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