c语言程序设计图书馆源代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言程序设计图书馆源代码相关的知识,希望对你有一定的参考价值。

【功能与要求】
(1)角色和权限管理。设有系统管理员、图书管理员和普通用户,他们设有不同的权限,各类用户进入系统时需先登录。
(2)系统管理员角色,系统管理员管理各类用户的增加、删除、修改和查询。
(3)图书管理员角色,图书管理员可对图书信息的录入、删除及修改、统计;
(4)普通用户角色,普通用户可借阅图书、归还图书。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
typedef int BOOL;
typedef struct bookinfo

char number[15];/*产品编号*/
char name[30];/*产品名称*/
float price;/*单价*/
char auther[20];/*作者*/
BOOL isExit;/*存在状态*/
char lendername[20];/*借书人姓名*/
char lendersex[2];/*借书人性别*/
char lendernum[15];/*借书人学号*/
BOOKINFO;
void menu()

printf("\n\n\n\n\n\n\n");
printf("\t\t\t图书管理系统\n");
printf("\t\t\t1:新进图书基本信息的输入\n");
printf("\t\t\t2:显示全部记录\n");
printf("\t\t\t3:根据图书名称查询图书基本信息\n");
printf("\t\t\t4:根据图书名称对撤销的图书信息进行删除\n");
printf("\t\t\t5:按照图书名称从小大到排序\n");
printf("\t\t\t6:统计某价格以上的图书数量\n");
printf("\t\t\t7:列出所有未借出去的图书信息\n");
printf("\t\t\t8:退出\n");

void choice_1_input_new()/*输入新进的图书信息*/

char choice;
FILE *p;
BOOKINFO newbook;
system("cls");
while(1)

printf("输入图书编号:");
gets(newbook.number);
printf("输入图书名称:");
gets(newbook.name);
printf("输入图书单价:");
scanf("%f",&newbook.price);
while(getchar()!='\n');
printf("输入图书的作者:");
gets(newbook.auther);
printf("输入借书人姓名:");
gets(newbook.lendername);
printf("输入借书人性别:");
gets(newbook.lendersex);
printf("输入借书人学号:");
gets(newbook.lendernum);
printf("是否保存该条书目?(Y/N)\n");

if(choice=='Y'||choice=='y')

newbook.isExit=1;/*将图书状态设置成1,表示没有借出*/
p=fopen("c:\\bookinfo.data","ab");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n该条书目已添加到c:\\bookinfo.data文件中!\n");

else

printf("\n本条书目未保存!\n");

printf("\n是否继续添加书目?(Y/N)\n");

while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')

if(choice=='Y'||choice=='y')
continue;
else
break;


void choice_2_display_all()/*显示全部图书信息*/

FILE *p;
int n;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;

/*booknumber--;使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
booknumber--;
if(booknumber==0)

printf("没有任何图书信息!\n\n");

else

n=0;
printf(" 图书信息如下\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
while(n<booknumber)

printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
n++;


printf("\n\n按任意键回到主菜单!\n");


void choice_3_search_according_name()/*根据图书名称显示图书的信息*/

char search[20]="";/*search用来存放要查询的书名*/
int n;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;

booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
while(1)

printf("输入要查询的书本名称:");
gets(search);
if(booknumber==0)

printf("书库中没有任何信息!\n\n");
printf("按任意键回到主菜单!\n\n");
getch();
break;
/*if结束*/
else

for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)

printf("该书的详细信息如下:\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
break;

if(n>=booknumber)
printf("没有查找该书的任何信息!\n");
printf("\n\n是否继续查询?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
/*else结束*/
/*while(1)结束*/

void choice_4_delete_according_name()/*根据图书名称对图书信息进行删除*/

char search[20]="";/*search用来存放要删除的书名*/
int n,i;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
while(1)

printf("输入要删除的书本名称:");
gets(search);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;

booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)

printf("书库中没有任何信息!\n\n");
printf("按任意键回到主菜单!\n\n");
getch();
break;
/*if结束*/
else

for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)

