大一C语言课程设计图书信息管理系统.docx
《大一C语言课程设计图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《大一C语言课程设计图书信息管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
![大一C语言课程设计图书信息管理系统.docx](https://file1.bdocx.com/fileroot1/2023-1/24/cd4c0ad2-d324-48f5-b281-10813e50110b/cd4c0ad2-d324-48f5-b281-10813e50110b1.gif)
大一C语言课程设计图书信息管理系统
高级语言程序设计课程设计
评语:
学院班级
姓名学号
成绩指导老师
年月日
一、目的
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;iif(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;
}