这行去掉,平时输入输出用scanf printf
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include<iostream>
#include<algorithm>
#include "stdlib.h"
#include "string.h"
struct book//定义一个结构体
{
int number;
char name[50];
char bianhao[50];
char writer[50];
char where[50];
};bool comp(book a,book b)//sort函数的定义前提,即选择升序以及利用哪个参数比较
{
return a.bianhao<b.bianhao;
}
struct lib
{
struct book data[1000];
int sz;
};
void menu()
{
printf("\t***************************\n");
printf("\t0.退出系统\n");
printf("\t1.登记书籍\n");
printf("\t2.查找书籍\n");
printf("\t3.删除书籍\n");
printf("\t4.排序\n");
printf("\t***************************\n");
}
//初始化图书系统
void initsys(struct lib*p)
{
memset(p->data, 0, sizeof(p->data));//初始化一个空间
p->sz = 0;
}
//登记书籍
void addsys(struct lib*p)
{
p->data[p->sz].number = p->sz+1;
printf("请输入书籍的名字");
scanf("%s", p->data[p->sz].name);
printf("请输入书籍的编号");
scanf("%s", (p->data[p->sz].bianhao));
printf("请输入书籍的作者");
scanf("%s", (p->data[p->sz].writer));
printf("请输入书籍的出版社");
scanf("%s", (p->data[p->sz].where));
printf("登记成功");
p->sz++;
}
//找到对应的下标并返回
int findname(struct lib*p, char bianhao[])
{
int i = 0;
for (i = 0; i < p->sz; i++)
{
if (strcmp(p->data[i].bianhao,bianhao) == 0)//trcmp函数比较两个struct lib*p字符串,如果两个一样就返回i,如果不一样就是-1。
return i;
}
return -1;
}
//查找书籍
void searchsys(struct lib*p)
{
char bianhao[50];
int t;
printf("请输入所要查找的书的编号\n");;
scanf("%s",bianhao);
t=findname(p, bianhao);//调用函数,利用函数返回给t的值
if (t == -1)
printf("所要查找的书籍不存在\n");
else
{
printf("%-15d\t%-20s\t%-20s\t%-15s\n", p->data[t].number, p->data[t].name,p->data[t].writer, p->data[t].where);
}
}
//删除书籍
void deletesys(struct lib *p)
{
char bianhao[50];
int t ;int i = 0;
printf("请输入要删除的书籍的编号");
scanf("%s",bianhao);
t=findname(p, bianhao);////调用函数,利用函数返回给t的值
if(t==-1)
printf("没有这本书呢亲");
else
{
for (i = t; i < p->sz - 1; i++)
{
p->data[i] = p->data[i + 1];//利用下一本书的信息顶替上一本书达到删除的目的
}
p->sz--;
printf("已删除");
}
}
//排序
void ranksys(struct lib*p)
{
int i;
book sk[50];
sort(sk+1,sk+p->sz+1,comp);//在开始地址到最早地址自动排序
for(i=0;i<p->sz+1;i++)
printf("%-15d\t%-20s\t%-20s\t%-15s\n", p->data[i].number, p->data[i].name,p->data[i].writer, p->data[i].where);
}
int main()
{
int input = 0;
struct lib sys;
initsys(&sys);
do
{
menu();
printf("请选择:>\n");
scanf("%d", &input);
switch (input)//switch语句选择五个功能
{
case 0:
printf("退出系统\n");
break;
case 1:
printf("【登记】\n");
addsys(&sys);
break;
case 2:
printf("【查找】\n");
searchsys(&sys);
break;
case 3:
printf("【删除】\n");
deletesys(&sys);
break;
case 4:
printf("排序\n");
ranksys(&sys);
default:
printf("输入错误,请重新输入");
break;
}
system("pause");//冻结屏幕看到结果
system("cls");//清空屏幕
} while (input);
}