123图书信息管理系统.docx

上传人:b****2 文档编号:24450248 上传时间:2023-05-27 格式:DOCX 页数:26 大小:472.95KB
下载 相关 举报
123图书信息管理系统.docx_第1页
第1页 / 共26页
123图书信息管理系统.docx_第2页
第2页 / 共26页
123图书信息管理系统.docx_第3页
第3页 / 共26页
123图书信息管理系统.docx_第4页
第4页 / 共26页
123图书信息管理系统.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

123图书信息管理系统.docx

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

123图书信息管理系统.docx

123图书信息管理系统

东南大学

C语言课程设计报告

课程名称:

计算机综合课程设计

学院:

土木工程学院

设计题目:

图书信息管理系统设计

级别:

A级

学生姓名:

学号:

同组学生:

学号:

指导教师:

 

2012年09月05日

课程报告任务书

题目

图书信息管理系统

主要内容

图书信息包括:

登录号,书名,作者名,分类号,出版单位,出版时间,价格等。

试设计一图书信息管理系统,使之提供以下功能:

1)系统以菜单方式工作;

2)图书信息录入功能(图书信息用文本文件形式保存);

3)图书信息浏览功能;

4)查询和排序功能:

按书名查找;

按作者名查找;

5)图书信息删除功能;

6)图书信息修改功能。

任务要求

采用模块化程序设计;

鼓励可视化编程;

源程序中应有足够的注释;

学生可自行增加新功能模块(视情况可另外加分);

必须上机调试通过;

注重算法运用,优化存储效率与运算效率;

需提交源程序(含有注释)及相关文件(数据或数据库文件);

(cpp文件、txt或dat文件等)

提交设计报告书

成绩评定

评定教师

 

摘要:

随着当今社会发展,信息化水平逐步提高,对图书管理有了新的要求,因此,编写一个信息管理系统是十分必要的。

为了满足图书管理的要求,通过计算机技术给图书管理人员带来便利。

使用C语言编写图书管理系统,其中主要运用了结构化设计与链表结构。

本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。

实现了图书馆内管理的一般功能,包括图书信息录入、浏览、排序、删除和修改等功能。

所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理。

图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、删除和修改等基本操作。

关键字:

图书信息管理C语言链表结构

 

目录

1.设计的目的与要求-------------------------------------------------4

2.分析-------------------------------------------------------------4

3.总体设计---------------------------------------------------------5

4.主要功能算法-----------------------------------------------------5

5.完整程序及注释---------------------------------------------------8

6.调试分析--------------------------------------------------------24

7.总结------------------------------------------------------------28

8.答辩记录--------------------------------------------------------29

9.教师意见--------------------------------------------------------29

 

1.

设计的目的与要求

1.1设计的目的

使用链表和结构等结构数据,编写一C语言程序,实现图书信息管理的功能,通过此系统可对图书馆图书信息进行管理和维护等操作,给图书管理人员带来便利。

1.2设计的要求

图书信息包括:

登录号,书名,作者名,分类号,出版单位,出版时间,价格等。

试设计一图书信息管理系统,使之提供以下功能:

(1)系统以菜单方式工作

(2)图书信息录入功能(图书信息用文本文件形式保存)

(3)图书信息浏览功能

(4)查询和排序功能:

按书名查找

按作者名查找

(5)图书信息删除功能

(6)图书信息修改功能

2.分析

根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,排序,删除和修改等功能的操作,所以需要建立相应的函数模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。

 

3.总体设计

根据题目要求,我们经过分析和讨论后,决定将此系统分为十个功能模块:

(1)菜单选择模块

(2)图书信息录入功能模块

(3)图书信息浏览功能模块

(4)图书信息查询功能模块

(5)图书信息删除功能模块

(6)图书信息修改功能模块

(7)退出系统功能模块

4.主要功能的算法

4.1录入函数算法

4.2按书名查找算法(按作者名与此类似)

4.3删除图书信息算法(修改与此类似)

4.4显示函数算法

5.完整程序及注释

#include/*引用库函数*/

#include

#include

#include