break;

if(n>=booknumber)
printf("没有查找该书的任何信息!\n");
else

printf("是否确认需要删除该条书目?(Y/N)");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')

for(i=n;i<booknumber-1;i++)
bookinfo[i]=bookinfo[i+1];
booknumber--;
p=fopen("c:\\bookinfo.data","wb");
for(n=0;n<booknumber;n++)
fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
fclose(p);
printf("删除成功!\n");

else
printf("\n\n该条书目没有被删除!");

printf("\n\n是否继续进行删除操作?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
/*else结束*/
/*while(1)结束*/

void choice_5_sort_according_name()/*根据图书名称排序*/

FILE *p;
int m,n;
BOOKINFO temp;
BOOKINFO bookinfo[100];
int booknumber;
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
system("cls");
while(!feof(p))

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;

booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)

printf("没有任何图书信息!\n\n");

else

for(m=0;m<booknumber-1;m++)
for(n=m+1;n<booknumber;n++)
if(strcmp(bookinfo[m].name,bookinfo[n].name)>0)

temp=bookinfo[m];
bookinfo[m]=bookinfo[n];
bookinfo[n]=temp;

p=fopen("c:\\bookinfo.data","wb");
for(m=0;m<booknumber;m++)
fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n完成排序!\n\n");

printf("按任意键回到主菜单!\n");
getch();

void choice_6_display_high_price()/*根据价格列出图书信息*/

float price;
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;

system("cls");
printf("请输入价格:");
scanf("%f",&price);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;

booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)

printf("没有任何图书信息!\n\n");

else

for(n=0;n<booknumber;n++)

if(bookinfo[n].price>=price)
count++;

if(count==0)
printf("书库中没有比%.1f$价格高的图书!",price);
else

printf(" 价格高于%.1f$的图书信息如下\n",price);
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
for(n=0;n<booknumber;n++)

if(bookinfo[n].price>=price)
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);



printf("\n\n按任意键回到主菜单!\n");
getch();

void choice_7_display_according_exitflag()/*根据存在状态列出图书信息*/

FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
booknumber=0;
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))

fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;

booknumber--;
fclose(p);
if(booknumber==0)

printf("书库中没有任何书目存在!\n");

else

for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)
count++;
if(count==0)
printf("书库中的书籍全部借出!\n");
else

printf("书库中未被借出的图书信息如下:\n\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)

printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);



printf("\n按任意键返回主菜单!\n");
getch();


void main()

char choice;
clock_t tm;
FILE *p;
if((p=fopen("c:\\bookinfo.data","rb"))==NULL)

p=fopen("c:\\bookinfo.data","wb");
fclose(p);

while(1)

system("cls");
menu();
choice=getch();
switch(choice)

case '1':choice_1_input_new();break;/*输入新进的图书信息*/
case '2':choice_2_display_all();break;/*显示全部图书信息*/
case '3':choice_3_search_according_name();break;/*根据图书名称显示图书的信息*/
case '4':choice_4_delete_according_name();break;/*根据图书名称对图书信息进行删除*/
case '5':choice_5_sort_according_name();break;/*根据图书名称排序*/
case '6':choice_6_display_high_price();break;/*根据价格列出图书信息*/
case '7':choice_7_display_according_exitflag();break;/*根据存在状态列出图书信息*/
case '8':printf("\n\n\t\t\t谢谢使用,再见!\n\t\t\t按任意键退出!\n");getch();return;
default:
printf("\n\n\t\t\t请输入菜单中的数字!(1~8)");
tm=clock();
while(clock()<tm+1800);
break;


追问

这是不是不全呀?

追答

你自己改吧 @@

参考技术A 1)进入客户端事,设计一个选择语句用if表示,请用户进入直接选择。1系统管理员登陆2图书管理员登陆3普通用户登陆。选择后进入输入账户密码。
2)用结构踢定义堆栈,然后这些功能就好实现了,
兄弟 源代码5分不够的。给你点思路。还有程序设计要自己摸索追问

