图书信息管理系统设计任务书.docx
- 文档编号:8982383
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:23
- 大小:75.22KB
图书信息管理系统设计任务书.docx
《图书信息管理系统设计任务书.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统设计任务书.docx(23页珍藏版)》请在冰豆网上搜索。
图书信息管理系统设计任务书
图书信息管理系统设计任务书
一、目的
1.进一步掌握和利用C语言进行程设计的能力;
2、 进一步理解和运用结构化程设计的思想和方法;
3、 初步掌握开发一个小型实用系统的基本方法;
4、 学会调试一个较长程序的基本方法;
5、 学会利用流程图或N-S图表示算法;
6、 掌握书写程设计开发文档的能力(书写课程设计报告);
二、内容与设计思想。
(1)题目:
图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
系统以菜单方式工作
图书信息录入功能(图书信息用文件保存)--输入
图书信息浏览功能--输出
查询和排序功能:
(至少一种查询方式)--算法
按书名查询
按作者名查询
图书信息的删除与修改(可选项)
(2).系统功能与分析(填写你所设计的菜单及流程图)
截图略
流程图:
浏览模块流程图
1,2,还是3
按书名查找模块流程图
按作者查找模块流程图
插入模块流程图
(3)数据结构
typedefstructbook
{
intsort;
charbook_name[15];
charauthor_name[15];
intvert_number;
charpublish_unit[15];
charpublish_time[10];
intprice;
}B
(4).模块设计
根据功能需要:
源文件
函数名
功能
save()
保存
input()
输入
get()
获取
output()
输出
book_name
通过书名查找
author_name()
通过作者查找
modify()
修改
delet()
删除
(5)总体设计思想:
(6)调试过程:
测试数据及结果,出现了哪些问题
截图略
(7)程序有待改进的地方及本次实习的收获和建议
……
(8)源程序清单(主要代码)
#include
#include
#include
#defineLENsizeof(structbook)
typedefstructbook
{
intsort;
charbook_name[15];
charauthor_name[15];
intvert_number;
charpublish_unit[15];
charpublish_time[10];
intprice;
}B;
B*P,*p1,boo;
intnum=0,f=0;
intsave();
voidinput();
intget();
voidoutput();
voidbook_name();
voidauthor_name();
voidmodify();
voiddelet();
intmain()
{
intre=1,t,j=0;
intn,choice;
while(re==1)
{
t=1;
system("cls");
printf("*****************************\n");
printf("主菜单\n\n");
printf("1.录入信息\n");
printf("2.查看信息\n");
printf("3.查询信息\n");
printf("4.删除与修改信息\n");
printf("5.退出\n");
printf("*****************************");
printf("\n");
if(j==1)printf("\n\t选择错误!
");
printf("\n\t请选择1-5:
_\b\b");
scanf("%d",&choice);
switch(choice)
{
case1:
{
printf("\n\t1:
录入信息\n");
input();
printf("\n\t1.返回主菜单;\n\t2.退出\n\t\t请选择:
_\b\b");
scanf("%d",&re);
break;
}
case2:
{
printf("\n\t2.查看信息\n");
output();
printf("\n\t1.返回主菜单;\n\t2.退出\n\t\t请选择:
_\b\b");
scanf("%d",&re);
break;
}
case3:
{
while(t==1)
{
printf("\n\t3.查询信息\n");
printf("\n\t请选择查询方式:
\n\t1.按书名\n\t2.按作者名\n\t3.其余任意数字键返回主菜单_\b\b");
scanf("%d",&n);
if(n==1)
book_name();
elseif(n==2)
author_name();
else
{
re=1;
gotolebel;
}
printf("\n\t1.返回上一层;\n\t2.返回主菜单;\n\t3.退出\n\t请选择:
_\b\b");
scanf("%d",&t);
if(t==1)
system("cls");
if(t==2)
re=1;
if(t==3)re=0;
}
lebel:
break;
}
case4:
{
while(t==1||f==1)
{
printf("\n\t4.删除与修改信息\n");
printf("\n\t请选择:
\n\t1.删除信息;\n\t2.修改信息\n\t3.其余任意数字键返回主菜单_\b\b");
scanf("%d",&n);
if(n==1)
delet();
elseif(n==2)
modify();
else
{
re=1;
gotolebe;
}
printf("\n\t1.返回上一层;\n\t2.返回主菜单;\n\t3.退出\n\t\t请选择:
_\b\b");
scanf("%d",&t);
if(t==1)
system("cls");
if(t==2)re=1;
if(t==3)re=0;
}
lebe:
break;
}
case5:
{
re=0;
break;
}
default:
{
re=1;
j=1;
}
}
}
return0;
}
intsave()
{
FILE*fp;
inti,n=0,n1=0;
if((fp=fopen("book.txt","a+"))==NULL)
return0;
fprintf(fp,"%d\n",num);
for(i=0;i { fprintf(fp,"%d%s%s%d%s%s%d",P[i].sort,P[i].book_name, P[i].author_name,P[i].vert_number,P[i].publish_unit,P[i].publish_time,P[i].price); fprintf(fp,"\n"); } fclose(fp); return1; } intget() { FILE*fp; inti; fp=fopen("book.txt","r"); if(fp==NULL) return0; else { fscanf(fp,"%d",&num); if(num>0) { P=(B*)malloc(LEN*num); for(i=0;i { fscanf(fp,"%d%s%s%d%s%s%d",&P[i].sort,P[i].book_name, P[i].author_name,&P[i].vert_number,P[i].publish_unit,P[i].publish_time,&P[i].price); } fclose(fp); return1; } else { fclose(fp); return0; } } } voidinput() { intresult; inti; printf("\t\t要录入信息的书籍数量为: __本\b\b"); scanf("%d",&num); if(num>0) { P=(B*)malloc(LEN*num); for(i=0;i { P[i].sort=i+1; printf("\n\tNO.%d",P[i].sort); printf("\n"); printf("\t请按序输入: 书名作者名分类号出版单位出版时间价格\n\t\t"); scanf("%s%s%d%s%s%d",P[i].book_name,P[i].author_name,&P[i].vert_number,P[i].publish_unit, P[i].publish_time,&P[i].price); printf("\n"); } result=save(); if(result==0) { printf("\t录入信息失败! \n"); num=0; } if(result==1) { printf("\t成功录入信息! \n"); } } else { num=0; printf("\t输入错误! "); } } voidoutput() { inti; get(); if(get()==1) { printf("\n\t\t成功获取信息! \n"); for(i=0;i { printf("\n\t\tNO.\t%d\n",P[i].sort); printf("\t\t书名作者名序列号出版单位出版时间价格\n"); printf("\t\t%s%s%d%s%s%d",P[i].book_name,P[i].author_name,P[i].vert_number,P[i].publish_unit, P[i].publish_time,P[i].price); printf("\n"); } } elseprintf("\t文件打开错误! "); } voidbook_name() { inti; inttag=0; charch[15]; printf("\t请输入书名: _\b\b"); scanf("%s",ch); if(get()==0) { printf("\t无法查询! "); return; } if(get()==1) { for(i=0;i { if(strcmp(P[i].book_name,ch)==0) { printf("\n\t\t排列号书名作者名序列号出版单位出版时间价格\n"); printf("\t\t%d%s%s%d%s%s%d\n",P[i].sort,P[i].book_name, P[i].author_name,P[i].vert_number,P[i].publish_unit,P[i].publish_time,P[i].price); tag=1; } } if(tag==0) { printf("\n\t没有相关信息! \n"); } } } voidauthor_name() { inti; inttag=0; charch[15]; printf("\t请输入作者名: _\b\b"); scanf("%s",ch); if(get()==0) { printf("\t无法查询! "); return; } if(get()==1) { for(i=0;i if(strcmp(P[i].author_name,ch)==0) { printf("\n\t\t排列号书名作者名序列号出版单位出版时间价格\n"); printf("\t\t%d%s%s%d%s%s%d\n",P[i].sort,P[i].book_name, P[i].author_name,P[i].vert_number,P[i].publish_unit,P[i].publish_time,P[i].price); tag=1; } if(tag==0) { printf("\t没有相关信息! "); } } } voidmodify() { intt,n,i,y=1; intresult,z,x; t=get(); if(t==0) { printf("\n\t打开文件错误,无法修改! "); return; } elseif(y==1) { printf("\n\t您要修改信息的图书排列号为(1-%d): _\b\b",num); scanf("%d",&n); if(n>=1&&n<=num) { for(i=0;i { if(P[i].sort==n) { printf("\n\t您即将修改以下信息: \n"); printf("\t\t排列号书名作者名序列号出版单位出版时间价格\n"); printf("\t\t%d%s%s%d%s%s%d",P[i].sort,P[i].book_name, P[i].author_name,P[i].vert_number,P[i].publish_unit, P[i].publish_time,P[i].price); printf("\n\n\t确认请按1;返回请按2;返回上一层请按3_\b\b"); scanf("%d",&x); if(x==1) { //p1=&boo; printf("\t您要将信息修改为: \n"); printf("\t\t书名: _\b\b"); scanf("%s",P[i].book_name); printf("\t\t作者名: _\b\b"); scanf("%s",P[i].author_name); printf("\t\t序列号: _\b\b"); scanf("%d",&P[i].vert_number); printf("\t\t出版单位: _\b\b"); scanf("%s",P[i].publish_unit); printf("\t\t出版时间: _\b\b"); scanf("%s",P[i].publish_time); printf("\t\t价格: _\b\b"); scanf("%d",&P[i].price); strcpy(P[i].book_name,P[i].book_name); strcpy(P[i].author_name,P[i+1].author_name); P[i].vert_number=P[i+1].vert_number; strcpy(P[i].publish_unit,P[i+1].publish_unit); strcpy(P[i].publish_time,P[i+1].publish_time); P[i].price=P[i+1].price; y=0; z=1; } else if(x==2) { y=1;z=0; } else { y=0; f=1; } } } } else { printf("\t输入错误,请重新输入: "); y=1; } while(z==1) { result=save(); if(result==0) { printf("\n\t修改信息失败! \n"); z=0; } if(result==1) { printf("\n\t成功修改信息! \n"); z=0; } } } return; } voiddelet() { intt,n,i,j,y=1; intresult,z=0,x; t=get(); if(t==0) { printf("\n\t打开文件错误,无法删除! "); return; } else while(y==1) { printf("\n\t您要删除信息的图书排列号为(1-%d): _\b\b",num); scanf("%d",&n); if(n>=1&&n<=num) { for(i=0;i { if(P[i].sort==n) { printf("\n\t您即将删除以下信息: \n"); printf("\t\t排列号书名作者名序列号出版单位出版时间价格\n"); printf("\t\t%d%s%s%d%s%s%d",P[i].sort,P[i].book_name, P[i].author_name,P[i].vert_number,P[i].publish_unit, P[i].publish_time,P[i].price); printf("\n\n\t确认请按1;返回请按2;返回上一层请按3_\b\b"); scanf("%d",&x); if(x==1) { for(j=i;j { strcpy(P[j].book_name,P[j+1].book_name); strcpy(P[j].author_name,P[j+1].author_name); P[j].vert_number=P[j+1].vert_number; strcpy(P[j].publish_unit,P[j+1].publish_unit); strcpy(P[j].publish_time,P[j+1].publish_time); P[j].price=P[j+1].price; } num=num-1; y=0; z=1; } else if(x==2) { y=1; } else { y=0; f=1; } } } } else { printf("\t输入错误,请重新输入: "); y=1; } while(z==1) { result=save(); if(result==0) { printf("\n\t删除信息失败! \n"); z=0; } if(result==1) { printf("\n\t成功删除信息! \n"); z=0; } } } return; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 信息管理 系统 设计 任务书