C语言图书借阅管理系统.docx
- 文档编号:5297082
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:19
- 大小:225.47KB
C语言图书借阅管理系统.docx
《C语言图书借阅管理系统.docx》由会员分享,可在线阅读,更多相关《C语言图书借阅管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
C语言图书借阅管理系统
本页仅作为文档封面,使用时可以删除Thisdocumentisforreferenceonly-rar21year.March
C语言-图书借阅管理系统(总16页)
成绩评定表
学生姓名
任春雷
班级学号
1203050126
专业
计算机科学与技术
课程设计题目
图书借阅系统
评
语
组长签字:
成绩
日期
201年月日
课程设计任务书
学院
信息科学与工程学院
专业
计算机科学与技术
学生姓名
任春雷
班级学号
1203050126
课程设计题目
图书借阅系统
实践教学要求与任务:
设计一个图书借阅系统,功能包括:
图书管理子系统,由管理员负责录入书籍(包括ISBN号、书名、作者、数量等信息),
废旧图书销毁等功能;图书借阅子系统(保存用户名、借阅的书的ISBN号、借阅日期等信息),负责图书的借阅、归还、
续借、超期罚款等功能;查询子系统,包括可以查询书库中的书、客户借阅情况等,信息保存到文件中。
工作计划与进度安排:
第14周:
问题分析,方案设计,软件编码和调试;
第19周:
软件测试,书写课设报告,答辩。
指导教师:
201年月日
专业负责人:
201年月日
学院教学副院长:
201年月日
一、实训题目和实训任务
1.实训题目
图书借阅系统
2.实训任务
设计一个图书借阅系统,功能包括:
图书管理子系统,由管理员负责录入书籍(包括ISBN号、书名、作者、数量等信息),废旧图书销毁等功能;图书借阅子系统(保存用户名、借阅的书的ISBN号、借阅日期等信息),负责图书的借阅、归还、续借、超期罚款等功能;查询子系统,包括可以查询书库中的书、客户借阅情况等。
(可以自己发挥);信息保存到文件中。
3.题目分析
一个学校的图书馆,其图书借阅管理系统应有如下几个功能:
1,图书管理员将图书的ISBN号,书名,书名,作者,价格等输入到系统中存储区来,以便以后使用。
而且还能修改图书的内容。
2,读者可以按照图书的ISBN号或书名,作者到系统中查找并借阅所需要的图书,每人借阅图书的数量不超过20本。
3,建立文件,将信息保存在文件中。
方法:
1,建立一个关于图书的结构体,内含ISBN号,书名,作者,出版社和价格。
2,InsertDoc函数,负责新书信息的插入。
3,voidsort_maopao函数,用冒泡法将图书的ISBN号以由小到大的顺序进行排列。
4,voidDeleteDoc函数,将废旧图书信息进行删除。
5,voidPrint_Book_Doc函数,输出图书的信息,方便读者选书。
6,voidsearch_book函数,进行图书的查询。
7,voidinfo_change函数,将图书信息进行修改。
8,主函数,用switch-case结构进行函数的调用。
4.开发工具和环境
开发工具:
VisualC++6.0,CodeBlock10.05,等
环境:
Windows7
二、软件设计
1.关键技术分析
设计一个图书借阅系统,功能包括:
图书管理子系统,由管理员负责录入书籍(包括ISBN号、书名、作者、数量等信息),废旧图书销毁等功能;图书借阅子系统(保存用户名、借阅的书的ISBN号、借阅日期等信息),负责图书的借阅、归还、等功能;查询子系统,包括可以查询书库中的书,信息保存到文件中。
2.软件模块设计
图2-2-1
3.软件界面设计
图2-3-1
三、软件测试及运行结果
1.测试方案
选择1,输入01大学英语李梦华上海外语38
02大学物理许嵩宁科学出版社51
选择2,输出图3-2-1
选择7,输出图3-2-2
2.测试结结果
图3-2-1
图3-2-2
四、收获和体会
1.实习收获
在编程实践中,我才知道自己基础知识的不足,通过一段时间的努力学习,我的基础知识更加牢固,尤其是后面指针,结构体,链表,文件的知识了解的更加深入。
其次是知识的运用,以前学到的知识都是片面的了解,一到编程序时就无从下手,现在能熟练的应用各种知识,使知识得到应用。
最后是编程的技巧,从整体构型到各个函数的应用都有了很大的进步。
2.实习体会
通过一段时间的编程实践,使我c语言的知识了解的更加深刻,知识面更加宽广。
同时,在编程实践中遇到了很多困难,明显的了解到自己知识运用能力的不足,通过查书和与同学交流,使我取得了很大的进步。
在编程过程中,与同学的交流使我获得了很大的进步,老师的指导更是使我获益匪浅,一些难懂的知识经老师点拨瞬间变得豁然开朗。
以前看到能力强的同学编数百行的程序就吓住了自己,总觉得自己不行,但经过努力,当程序运行出来时才觉得,原来编程并不是很难,这极大地增加了自己的自信心,为以后的学习和工作打下了良好地基础,我认为这才是我最重要的收获。
五、源代码清单
#include
#include
#include
#include
structbooks_list
{
charwriter[20];/*作者名*/
chartitle[20];
charISBN[20];/*书名*/
charpublishinghouse[20];/*出版单位*/
intprice,borrowed;/*价格*/
structbooks_list*next;
/*链表的指针域*/
};
structbooks_list*Create_Books_Doc();/*新建链表*/
voidInsertDoc(structbooks_list*head);/*插入*/
voidsort_maopao(structbooks_list*head);//排序
voidDeleteDoc(structbooks_list*head,intnum);/*删除*/
voidPrint_Book_Doc(structbooks_list*head);/*浏览*/
voidsearch_book(structbooks_list*head);/*查询*/
voidinfo_change(structbooks_list*head);/*修改*/
voidsave(structbooks_list*head);/*保存数据至文件*/
/*新建链表头节点*/
structbooks_list*Create_Books_Doc()
{
structbooks_list*head;
head=(structbooks_list*)malloc(sizeof(structbooks_list));/*分配头节点空间*/
head->next=NULL;/*头节点指针域初始化,定为空*/
returnhead;
}
/*保存数据至文件*/
voidsave(structbooks_list*head)
{
structbooks_list*p;
FILE*fp;
p=head;
fp=fopen("data.txt","w+");/*以写方式新建并打开data.txt文件*/
fprintf(fp,"--------编号-------书名---------------作者----------出版社-----------价格\n");
/*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/
while(p->next!
=NULL)
{
p=p->next;
fprintf(fp,"%-6.6s%-15.10s%-10.10s%-10.10s%-10.10d\n",p->ISBN,p->title,p->writer,p->publishinghouse,p->price);
}
fprintf(fp,"\n");
fclose(fp);
printf("已将图书数据保存到data.txt文件\n");
}
voidsort_maopao(structbooks_list*head)
{
structbooks_list*tail,*p,*q,*p1,*t;//p1等于headt等于headq保存p的next节点
p1=(structbooks_list*)malloc(sizeof(structbooks_list));
for(t=head->next;t!
=NULL;t=t->next)
for(p=head->next,p1=head;p->next!
=NULL;p=p->next,p1=p1->next)
{
if(strcmp(p->ISBN,p->next->ISBN)>0)
{
q=p->next->next;
tail=p->next;
tail->next=NULL;
p->next=q;
p1->next=tail;
tail->next=p;
p=p1;
}
}
save(head);//保存文件
}
/*插入*/
voidInsertDoc(structbooks_list*head)
{
/*定义结构体指针变量s指向开辟的新结点首地址p为中间变量*/
structbooks_list*s,*p;
charflag='Y';/*定义flag,方便用户选择重复输入*/
p=head;
/*遍历到尾结点,p指向尾结点*/
while(p->next!
=NULL)
{
p=p->next;
}
/*开辟新空间,存入数据,添加进链表*/
while(flag=='Y'||flag=='y')
{
system("cls");
p->borrowed=0;
s=(structbooks_list*)malloc(sizeof(structbooks_list));
printf("\n请输入图书编号:
");
fflush(stdin);
scanf("%s",s->ISBN);
printf("\n请输入图书书名:
");
fflush(stdin);
scanf("%s",s->title);
printf("\n请输入图书作者名:
");
fflush(stdin);
scanf("%s",s->writer);
printf("\n请输入图书出版社:
");
fflush(stdin);
scanf("%s",s->publishinghouse);
printf("\n请输入图书价格:
");
fflush(stdin);
scanf("%d",&s->price);
printf("\n");
p->next=s;/*将新增加的节点添加进链表*/
p=s;/*p指向尾节点,向后移*/
s->next=NULL;
printf("━━━━添加成功!
━━━━");
printf("\n继续添加(Y/N):
");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
{break;}
elseif(flag=='Y'||flag=='y')
{continue;}
}
save(head);/*保存数据至文件*/
system("cls");
return;
}
/*查询操作*/
voidsearch_book(structbooks_list*head)
{
structbooks_list*p;
chartemp[20];
p=head;
if(head==NULL||head->next==NULL)/*判断数据库是否为空*/
{
printf("━━━━图书库为空!
━━━━\n");
}
else
{
printf("请输入您要查找的书名:
");
fflush(stdin);
scanf("%s",temp);
/*指针从头节点开始移动,遍历至尾结点,查找书目信息*/
while(p->next!
=NULL)
{
p=p->next;
if(strcmp(p->title,temp)==0)
{
printf("\n图书已找到!
\n");
printf("\n");
printf("编号:
%s\t\n",p->ISBN);
printf("书名:
%s\t\n",p->writer);
printf("作者名:
%s\t\n",p->writer);
printf("出版单位:
%s\t\n",p->publishinghouse);
printf("价格:
%.2d\t\n",p->price);
}
if(p->next==NULL)
{
printf("\n查询完毕!
\n");
}
}
}
return;
}
/*浏览操作*/
voidPrint_Book_Doc(structbooks_list*head)
{
structbooks_list*p;
if(head==NULL||head->next==NULL)/*判断数据库是否为空*/
{
printf("\n━━━━没有图书记录!
━━━━\n\n");
return;
}
p=head;
printf("\n\n\n\t\t编号书名作者出版单位价格\n");
/*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/
while(p->next!
=NULL)
{
p=p->next;
printf("\t\t%-7.6s%-13.10s%-10.10s%-10.10s%d\n",p->ISBN,p->title,p->writer,p->publishinghouse,p->price);
}
printf("\n");
}
/*修改操作*/
voidinfo_change(structbooks_list*head)
{
structbooks_list*p;
intpanduan=0;/*此变量用于判断是否找到书目*/
chartemp[20];
p=head;
printf("请输入要修改的书名:
");
scanf("%s",temp);
while(p->next!
=NULL)
{
p=p->next;
if(strcmp(p->title,temp)==0)
{
printf("\n请输入图书编号:
");
fflush(stdin);
scanf("%d",p->ISBN);
printf("\n请输入图书书名:
");
fflush(stdin);
scanf("%s",p->title);
printf("\n请输入图书作者名:
");
fflush(stdin);
scanf("%s",p->writer);
printf("\n请输入图书出版社:
");
fflush(stdin);
scanf("%s",p->publishinghouse);
printf("\n请输入图书价格:
");
fflush(stdin);
scanf("%d",&p->price);
printf("\n");
panduan=1;
}
}
if(panduan==0)
{
printf("\n━━━━没有图书记录!
━━━━\n\n");
}
return;
}
voidbook_borrow(structbooks_list*head)
{
structbooks_list*p;
intpanduan=0;/*此变量用于判断是否找到书目*/
chartemp[20];
p=head;
printf("请输入要借的书名:
");
scanf("%s",temp);
while(p->next!
=NULL)
{
p=p->next;
if((strcmp(p->title,temp)==0)&&(p->borrowed==0))
{
p->borrowed=1;
panduan=1;
printf("图书已经成功借出\n");
}
}
if(panduan==0)
{
printf("\n━━━━没有要借阅的图书!
━━━━\n\n");
}
return;
}
/*删除操作*/
voidDeleteDoc(structbooks_list*head)
{
structbooks_list*s,*p;/*s为中间变量,p为遍历时使用的指针*/
chartemp[20];
intpanduan;/*此变量用于判断是否找到了书目*/
panduan=0;
p=s=head;
printf("[请输入您要删除的书名]:
");
scanf("%s",temp);
/*遍历到尾结点*/
while(p!
=NULL)
{
if(strcmp(p->title,temp)==0)
{
panduan++;
break;
}
p=p->next;
}
if(panduan==1)
{
for(;s->next!
=p;)/*找到所需删除卡号结点的上一个结点*/
{
s=s->next;
}
s->next=p->next;/*将后一节点地址赋值给前一节点的指针域*/
free(p);
printf("\n━━━━删除成功!
━━━━\n");
}
else/*未找到相应书目*/
{
printf("您输入的书目不存在,请确认后输入!
\n");
}
return;
}
intmain(void)
{
structbooks_list*head;
intchoice;
head=NULL;
do{
printf("\n");
printf("--------------------图书管理系统-------------------\n\n");
printf("[1]图书信息录入\n\n");
printf("[2]图书信息浏览\n\n");
printf("[3]图书信息查询\n\n");
printf("[4]图书信息修改\n\n");
printf("[5]图书信息删除\n\n");
printf("[6]图书排序\n\n");
printf("[7]图书借阅\n\n");
printf("[0]退出系统\n\n");
printf("请选择:
");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case1:
if(head==NULL)
{
head=Create_Books_Doc();
}
InsertDoc(head);
break;
case2:
Print_Book_Doc(head);
break;
case3:
search_book(head);
break;
case4:
info_change(head);
break;
case5:
DeleteDoc(head);
break;
case6:
sort_maopao(head);
break;
case7:
book_borrow(head);
break;
case0:
printf("\n");
printf("━━━━━━━━感谢使用图书管理系统━━━━━━━━\n");
break;
default:
printf("━━━━输入错误,请重新输入!
━━━━");
}
}while(choice!
=0);
return0;
}
参考文献
[1]c语言程序设计,马秀丽,李筠著。
清华大学出版社.2008.1
[2]c程序设计(第三版),谭浩强著,清华大学出版社.2005.7
[3]面向对象程序设计(c++语言),李爱华,程磊著,清华大学出版社.2010,2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图书 借阅 管理 系统