图书管理系统含源代码c语言 数据结构课程设计报告.docx
《图书管理系统含源代码c语言 数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统含源代码c语言 数据结构课程设计报告.docx(30页珍藏版)》请在冰豆网上搜索。
图书管理系统含源代码c语言数据结构课程设计报告
《算法与数据结构》
课程设计实验报告
设计题目:
图书管理
专业:
计算机科学与技术
班级:
学生姓名:
学号:
指导教师:
2011年7月
烟台大学计算机学院
一题目要求
1目的要求
本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。
2、题目要求
实现图书管理信息系统的设计。
要求实现图书添加、显示全部图书、查询、借阅和归还。
主要考查利用文件的操作!
二总体设计
图书数据:
书号,书名,图书ID,图书状态,借阅次数
1.借书模块:
输入图书ID
如果存在提示借阅成功,如果没有或已借出提示借阅失败
2.还书模块:
输入图书ID
进行还书操作
3.图书管理:
对书库中书进行管理
新书入库
对库存量进行统计和查询
4.查询模块:
对书库中书进行查询
根据图书ID进行查询
三编码实现
定义图书结构体
structBook
{
intid;
//图书的编号
charname[20];
//图书名字
inttype;
//图书类型
intstatus;
//图书现在状态
intcount;
//图书借出的次数
};
定义图书类型
typedefstructBookBook;
Bookdata[Max];
intall=0;
//添加图书类型,用户信息显示
charBookTypes[][32]=
{
"文学",
"中文社科",
"自然科学",
"计算机",
"报刊/杂志",
"",
};
添加图书状态
charBookStatus[][32]=
{
"在架上",
"已借出",
"",
};
图书管理菜单
charBookMenu[][32]=
{
"添加图书",
"列出图书",
"查找图书",
"借书",
"还书",
"退出",
"",
};
实现程序对文件的读取
voidRead()
{
inti=0;
intj=0;
ifstreamin("Libra.txt",ios:
:
out);
in>>i;
all=i;
if(i>0&&i<=Max)
{
for(j=1;j<=i;j++)
{
in>>data[j].id>>data[j].name>>data[j].type>>data[j].status>>data[j].count;
}
}
in.close();
}
对写入信息进行保存
voidSave()
{
inti=0;
ofstreamoutfile;//在Libra.txt文件中输入数据
outfile.open("Libra.txt",ios:
:
trunc);
outfile<for(;all>0;all--)
{
i++;
outfile<outfile<outfile<outfile<outfile<}
cout<"<outfile.close();
//exit
(1);
}
Main函数
intmain()
{
intch=0,i,loop=1;
while(loop)
{
Read();
print_menu(BookMenu);
scanf("%d",&ch);
if(ch<1||ch>6)
{
printf("\n没有所输选项,请确定所输入选项为1-6中的选项!
!
\n");
printf("\n");
}
switch(ch)
{
case1:
//添加图书信息
PutInfor();
break;
case2:
Read();
Printall();
break;
case3:
system("cls");
Read();
searchBook();
break;
case4:
system("cls");
Read();
Borrow();
break;
case5:
system("cls");
Read();
Return();
break;
case6:
loop=0;
break;
default:
break;
}
printf("\n-------------------------------分割线----------------------------------\n\n");
}
return0;
四调试与测试
主菜单
生成的文件内信息
五心得体会
首先,写程序应先确定目标要求,所用平台和工具,不求最好,但求最适合自己。
开始时决定用MFC但是我对MFC的了解就像它对我的了解一样多,一天之后果断和它说再见,我不想把仅有时间用在学习一门工具上。
其次是代码的编写,最主要的的是编程思想,语言其实不是太重要,思路最重要!
在此感谢一下在我卡壳时帮助我的同学和解答的老师,虽然我没问什么,还是要感谢一下!
附录:
源代码1
此代码为此报告所用代码,有文件操作,运行后会生成一Libra.txt文件
#include
#include
#include
#include
#include
#include
#include
#include
#include
#defineBORROWED1
#defineNOBORROW0
#defineMax100
voidSave();
voidRead();
intBinSearch(intkey);
//定义图书结构体
structBook
{
intid;
//图书的编号
charname[20];
//图书名字
inttype;
//图书类型
intstatus;
//图书现在状态
intcount;
//图书借出的次数
};
//定义图书类型
typedefstructBookBook;
Bookdata[Max];
intall=0;
//添加图书类型,用户信息显示
charBookTypes[][32]=
{
"文学",
"中文社科",
"自然科学",
"计算机",
"报刊/杂志",
"",
};
//添加图书状态
charBookStatus[][32]=
{
"在架上",
"已借出",
"",
};
//图书管理菜单
charBookMenu[][32]=
{
"添加图书",
"列出图书",
"查找图书",
"借书",
"还书",
"退出",
"",
};
//菜单输出
voidprint_menu(charmenus[][32])
{
intn=0;
printf("请输入所需选项:
\n");
while(strlen(menus[n]))
{
printf("%d%s\n",n+1,menus[n]);
++n;
}
printf("请选择(");
while(n)
{
printf("%d|",n--);
}
printf(")");
}
voidRead()
{
inti=0;
intj=0;
ifstreamin("Libra.txt",ios:
:
out);
in>>i;
all=i;
if(i>0&&i<=Max)
{
for(j=1;j<=i;j++)
{
in>>data[j].id>>data[j].name>>data[j].type>>data[j].status>>data[j].count;
}
}
in.close();
}
voidPutInfor()//信息输入函数
{
all++;
cout<<"输入图书ID:
"<cin>>data[all].id;
cout<<"输入图书名字:
"<cin>>data[all].name;
cout<<"输入图书类别:
"<print_menu(BookTypes);
cin>>data[all].type;
Save();
Read();
cout<<"输入完成!
"<}
voidBorrow()//借阅图书
{
intk=0;
BookB;
cout<<"输入所要借阅图书ID:
"<cin>>B.id;
k=BinSearch(B.id);
if(k==0)
cout<<"*无此书信息,可能是输入错误!
*"<else{
ofstreamoutfile;//在Libra.txt文件中输入数据
outfile.open("Libra.txt",ios:
:
trunc);
outfile<data[k].status=1;
for(inti=1;i<=all;i++)
{
if(i==k)
{
data[k].status=1;
data[k].count++;
outfile<outfile<outfile<outfile<outfile<}
else
{
outfile<outfile<outfile<outfile<outfile<}
}