帮帮忙呗

Java语言------图书馆管理系统(入门简略版)

目录

一.图书管理系统分析

1.1系统设计要求

 1.2设计思路

二.操作代码的实现

 2.1书架书籍代码实现

2.2用户操作代码实现

2.2.1增加书籍

2.2.2移除书籍

2.2.3查询书籍

2.2.4展示书架书籍信息

2.2.5借阅书籍代码

2.2.6归还图书代码

2.2.7退出系统

3.用户登录操作

 四.主函数的调用

总结


😽个人主页: tq02的博客_CSDN博客-C语言,Java领域博主

 🌈梦中理想:努力学习,向Java进发,拼搏一切,找到一份朝九晚五,有假期的工作,让  自己的未来不会有遗憾。
 🎁欢迎各位→点赞👍 + 收藏⭐ + 评论📝+关注✨

  本章讲解内容:Java封装、继承、抽象、多态、接口

   使用编译器:IDEA


 注:本文有些长,请耐心观看,看完之后,不懂打我。

一.图书管理系统分析

1.1系统设计要求

    为图书馆管理人员实现一个图书管理系统,主要设计:实现对图书的管理、以及其它相关操作。

 1.2设计思路

图书馆管理系统大概思路如上图,书籍放在书架当中登陆系统有2个权限管理员普通用户)。 


二.操作代码的实现

        为了让代码有更高的可读性,我们可以将代码分为三个包,分别存储用户登录书架书籍用户操作

        用户登陆:判断用户为管理员还是普通用户。

        用户操作:对书架的书籍进行操作。

        书架书籍:在用户操作之后,记录此时书架的书籍状态。

如此图:

   


 2.1书架书籍代码实现

     书架书籍,顾名思义,记录书架上的书书本的信息。使用需要建立两个类,书架类存放书本信息类。 也可以说,书架类,存放的是书本信息的数组。而数组大小取决于书的多少

书籍信息代码实现:

public class Book 
    private String name;   //书名
    private  String author;  //作者
    private int price;       //价格
    private String type;     //类型
    private boolean isBorrow;  //是否借出

    public Book(String name, String author, int price, String type) 
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    

    @Override
    public String toString() 
        return "书名:"+name+" 价格:"+price+" 作者:"+author+" 类型:"+type+" 状态:"+        
        ((this.isBorrow==true)?"已借出":"未借出");
    

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

    public String getAuthor() 
        return author;
    

    public void setAuthor(String author) 
        this.author = author;
    

    public int getPrice() 
        return price;
    

    public void setPrice(int price) 
        this.price = price;
    

    public String getType() 
        return type;
    

    public void setType(String type) 
        this.type = type;
    

    public boolean isBorrow() 
        return isBorrow;
    

    public void setBorrow(boolean borrow) 
        isBorrow = borrow;
    

书架信息实现:

public class BookList 
    Book[] books=new Book[10];   //书架存放量;
    public int size;             //已存放量
    public BookList()
    
        books[0]=new Book("西游记","吴承恩",22,"小说");
        books[1]=new Book("三国演义","罗贯中",20,"小说");
        books[2]=new Book("水浒传","施耐庵",25,"小说");
        books[3]=new Book("红楼梦","曹雪芹",28,"小说");
        this.size=4;
    

    public int getSize() 
        return size;
    

    public void setSize(int size) 
        this.size = size;
    
    public Book getBook(int pos) 
        return books[pos];
    
    public void setBook(int pos,Book book) 
        books[pos] = book;
    


2.2用户操作代码实现

用户操作,操作的是书架上的书籍,对其进行增删查改等操作。而这一切都同一个方法名和参数。

所以我们可以写一个接口,使所有的操作都继承于它,而这个接口的创建有利于用户登录后的选择操作。

接口:

public interface IOPeration 
    void work(BookList bookList);

2.2.1增加书籍

