C语言图书借阅管理系统.docx

上传人:b****7 文档编号:26304324 上传时间:2023-06-17 格式:DOCX 页数:22 大小:229.04KB
下载 相关 举报
C语言图书借阅管理系统.docx_第1页
第1页 / 共22页
C语言图书借阅管理系统.docx_第2页
第2页 / 共22页
C语言图书借阅管理系统.docx_第3页
第3页 / 共22页
C语言图书借阅管理系统.docx_第4页
第4页 / 共22页
C语言图书借阅管理系统.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C语言图书借阅管理系统.docx

《C语言图书借阅管理系统.docx》由会员分享,可在线阅读,更多相关《C语言图书借阅管理系统.docx(22页珍藏版)》请在冰豆网上搜索。

C语言图书借阅管理系统.docx

C语言图书借阅管理系统

-标准化文件发布号:

(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

 

C语言-图书借阅管理系统

成绩评定表

学生姓名

任春雷

班级学号

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

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1