C语言课设图书入库登记程序,C语言课程设计:图书管理系统_分享下载

/*************************

* 运行环境:vc6.0

*************************/

#include  /*头文件名*/

#include 

#include 

#define Max 3 /*定义最大借书权限(可更改)*/

typedef struct book /*图书类型*/

{

char book_num[10];

char book_name[20];

int book_kc;

int book_xc;

struct book *next;

}BK;

typedef struct borrow /*借书数目类型*/

{

char borrow_book_num[10];

}BO;

typedef struct reader /*读者类型*/

{

char reader_num[10];

char reader_name[10];

int right;

BO borrow[Max]; /*嵌套借书数目类型*/

struct reader * next;

}RD;

BK *h_book; /*图书指针*/

RD *h_reader; /*读者指针*/

int Menu(); /*主菜单*/

void Menu_select(); /*主菜单选择函数*/

void Init(); /*初始化函数*/

void Init_reader(); /*初始化读者*/

void Init_book(); /*初始化图书*/

void Insert_New_Book(); /*增加新书*/

void Insert_New_Reader(); /*增加新读者*/

void del_old_book(); /*删除旧图书*/

void del_old_reader(); /*删除旧读者(就是已经不存在或毕业的同学)*/

void book_not_enough(); /*库存不足信息函数*/

int Find(); /*查找函数*/

void Find_Select(); /*查找选择菜单*/

void Find_Reader(); /*查找读者*/

void Find_Book(); /*查找图书*/

void Borrow_Book(); /*借书函数*/

void Return_Book(); /*还书函数*/

void about(); /*"关于系统的说明"函数*/

int Print(); /*打印函数*/

void Print_Select(); /*打印选择函数*/

void Print_book(); /*打印图书信息*/

void Print_reader(); /*打印读者信息*/

void Save(); /*保存信息函数*/

void Save_Reader(); /*保存读者信息*/

void Save_Book(); /*保存图书信息*/

void Load(); /*加载信息函数*/

void Load_Reader(); /*加载读者信息*/

void Load_Book(); /*加载图书信息*/

int Menu()

{ int sn;

printf("\n\t\t图书管理系统主菜单\n");

printf("=================================================\n");

printf("*\t0----退出系统 6----关于系统 \t*\n");

printf("*\t1----新书入库 7----旧书出库 \t*\n");

printf("*\t2----增新读者 8----删旧读者 \t*\n");

printf("*\t3----图书查询 9----输出全部信息\t*\n");

printf("*\t4----借书登记 10----库存不足图书\t*\n");

printf("*\t5----还书管理 11----保存当前信息\t*\n");

printf("=================================================\n");

printf("请选择相应代码:"); /*代码选择模式(下同)*/

for(;;)

{ scanf("%d",&sn);

fflush(stdin);

if(sn<0||sn>11)

printf("\n错误!请重新输入:");

else break;

}

return sn;

}

void Menu_select()

{

for(;;) /*循环调用模式,保证能进行重复操作(下同)*/

{

switch(Menu())

{ case 0:

system("cls");

Save();

printf("\n\n\t文件保存成功!\n");

printf("\n\n\tGoodBye!\n");

getch();

exit(0);

case 1:Insert_New_Book();break; /*功能调用*/

case 2:Insert_New_Reader();break;

case 3:Find_Select();break;

case 4:Borrow_Book();break;

case 5:Return_Book();break;

case 6:about();break;

case 7:del_old_book();break;

case 8:del_old_reader();break;

case 9:Print_Select();break;

case 10:book_not_enough();break;

case 11:Save(); Load();

printf("\n文件保存成功!按任意键进行下步操作....");

getch(); system("cls");break;

default:printf("\n错误!");exit(0);

}

}

}

void Init() /*初始化*/

{

Init_reader();

Init_book();

}

void Init_reader() /*初始化读者信息(从键盘输入一组数据)*/

{

RD *p0;

int i;

printf("\n读者初始化开始,请输入读者信息..\n包括编号.姓名..\n");

p0=(RD *)malloc(sizeof(RD));

h_reader=p0;

printf("\n请输入读者的信息:\n");

printf("ReaderNo.:"); /*输入读者编号(唯一)*/

scanf("%s",p0->reader_num);

printf("ReaderName:"); /*输入读者姓名(不唯一)*/

scanf("%s",p0->reader_name);

p0->right=0;

for(i=0;i

strcpy(p0->borrow[i].borrow_book_num,"0");

/*所借图书直接置为0(即没有借书)*/

p0->next=NULL;

printf("\n读者信息初始化完毕!按任意键继续下一步操作..\n");

/*头接点建立完毕*/

getch();

system("cls");

}

void Init_book() /*初始化图书信息(从键盘输入一组数据)*/

{

BK *p0;

printf("\n图书初始化开始,请输入图书信息..\n包括编号.书名.数量..\n");

p0=(BK *)malloc(sizeof(BK));

h_book=p0;

printf("\n请输入图书信息:\n");

printf("BookNo.:"); /*输入图书编号(唯一)*/

scanf("%s",p0->book_num);

printf("BookName:"); /*输入图书名称(不唯一)*/

scanf("%s",p0->book_name);

printf("Number:"); /*输入图书数量*/

scanf("%d",&p0->book_kc);

p0->book_xc=p0->book_kc; /*开始时图书现存量和库存量相等*/

p0->next=NULL;

printf("\n图书信息初始化完毕!按任意键继续下一步操作..\n");

getch();

system("cls");

}

................

void main()

{

FILE *fp_book,*fp_reader;

if((fp_book=fopen("Book.dat","rb"))==NULL||(fp_reader=fopen("Reader.dat","rb"))==NULL)

{

about(); /*第一次启动系统,则进行初始化,否则进行加载*/

Init();

}

else

Load();

Menu_select(); /*调用主菜单*/

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值