增加图书,得增加图书的各类信息

public class AddOperation implements IOPeration
           //将书架地址传入,对其修改

    public void work(BookList bookList) 
        System.out.println("新增图书!");//业务逻辑!!!
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入图书的名字:");
        String name = scanner.nextLine();
        System.out.println("请输入图书的作者:");
        String author = scanner.nextLine();
        System.out.println("请输入图书的类型:");
        String type = scanner.nextLine();
        System.out.println("请输入图书的价格:");
        int price = scanner.nextInt();
        Book book = new Book(name,author,price,type);
        int currentSize = bookList.getUsedSize();
        bookList.setBooks(currentSize,book);
        bookList.setUsedSize(currentSize+1);
        System.out.println("新增图书成功!!");
        
    

2.2.2移除书籍

当移除图书时,得先判断是否存在此书籍,然后删除,删除方式:从需要删除的书籍之后开始,将后面的每一个书籍信息覆盖在前面一个,并且将数组最后一个置空,书本量减一。

public class DelOperation implements IOPeration

    public void work(BookList bookList) 
        System.out.println("删除图书!");
        //1、找到你要删除的图书是否存在?
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要删除的图书名字:");
        String name = scanner.nextLine();//水浒传

        int currentSize = bookList.getUsedSize();
        int delIndex = -1;
        int i = 0;
        for (; i < currentSize; i++) 
            Book book = bookList.getBook(i);
            if(book.getName().equals(name)) 
                delIndex = i;
                break;
            
        

        if(i == currentSize) 
            System.out.println("没有你删除的这本书!");
            return;
        

        for (int j = delIndex; j < currentSize-1; j++) 
            //[j] = [j+1]
            Book book = bookList.getBook(j+1);
            bookList.setBooks(j,book);
        

        bookList.setBooks(currentSize-1,null);

        bookList.setUsedSize(currentSize-1);

        System.out.println("删除图书成功!");

    

2.2.3查询书籍

在书架上查找书籍,自然而然从第一步开始查找。当然也存在此书籍不存在的情况。

public class FindOperation implements IOPeration

    public void work(BookList bookList) 
        System.out.println("查找图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要查找的图书姓名:");
        String name = scanner.nextLine();//水浒传

        int currentSize = bookList.getUsedSize();
        for (int i = 0; i < currentSize; i++) 
            Book book = bookList.getBook(i);
            if(book.getName().equals(name)) 
                System.out.println("找到这本书了!");
                System.out.println(book);
                return;
            
        
       
        System.out.println("没有你要查找的这本书!");
    

2.2.4展示书架书籍信息

public class ShowOperation implements IOPeration

    public void work(BookList bookList) 
        System.out.println("打印所有图书!");
        int currentSize = bookList.getUsedSize();
        for (int i = 0; i < currentSize; i++) 
            Book book = bookList.getBook(i);
            System.out.println(book);
        
    

2.2.5借阅书籍代码

当书籍借阅之后,需要进行备注,已借出。

public class BorrowOperation implements IOPeration
 
    public void work(BookList bookList) 
        System.out.println("借阅图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要借阅的图书的名字:");
        String name = scanner.nextLine();//水浒传

        int currentSize = bookList.getUsedSize();
        for (int i = 0; i < currentSize; i++) 
            Book book = bookList.getBook(i);
            if(book.getName().equals(name)) 
                if(book.isBorrowed()) 
                    System.out.println("该书已经被借出!");
                else
                    book.setBorrowed(true);
                
                return;
            
        
        System.out.println("没有你要借阅的图书!");
    

2.2.6归还图书代码

public class ReturnOperation implements IOPeration

    public void work(BookList bookList) 
        System.out.println("归还图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要归还的图书的名字:");
        String name = scanner.nextLine();//水浒传

        int currentSize = bookList.getUsedSize();
        for (int i = 0; i < currentSize; i++) 
            Book book = bookList.getBook(i);
            if(book.getName().equals(name)) 
                book.setBorrowed(false);
                return;
            
        
        System.out.println("没有你要归还的图书!");
    