#include

#include

typedefstructbook_info//定义图书信息的结构体变量并声明新的类型名

{

charAN[10];/*登录号*/

charname[20];/*书名*/

charauthor[20];/*作者名*/

charclc[10];/*分类名*/

charcompany[20];/*出版单位*/

chardate[20];/*出版日期*/

charprice[10];/*价格*/

structbook_info*next;

}Booklist,*Pointer;

intnum=0;//全局变量的定义

PointerHead=NULL;//头指针为空

FILE*fp;//指向文件的指针

/*声明函数*/

intmenu_select();/*主菜单函数*/

voidInsert(Pointer*Head);/*录入函数*/

voidScan(PointerHead);/*显示函数*/

voidSearch_name(PointerHead);/*按书名查找函数*/

voidSearch_author(PointerHead);/*按作者名查找函数*/

voidDelete(Pointer*Head);//删除函数

voidUpdate(PointerHead);//修改函数

voidExit();//退出函数

voidmain()//主函数

{

system("cls");/*运行前清屏*/

for(;;)

{

switch(menu_select())

{

case1:

Insert(&Head);

break;

case2:

Scan(Head);

break;

case3:

Search_name(Head);

break;

case4:

Search_author(Head);

break;

case5:

Delete(&Head);

break;

Case6:

Update(Head);

break;

case0:

Exit();

default:

putchar('\a');

}

}

}

menu_select()//主菜单函数

