返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言图书管理系统实验
  • 382
分享到

C语言图书管理系统实验

2024-04-02 19:04:59 382人浏览 安东尼
摘要

本文实验为大家分享了C语言图书管理系统的具体代码,供大家参考,具体内容如下 实验要求: 1、图书信息:包括ISBN、书名、主编、出版社、定价 2、功能: (1)插入:若表中不存在新

本文实验为大家分享了C语言图书管理系统的具体代码,供大家参考,具体内容如下

实验要求:

1、图书信息:包括ISBN、书名、主编、出版社、定价

2、功能:

(1)插入:若表中不存在新图书信息(ISBN不同),则插入(表尾)新图书信息。
(2)删除:按ISBN删除
(3)查找:按ISBN查找
(4)修改:按ISBN查找,然后修改各个属性
(5)排序:按ISBN排序
(6)计数:输出图书信息的个数
(7)导入:从TXT文件中读取已有图书信息(不同的属性之间用tab键隔开)
(8)保存:将表中现有信息保存到txt文件中
(9)打印:在屏幕上显示所有图书信息

3、扩展功能(选做):

(1)增加按书名、主编、出版社进行查找
(2)增加按书名、主编、出版社、定价排序

4、界面要求:简单的人机交互界面

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
   //头文件 
   
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define LIST_INIT_SIZE 50
#define LISTINCREMENT 10
   //宏定义,即定义常量 
   
typedef int status;
typedef struct {
    char ISBN[15];
    char bookname[30];
    char writername[10];
    char publisher[20];
    float price;
} ElemType;
typedef struct {
    ElemType *elem;
    int length;
    int listsize;    
} sqlist; 
    //定义结构体类型,即  typedef 类型  类型名 
    
status  InitList_Sq(SqList &L)     
{   //构造一个空的线性表L。
    L.elem=(ElemType *)    malloc(LIST_INIT_SIZE*sizeof(ElemType));
    //申请初始化长度的内存 
    if(!L.elem){
    //如果L的序列非空 
        exit(OVERFLOW);    
        //说明L被重定义了,抛出溢出 
    }
    L.length=0;
    //默认L内有0个元素    
    L.listsize=LIST_INIT_SIZE; 
    //默认L的容量为初始化长度 
    return OK;
} 

int LocateElem_Sq(SqList L,char ISBN[])
{    //在顺序表L中遍历查找第1个值与e.ISBN相等的元素的位序,若找到,返回其位序,否则返回0; 
    for(int i=0;i<L.length;i++){
        if(strcmp(ISBN,L.elem[i].ISBN)==0){
            return i+1;
        }
    }
    return 0;
}

