大家好!我是四舍五入两米高的小晨! 这周写了一个C语言课设,分享出来。 #1、总结 这是第一次单独一个人写这样一个程序,通过写这个程序让我对结构体数组,指针,文件操作有了更深刻的认识,希望以后再接再厉。 **第一次运行这个程序前必须在D盘下面新建一个txt文件,文件名为:BookSystem 因为程序一运行就会加载文件里面的数据,如果没有对应的文件,则程序无法继续运行。 ##2、源码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
void myWrite(struct Library* library);
void Load(struct Library* library);
struct Book
{
char BookName[100];
char Name[100];
float Price;
};
struct Library
{
struct Book book[1024];
int size;
};
void Nenu()
{
printf(" 图书管理系统 \n");
printf("******************************\n");
printf(" 1-----图书信息录入 \n");
printf(" 2-----图书信息浏览 \n");
printf(" 3-----图书信息查询 \n");
printf(" 4-----图书信息删除 \n");
printf(" 5-----图书信息修改 \n");
printf(" 0-----退出图书信息管理系统 \n");
printf("******************************\n");
printf("Please Enter Choose: ");
}
void InputBook(struct Library* library)
{
printf("请输入书名:");
scanf("%s", library->book[library->size+1].BookName);
printf("请输入作者名:");
scanf("%s", library->book[library->size+1].Name);
printf("请输入价格:");
scanf("%f", &(library->book[library->size+1].Price));
library->size++;
printf("添加成功!\n");
myWrite(&library);
system("pause");
system("cls");
}
void ShowBook(struct Library* library)
{
if (library->size == 0)
{
printf("系统为空!\n");
system("pause");
system("cls");
return;
}
for (int i = 1; i <= library->size; i++)
{
printf("%d、", i);
printf("图书名:%10s\t", library->book[i].BookName);
printf("作者名:%10s\t", library->book[i].Name);
printf("价格:%.3f\n", library->book[i].Price);
}
system("pause");
system("cls");
}
void FindBook(struct Library* library)
{
while (1) {
int t;
printf("请您输入查询的方式(按编号查询输入1,按图书名称输入2,按价格查询输入3):");
scanf("%d", &t);
if (t == 1)
{
int num;
printf("请输入要查询的编号:");
scanf("%d", &num);
if (num <= library->size)
{
printf("%d、", num);
printf("图书名:%10s\t", library->book[num].BookName);
printf("作者名:%10s\t", library->book[num].Name);
printf("价格:%.3f\n", library->book[num].Price);
system("pause");
system("cls");
return;
}
else.
printf("查询失败!\n");
}
else if (t == 2)
{
char string[50];
printf("请输入要查询的图书名:");
scanf("%s", &string);
int i = 1;
for (; i <= library->size; i++)
{
if (strcmp(string, library->book[i].BookName) == 0)
{
printf("%d、", i);
printf("图书名:%10s\t", library->book[i].BookName);
printf("作者名:%10s\t", library->book[i].Name);
printf("价格:%.3f\n", library->book[i].Price);
system("pause");
system("cls");
return;
}
}
if (i > library->size)
printf("查无此书!\n");
}
else if (t == 3)
{
int price;
printf("请输入查询的价格:");
scanf("%d", &price);
int i = 1;
for (; i <= library->size; i++)
{
if (price== library->book[i].Price)
{
printf("%d、", i);
printf("图书名:%10s\t", library->book[i].BookName);
printf("作者名:%10s\t", library->book[i].Name);
printf("价格:%.3f\n", library->book[i].Price);
system("pause");
system("cls");
return;
}
}
if (i > library->size)
printf("查无此书!\n");
}
else
printf("输入错误请重新输入!");
}
}
void DeleteBook(struct Library* library)
{
printf("请输入删除图书的编号:");
int num;
scanf("%d", &num);
for (int i = num; i <= library->size; i++)
{
strcpy(library->book[i].BookName ,library->book[i + 1].BookName);
strcpy(library->book[i].Name, library->book[i+1].Name);
library->book[i].Price = library->book[i + 1].Price;
}
printf("删除成功!\n");
library->size--;
myWrite(&library);
system("pause");
system("cls");
return;
}
void ModifyBook(struct Library* library)
{
char string1[50] = { 0 }, string2[50] = { 0 };
int num,t;
float price;
printf("请输入修改图书的编号:");
scanf("%d", &num);
printf("请输入修改内容(修改图书名输入1,修改作者名输入2,修改价格输入3):");
scanf("%d", &t);
if (t == 1)
{
printf("请重新输入图书名:");
scanf("%s", &string1);
strcpy(library->book[num].BookName, string1);
printf("修改成功!\n");
myWrite(&library);
system("pause");
system("cls");
return;
}
else if (t == 2)
{
printf("请重新输入作者名:");
scanf("%s", &string2);
strcpy(library->book[num].Name, string2);
printf("修改成功!\n");
myWrite(&library);
system("pause");
system("cls");
return;
}
else if (t == 3)
{
printf("请重新输入价格:");
scanf("%d", &price);
library->book[num].Price=price;
printf("修改成功!\n");
myWrite(&library);
system("pause");
system("cls");
return;
}
else
printf("输入错误!\n");
system("pause");
system("cls");
return;
}
void myWrite(struct Library* library)
{
FILE* f = fopen("d:/BookSystem.txt", "w");
if (f == NULL)
{
perror("文件打开失败!");
return;
}
for (int i = 1; i <= library->size; i++)
{
struct Book* tempbook = &library->book[i];
fprintf(f, "%s %s %f\n", tempbook->BookName, tempbook->Name, tempbook->Price);;
}
fclose(f);
}
void myLoad(struct Library * library)
{
FILE* f = fopen("d:/BookSystem.txt", "r");
int i = 1;
while (!feof(f))
{
if ((fscanf(f, "%s %s %f", &library->book[i].BookName, &library->book[i].Name, &library->book[i].Price)) == EOF) {
break;
}
i++;
library->size++;
}
fclose(f);
}
int main()
{
struct Library library;
library.size = 0;
myLoad(&library);
while (1)
{
Nenu();
int t;
scanf("%d", &t);
if (t == 1)
InputBook(&library);
else if (t == 2)
ShowBook(&library);
else if (t == 3)
FindBook(&library);
else if (t == 4)
DeleteBook(&library);
else if (t == 5)
ModifyBook(&library);
else if (t == 0)
{
printf("欢迎下次使用!");
system("pause");
return 0;
}
else
{
printf("输入错误!\n");
system("pause");
}
myWrite(&library);
system("cls");
}
return 0;
}
|