数据结构9
详细设计
该程序设计用 displayMenu()函数显示菜单, addBook()函数添加书籍,showBooks()函数显示所有书籍信息, queryBook()函数查找图书, alterBook()函数修改图书信息,deleteBook()函数删除图书信息,void borrowBooks()函数借阅图书, revertBook()函数归还图书,viewAllBook()函数显示所有借阅记录。
4.1 重要程序段1
void displayMenu()
{
printf("\n*************************************************\n");
printf("*\t 欢迎使用图书借阅系统 \t\t*\n");
printf("*\t\t请选择功能\t\t\t*\n");
printf("*************************************************\n");
printf("*\t1.录入图书信息\t2.显示所有图书\t\t*\n");
printf("*\t3.查找图书信息\t4.修改图书信息\t\t*\n");
printf("*\t5.删除图书信息\t6.借阅图书\t\t*\n");
printf("*\t7.归还图书\t8.查看借阅信息\t\t*\n");
printf("*\t0.退出系统\t\t\t\t*\n");
printf("*************************************************\n");
}
4.2 重要程序段2
void addBook()
{
FILE *pf = fopen("Book.bin", "rb+");
Book *head = (Book*)malloc(sizeof(Book));
Book *node = head;
Book *pb;
Book book;
int success=0;
int fail = 0;
int count = 0;
char ch;
if (pf == NULL) {
printf("打开book.bin文件失败啦!!\n");
exit(1);
}
printf("录入图书信息(y/n):");
getchar();
scanf("%c",&ch);
while(ch == 'y' || ch == 'Y')
{
getchar();
pb = (Book*)malloc(sizeof(Book));
pb->state = 1;
printf("图书编号:");
scanf("%s",pb->bno);
printf("图书名称:");
scanf("%s",pb->name);
printf("图书作者:");
scanf("%s",pb->author);
printf("出版日期(yyyy-mm-dd):");
scanf("%s",pb->pubDate);
printf("图书价格:");
scanf("%f",&pb->price);
printf("图书数量:");
scanf("%d",&pb->quantity);
pb->next = NULL;
node->next = pb;
node = node->next;
printf("是否继续录入(y/n[a-z]):");
getchar();
scanf("%c",&ch);
}
fseek(pf, 0, SEEK_END);
//遍历链表
for (head=head->next; head; head=head->next) {
count = 0;
fseek(pf, 0, SEEK_SET);
while(fread(&book, sizeof(Book),1, pf) == 1){
if (strcmp(book.bno, head->bno) == 0 && book.state == 1) {
count = 1;
fail++;
break;
}
}
if(count != 1){
fseek(pf, 0, SEEK_END);
fwrite(head, sizeof(Book), 1, pf);
success++;
}
}
printf("一共录入:%d本书 成功录入:%d 本 失败(已存在):%d 本\n",success+fail,success,fail);
fclose(pf);
}