数据结构课程设计报告.docx

上传人:b****2 文档编号:11407855 上传时间:2023-05-31 格式:DOCX 页数:15 大小:40.71KB
下载 相关 举报
数据结构课程设计报告.docx_第1页
第1页 / 共15页
数据结构课程设计报告.docx_第2页
第2页 / 共15页
数据结构课程设计报告.docx_第3页
第3页 / 共15页
数据结构课程设计报告.docx_第4页
第4页 / 共15页
数据结构课程设计报告.docx_第5页
第5页 / 共15页
数据结构课程设计报告.docx_第6页
第6页 / 共15页
数据结构课程设计报告.docx_第7页
第7页 / 共15页
数据结构课程设计报告.docx_第8页
第8页 / 共15页
数据结构课程设计报告.docx_第9页
第9页 / 共15页
数据结构课程设计报告.docx_第10页
第10页 / 共15页
数据结构课程设计报告.docx_第11页
第11页 / 共15页
数据结构课程设计报告.docx_第12页
第12页 / 共15页
数据结构课程设计报告.docx_第13页
第13页 / 共15页
数据结构课程设计报告.docx_第14页
第14页 / 共15页
数据结构课程设计报告.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计报告.docx

《数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告.docx(15页珍藏版)》请在冰点文库上搜索。

数据结构课程设计报告.docx

数据结构课程设计报告

 

数据结构与算法课程论文

题目:

图书管理系统

 

 

院(系):

专业:

信息管理与信息系统

课程名称:

数据结构与算法

姓名:

学号:

指导老师:

2011年12月

图书管理系统

【设计目的】

现如今,图书的种类越来越多,并且增长速度越来越快,如何快速在海量的信息里查询出自己想要的信息,成为计算机软件科学研究的重点,图书管理系统旨在方便、快捷的录入图书信息,方便、快捷、准确的查询我们想得到的图书信息,为我们的学习、生活提供方便。

【设计思路】

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

【总体设计】

根据题目要求,可以将系统分为六个模块:

(1)图书信息录入功能。

(2)图书信息查询功能。

(3)图书信息修改功能。

(4)图书信息删除功能。

(5)图书信息浏览功能。

图1系统功能模块图

【详细设计】

1.主函数

主函数设计要求简洁,只提供部分提示语和函数的调用。

【程序】

图2.主函数流程图

2.引入库函数和定义变量

#include

#include

#include

#include

#defineNsizeof(structbook)

#definePT"%-5d%10s%6s%6s%8s%3d\n",p->num,p->name,p->where,p->author,p->pub,p->count

3.图书信息结构体

structbook

{

intnum;/*书号*/

charname[10];/*书名*/

charwhere[10];/*所在书库*/

charauthor[15];/*作者*/

charpub[20];/*出版社*/

intcount;/*数量*/

structbook*next;

};

4.图书信息输出模块

voidprint(structbook*p0)

{

structbook*p;

p=p0->next;

printf("\n\n\t\t^^^^^^^^^^^^^^图书信息表^^^^^^^^^^^^^^");

printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n");

while(p!

=NULL)

{

printf(PT);

p=p->next;

}

getch();

}

5.图书信息输入模块

structbook*creat()