status ListInsert_Sq(SqList &L,ElemType e)
{//元素e插入表尾
    ElemType *newbase;
    if(LocateElem_Sq(L,e.ISBN)){
        return ERROR;
    }
    if(L.length>=L.listsize) {
        newbase =(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
        if(!newbase){
            exit(OVERFLOW);
        }
        L.elem=newbase;
        L.listsize+=LISTINCREMENT;
    }
    L.elem[L.length]=e;
    L.length++;
    return OK;
}

status ListDelete_Sq(SqList &L,char ISBN[] ,ElemType &e)
{   //删除L中ISBN的元素,并返回删除元素; 
    int i,j;
    if((i=LocateElem_Sq(L,ISBN))==0){
        return ERROR;
    }
    
    e=L.elem[i-1];
    for(j=i;j<L.length;j++){
        L.elem[j-1]=L.elem[j];
    }
    L.length--;
    return OK;
}

status SetElem_Sq(SqList &L,int i,ElemType e)
{   //修改在i的位置的元素 
    if(i<1||i>L.length){
        return ERROR;
    }
    L.elem[i-1]=e;
    return OK;
}

void sort_ISBN(SqList &L)
{    //对表中所有元素进行排序; 
    int i,j,k;
    ElemType e;
    for(i=0;i<L.length-1;i++){
        k=i;
        for(j=i+1;j<L.length;j++){
            if(strcmp(L.elem[k].ISBN,L.elem[j].ISBN)>0){
                k=j;
            }
        }
        if(k!=i){
            e=L.elem[i];
            L.elem[i]=L.elem[k];
            L.elem[k]=e;
        }    
    }
} 

void print(SqList L)
{    //打印出所有元素
    int i;
    printf("\n图书信息为:\n");
    for(i=0;i<L.length;i++){
        printf("%-15s%-30s%-10s%-20s%-6.2f\n",L.elem[i].ISBN,L.elem[i].bookname,L.elem[i].writername,L.elem[i].publisher,L.elem[i].price); 
    }    
}

void import(SqList &L,char *filename)
{    //从文件中导入信息 
    FILE *fp;
    int i;
    char ISBN[15],bookname[30],writername[10],publisher[20];
    float price;
    if((fp=fopen(filename,"r"))==NULL){
        printf("文件不存在!\n");
        return ;
    }
    i=0;
    while(!feof(fp)){
        fscanf(fp,"%s%s%s%s%f",ISBN,bookname,writername,publisher,&price);
        strcpy(L.elem[i].ISBN,ISBN);
        strcpy(L.elem[i].bookname,bookname);
        strcpy(L.elem[i].writername,writername);
        strcpy(L.elem[i].publisher,publisher);
        L.elem[i].price=price;
        i++;
    }
    L.length=i;
    fclose(fp);
}

void save(SqList L,char *filename)
{      //把信息保存到文件 
    FILE *fp;
    int i;
    if((fp=fopen(filename,"w"))==NULL){
        printf("文件不存在!\n");
        return ;
    } 
    for(i=0;i<L.length;i++){
        fprintf(fp,"%-15s\t%-30s\t%-10s\t%-20s\t%-6.2f\n",L.elem[i].ISBN,L.elem[i].bookname,L.elem[i].writername,L.elem[i].publisher,L.elem[i].price);
    }
    fclose(fp);
 } 


int main(){
    int ch;
    SqList L;
    char ISBN[15],filename[30];
    int i;
    ElemType e;
    InitList_Sq(L);
    printf("1. 插入   2. 删除   3. 查找   4. 修改元素   5. 按ISBN排序元素   6. 输出   7. 导入   8. 保存   9. 退出\n");
    printf("请选择:");
    scanf("%d",&ch);
    while(ch!=9){
        switch(ch){
        case 1:    printf("请输入要增加的元素");
                scanf("%s%s%s%s%f",e.ISBN,e.bookname,e.writername,e.publisher,&e.price); 
                if(ListInsert_Sq(L,e)==OK){
                    printf("插入成功!当前信息为:\n");
                    print(L);
                }
                else {
                    printf("表中已存在该图书!\n");
                } 
                break;
        case 2:    printf("请输入删除的图书ISBN:");
                scanf("%s",ISBN);
                if(ListDelete_Sq(L,ISBN,e)==OK)
                {
                    printf("删除成功!被删图书为%s\t%s\t%s\t%s\t%.2f\n",e.ISBN,e.bookname,e.writername,e.publisher,e.price);
                    print(L);
                }
                else
                    printf("该图书不存在!\n");
                break;
        case 3:    printf("请输入要查找的图书ISBN:");
                scanf("%s",&ISBN);
                i=LocateElem_Sq(L,ISBN);
                if(i!=0)
                {
                    printf("该图书为%s\t%s\t%s\t%s\t%.2f\n",L.elem[i-1].ISBN,L.elem[i-1].bookname,L.elem[i-1].writername,L.elem[i-1].publisher,L.elem[i-1].price);
                }
                else
                    printf("该图书不存在!\n");
                break;
        case 4: printf("请输入要修改的图书ISBN:");
                scanf("%s",&ISBN);
                i=LocateElem_Sq(L,ISBN);
                if(i==0){
                    printf("该图书不存在!\n");
                }    
                else{
                    printf("请输入图书的ISBN,书名,主编,出版商和定价");
                    scanf("%s%s%s%s%f",e.ISBN,e.bookname,e.writername,e.publisher,e.price);
                    SetElem_Sq(L,i,e);
                    printf("修改成功,图书信息为:");
                    print(L);     
                }
                break;
        case 5:    sort_ISBN(L);
                printf("按照ISBN排序后\n");
                print(L);
                break;
        case 6: print(L);
                break;
        case 7: printf("请输入导入文件名:");
                scanf("%s",filename);
                import(L,filename);
                break;
        case 8: printf("请输入导出文件名:");
                scanf("%s",filename);
                save(L,filename);
                break;    
        default: printf("输入错误,请重新选择\n");
        }
        printf("1. 插入   2. 删除   3. 查找   4. 修改元素   5. 按ISBN排序元素   6. 输出   7. 导入   8. 保存   9. 退出\n");
        printf("请选择:");
        scanf("%d",&ch);
    }
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C语言图书管理系统实验

本文链接: https://lsjlt.com/news/142200.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言图书管理系统实验
    本文实验为大家分享了C语言图书管理系统的具体代码,供大家参考,具体内容如下 实验要求: 1、图书信息:包括ISBN、书名、主编、出版社、定价 2、功能: (1)插入:若表中不存在新...
    99+
    2024-04-02
  • C语言实现图书馆管理系统
    本文实例为大家分享了C语言实现图书馆管理系统的具体代码,供大家参考,具体内容如下 全部代码如下: #include <stdio.h> #include<str...
    99+
    2024-04-02
  • C语言如何实现图书管理系统
    这篇文章将为大家详细讲解有关C语言如何实现图书管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。主要内容        开发一个图书信息管理系统,图书信息包括:...
    99+
    2023-06-28
  • C语言实现图书管理系统开发
    本文实例为大家分享了C语言实现图书管理系统的具体代码,供大家参考,具体内容如下 程序介绍 图书管理系统主要有以下功能: 1、录入图书信息。2、实现删除功能,即输入图书号删除相应的记录...
    99+
    2022-11-13
    C语言图书管理系统 C语言图书系统 C语言图书管理
  • C语言怎么实现图书管理系统
    要实现一个图书管理系统,可以按照以下步骤进行:1. 定义图书结构体:首先要定义一个图书的结构体,包括图书的编号、名称、作者等信息。`...
    99+
    2023-08-09
    C语言
  • C语言单链表实现图书管理系统
    本文实例为大家分享了C语言单链表实现图书管理系统的具体代码,供大家参考,具体内容如下 单链表实现的图书管理系统相比于结构体实现的管理系统,可以随时开辟新的空间,可以增加书的信息 单链...
    99+
    2024-04-02
  • C语言如何实现图书馆管理系统
    这篇文章主要介绍了C语言如何实现图书馆管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。全部代码如下:#include <stdio.h>#incl...
    99+
    2023-06-20
  • C语言链表实现简单图书管理系统
    本文实例为大家分享了C语言链表实现图书管理系统的具体代码,供大家参考,具体内容如下 实现功能: 用C语言制作图书管理系统,实现图书进行登记书籍,浏览书籍,借阅书籍,归还书籍,书籍排序...
    99+
    2024-04-02
  • C语言实现图书管理系统课程设计
    目录设计要求实现代码运行结果本文实例为大家分享了C语言实现图书管理系统的具体代码,供大家参考,具体内容如下 设计要求 设计图书管理系统 要求如下: 1.对书名,作者,编号,出版单位,...
    99+
    2024-04-02
  • C语言实现图书管理系统(文件数据库)
    本文实例为大家分享了C语言实现图书管理系统的具体代码,供大家参考,具体内容如下 简介 c语言的一个大作业,发上来纪念下嘿嘿。写的不是很好,很多东西都揉在一起来,不过注释写的也挺多,希...
    99+
    2024-04-02
  • C语言实现图书管理系统的示例分析
    这篇文章将为大家详细讲解有关C语言实现图书管理系统的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下实验要求:图书信息:包括ISBN、书名、主编、出版社、定价2、功能:(1)插入:若表中...
    99+
    2023-06-29
  • C语言怎么实现简单的图书管理系统
    实现一个简单的图书管理系统可以使用C语言来实现,以下是一个简单的示例代码: #include <stdio.h> #in...
    99+
    2024-03-08
    c语言
  • C#实现图书管理系统
    本文为大家分享了C#实现图书管理系统课程设计,供大家参考,具体内容如下 一、设计目的 通过模拟图书管理系统,实现以下功能学生账号的注册学生对馆藏图书状况的查询学生借书,还书状态的查询...
    99+
    2024-04-02
  • C语言中单链表如何实现图书管理系统
    小编给大家分享一下C语言中单链表如何实现图书管理系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下单链表实现的图书管理系统相比于结构体实现的管理系统,...
    99+
    2023-06-29
  • C语言实现实验设备管理系统
    本文实例为大家分享了C语言实现实验设备管理系统的具体代码,供大家参考,具体内容如下 一、任务概述 实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设 备名称,设...
    99+
    2024-04-02
  • C++实现图书馆管理系统
    本文实例为大家分享了C++实现图书馆管理系统的具体代码,供大家参考,具体内容如下 一、实验名称 图书馆管理系统 二、实验目的 利用C++语言设计开发一个小型的图书馆管理系统模拟程序,...
    99+
    2024-04-02
  • C++版图书管理系统
    本文实例为大家分享了C++版图书管理系统的具体代码,供大家参考,具体内容如下 使用介绍 图书管理系统源码由两部分组成,第一部分book.h头文件,第二部分book.cpp源文件。复制...
    99+
    2024-04-02
  • C语言大作业之图书管理系统的实现详程
    目录主要内容概要设计项目源码结构体登录界面函数选择界面函数操作界面函数添加函数查找函数删除函数借书管理函数信息储存函数还书函数修改函数添加借书函数查找借书函数借书管理函数主函数总结序...
    99+
    2024-04-02
  • C/C++实现图书信息管理系统
    本文实例为大家分享了c/c++实现图书信息管理系统的具体代码,供大家参考,具体内容如下 程序流程图 源代码 #include <stdio.h> #include ...
    99+
    2024-04-02
  • C++编写实现图书管理系统
    C++编写的一个图书管理系统,供大家参考,具体内容如下 2018大一的课设,搬到这纪念一下,共1200多行代码 为图书管理人员编写一个图书管理系统,图书管理系统的设计主要是实现对图书...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作