c语言图书管理系统案例实训_c语言实现图书馆系统

c语言图书管理系统案例实训_c语言实现图书馆系统本次案例需要三个文件来运行分别是StuManage.h//头文件、StuManage.c//函数定义和main.c//测试文件#include<stdio.h>#ifndefSTUMANA_STUMANA_H#defineSTUMANA_STUMANA_Htypedefstructbook{charbnum[10];charbname[30];charbauthor[20];charbclassfy[10];floatbprice;.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

本次案例需要三个文件来运行分别是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;
}

运行结果

c语言图书管理系统案例实训_c语言实现图书馆系统

c语言图书管理系统案例实训_c语言实现图书馆系统

c语言图书管理系统案例实训_c语言实现图书馆系统

c语言图书管理系统案例实训_c语言实现图书馆系统

c语言图书管理系统案例实训_c语言实现图书馆系统

c语言图书管理系统案例实训_c语言实现图书馆系统

c语言图书管理系统案例实训_c语言实现图书馆系统

c语言图书管理系统案例实训_c语言实现图书馆系统运行结果左上角的地址与代码地址不符可以根据自身需求进行更改(在StuManage.c文件最后一个地方)

c语言图书管理系统案例实训_c语言实现图书馆系统

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184126.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 卸载jdk1.7

    卸载jdk1.7卸载jdk1.7:1、开始->程序->控制面板->卸载程序->程序和功能2、找到jdk的两个程序:java7update45和java(TM)SEDevelopmentKit73、右键->卸载转载于:https://www.cnblogs.com/Noul/p/10406623.html…

    2022年6月25日
    53
  • ❄️全网最详细的Python入门基础教程,Python最全教程(非常详细,整理而来)

    ❄️全网最详细的Python入门基础教程,Python最全教程(非常详细,整理而来)最近想要学习Python,所以就在网上整理了好多整理而来超级详细的Python入门教程

    2022年6月10日
    38
  • J2EE架构师手册

    J2EE架构师手册 

    2022年6月29日
    27
  • python的缩进规则是什么意思_python什么情况下需要缩进

    python的缩进规则是什么意思_python什么情况下需要缩进一般的语言都是通过{}或end来作为代码块的标记,而Python则是通过缩进来识别代码块的。对于Python的这种“缩进”风格,喜欢它的人说这是一种乐趣;不喜欢它的人说这是一门需要卡尺的语言,因为需要使用“游标卡尺”去测量每行代码的缩进。不管怎么样,Python的开发者有意让违反了缩进规则的程序不能通过编译,以此让程序员养成良好的编程习惯。并且Python语言利用缩进表示语句块的开始和退出,而非使…

    2022年10月13日
    1
  • Maven之(六)setting.xml配置文件详解

    Maven之(六)setting.xml配置文件详解鉴于CSDN对**版权保护的不作为**以及落后的运营手段,本博客将于近期关闭,并清空全部文章。原有文章将会经过再次的校对、整理,转移至本人在**简书**的[博客空间](https://www.jianshu.com/u/3ec23ef9a408)。…

    2022年5月27日
    30
  • 键值对pair「建议收藏」

    什么是pairpair类是C++标准库的一部分,它使得我们可以在一个对象的内部把相同类型或不同类型的两个值关联起来,它被包含在头文件unility中:pair类的结构大致如下:template&lt;classT1,classT2&gt;classpair{public:pair(T1v1,T2v2):first(v1),s…

    2022年4月8日
    119

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号