{

structbook*head,*p1,*p2;

inti=0;

head=p2=(structbook*)malloc(N);

head->next=NULL;

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

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

while

(1)

{

p1=(structbook*)malloc(N);

printf("\n请输入图书编号(书号为0结束):

");

scanf("%d",&p1->num);

if(p1->num!

=0)

{

printf("\n\n书名所在书库作者出版社图书数量\n");

scanf("%s%s%s%s%d",p1->name,p1->where,p1->author,p1->pub,&p1->count);

p2->next=p1;

p2=p1;

i++;

}

else

break;

}

p2->next=NULL;

free(p1);

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

printf("\n\t\t%d种书录入完毕",i);

getch();

returnhead;

}

6.图书信息查找模块

voidfind(structbook*p0)

{

charname[10];

intflag=1;

structbook*p;

p=p0->next;

printf("请输入要查找的书名:

\n");

scanf("%s",name);

for(p=p0;p;p=p->next)

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

{

printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n");

printf(PT);

flag=0;

break;

}

if(flag)

printf("\n暂无此图书信息\n");

getch();

}

 

7.删除图书模块

voiddel(structbook*p0)

{

charname[10];

intflag=1;

structbook*p;

p=p0;

printf("请输入要删除的书名:

\n");

scanf("%s",name);

while(p!

=NULL)

{

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

{

p0->next=p->next;/*后续节点连接到前驱节点之后*/

free(p);

printf("\t该书资料已删除.");

flag=0;

break;

}

p0=p;

p=p->next;

}

if(flag)printf("\n\t无此图书信息。

");

getch();

}

8.添加图书模块

voidinsert(structbook*p0)

{

structbook*p;

p=(structbook*)malloc(N);

while

(1)

{

printf("\n请输入要增加的图书编号(书号为0退出):

");

scanf("%d",&p->num);

if(p->num!

=0)

{

if(p0->next!

=NULL&&p0->next->num==p->num)/*找到重号*/

{

p=p->next;

free(p);

printf("\t该书已存在");

}

else

{

printf("\n\n书名所在书库作者出版社图书数量\n");

scanf("%s%s%s%s%d",p->name,p->where,p->author,p->pub,&p->count);

p->next=p0->next;

p0->next=p;

printf("\t已成功插入.");

}

}

else

break;

}

getch();

}

9.修改图书信息模块

voidmodify(structbook*p0)

{

charname[10];

intflag=1;

intchoice;

structbook*p;

p=p0->next;

printf("请输入要修改的书名:

\n");

scanf("%s",name);

while(p!

=NULL&&flag==1)

{

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

{

printf("\n\t请选择要修改的项:

");

printf("\n\t1.修改图书编号\n");

printf("\n\t2.修改图书所在书库\n");

printf("\n\t3.修改图书作者\n");

printf("\n\t4.修改图书出版社\n");

printf("\n\t5.修改图书库存量\n");

scanf("%d",&choice);

switch(choice)

{

case1:

{

printf("\n请输入新的图书编号:

");

scanf("%d",p->num);break;

}

case2:

{

printf("\n请输入新的图书书库:

");

scanf("%s",p->where);break;

}

case3:

{

printf("\n请输入新的图书作者:

");

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

}

case4:

{

printf("\n请输入新的图书出版社:

");

scanf("%s",p->pub);break;

}

case5:

{

printf("\n请输入新的图书库存量:

");

scanf("%d",p->count);break;

}

}

printf("\n\t该项已成功修改。

\n\t新的图书信息:

");

printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n");

printf(PT);

flag=0;

}

p0=p;

p=p0->next;

}

if(flag)printf("\n\t暂无此图书信息。

");

getch();

}

10.读取文件

structbook*read_file()

{

inti=0;

structbook*p,*p1,*head=NULL;

FILE*fp;

if((fp=fopen("library.txt","rb"))==NULL)

{

printf("\n\n\n\n\n\t********数据文件不存在,请创建!

**********");

getch();

returnNULL;

}

head=(structbook*)malloc(N);

p1=head;

head->next=NULL;

printf("\n已有图书信息:

");

printf("\n\n图书编号---图书名称---所在书库----作者----出版社---数量\n");

while(!

feof(fp))

{

p=(structbook*)malloc(N);/*开辟空间以存放的取得信息*/

while(fscanf(fp,"%d%s%s%s%s%d",&p->num,p->name,p->where,p->author,p->pub,&p->count)!

=EOF)

{

printf(PT);

i++;

}

p1->next=p;

p1=p;

}

p1->next=NULL;

fclose(fp);

printf("\n共种%d图书信息",i);

printf("\n\n\n文件中的信息以正确读出。

按任意键进入主菜单。

");

getch();

return(head);

}

11.保存文件

voidsave(structbook*head)

{

FILE*fp;

structbook*p;

fp=fopen("library.txt","wb");/*以只写方式打开二进制文件*/

if(fp==NULL)/*打开文件失败*/

{

printf("\n=====>打开文件失败!

\n");

getch();

return;

}

else

for(p=head->next;p!

=NULL;p=p->next)

fprintf(fp,"%d%s%s%s%s%d\n",p->num,p->name,p->where,p->author,p->pub,p->count);

fclose(fp);

printf("\n\t保存文件成功!

\n");

}

12.主程序

voidmain()

{

structbook*head=NULL;

intchoice=1;

head=read_file();

if(head==NULL)

{

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

getch();

head=creat();

}

do

{

system("cls");

printf("\t\t----------Welcome---------\n");

printf("\n\n\t欢迎您,图书管理员.\n");

printf("\n\n");

printf("\n\t请选择:

");

printf("\n\t1.查询图书信息\n");

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

printf("\n\t3.增加图书信息\n");

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

printf("\n\t5.显示所有图书信息\n");

printf("\n\t0.退出系统\n");

printf("\n请输入选择操作的编号:

");

scanf("%d",&choice);

switch(choice)

{

case1:

find(head);break;

case2:

modify(head);break;

case3:

insert(head);break;

case4:

del(head);break;

case5:

print(head);break;

case0:

system("cls");

printf("\n\n\n\n\n\t^^^^^^^^^^谢谢使用,再见^^^^^^^^^^!

\n\n");

break;

}

}while(choice!

=0);

save(head);

}

【设计体会】

这次课程设计让我掌握了许多的有用知识。

首先通过不断地学习和锻炼更加熟练地掌握应用软件MicrosoftVisualC++6.0了。

设计正确及合适的程序对于我们初学者来说是很大的难题,出现一丁点儿错误就得非很大的努力去修改,正式者一步步一点点的努力让我对C语言游乐更深的认识。

同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。

在设计中,每个同学都会遇到一些困难,或多或少,这些困难常常让我心情烦躁,比如不能清晰的建立设计模块,不会修改出现的错误等等,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。

不可避免地程序中肯定依然存在者某些问题,我希望在以后的学习和应用中不断提高自己的能力,攻克遇到的困难。

【参考文献】

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

当前位置:首页 > 工程科技 > 能源化工

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

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