图书管理系统含源代码c语言 数据结构课程设计报告.docx
- 文档编号:28319665
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:35
- 大小:74.47KB
图书管理系统含源代码c语言 数据结构课程设计报告.docx
《图书管理系统含源代码c语言 数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统含源代码c语言 数据结构课程设计报告.docx(35页珍藏版)》请在冰豆网上搜索。
图书管理系统含源代码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< } } outfile.close(); for(intj=k;j { data[j]=data[j+1]; } all--; Read(); } printf("借阅成功! "); } voidReturn()//还书 { 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=0; outfile< outfile< outfile< outfile< outfile< } else { outfile< outfile< outfile< outfile< outfile< } } outfile.close(); for(intj=k;j { data[j]=data[j+1]; } all--; Read(); } printf("归还成功! "); } intBinSearch(intkey) { intlow,high,mid; low=1; high=all; while(low<=high) { mid=(low+high)/2; if(key==data[mid].id) returnmid; elseif(key high=mid-1; else low=mid+1; } return0; } 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); } voidsearchBook() { intnum,i; printf("请输入所要查找的图书ID: "); scanf("%d",&num); i=BinSearch(num); if(i==0) { printf("输入有误,请重新输入! ! "); } else { printf("--------------------------------------------------------------------\n"); printf("ID|书名|图书分类|现在状态|借出次数|\n"); printf("--------------------------------------------------------------------\n"); printf("%2d|%17s|%15s|%12s|%10d|\n", data[i].id,data[i].name,BookTypes[data[i].type-1], BookStatus[data[i].status],data[i].count); } } voidPrintall()//输出信息 { printf("--------------------------------------------------------------------\n"); printf("ID|书名|图书分类|现在状态|借出次数|\n"); printf("--------------------------------------------------------------------\n"); for(inti=1;i<=all;i++) { if(data[i].name! =NULL) { printf("%2d|%17s|%15s|%12s|%10d|\n", data[i].id,data[i].name,BookTypes[data[i].type-1], BookStatus[data[i].status],data[i].count); } } } 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; } 文件内容格式为 "ID|书名|图书分类|现在状态|借出次数| 例如第七行 6为图书ID英语为图书名字1为图书分类0为现在状态0为借阅次数 图书分类1: "文学", : 2: "中文社科", : 3: "自然科学", : 4: "计算机", : 5: "报刊/杂志", 图书状态0在架上 1已借出 源代码2 此代码无文件操作,不会生成txt文件只能在控制台运行 #include #include #include #defineBORROWED1 #defineNOBORROW0 //定义图书结构体 structBook { intid; //图书的唯一编号 charname[20]; //图书名字 inttype; //图书类型 intstatus; //图书现在状态 intcount; //图书借出的次数 structBook*next; //下一本书 structBook*prev; //上一本书 }; //定义图书类型 typedefstructBookBook; //添加图书类型,用户信息显示 charBookTypes[][32]= { "文学", "中文社科", "自然科学", "计算机", "报刊/杂志", "", }; //添加图书状态 charBookStatus[][32]= { "在架上", "已借出", "", }; //图书管理菜单 charBookMenu[][32]= { "添加图书", "列出图书", "查找图书", "借书", "还书", "退出", "", }; //搜索目录 charbookSearchMenu[][32]= { "按书名查找", "按类型查找", "", }; //增加图书 intaddBooks(Book*head,Book*bookAdd) { Book*p=head; if(! p) return-1; while(p->next) { p=p->next; }; p->next=bookAdd; bookAdd->id=p->id+1; bookAdd->prev=p; bookAdd->next=NULL; bookAdd->count=0; bookAdd->status=0; return0; } //图书信息链表 Book*creatList(Book*bookHead) { if(bookHead) { bookHead->prev=bookHead; bookHead->next=NULL; bookHead->id=1; bookHead->count=0; bookHead->status=0; } returnbookHead; } //释放链表 voidfreeList(Book*book_head) { Book*p,*p1; p=book_head; while(p) { p1=p->next; free(p); p=p1; } } //菜单输出 voidprint_menu(charmenus[][32]) { intn=0; printf("请输入所需选项: \n"); while(strlen(menus[n])) { printf("%d%s\n",n+1,menus[n]); ++n; } printf("请
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书管理系统含源代码c语言 数据结构课程设计报告 图书 管理 系统 源代码 语言 数据结构 课程设计 报告