图书馆管理系统文档含源代码免费.docx

上传人:b****4 文档编号:11951229 上传时间:2023-04-16 格式:DOCX 页数:59 大小:250.85KB
下载 相关 举报
图书馆管理系统文档含源代码免费.docx_第1页
第1页 / 共59页
图书馆管理系统文档含源代码免费.docx_第2页
第2页 / 共59页
图书馆管理系统文档含源代码免费.docx_第3页
第3页 / 共59页
图书馆管理系统文档含源代码免费.docx_第4页
第4页 / 共59页
图书馆管理系统文档含源代码免费.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

图书馆管理系统文档含源代码免费.docx

《图书馆管理系统文档含源代码免费.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统文档含源代码免费.docx(59页珍藏版)》请在冰豆网上搜索。

图书馆管理系统文档含源代码免费.docx

图书馆管理系统文档含源代码免费

程序设计综合训练

<图书馆管理系统>

设计报告

院系:

材料科学与工程学院

专业班级:

材料成型一班

****************************

学号:

***********

指导老师:

肖老师

 

一、程序功能简介

图书排序功能

1)按图书编号排序

可以按图书编号的大小排序,显示到屏幕上。

(从小到大)

2)按图书出版时间排序

可以按图书出版时间的前后排序,显示到屏幕上。

(从近到远)

3)按图书价格排序

可以按图书价格的贵宜排序,显示到屏幕上。

(从便宜到贵)

4)按图书书名排序

可以按图书书名字符的大小排序,显示到屏幕上。

(从小到大)

5)按图书作者名排序

可以按图书作者名字符的大小排序,显示到屏幕上。

(从小到大)

二、本人完成的主要工作

图书排序功能(排序比较简单只要做出来一个,其他都和它雷同。

三、设计方案

1.设计分析;

1)序功能简介:

s

||

 

2)各个功能流程图

1、按图书编号排序

2、按图书出版时间排序

3、按图书价格排序

4、按图书书名排序

5、按图书作者名排序

2.操作方法简介;

1)主面板

输入密码9进入系统。

2)主菜单

按4进入排序功能。

2)排序功能目录

3)选择功能(比如3)

按价格的大小排序

3.实验结果(包括输入数据和输出结果)

四、设计体会

在期末课程设计中,我们所选择的是设计一个图书管理系统,这对我们来说是一次尝试与创新的过程,也可以说是一个挑战的过程,毕竟以前没有作过,缺少经验。

现在利用自己学到的知识设计并制作一个图书管理系统,这本身就是一个知识转化为生产力的过程,所以大家都很兴奋,不同程度的投入了很高的热情与努力。

在具体的设计与实施中,我们看到并感受到了一个管理系统从无到有的过程,对具体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。

在设计中我们基本能按照规范的方法和步骤进行,首先对现有的系统进行调查,并查阅有关资料,最后确定设计方案,然后设计并制作,实施过程中我们深刻的认识到认真执行管理系统软件标准的重要性,我们由于对管理系统软件相关的标准和规范不太了解,缺少行为操作准则,所以在设计中手法比较生硬,主与次也没能很好把握住,这些方面通过这次我们都要加强了解。

在这次课程设计中,我们被分配以小组为单位去完成图书管理系统的设计与制作,所以小组内的分工和相互协调很重要,大家可以在分工中扬长避短,个及所长,这样可以很好的提高大家的积极性,和合作意识,并有效的缩短开发时间。

在其中我掌握了结构体的应用、链表的建立文件的操作、还有一个小的地方就是case'n'的应用。

五、参考资料

C/c++语言程序设计教程——从模块化到面向对象

六、附录

1.程序中主要变量、自定义函数的功能说明

voidpaixu(structbook*head);//对图书进行排序

voidnum_paixu(structbook*head);//按图书编号排序

voidtime_paixu(structbook*head);//按图书出版时间排序

voidprice_paixu(structbook*head);//按图书价格排序

voidbname_paixu(structbook*head);//按图书名排序

voidwname_paixu(structbook*head);//按作者名排序

While()循环提供可连续的选择操作

Switch()分支选择进行的操作。

system("cls");清空输入缓冲区,通常是为了确保不影响后面的数据读取。

输入0即可返回或停止输入。

●主要数据

intnum;编号;

charbname[50];书名;

charwname[20];作者名;

charpress[50];出版社;

charsort[50];图书类别;

inttime;出版时间;

floatprice;图书价格;

2.源程序代码

#include

#include

#include

structbook{

intnum;

charbname[50];

charwname[20];

charpress[50];

charsort[50];

inttime;

floatprice;

structbook*next;

};

