图书信息管理系统设计.docx

上传人:b****0 文档编号:17932817 上传时间:2023-08-05 格式:DOCX 页数:32 大小:522.41KB
下载 相关 举报
图书信息管理系统设计.docx_第1页
第1页 / 共32页
图书信息管理系统设计.docx_第2页
第2页 / 共32页
图书信息管理系统设计.docx_第3页
第3页 / 共32页
图书信息管理系统设计.docx_第4页
第4页 / 共32页
图书信息管理系统设计.docx_第5页
第5页 / 共32页
图书信息管理系统设计.docx_第6页
第6页 / 共32页
图书信息管理系统设计.docx_第7页
第7页 / 共32页
图书信息管理系统设计.docx_第8页
第8页 / 共32页
图书信息管理系统设计.docx_第9页
第9页 / 共32页
图书信息管理系统设计.docx_第10页
第10页 / 共32页
图书信息管理系统设计.docx_第11页
第11页 / 共32页
图书信息管理系统设计.docx_第12页
第12页 / 共32页
图书信息管理系统设计.docx_第13页
第13页 / 共32页
图书信息管理系统设计.docx_第14页
第14页 / 共32页
图书信息管理系统设计.docx_第15页
第15页 / 共32页
图书信息管理系统设计.docx_第16页
第16页 / 共32页
图书信息管理系统设计.docx_第17页
第17页 / 共32页
图书信息管理系统设计.docx_第18页
第18页 / 共32页
图书信息管理系统设计.docx_第19页
第19页 / 共32页
图书信息管理系统设计.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

图书信息管理系统设计.docx

《图书信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统设计.docx(32页珍藏版)》请在冰点文库上搜索。

图书信息管理系统设计.docx

图书信息管理系统设计

东南大学

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)图书信息修改功能模块

(8)图书数据保存功能模块

(9)信息文件打开功能模块

(10)退出系统功能模块

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);/*按作者名查找函数*/

voidListbyname(Pointer*Head);/*按书名排序函数*/

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

voidUpdate(PointerHead);//修改函数

voidSave();//用文本文件形式保存函数

voidRead();//读入文本文件函数

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:

Listbyname(&Head);

break;

case6:

Delete(&Head);

break;

case7:

Update(Head);

break;

case8:

Save();

break;

case9:

Read();

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\t6.删除图书信息\n");

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

printf("\t\t8.图书数据保存\n");

printf("\t\t9.图书信息文件打开\n");

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

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

do

{

printf("\n\t请选择您所需要的服务:

");

scanf("%d",&a);

}

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

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();

}

voidListbyname(Pointer*Head)//按书名排序函数

{

Pointerp,q;

inti,j;

chart[10];

charc;

if(Head==NULL)

{

printf("\n\t\t没有任何资料!

\n");

return;

}

if(num==0)//检查是否存在数据可供排序

{

printf("\n\t\t图书信息记录为空!

请按任意键返回主菜单。

");

getchar();

return;

}

p=q=*Head;

for(i=0;i

{

for(j=i+1;j

{

q=p;

p=p->next;//使指针指向下一个结点

if(strcmp(q->name,p->name)>0)//检查二者排序先后

{//p指针对应数据应排于q指针对应数据后,p,q进行数据交换

strcpy(t,p->AN);

strcpy(p->AN,q->AN);

strcpy(q->AN,t);

strcpy(t,p->author);

strcpy(p->author,q->author);

strcpy(q->author,t);

strcpy(t,p->clc);

strcpy(p->clc,q->clc);

strcpy(q->clc,t);

strcpy(t,p->company);

strcpy(p->company,q->company);

strcpy(q->company,t);

strcpy(t,p->date);

strcpy(p->date,q->date);

strcpy(q->date,t);

strcpy(t,p->name);

strcpy(p->name,q->name);

strcpy(q->name,t);

strcpy(t,p->price);

strcpy(p->price,q->price);

strcpy(q->price,t);

}

}

q=*Head;p=*Head;}

do

{

printf("\n\t排序完成,是否显示(Y/N)?

");/*询问是否显示排序结果*/

getchar();

scanf("%c",&c);

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

Scan(*Head);//显示排序结果

else

{

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

return;//返回主菜单

else

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

!

!

");//错误则继续询问

}

}

while(c!

='y'&&c!

='n'&&c!

='Y'&&c!

='N');

}

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",

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

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2