#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>//时间
#define MAX 100
struct Student/定义结构体数组/
{
int num;/登录号/
char name[100];/书名/
char author[100];/作者名/
char fn[100];/分类号/
char place[100];/出版单位/
char day[100];/出版时间/
float money;/价格/
}stu[MAX],t;
int main()/主函数/
{
void Input();/输入/
void Display();/输出/
void Find();/查找/
void Modify();/删除/
void Change();/修改/
void Comp();/排序/
int n;
for(;😉
{
system(“COLOR 3f”);
printf("\n");
printf("\t\t\t\t********************************\n");Sleep(50);
printf("\n");
printf("\t\t\t\t |欢迎来到图书信息管理系统|\n");Sleep(50);
printf("\t\t\t\t | |\n");Sleep(50);
printf("\t\t\t\t | |\n");Sleep(50);
printf("\t\t\t\t | 主菜单 |\n");Sleep(50);
printf("\t\t\t\t | |\n");Sleep(50);
printf("\t\t\t\t |1.图书信息录入 |\n");Sleep(50);
printf("\t\t\t\t | |\n");Sleep(50);
printf("\t\t\t\t |2.图书信息浏览 |\n");Sleep(50);
printf("\t\t\t\t | |\n");Sleep(50);
printf("\t\t\t\t |3.图书信息查询 |\n");Sleep(50);
printf("\t\t\t\t | |\n");Sleep(50);
printf("\t\t\t\t |4.图书信息删除 |\n");Sleep(50);
printf("\t\t\t\t | |\n");Sleep(50);
printf("\t\t\t\t |5.图书信息修改 |\n");Sleep(50);
printf("\t\t\t\t | |\n");Sleep(50);
printf("\t\t\t\t |6.退出系统 |\n");Sleep(50);
printf("\n");Sleep(50);
printf("\t\t\t\t********************************\n\n");Sleep(300);
printf(“请输入选择项(1-6):”);
scanf("%d",&n);
printf("\n\n\n\n");
if(n>0&&n<7)
{
switch(n)//选项
{
case 1:Input();break;
case 2:Display();break;
case 3:Find();break;
case 4:Modify();break;
case 5:Change();break;
case 6:printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※ ※\n");
printf("※ 谢谢使用! ※\n");
printf("※ 再见! ※\n");
printf("※ ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(“请按任意键退出!”);
exit(0);
}
}
else
{
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※ ※\n");
printf("※ 输入错误! ※\n");
printf("※ 请退出! ※\n");
printf("※ ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
break;
}
}
}
void Find()/查找/
{
FILE *fp;//文件指针类型 文件指针
int i;
int choose,t;
char ans[100];
do
{
printf(“1.按书名查找\n”);
printf(“2.按作者名查找\n”);
printf(“返回主菜单(其他数字)\n”);
scanf("%d",&choose);
if(choose1)
{
printf(“输入所查书名:\n”);
scanf("%s",ans);
t=-1;
if(choose1)
{
for(i=0;i<MAX;i++) if(strcmp(ans,stu[i].name)0)//比较所输入的字符与文档中所存姓名是否相等
{
t=i;
fp=fopen(“D://student”,“rb”);//只允许读数据
printf("%d %s %s %s %s %s %f\n",stu[t].num,stu[t].name,stu[t].author,stu[t].fn,stu[t].place,stu[t].day,stu[t].money);//查找出来后输出
}
}
if(t-1) printf(“不存在该信息\n”);
}
else if(choose2)
{
printf(“输入所查作者名:\n”);
scanf("%s",ans);
t=-1;
if(choose2)
{
for(i=0;i<MAX;i++)
if(strcmp(ans,stu[i].author)==0)//同上
{ t=i;
fp=fopen(“D://student”,“rb”);
printf("%d %s %s %s %s %s %f\n",stu[t].num,stu[t].name,stu[t].author,stu[t].fn,stu[t].place,stu[t].day,stu[t].money);
}
}
if(t==-1) printf(“不存在该信息\n”);
}
else return;
}while(1);
}
void Comp()//排序
{ FILE *fp;
fp=fopen(“D://student”,“rb+”);
int i,j,k;
for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)==1;i++);
for(j=0;j<i;j++)
for(k=0;k<i-1;k++)
if(stu[k].num>stu[k+1].num)
{
t=stu[k];
stu[k]=stu[k+1];
stu[k+1]=t;
}
for(j=0;j<i;j++){
//fwrite(&stu[j],sizeof(struct Student),1,fp);
//fprintf(fp,"%4d %7s %9s %6s %8s %8s %8.2f\n",stu[j].num,stu[j].name,stu[j].author,stu[j].fn,stu[j].place,stu[j].day,stu[j].money);
printf("%4d %7s %9s %6s %8s %8s %8.2f\n",stu[j].num,stu[j].name,stu[j].author,stu[j].fn,stu[j].place,stu[j].day,stu[j].money);
} }
void Display()/输出/
{
Comp();
}
void Input()/输入/
{
FILE *fp;
int n;
fp=fopen(“D://student”,“ab”); //在文件末尾写入数据
for(n=0;n<MAX;n++)
{
printf(“n=%d 输入序号n(当输入n=-1时,返回),n=”,n++);
scanf("%d",&n);
if(n==-1)
{
fclose(fp);
Comp();
return;
}
else
{
printf(“请输入登录号 书名 作者名 分类号 出版单位 出版时间 价格\n”);
scanf("%d%s%s%s%s%s%f",&stu[n].num,stu[n].name,stu[n].author,stu[n].fn,stu[n].place,stu[n].day,&stu[n].money);//输入图书信息
fwrite(&stu[n],sizeof(struct Student),1,fp);//一次输出size个字节 重复一次,将输出的数据存到文件里,同时向后移动 size*1个字节(size×1)
}
}
Comp();
fclose(fp);
}
void Modify()/删除/
{
FILE *fp;
int i,flag,n,s,j;
fp=fopen(“D://student”,“rb+”); //允许读写
rewind(fp);//使指针指向文件开头
printf(" 图书列表\n");
printf("-----------------------------------------------------------\n");
printf(“登录号\t书名\t作者名\t分类号\t出版单位 出版时间 价格\n”);
printf("-----------------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct Student),1,fp)1;i++)
Comp();
n=i;
printf(“输入待删除图书号:\n”);
scanf("%d",&s);
for(i=0,flag=1;flag&&i<n;i++)
{
if(sstu[i].num)
{
for(j=i;j<n-1;j++)//循环 替换的过程 覆盖
{
stu[j].num=stu[j+1].num;
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j].author,stu[j+1].author);
strcpy(stu[j].fn,stu[j+1].fn);
strcpy(stu[j].place,stu[j+1].place);
strcpy(stu[j].day,stu[j+1].day);
stu[j].money=stu[j+1].money;
}
flag=0;
}
}
if(!flag)
n=n-1;
else
printf(“没有此号\n”);
fp=fopen(“D://student”,“wb”);//只允许写数据
for(i=0;i<n;i++)
fwrite(&stu[i],sizeof(struct Student),1,fp);
fclose(fp);
fp=fopen(“D://student”,“rb”);//只允许读
printf(" 图书列表\n");
printf("-----------------------------------------------------------\n");
printf(“登录号\t书名\t作者名\t分类号\t出版单位 出版时间 价格\n”);
printf("-----------------------------------------------------------\n");
fclose(fp);
Comp();
}
void Change()/修改/
{
FILE fp;
int i,num,n;
int flag=0;
printf(“请输入要修改的图书号:”);
scanf("%d",&num);
for(i=0;i<=MAX;i++)
if(stu[i].numnum)//有相应的图书
{
printf(" \t\t\t图书列表\n");
printf("-----------------------------------------------------------\n");
printf(“登录号\t书名\t作者名\t分类号\t出版单位 出版时间 价格\n”);
printf("-----------------------------------------------------------\n");
printf("%4d %7s %9s %6s %8s %8s %8.2f\n",stu[i].num,stu[i].name,stu[i].author,stu[i].fn,stu[i].place,stu[i].day,stu[i].money);
printf("-----------------------------------------------------------\n\n");
n=i;
flag=1;
break;
}
if(flag0)//无相应图书
{
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 输入错误!\n");
printf(" 请返回!\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
return;
}
printf("\n\n\n");
fp=fopen(“D://student”,“rb+”);//允许读写
fseek(fp,nsizeof(struct Student),0);//将fp所指向的文件的位置指针移到以0为基准,以struct Student为位移铋的位置 (定位)
printf(“登录号 书名 作者名 分类号 出版单位 出版时间 价格\n”);
scanf("%d%s%s%s%s%s%f",&stu[n].num,stu[n].name,stu[n].author,stu[n].fn,stu[n].place,stu[n].day,&stu[n].money);
fwrite(&stu[i],sizeof(struct Student),1,fp);//一次输出size个字节 重复一次,将输出的数据存到文件里,同时向后移动 size*1个字节(size×1)
fclose(fp);
fp=fopen(“D://student”,“rb”);
printf(" 图书列表\n");
printf("-----------------------------------------------------------\n");
printf(“登录号\t书名\t作者名\t分类号\t出版单位 出版时间 价格\n”);
printf("-----------------------------------------------------------\n");
fclose(fp);
Comp();
printf("-----------------------------------------------------------\n\n");
}