structbook*creatbook();//创建链表

structbook*addbook(structbook*head);//添加图书

intyanzheng(structbook*head,intm);//验证新添加的图书编码是否已存在

voiddeletebook(structbook*head);//删除图书

voidfprint(structbook*head);//将链表写入文件

structbook*load();//从文件中读取信息并建成链表

voidprint_book(structbook*head);//将链表信息输出

voidchaxun(structbook*head);//查询图书信息

voidnum_chaxun(structbook*head);//按图书编号查询图书

voidwname_chaxun(structbook*head);//按作者名查询图书

voidsort_chaxun(structbook*head);//按类别查询图书

voidtime_chaxun(structbook*head);//按出版时间查询图书

voidbname_chaxun(structbook*head);//按图书名查询图书

voidxiugai(structbook*head);//修改图书信息

voidpaixu(structbook*head);//对图书进行排序

voidnum_paixu(structbook*head);//按图书编号排序

voidtime_paixu(structbook*head);//按图书出版时间排序

voidprice_paixu(structbook*head);//按图书价格排序

voidbname_paixu(structbook*head);//按图书名排序

voidwname_paixu(structbook*head);//按作者名排序

intmain()

{

intchoice,n,x,y=1,c,c1=1234;

chara,d,b[10],b1[10]="yjk";

structbook*head=NULL;

while(y){

system("cls");

printf("\n\n\n\n\n\n\n");

printf("**********欢迎光临**********\n\n");

printf("**********************图书信息管理系统************************\n\n\n");

printf("\n\n");

printf("============1-用户登录===========\n");

printf("============0-退出系统===========\n");

printf("请输入您的选择:

");

scanf("%d",&n);

printf("\n");

getchar();

switch(n){

case0:

y=0;

break;

case1:

printf("请输入您的用户名:

");

gets(b);

printf("\n");

printf("请输入您的密码:

");

scanf("%d",&c);

printf("\n");

if(c>=0&&c<=8){

printf("验证失败,请重新输入!

\n");

scanf("%c",&d);

getchar();

system("cls");

}

else{

printf("验证通过!

请按Enter键进入!

\n");

scanf("%c",&d);

getchar();

x=1;

while(x){

system("cls");

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

printf("*图书信息管理系统*\n");

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

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

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

printf("||1-添加图书2-删除图书||\n\n");

printf("||3-图书列表4-图书排序||\n\n");

printf("||5-查询图书6-修改图书||\n\n");

printf("||7-录入数据0-退出系统||\n\n");

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

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

printf("请输入所选择的序号:

");

scanf("%d",&choice);

getchar();

system("cls");

switch(choice)

{

case0:

x=0;break;

case1:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!

\n");

getchar();

break;

}

else{

head=addbook(head);

printf("添加成功!

\n");

printf("是否将新信息保存到文件?

(y/n)\n");

scanf("%c",&a);

getchar();

switch(a){

case'n':

break;

case'y':

fprint(head);

printf("保存成功!

\n");

getchar();

break;

}

break;

}

case2:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!

\n");

getchar();

break;

}

else{

deletebook(head);

getchar();

break;

}

break;

case3:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!

\n");

getchar();

break;

}

else{

print_book(head);

getchar();

break;

}

case4:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!

\n");

getchar();

break;

}

else{

paixu(head);

getchar();

}

break;

case5:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!

\n");

getchar();

break;

}

else{

chaxun(head);

getchar();

}

break;

case6:

head=load();

if(head==NULL){

printf("文件为空,请先录入数据!

\n");

getchar();

break;

}

else{

xiugai(head);

getchar();

break;

}

break;

case7:

printf("注意:

输入图书编码为0时结束!

\n");

head=creatbook();

printf("是否将输入的信息保存到文件以覆盖文件中已存在的信息?

(y/n)\n");

getchar();

scanf("%c",&a);

getchar();

switch(a){

case'n':

break;

case'y':

fprint(head);

printf("保存成功!

\n");

getchar();

break;

}

break;

default:

printf("您的输入有误,请重新输入!

\n");

getchar();

break;

}

}

}

break;

default:

printf("您的输入有误!

请重新输入!

\n");

getchar();

break;

}

}

}

//录入数据并形成链表

structbook*creatbook()

{

structbook*head,*tail,*p;

intnum,time,n;

charbname[50],wname[20],press[50],sort[50];

floatprice;

intsize=sizeof(structbook);

head=tail=NULL;

printf("请输入图书编号:

");

scanf("%d",&num);

printf("请输入图书名:

");

scanf("%s",bname);

getchar();

printf("请输入作者名:

");

scanf("%s",wname);

getchar();

printf("请输入出版社:

");

scanf("%s",press);

getchar();

printf("请输入类别:

");

scanf("%s",sort);

getchar();

printf("请输入出版时间:

");

scanf("%d",&time);

getchar();

printf("请输入价格:

");

scanf("%f",&price);

getchar();

while

(1){

p=(structbook*)malloc(size);

p->num=num;

strcpy(p->bname,bname);

strcpy(p->wname,wname);

strcpy(p->press,press);

strcpy(p->sort,sort);

p->time=time;

p->price=price;

p->next=NULL;

if(head==NULL)

head=p;

else

tail->next=p;

tail=p;

do{

printf("请输入图书编号:

");

scanf("%d",&num);

n=yanzheng(head,num);

if(n==0)

break;

else

printf("您输入的编号已存在,请重新输入!

\n");

}while

(1);

if(num==0)

break;

else

{

printf("请输入图书名:

");

scanf("%s",bname);

getchar();

printf("请输入作者名:

");

scanf("%s",wname);

getchar();

printf("请输入出版社:

");

scanf("%s",press);

getchar();

printf("请输入类别:

");

scanf("%s",sort);

getchar();

printf("请输入出版时间:

");

scanf("%d",&time);

getchar();

printf("请输入价格:

");

scanf("%f",&price);

getchar();

}

}

returnhead;

}

//插入结点,并且插入后仍按一定顺序

structbook*addbook(structbook*head)

{

structbook*ptr,*p1,*p2,*p;

charbname[50],wname[20],press[50],sort[50];

intsize=sizeof(structbook);

intnum,time,n=1;

floatprice;

do{

printf("请输入图书编号:

");

scanf("%d",&num);

n=yanzheng(head,num);

if(n==0)

break;

else

printf("您输入的编号已存在,请重新输入!

\n");

}while

(1);

printf("请输入图书名:

");

scanf("%s",bname);

getchar();

printf("请输入作者名:

");

scanf("%s",wname);

getchar();

printf("请输入出版社:

");

scanf("%s",press);

getchar();

printf("请输入类别:

");

scanf("%s",sort);

getchar();

printf("请输入出版时间:

");

scanf("%d",&time);

getchar();

printf("请输入价格:

");

scanf("%f",&price);

getchar();

p=(structbook*)malloc(size);

p->num=num;

strcpy(p->bname,bname);

strcpy(p->wname,wname);

strcpy(p->press,press);

strcpy(p->sort,sort);

p->time=time;

p->price=price;

p2=head;

ptr=p;

while((ptr->num>p2->num)&&(p2->next!

=NULL)){

p1=p2;

p2=p2->next;

}

if(ptr->num<=p2->num){

if(head==p2)

head=ptr;

else{

p1->next=ptr;

p->next=p2;

}

}

else{

p2->next=ptr;

p->next=NULL;

}

returnhead;

}

//验证添加的图书编号是否已存在

intyanzheng(structbook*head,intm)

{

structbook*p;

p=head;

while(p!

=NULL){

if(p->num==m)

break;

p=p->next;

}

if(p==NULL)

return0;

else

return1;

}

//将新链表写入文件中

voidfprint(structbook*head)

{

FILE*fp;

charch='1';

structbook*p1;

if((fp=fopen("f1.txt","w"))==NULL){

printf("Fileopenerror!

\n");

exit(0);

}

fputc(ch,fp);

for(p1=head;p1;p1=p1->next){

fprintf(fp,"%d%s%s%s%s%d%f\n",p1->num,p1->bname,p1->wname,p1->press,p1->sort,p1->time,p1->price);

}

fclose(fp);

}

//从文件中读取图书信息

structbook*load()

{

FILE*fp;

charch;

structbook*head,*tail,*p1;

head=tail=NULL;

if((fp=fopen("f1.txt","r"))==NULL){

printf("Fileopenerror!

\n");

exit(0);

}

ch=fgetc(fp);

if(ch=='1'){

while(!

feof(fp)){

p1=(structbook*)malloc(sizeof(structbook));

fscanf(fp,"%d%s%s%s%s%d%f\n",&p1->num,p1->bname,p1->wname,p1->press,p1->sort,&p1->time,&p1->price);

if(head==NULL)

head=p1;

else

tail->next=p1;

tail=p1;

}

tail->next=NULL;

fclose(fp);

returnhead;

}

else

returnNULL;

}

//将整个链表的信息输出

void

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

当前位置:首页 > 求职职场 > 简历

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

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