{

inta;

printf("\n\t\t\t欢迎使用图书信息管理系统\n\n\n\n\n\t\t*****请按任意键进入系统菜单!

*****\n");

getch();

system("cls");

printf("\t\t********************MENU*********************\n");//主菜单

printf("\t\t1.录入图书信息\n");

printf("\t\t2.浏览图书信息\n");

printf("\t\t3.按书名查询图书信息\n");

printf("\t\t4.按作者名查询图书信息\n");

printf("\t\t5.删除图书信息\n");

printf("\t\t7.修改图书信息\n");

printf("\t\t0.退出\n");

printf("\t\t***********************************************\n");

do

{

printf("\n\t请选择您所需要的功能:

");

scanf("%d",&a);

}

while(a<0||a>6);

returna;

}

voidInsert(Pointer*Head)//录入图书信息函数

{

charAN[10];

charc;

Pointerp,q,r;

printf("\n\t\t****************请输入图书信息****************\n");/*交互输入*/

printf("\n\t\t请输入登录号:

");

scanf("%s",AN);

p=q=*Head;//检测登录号是否重复

while(p!

=NULL)

{

if(strcmp(p->AN,AN)==0)

{

printf("已经有相同的登录号:

");return;}

else

{q=p;p=p->next;}

}

r=(Pointer)malloc(sizeof(Booklist));

r->next=NULL;

if(r==NULL)

{printf("分配空间失败!

");return;}

if(q==NULL)

*Head=r;

else

{q->next=r;}

strcpy(r->AN,AN);

printf("\n\t\t输入书名:

");//录入图书信息

scanf("%s",r->name);

getchar();

printf("\n\t\t输入作者名:

");

scanf("%s",r->author);

getchar();

printf("\n\t\t输入分类号:

");

scanf("%s",r->clc);

getchar();

printf("\n\t\t输入出版单位:

");

scanf("%s",r->company);

getchar();

printf("\n\t\t输入出版日期:

");

gets(r->date);

printf("\n\t\t输入价格:

");

scanf("%s",r->price);do

{

printf("\n\t\t录入成功!

!

!

!

");

num++;

printf("选择是否继续录入(Y/N)?

");/*连续录入图书信息*/

getchar();

scanf("%c",&c);

if(c=='y'||c=='Y')

Insert(Head);

else

{

if(c=='n'||c=='N')

return;

else

printf("\n\t\t输入错误,请重新输入!

!

!

");

}

}

while(c!

='y'&&c!

='n'&&c!

='Y'&&c!

='N');

}

 

voidScan(PointerHead)//显示图书信息函数

{

Pointerp;

p=Head;

if(p==NULL)

printf("记录为空");//检测是否有图书信息

else

{

printf("\n\t共有%d条记录",num);

while(p!

=NULL)

{

printf("\n\n\t\t登录号:

%-10s",p->AN);//显示图书信息

printf("\n\t\t书名:

%-20s",p->name);

printf("\n\t\t作者名:

%-20s",p->author);

printf("\n\t\t分类号:

%-10s",p->clc);

printf("\n\t\t出版单位:

%-20s",p->company);

printf("\n\t\t出版时间:

%-20s",p->date);

printf("\n\t\t价格:

¥%-10s",p->price);

p=p->next;

}

printf("\n\t\t请按任意键回到主菜单");

return;

}

}

voidSearch_name(PointerHead)//按书名查找函数

{

intflag=0;//标记变量的初值

charname[10];

Pointerp;

printf("\n请输入需要查询的书名:

");

scanf("%s",name);

printf("\n\t\t*************以下是您查找的信息***************");

p=Head;

while(p!

=NULL)

{

if(strcmp(p->name,name)==0)//查找符合的图书

{

printf("\n\t登录号:

%-10s",p->AN);

printf("\n\t书名:

%-20s",p->name);

printf("\n\t作者名:

%-20s",p->author);

printf("\n\t分类号:

%-10s",p->clc);

printf("\n\t出版单位:

%-20s",p->company);

printf("\n\t出版时间:

%-20s",p->date);

printf("\n\t价格:

¥%-10s",p->price);

flag=1;//找到标记变量设为1

p=p->next;//指针走到下一个节点

}

else

p=p->next;

}

if(flag==0)

printf("\n\t\t没有相同书名纪录");

printf("\n\t\t请按任意键返回主菜单");

getchar();

}

voidSearch_author(PointerHead)//按作者名查找函数

{

intflag=0;

charauthor[10];

Pointerp;

printf("\n请输入需要查询的作者名:

");

scanf("%s",author);

printf("\n\t\t*************以下是您查找的信息***************");

p=Head;

while(p!

=NULL)//查找符合的图书

{

if(strcmp(p->author,author)==0)/*找到图书显示信息*/

{

printf("\n\t登录号:

%-10s",p->AN);

printf("\n\t书名:

%-20s",p->name);

printf("\n\t作者名:

%-20s",p->author);

printf("\n\t分类号:

%-10s",p->clc);

printf("\n\t出版单位:

%-20s",p->company);

printf("\n\t出版时间:

%-20s",p->date);

printf("\n\t价格:

¥%-10s",p->price);

flag=1;

p=p->next;

}

else

p=p->next;

}

if(flag==0)

printf("\n\t\t没有相同作者名纪录");

printf("\n\t\t请按任意键返回主菜单");

getch();

}

voidDelete(Pointer*Head)/*删除函数*/

{intflag=1;

charAN[10];

charc,z;

Pointerp,q;

printf("\n\t\t*******************图书删除*******************\n");

printf("\t请输入要删除图书的信息的登录号:

");

scanf("%s",AN);

p=q=*Head;/*查找符合条件的图书*/

while(p!

=NULL&&flag)

{

if(strcmp(p->AN,AN)==0)/*找到该图书*/

{

printf("\t\n登录号:

%-10s",p->AN);//显示即将要删除的图书的信息

printf("\t\n书名:

%-20s",p->name);

printf("\t\n作者名:

%-20s",p->author);

printf("\t\n分类号:

%-10s",p->clc);

printf("\t\n出版单位:

%-20s",p->company);

printf("\t\n出版时间:

%-20s",p->date);

printf("\t\n价格:

¥%-10s\n",p->price);

printf("确定删除?

确定请输Y,其它则不删除");//询问是否删除

getchar();

scanf("%c",&z);

if(z=='Y'||z=='y')

{if(p==*Head)

{*Head=p->next;free(p);}/*删除图书信息*/

else

{q->next=p->next;free(p);}

flag=0;

}

else

{printf("图书信息未删除,返回主菜单。

");

return;

}

}

else

{q=p;p=p->next;}/*指针走到下一个节点*/

printf("\t\t删除成功!

\n");

}

if(flag)

printf("\t没有找到可以删除的数据!

!

!

");

do

{

printf("选择是否继续删除(Y/N)?

");/*连续删除图书信息*/

getchar();

scanf("%c",&c);

if(c=='y'||c=='Y')

Delete(Head);/*继续删除*/

else

{

if(c=='n'||c=='N')

return;/*不删除返回主菜单*/

else

printf("\n\t\t输入错误,请重新输入!

!

!

");

}

}

while(c!

='y'&&c!

='n'&&c!

='Y'&&c!

='N');

}

voidUpdate(PointerHead)/*图书信息修改函数*/

{

intflag=1;

charAN[10];

charc;

Pointerp;

printf("\n\t\t*****************图书信息修改*****************\n");

printf("\t请输入要修改的图书的登录号:

");

scanf("%s",AN);/*查找符合条件的图书*/

p=Head;

while(p!

=NULL&&flag)

{

if(strcmp(p->AN,AN)==0)

{

printf("\n\t\t请输入登录号:

");/*修改图书信息*/

scanf("%s",p->AN);

printf("\n\t\t输入书名:

");

scanf("%s",p->name);

getchar();

printf("\n\t\t输入作者名:

");

scanf("%s",p->author);

getchar();

printf("\n\t\t输入分类号:

");

scanf("%s",p->clc);

getchar();

printf("\n\t\t输入出版单位:

");

scanf("%s",p->company);

getchar();

printf("\n\t\t输入出版日期:

");

gets(p->date);

printf("\n\t\t输入价格:

");

scanf("%s",p->price);

flag=0;

printf("修改成功!

!

\n");

}

else

p=p->next;/*指针走到下一个节点*/

}

if(flag)

printf("\n\t\t没有该图书记录!

!

!

");

do

{

printf("选择是否继续修改(Y/N)?

");/*连续修改图书信息*/

getchar();

scanf("%c",&c);

if(c=='y'||c=='Y')

Update(Head);/*继续修改*/

else

{if(c=='n'||c=='N')

return;//不修改,返回菜单

else

printf("\n\t\t输入错误,请重新输入!

!

!

");

}

}

while(c!

='y'&&c!

='n'&&c!

='Y'&&c!

='N');//输入错误则继续询问

}

 

voidExit()/*退出程序的函数*/

{charc;

do

{printf("\n\t\t退出中......是否保存到文件(Y/N)?

");/*询问是否保存图书信息,防止丢失*/

getchar();

scanf("%c",&c);

if(c=='y'||c=='Y')

{Save();exit(0);

}

else

{if(c=='n'||c=='N')

{exit(0);

}

else

printf("\n\t\t输入错误,请重新输入!

!

!

");

}

}

while(c!

='y'&&c!

='n'&&c!

='Y'&&c!

='N');//错误则继续询问

}

6.调试分析

主菜单界面

录入信息页面

浏览图书信息页面

按书名查询图书信息页面

按作者查询图书信息页面

删除图书信息页面

(1)选择不删除

(2)选择删除

修改图书信息页面

保存文本文件界面

打开文本文件界面

写入界面写入后浏览界面

退出程序界面

由程序的的调试结果可以看出,程序的各个功能运行正确无误,能达到要求。

7.总结

为了达到图书管理系统的要求,我们对各个功能分别设计一个函数,来完成特定的功能要求,再逐个进行编写,把复杂的程序简单化。

最终,我们很好的编写了该图书信息管理系统,实现了图书馆内管理的一般功能,包括图书信息录入、浏览、查询、排序、删除、修改和保存文本文件等功能。

只是我们的程序略显繁琐,还有待改进。

C语言编程是一件很有趣的事,看着自己编写的程序能执行复杂的功能,有一种成就感。

可是编程和调试的过程却是枯燥、繁琐的,特别是大的程序。

但这其中不断发现问题,解决问题的过程,让我对C语言有了更深的了解,也

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

当前位置:首页 > 高等教育 > 文学

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

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