本次案例需要三个文件来运行分别是StuManage.h//头文件、StuManage.c//函数定义和main.c//测试文件
StuManage.h文件
#include <stdio.h>
#ifndef STUMANA_STUMANA_H
#define STUMANA_STUMANA_H
typedef struct book
{
char bnum[10];
char bname[30];
char bauthor[20];
char bclassfy[10];
float bprice;
struct book* next;
}BookInfo;
BookInfo* CreateBooksList();
void Insert(BookInfo* head);
void Delete(BookInfo* head);
void Print(BookInfo* head);
void Search(BookInfo* head);
void Update(BookInfo* head);
void Save(BookInfo* head);
int menu();
#endif
StuManage.c文件
#define _CRT_SECURE_NO_WARNINGS
#include "StuManage.h"
#include <stdlib.h>
#include <string.h>
BookInfo* CreateBooksList()
{
BookInfo* head;
head = (BookInfo*)malloc(sizeof(BookInfo));
head->next = NULL;
return head;
}
void Insert (BookInfo* head)
{
BookInfo *b, *p;
char flag = 'Y';
p = head;
while (p->next != NULL)
p = p->next;
while (flag == 'Y' || flag == 'y')
{
b = (BookInfo*)malloc(sizeof(BookInfo));
printf("请输入图书编号:");
fflush(stdin);
scanf("%s", b->bnum);
printf("请输入书名:");
fflush(stdin);
scanf("%s", b->bname);
printf("请输入作者:");
fflush(stdin);
scanf("%s", b->bauthor);
printf("请输入类别编号:");
fflush(stdin);
scanf("%s", b->bclassfy);
printf("请输入图书价格:");
fflush(stdin);
scanf("%f", &b->bprice);
p->next = b;
p = b;
b->next = NULL;
printf("添加成功!\n继续添加?(Y/N):");
fflush(stdin);
scanf("%c", &flag);
if (flag == 'N' || flag == 'n')break;
else if (flag == 'Y' || flag == 'y')continue;
}
return;
}
void Delete(BookInfo* head)
{
BookInfo *b, *p;
char tmp[30];
int flag;
flag = 0;
b = head;
p = head;
printf("请输入要删除的书籍名:");
fflush(stdin);
scanf("%s", tmp);
while(p != NULL)
{
if(strcmp(p->bname, tmp) == 0)
{
flag = 1;
break;
}
p = p->next;
}
if(flag == 1)
{
for(; b->next !=p;)
b = b->next;
b->next = p->next;
free(p);
printf("删除成功!\n");
}
else
printf("该书不存在!");
return;
}
void Print(BookInfo* head)
{
BookInfo *p;
if (head == NULL || head->next == NULL)
{
printf("无记录! \n");
return;
}
p = head;
printf("┏━━━┯━━━┯━━━┯━━━━━┯━━━┓\n");
printf("┃编号 ┃书名 ┃作者 ┃类别编号 ┃价格 ┃\n");
printf("┃━━━╂━━━╂━━━╂━━━━━╂━━━┥\n");
while (p->next !=NULL)
{
p = p->next;
printf("┃%-6s┃%-6s┃%-6s┃%-10s┃%.2f ┃\n",
p->bnum,p->bname, p->bauthor, p->bclassfy, p->bprice);
printf("┕━━━━━━━━━━━━━━━━━━━━━┚\n");
}
}
void Search(BookInfo* head)
{
BookInfo *p;
char tmp [30];
int flag = 0;
p = head;
if (head == NULL || head->next == NULL)
printf("清单为空!\n");
else
{
printf("请输入书名:");
fflush(stdin);
scanf("%s",tmp);
while(p->next != NULL)
{
p = p->next;
if (strcmp(p->bname, tmp) == 0)
{
flag = 1;
printf("编号:%s\n书名:《%s》\n作者:%s\n分类:%s\n价格:%.2f\n",
p->bnum,p->bname,p->bauthor, p->bclassfy,p->bprice);
return;
}
if (p->next == NULL)
printf("\n查询完毕!");
}
if (flag == 0)
printf("没有找到《%s》!\n", tmp);
}
return;
}
void Update(BookInfo* head)
{
BookInfo *p;
char tmp[30];
int flag = 0;
p = head;
printf("请输入书名:");
fflush(stdin);
scanf("%s", tmp);
while (p->next != NULL)
{
p = p->next;
if (strcmp(p->bname, tmp) ==0)
{
flag = 1;
printf("请输入编号:");
fflush(stdin);
scanf("%s", p->bnum);
printf("请输入书名:");
fflush(stdin);
scanf("%s", p->bname);
printf("请输入作者:");
fflush(stdin);
scanf("%s", p->bauthor);
printf("请输入类别编号:");
fflush(stdin);
scanf("%s", p->bclassfy);
printf("请输入价格:");
fflush(stdin);
scanf("%f", &p->bprice);
}
}
if (flag == 0)
printf("没有找到《%s》!\n", tmp);
return;
}
void Save (BookInfo* head)
{
BookInfo*p;
FILE*fp;
p = head;
fp = fopen("D:\\bookslist.txt","w");
fprintf(fp, "┏━━━┯━━━┯━━━┯━━━━━┯━━━┓\n");
fprintf(fp, "┃编号 ┃书名 ┃作者 ┃类别编号 ┃价格 ┃\n");
fprintf(fp, "┃━━━╂━━━╂━━━╂━━━━━╂━━━┥\n");
while (p->next !=NULL)
{
p = p->next;
fprintf(fp, "┃%-6s┃%-6s┃%-6s┃%-10s┃%.2f ┃\n",
p->bnum,p->bname, p->bauthor, p->bclassfy, p->bprice);
fprintf(fp, "┕━━━━━━━━━━━━━━━━━━━━━┚\n");
}
fclose(fp);
printf("保存成功!\n");
printf("数据已成功保存到D:\\bookslist.txt");
}
int menu()
{
int sec;
printf(" 图书管理系统 \n");
printf("━━━━━━━━━━━━━━━━━━\n");
printf(" 1-图书信息录入\n");
printf(" 2-图书信息浏览\n");
printf(" 3-图书信息查询\n");
printf(" 4-图书信息修改\n");
printf(" 5-图书信息删除\n");
printf(" 6-图书信息保存\n");
printf(" 7-退出\n");
printf("━━━━━━━━━━━━━━━━━━\n");
printf("请选择:");
fflush(stdin);
scanf("%d", &sec);
while(sec >7 || sec < 0)
{
printf("选择有误!\n请重新输入:");
scanf("%d", &sec);
}
return sec;
}
main.c文件
#include "StuManage.h"
#include "StuManage.c"
#include <Windows.h>
int main()
{
BookInfo *head;
int sel;
head = NULL;
for(;;)
{
sel = menu();
switch (sel)
{
case 1:
if (head == NULL)
head = CreateBooksList();
Insert(head);
break;
case 2:Print(head);break;
case 3:Search(head);break;
case 4:Update(head);break;
case 5:Delete(head);break;
case 6:Save(head);break;
case 7:exit(0);break;
default:break;
}
}
return 0;
}
运行结果
运行结果左上角的地址与代码地址不符可以根据自身需求进行更改(在StuManage.c文件最后一个地方)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184126.html原文链接:https://javaforall.cn