2.2.7退出系统

当操作完毕之后,需要退出系统。

public class ExitOperation implements IOPeration
    @Override
    public void work(BookList bookList) 
        System.out.println("退出系统!");
        System.exit(0);
    

3.用户登录操作

      用户,分为管理员和普通用户不同的用户身份,拥有不同的权限,因此我们需要两个菜单来供不同的用户选择操作。又因为管理员和普通用户又有许多相同的内容,为了减少代码的冗余性,以及之后的主函数多态调用,所以可以进行继承的方式。

用户代码:

public abstract class User 
    protected String name;
    public IOPeration[] ioPerations;//这里我没有分配空间

    public User(String name) 
        this.name = name;
    

    public abstract int menu();

    public void doOperation(int choice, BookList bookList)
        this.ioPerations[choice].work(bookList);
    

我们可以看见在用户操作时,创建的接口的作用利用接口,创建数组存储着不同的用户的操作。doOperation()方法,则是调用对应的用户操作方法

普通用户代码:

public class NormalUser extends User

    public NormalUser(String name) 
        super(name);
        this.ioPerations = new IOPeration[] 
                new ExitOperation(),
                new FindOperation(),
                new BorrowOperation(),
                new ReturnOperation()
        ;
    


    public int menu() 
        System.out.println("普通用户的菜单!");
        System.out.println("************************************************");
        System.out.println("     hello " + this.name +" 欢迎来到图书馆管理系统");
        System.out.println("***********1. 查找图书     2. 借阅图书***********");
        System.out.println("***********3. 归还图书     0. 退出系统!**********");
        System.out.println("************************************************");
        System.out.println("请输入你的操作:");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    

管理员代码:

public class AdminUser extends User

    public AdminUser(String name) 
        super(name);
        this.ioPerations = new IOPeration[] 
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new ShowOperation()
        ;
    

    public int menu() 
        System.out.println("管理员菜单!");
        System.out.println("************************************************");
        System.out.println("     hello " + this.name +" 欢迎来到图书馆管理系统");
        System.out.println("***********1. 查找图书     2.新增图书  ***********");
        System.out.println("***********3. 删除图书    0. 退出系统!**********");
        System.out.println("************************************************");
        System.out.println("请输入你的操作:");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    


 四.主函数的调用

        主函数的调用,重点在于 区分普通用户和管理员用户创建书架书籍调用用户操作等。

代码实例:

public class Main 

    public static User login() 
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name = scanner.nextLine();
        System.out.println("请输入你的身份:1代表管理员,0代表普通用户-》");
        int choice = scanner.nextInt();
        if(choice == 1) 
            return new AdminUser(name);
        else 
            return new NormalUser(name);
        
    
    public static void main(String[] args) 
        BookList bookList = new BookList();
        //user最终指向哪个用户??
        User user = login();
        while (true) 
            //这里调用谁的menu菜单???
            int choice = user.menu();
            //根据这个choice 来调用指定的 操作??
            user.doOperation(choice, bookList);
        
    

总结

         1. 本文章是最为基础的图书馆管理系统,但是即使再简单,也得学会封装、继承、抽象、多态、接口等知识,因为此系统建立在这些知识的基础上。

如果想了解或者回忆这些知识点,可查询 http://t.csdn.cn/Y3UsQ

        2. 如果你可以看懂,可以试着尝试,并且自己成功写出来之后,恭喜你Java的基础语法阶段你已经掌握的差不多了 ,可以开始你的新篇章了。

以上是关于c语言程序设计图书馆源代码的主要内容,如果未能解决你的问题,请参考以下文章

1、 求c语言程序图书登记管理程序。要求如下急!

求图书馆管理系统程序(c语言)

C语言编程

借同学百度知道问的,求一个C语言课程设计,关于图书馆借阅的程序。

用C语言编写学生管理系统界面

C语言编写串口通信程序在裸机下运行