⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11-p234-指导.cpp

📁 vc++的图书管理系统
💻 CPP
字号:
#include<stdio.h>

void sorttran(struct tran_st tran[10]);  //自定义函数,无返回值,完成对图书编码的排序

struct book_st      //定义该结构存储图书的相关信息
{
	int book_cd;                   //存储图书的标号
	char book_nm[30];              //存储图书的名称
	char author[30];               //存储图书的作者
	int copies;                    //存储图书的的数目
};

struct date_st                    //因为c中没有专门的日期类型的数据声明该结构存储借阅时间
{
	int month;                    //表示时间中的月
    int day;                      //表示时间中的日
	int year;                     //表示时间中的年
};

struct tran_st                   //该结构记录了图书的借阅返还情况
{
	int book_code;               //存储图书的标号
	char tran_type;              //标示是借书还是还书
	struct date_st tran_dt;      //标示借还书的日期
};

void main()
{
	int choice=1,i;              //因为下面循环中while(choice!=4)就开始菜单选择,
	                             //至少进行一次,所以先给choice一个非4的值
	char addflag;
	struct book_st books[5];       //定义了拥有struct book_st类型的数字变量books[5]
	struct tran_st trans[10];

	while(choice!=4)               //printf语句生成一个简单菜单,看readme  中的运行结果可知
	{
		printf("\nSelect from Menu\n1.Add book names\n2.Record Issue/Return\n3.Sort Transactions\n4.Exit\n\nEnter choice:");
		scanf("%d",&choice);
		if(choice==1)               //选取1开始登记图书情况
		{
			addflag='y';
			for(i=0;i<5&&addflag=='y';i++)     //注意for 循环的两个条件
			{
				books[i].book_cd=i+1;
				printf("\n\nBook code: %d\n\nBook name:",i+1);    //注意对结构成员的访问方法
				scanf("%s",books[i].book_nm);
				printf("\nAuthor:");
				scanf("%s",books[i].author);
				printf("\nNumber of copies:");
				scanf("%d",&books[i].copies);
				printf("\n\nContinue?(y/n):"); //该操作是否还循环,对应for 循环条件中的第二个   
				scanf(" %c",&addflag);
			}
		}
		else if(choice==2)                  //选取2图书借阅或返还操作,思路同上,只是变量不同了
		{
			addflag='y';
			for(i=0;i<10 && addflag=='y';i++)
			{
				printf("\n\nBook code:");
				scanf("%d",&trans[i].book_code);
				printf("\nIssue or Return?(I/R):");
				scanf(" %c",&trans[i].tran_type);
				printf("\nDate:");
				scanf("%d%d%d",&trans[i].tran_dt.month,&trans[i].tran_dt.day,&trans[i].tran_dt.year);
				printf("\n\nContinue?(y/n):");
				scanf(" %c",&addflag);
			}
		}
	
	else if(choice==3)   //选取3开始对图书排序,因为较复杂所以此处调用了函数使得程序思路清晰
	{
		sorttran(trans);  //将具有struct tran_st类型的数组trans[10]传递给函数
	}
	}
}
 void sorttran(struct tran_st tran[10])

{
	int i,j,tempcode;
	struct tran_st temptran;   //函数内的局部变量,因为结构是在头文件中声明的
	for(i=0;i<10;i++)          //所以此处也可使用  struct tran_st来定义变量的类型        
		for(j=i+1;j<10;j++)    //按图书的编号从小到排列
		{
			if(tran[i].book_code>tran[j].book_code)
			{
				temptran=tran[i];
				tran[i]=tran[j];
				tran[j]=temptran;
			}
		}
		for(i=0,j=0;i<10;j=0)
		{
			tempcode=tran[i].book_code;
			while(tran[i].book_code==tempcode&&i<10)
			{
				j++;
				i++;
			}
			printf("\nBook code%d had%d transactios",tempcode,j);
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -