,,C语言实现图书管理系统(文件数据库)

,,C语言实现图书管理系统(文件数据库)

本文主要详细介绍了用C语言实现的图书管理系统。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

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

简介

C语言的一个大作业,送上来纪念下呵呵。文笔不是很好,很多东西混在一起,但是笔记还挺多的,希望能帮助到有需要的朋友。

题目要求

简单文件数据库-模拟图书馆管理系统

涉及的知识点:文件读写、内存管理、结构定义、基本数据结构、高级格式输入输出。

要求:

写一个程序模拟图书馆管理系统。用户分为管理员和读者两类,分别显示不同的文本格式菜单,通过相应的菜单项个数进行选择。读者菜单包括借书、还书、查询图书等功能。管理员菜单包括图书和读者信息的录入、修改和删除。图书信息至少应包括:编号、书名、数量,读者信息至少应包括:编号、名称、借阅图书。可以根据书名或书号查询图书信息,以及现在有哪些读者在借阅某本书。

命令行参数如下:

libsima(-u)xxxx

第一个参数是可执行程序的名称;第二个参数是用户身份,-a表示管理员,-u表示读者;第三个参数是用户名。

实现的功能

1 管理员:

管理图书:添加图书,修改图书名称和数量,删除图书。管理读者:添加读者,修改读者姓名,删除读者。一键查看所有图书信息(序号、书名、剩余数量),一键查看所有读者信息(序号、读者姓名、借阅图书)。查询单本书的详细信息:可以根据序号和书名进行搜索,向管理员显示该书的序号、书名、剩余数量和借阅的读者。

2 读者:

借书(同一时间只能借一本书)还书一键查看所有图书信息(序号、书名、剩余数量)。

readme

您需要从cmd命令行运行程序,如图所示(注意格式)

管理员:张

进入管理员菜单格式:可执行程序名-a张(只设置一个管理员,没有添加管理员的功能)。

进入阅读器菜单格式:可执行程序名-u阅读器名(需要先通过管理员添加阅读器)

默认情况下,生成的文件放在驱动器D的根目录下(有时中间的过渡文件可能不会被删除)。

Book.txt:存储图书信息Users.txt:存储读者信息

代码

# includestdio.h

#包含io.h

int bookNumber=1;//全局变量表示书的序列号

int users number=1;//表示阅读器编号

char回车;//接收换行符

//添加书的功能

void addBook(文件*书)

{

FILE * Book1//当文件和书籍都存在时,您需要创建一个新文件来更改信息

int judge name=0;//确定书是否已经存储。

int num=1,readNum,readNumber//书籍数量存储阅读的书籍数量和阅读的书籍序号。

char name[20]={0},readName[20]={0}。//存储书籍名称来临时存储读取的字符串名称。

Printf('请输入要添加的图书名称:');

for(int I=0;i20I) //从输入流中获取要添加的图书的名称。

{

如果(i==0)

scanf('%c%c ',enter,name[I]);

其他

scanf('%c ',name[I]);

If(name[i]==10) //将最后一个换行符改为null

{

name[I]=0;

打破;

}

}

If (access ('d:/book.txt ',f _ OK)==0)//access函数确定文件是否存在,返回值为0时使用的头文件为io。

{

judge name=1;

FILE *judge=fopen('d:/Book.txt ',' r ');//读取数据文件,了解这本书是否已经存在。

而(!法官)

{

fscanf(judge,' %d %s %d ',readNumber,readName,readNum);//因为readName已经表示了地址,所以不需要提取地址字符。

fscanf(judge,' \ n ');//读入换行符,为下一行的读取做准备。

If(strcmp(name,readName)==0) //发现这本书已经存在后跳出循环。

{

法官姓名=2;//为2时表示已经存在此书,需要新建一个文件来更改信息

打破;

}

}

fclose(法官);//关闭用于判断而打开的文件

书号=阅读数1;

if(judgeName==1)

Book=fopen('d:/Book.txt ',' a ');//文件存在且不存在相同书名时向后追加内容

else if(judgeName==2)

{

Book1=fopen('d:/Book1.txt ',' w ');//新建一个文件暂存书中的信息,最后再返回源文件中

Book=fopen('d:/Book.txt ',' r ');//只读打开原本的文件

}

}

其他

Book=fopen('d:/Book.txt ',' w ');//文件不存在时新建一个文件

如果(判断名2)

{

fprintf(Book,' %d %s %d\n ',bookNumber,name,num);//写入序号书名数量和换行符

书号;

fclose(书);

}

其他

{

而(!书)

{

fscanf(Book,' %d %s %d\n ',readNumber,readName,readNum);

if(strcmp(name,readName)==0)

fprintf(Book1,' %d %s %d\n ',readNumber,readName,read num 1);//写入序号书名数量一和换行符

其他

fprintf(Book1,' %d %s %d\n ',readNumber,readName,read num);//写入序号书名数量和换行符

}

书号;

fclose(书);//关闭文件

fclose(第一册);

Book1=fopen('d:/Book1.txt ',' r ');

Book=fopen('d:/Book.txt ',' w ');//刷新原文件,再次写入正确数据

而(!feof(第一册))

{

fscanf(Book1,' %d %s %d\n ',readNumber,readName,readNum);

fprintf(Book,' %d %s %d\n ',readNumber,readName,read num);

}

fclose(书);

fclose(第一册);

删除(' d:/book1。txt’);//删除原文件

//重命名(' d:/Book1.txt ',' d:/Book。txt’);//将更改后的文件改名为原数据文件

}

printf('添加成功!\ n’);

}

//修改图书信息函数

作废变更书(文件*书籍)

{

while(1)

{

char name[20]={0},readName[20]={0} .

printf('编辑图书信息\ n’);

printf('[-]\ n ');

printf('\t请选择需要修改的信息:\n 1 .修改图书名称\n 2 .修改图书数量\n 3 .返回主菜单\ n’);

printf('[-]\ n ');

(同Internationalorganizations)国际组织函数,readNumber,readNum,find=0;//功能选择读取到的序号读取到的数量是否找到此书

//判断修改后的书名是否和原有的重复

Book=fopen('d:/Book.txt ',' r ');//只读打开原文件

int ifNumber

char ifName[20]={ 0 };

FILE *如果用户存在=fopen(' d:/users 1。txt ',' w ');

而(!书)

{

fscanf(Book,' %d %s %d\n ',ifNumber,ifName,ifNum);

fprintf(ifUserExisted,' %d %s %d\n ',ifNumber,ifName,ifNum);

}

fclose(如果用户存在);

fclose(书);

scanf('%d ',函数);

如果(函数==3)

{

删除(' d:/book1。txt’);//有时会多余创造了文件,需要删除

返回;

}

Book=fopen('d:/Book.txt ',' r ');//只读打开原文件

FILE *Book1=fopen('d:/Book1.txt ',' w ');//先新建一个文件存储更改后的信息

printf('请输入需要更改的图书名:');

for(int I=0;i20i ) //从输入流取得需要添加的书本名字

{

如果(i==0)

scanf('%c%c ',enter,name[I]);

其他

scanf('%c ',name[I]);

if(name[i]==10) //将最后的换行符改为空

{

name[I]=0;

打破;

}

}

如果(函数==1)

{

而(!书)

{

fscanf(Book,' %d %s %d\n ',readNumber,readName,readNum);

if(strcmp(name,readName)==0)

{

find=1;//找到了此书

printf('您要将书名%s更改为:',名称);

字符更改名称[20]={ 0 };

for(int I=0;i20i ) //从输入流取得需要更改的书本名字

{

如果(i==0)

scanf('%c ',更改名称[I]);

其他

scanf('%c ',更改名称[I]);

if(changeName[i]==10) //将最后的换行符改为空

{

更改名称[I]=0;

打破;

}

}

如果用户存在=fopen(' d:/users 1。txt ',' r ');//判断更改后的名字是否会和已存在的书名冲突

而(!feof(如果用户存在))

{

fscanf(ifUserExisted,' %d %s %d\n ',ifNumber,ifName,ifNum);

if (strcmp(changeName,ifName)==0)

{

printf('更改失败:已存在名称为%s的图书\n ',更改名称);

fclose(如果用户存在);

fclose(书);//关闭文件

fclose(第一册);

返回;

}

}

fprintf(Book1,' %d %s %d\n ',readNumber,changeName,read num);//写入序号更改后的书名数量和换行符

}

其他

fprintf(Book1,' %d %s %d\n ',readNumber,readName,read num);//写入序号书名数量和换行符

}

if(find==0) //若没找到此书

{

printf('没有找到此书!请重新输入\ n’);

打破;

}

fclose(书);//关闭文件

fclose(第一册);

Book1=fopen('d:/Book1.txt ',' r ');

Book=fopen('d:/Book.txt ',' w ');//刷新原文件,再次写入正确数据

而(!feof(第一册))

{

fscanf(Book1,' %d %s %d\n ',readNumber,readName,readNum);

fprintf(Book,' %d %s %d\n ',readNumber,readName,read num);

}

fclose(书);

fclose(第一册);

删除(' d:/book1。txt’);//删除原文件

//重命名(' d:/Book1.txt ',' d:/Book。txt’);//将更改后的文件改名为原数据文件此方法成功率低!

printf('更改成功!\ n’);

}

else if(function==2)

{

而(!书)

{

fscanf(Book,' %d %s %d\n ',readNumber,readName,readNum);

if(strcmp(name,readName)==0)

{

find=1;//找到了此书

printf('您要将数量%d更改为:',读num);

int new num=0;

scanf('%d ',新编号);

fprintf(Book1,' %d %s %d\n ',readNumber,readName,new num);//写入序号书名更改后的数量和换行符

}

其他

fprintf(Book1,' %d %s %d\n ',readNumber,readName,read num);//写入序号书名数量和换行符

}

if(find==0) //若没找到此书

{

printf('没有找到此书!请重新输入');

打破;

}

fclose(书);//关闭文件

fclose(第一册);

Book1=fopen('d:/Book1.txt ',' r ');

Book=fopen('d:/Book.txt ',' w ');//刷新原文件,再次写入正确数据

而(!feof(第一册))

{

fscanf(Book1,' %d %s %d\n ',readNumber,readName,readNum);

fprintf(Book,' %d %s %d\n ',readNumber,readName,read num);

}

fclose(书);

fclose(第一册);

删除(' d:/book1。txt’);//删除原文件

//重命名(' d:/Book1.txt ',' d:/Book。txt’);//将更改后的文件改名为原数据文件此方法易出现问题!

printf('更改成功!\ n’);

}

其他

{

printf('输入格式有误,请重新输入!');

打破;

}

}

}

//删除书籍的函数

作废戴尔布克(文件*书)

{

while(1)

{

printf('请输入您想删除的图书名:(输入-r返回上一级)');

char del name[20]={ 0 };

for(int I=0;i20i ) //从输入流取得需要删除的书本名字

{

//if(i==0)

//scanf('%c%c ',enter,del name[I]);

//否则

scanf('%c ',delName[I]);

if(delName[i]==10) //将最后的换行符改为空

{

del name[I]=0;

打破;

}

}

if(strcmp(delName,'-r')==0) //输入返回上一级的指示后返回

返回;

int readNumber,readNum,find=0;

char readName[20]={ 0 };

Book=fopen('d:/Book.txt ',' r ');

FILE *Book1=fopen('d:/Book1.txt ',' w ');

而(!书)

{

fscanf(Book,' %d %s %d\n ',readNumber,readName,readNum);

if(strcmp(delName,readName)==0)

{

find=1;//找到了此书

//因为要删除此条信息,所以不再向新文件中输出它

}

其他

{

if(find==1)

fprintf(Book1,' %d %s %d\n ',readNumber-1,readName,read num);//排在删除后的写入-1的序号书名数量和换行符

其他

fprintf(Book1,' %d %s %d\n ',readNumber,readName,read num);//删除前的写入的序号书名数量和换行符

}

}

if(find==0) //若没找到此书

{

printf('没有找到此书!请重新输入\ n’);

继续;

}

fclose(书);

fclose(第一册);

Book1=fopen('d:/Book1.txt ',' r ');

Book=fopen('d:/Book.txt ',' w ');//刷新原文件,再次写入正确数据

而(!feof(第一册))

{

fscanf(Book1,' %d %s %d\n ',readNumber,readName,readNum);

fprintf(Book,' %d %s %d\n ',readNumber,readName,read num);

}

fclose(书);

fclose(第一册);

删除(' d:/book1。txt’);//删除原文件

printf('删除成功!\ n’);

}

}

//展示全部图书的函数

void showBook(文件*书籍)

{

printf(' Library \ n ');

printf('[-]\ n ');

printf('\t序号\t书名\t\t数量\ n’);

char readName[20]={ 0 };

int readNum,readNum

Book=fopen('d:/Book.txt ',' r ');

而(!书)

{

fscanf(Book,' %d %s %d\n ',readNumber,readName,readNum);

printf('\t%d\t%s\t\t%d\n ',readNumber,readName,read num);

}

fclose(书);

printf('[-]\ n ');

}

//向管理员展示全部用户的函数

无效显示用户(文件*用户)

{

printf(' Users \ n ');

printf('[-]\ n ');

printf('\t序号\t姓名\t所借阅图书\ n’);

char readName[20]={0},借书[20]={ 0 };

int readNumber

Users=fopen('d:/Users.txt ',' r ');

而(!用户数)

{

fscanf(用户,' %d %s %s\n ',readNumber,readName,借书);

printf('\t%d\t%s\t%s\n ',readNumber,readName,借书);

}

fclose(用户);

printf('[-]\ n ');

}

//添加用户函数

void addUsers(文件*用户)

{

文件*用户1;//当文件和用户都存在时需要新建文件来更改信息

int judge name=0;//判断此用户是否已经存在

int num=1,readNumber//存放读到的书本数量读到的用户序号

char name[20]={0},readName[20]={0},borrowBook[20]={'None'},read borrow book[20]={ ' None ' };//存放用户名字暂时存放读到的字符串名

printf('请输入要添加的用户名:');

for(int I=0;i20i ) //从输入流取得需要添加的用户名

{

如果(i==0)

scanf('%c%c ',enter,name[I]);

其他

scanf('%c ',name[I]);

if(name[i]==10) //将最后的换行符改为空

{

name[I]=0;

打破;

}

}

if(access('d:/Users.txt ',F_OK)==0) //access函数判断文件是否存在,存在返回值为0 使用的头文件为超正析象管

{

法官姓名=1;

FILE *judge=fopen('d:/Users.txt ',' r ');//读取数据文件,查找是否已经存在此用户

而(!法官)

{

fscanf(judge,' %d %s %s ',readNumber,readName,readBorrowBook);//由于readName已经表示地址,不需要取地址符

fscanf(judge,' \ n ');//读入换行符,准备下一行的读取

if(strcmp(name,readName)==0) //发现已经存在此用户后跳出循环

{

printf('已经存在此用户,无法添加。');//已经存在此用户,返回

返回;

}

}

fclose(法官);//关闭用于判断而打开的文件

用户数=阅读数1;

if(judgeName==1)

Users=fopen('d:/Users.txt ',' a ');//文件存在且不存在相同用户时向后追加内容

}

其他

Users=fopen('d:/Users.txt ',' w ');//文件不存在时新建一个文件

fprintf(用户,' %d %s %s\n ',usersNumber,name,借书);//写入序号用户名所借书和换行符

用户数量

fclose(用户);

printf('添加成功!\ n’);

}

//修改读者信息函数

无效更改用户(文件*用户)

{

while(1)

{

char name[20]={0},readName[20]={0},borrow book[20]={ ' None ' };

printf('编辑读取器名称\ n’);

printf('[-]\ n ');

printf('\t请选择需要修改的信息:\n 1 .修改读者名称\n 2 .返回主菜单\ n’);

printf('[-]\ n ');

(同Internationalorganizations)国际组织函数,readNumber,find=0;//功能选择读取到的序号是否找到此书

Users=fopen('d:/Users.txt ',' r ');//只读打开原文件

//此处创建如果用户存在,一会用于查找是否存在相同的名字

int ifNumber

char ifName[20]={0},if borrow[20]={ 0 };

FILE *如果用户存在=fopen(' d:/book1。txt ',' w ');

而(!用户数)

{

fscanf(用户,' %d %s %s\n ',ifNumber,ifName,if borrow);

fprintf(ifUserExisted,' %d %s %s\n ',ifNumber,ifName,if borrow);

}

fclose(如果用户存在);

fclose(用户);

Users=fopen('d:/Users.txt ',' r ');//只读打开原文件

scanf('%d ',函数);

如果(函数==2)

{

删除(' d:/users 1。txt’);//有时会多余创造了文件,需要删除

返回;

}

FILE * users 1=fopen(' d:/users 1。txt ',' w ');//先新建一个文件存储更改后的信息

printf('请输入需要更改的用户名:');

for(int I=0;i20i ) //从输入流取得需要更改的读者名字

{

如果(i==0)

scanf('%c%c ',enter,name[I]);

其他

scanf('%c ',name[I]);

if(name[i]==10) //将最后的换行符改为空

{

name[I]=0;

打破;

}

}

如果(函数==1)

{

而(!用户数)

{

fscanf(用户,' %d %s %s\n ',readNumber,readName,借书);

if(strcmp(name,readName)==0)

{

find=1;//找到了此读者

printf('您要将读者名" %s "更改为:',名称);

字符更改名称[20]={ 0 };

for(int I=0;i20i ) //从输入流取得需要更改的用户名字

{

如果(i==0)

scanf('%c ',更改名称[I]);

其他

scanf('%c ',更改名称[I]);

if(changeName[i]==10) //将最后的换行符改为空

{

更改名称[I]=0;

打破;

}

}

如果用户存在=fopen(' d:/book1。txt ',' r ');//判断更改后的名字是否会和存在的用户名冲突

而(!feof(如果用户存在))

{

fscanf(ifUserExisted,' %d %s %s\n ',ifNumber,ifName,if borrow);

if (strcmp(changeName,ifName)==0)

{

printf('更改失败:已存在名称为%s的读者\n ',更改名称);

fclose(如果用户存在);

fclose(用户);//关闭文件

fclose(用户1);

返回;

}

}

fprintf(Users1,' %d %s %s\n ',readNumber,changeName,借书);//写入序号更改后的读者名所借书籍和换行符

}

其他

fprintf(Users1,' %d %s %s\n ',readNumber,readName,borrow book);//写入序号书名数量和换行符

}

if(find==0) //若没找到此读者

{

printf('没有找到此读者!请重新输入\ n’);

打破;

}

fclose(用户);//关闭文件

fclose(用户1);

Users1=fopen('d:/Users1.txt ',' r ');

Users=fopen('d:/Users.txt ',' w ');//刷新原文件,再次写入正确数据

而(!feof(用户1))

{

fscanf(Users1,' %d %s %s\n ',readNumber,readName,borrow book);

fprintf(用户,' %d %s %s\n ',readNumber,readName,借书);

}

fclose(用户);

fclose(用户1);

删除(' d:/users 1。txt’);//删除原文件

//重命名(' d:/Book1.txt ',' d:/Book。txt’);//将更改后的文件改名为原数据文件此方法成功率低!

printf('更改成功!\ n’);

}

其他

{

printf('输入格式有误,请重新输入!\ n’);

打破;

}

}

}

//删除用户的函数

无效消色器(文件*用户)

{

while(1)

{

printf('请输入您想删除的读者名:(输入-r返回上一级)');

char del name[20]={ 0 };

for(int I=0;i20i ) //从输入流取得需要删除的用户名字

{

//if(i==0)

//scanf('%c%c ',enter,del name[I]);

//否则

scanf('%c ',delName[I]);

if(delName[i]==10) //将最后的换行符改为空

{

del name[I]=0;

打破;

}

}

if(strcmp(delName,'-r')==0) //输入返回上一级的指示后返回

返回;

int readNumber,find=0;

char readName[20]={0},借书[20]={ ' None ' };

Users=fopen('d:/Users.txt ',' r ');

FILE * users 1=fopen(' d:/users 1。txt ',' w ');

而(!用户数)

{

fscanf(用户,' %d %s %s\n ',readNumber,readName,借书);

if(strcmp(delName,readName)==0)

{

find=1;//找到了此读者

//因为要删除此条信息,所以不再向新文件中输出它

}

其他

{

if(find==1)

fprintf(Users1,' %d %s %s\n ',readNumber-1,readName,借书);//排在删除后的写入-1的序号读者名所借书和换行符

其他

fprintf(Users1,' %d %s %s\n ',readNumber,readName,borrow book);//删除前的写入的序号读者名所借书和换行符

}

}

? if(find==0) ?//若没找到此读者 ? ? ? ? { ? ? ? ? ? ? printf("没有找到此读者!请重新输入\n"); ? ? ? ? ? ? continue; ? ? ? ? } ? ? ? ? fclose(Users1); ? ? ? ? fclose(Users); ? ? ? ? Users1 = fopen("d:/Users1.txt", "r"); ? ? ? ? Users = fopen("d:/Users.txt", "w+"); ? //刷新原文件,再次写入正确数据 ? ? ? ? while(!feof(Users1)) ? ? ? ? { ? ? ? ? ? ? fscanf(Users1, "%d %s %s\n", &readNumber, readName, borrowBook); ? ? ? ? ? ? fprintf(Users, "%d %s %s\n", readNumber, readName, borrowBook); ? ? ? ? } ? ? ? ? fclose(Users1); ? ? ? ? fclose(Users); ? ? ? ? remove("d:/Users1.txt"); ?//删除原文件 ? ? ? ? ? ? ? ? ? ? ? printf("删除成功!\n"); ? ? } } //借阅函数 void borrowBooking(char readerName[]) { ? ? printf("请输入您想借阅的图书名:"); ? ? char name[20] = {0}; ? ? for(int i = 0; i<20; i++) ?//从输入流取得图书名 ? ? { ? ? ? ? if(i==0) ? ? ? ? ? ? scanf("%c%c", &enter,&name[i]); ? ? ? ? else ? ? ? ? ? ? scanf("%c",&name[i]); ? ? ? ? if(name[i]==10) ?//将最后的换行符改为空 ? ? ? ? { ? ? ? ? ? ? name[i]=0; ? ? ? ? ? ? break; ? ? ? ? } ? ? } ? ? char readName[20] = {0}; ? ? int readNumber, readNum, find = 0; ? ? //更改被借阅的图书的信息 ? ? FILE *Book = fopen("d:/Book.txt", "r"); ? ? FILE *Book1 = fopen("d:/Book1.txt", "w"); ? ? while (!feof(Book)) ? ? { ? ? ? ? fscanf(Book, "%d %s %d\n", &readNumber, readName, &readNum); ? ? ? ? if(strcmp(name, readName)==0) ? ? ? ? { ? ? ? ? ? ? ? find = 1; ? ? ? ? ? ? if(readNum<1) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("借阅失败:无剩余可借阅的%s!\n", readName); ? ? ? ? ? ? ? ? return; ? ? ? ? ? ? } ? ? ? ? ? ? fprintf(Book1, "%d %s %d\n", readNumber, readName, readNum-1); //若找到需要借阅的图书,则在此书数量上减1? ? ? ? ? }? ? ? ? ? else ? ? ? ? ? ? fprintf(Book1, "%d %s %d\n", readNumber, readName, readNum); ?//删除前的写入的序号 读者名 所借书和换行符? ? ? } ? ? if(find==0) ?//若没找到此书 ? ? { ? ? ? ? printf("借阅失败:没有找到此书!\n"); ? ? ? ? return; ? ? } ? ? fclose(Book); ? ? fclose(Book1); ? ? Book1 = fopen("d:/Book1.txt", "r"); ? ? Book = fopen("d:/Book.txt", "w+"); ? //刷新原文件,再次写入正确数据 ? ? while(!feof(Book1)) ? ? { ? ? ? ? fscanf(Book1, "%d %s %d\n", &readNumber, readName, &readNum); ? ? ? ? fprintf(Book, "%d %s %d\n", readNumber, readName, readNum); ? ? } ? ? fclose(Book1); ? ? fclose(Book); ? ? remove("d:/Book1.txt"); ?//删除原文件? ? ? //更改读者的信息 ? ? FILE *Users = fopen("d:/Users.txt", "r"); ? ? FILE *Users1 = fopen("d:/Users1.txt", "w"); ? ? char borrowBook[20] = {"None"}; ? ? while (!feof(Users)) ? ? { ? ? ? ? fscanf(Users, "%d %s %s\n", &readNumber, readName, borrowBook); ? ? ? ? if(strcmp(readerName, readName)==0) ? ? ? ? ? ? fprintf(Users1, "%d %s %s\n", readNumber, readName, name); //在读者的借阅图书上写上所借阅的图书名? ? ? ? ? else ? ? ? ? ? ? fprintf(Users1, "%d %s %s\n", readNumber, readName, borrowBook);? ? ? } ? ? fclose(Users1); ? ? fclose(Users); ? ? Users1 = fopen("d:/Users1.txt", "r"); ? ? Users = fopen("d:/Users.txt", "w+"); ? //刷新原文件,再次写入正确数据 ? ? while(!feof(Users1)) ? ? { ? ? ? ? fscanf(Users1, "%d %s %s\n", &readNumber, readName, borrowBook); ? ? ? ? fprintf(Users, "%d %s %s\n", readNumber, readName, borrowBook); ? ? } ? ? fclose(Users1); ? ? fclose(Users); ? ? remove("d:/Users1.txt"); ?//删除原文件 ?有时候还是删不掉 ? ? printf("借阅成功!\n");? } //还书函数 void returnBooking(char readerName[], char borrowBook[]) { ? ? char readName[20] = {0}; ? ? int readNumber, readNum, find = 0; ? ? //更改被还回的图书的信息 ? ? FILE *Book = fopen("d:/Book.txt", "r"); ? ? FILE *Book1 = fopen("d:/Book1.txt", "w"); ? ? while (!feof(Book)) ? ? { ? ? ? ? fscanf(Book, "%d %s %d\n", &readNumber, readName, &readNum); ? ? ? ? if(strcmp(borrowBook, readName)==0) ? ? ? ? { ? ? ? ? ? ? fprintf(Book1, "%d %s %d\n", readNumber, readName, readNum+1); //若找到被还的图书,则在此书数量上加1 ? ? ? ? ? ? ? find = 1; ? ? ? ? } ? ? ? ? else ? ? ? ? ? ? fprintf(Book1, "%d %s %d\n", readNumber, readName, readNum); //不是还回的书? ? ? } ? ? fclose(Book); ? ? fclose(Book1); ? ? Book1 = fopen("d:/Book1.txt", "r"); ? ? Book = fopen("d:/Book.txt", "w+"); ? //刷新原文件,再次写入正确数据 ? ? while(!feof(Book1)) ? ? { ? ? ? ? fscanf(Book1, "%d %s %d\n", &readNumber, readName, &readNum); ? ? ? ? fprintf(Book, "%d %s %d\n", readNumber, readName, readNum); ? ? } ? ? bookNumber = readNumber+1; ? ? fclose(Book1); ? ? fclose(Book); ? ? remove("d:/Book1.txt"); ?//删除原文件 ? ? if(find==0) ?//还书时没有书城中没有此书,直接添加一本 ? ? { ? ? ? ? FILE *Book; ? ? ? ? Book = fopen("d:/Book.txt", "a"); ? ? ? ? ? fprintf(Book, "%d %s 1\n", bookNumber, borrowBook); ?//写入序号 书名 数量和换行符 ? ? ? ? bookNumber++;? ? ? ? ? fclose(Book); ? ? } ? ? //更改读者的信息 ? ? FILE *Users = fopen("d:/Users.txt", "r"); ? ? FILE *Users1 = fopen("d:/Users1.txt", "w"); ? ? char rborrowBook[20] = {"None"}; ? ? while (!feof(Users)) ? ? { ? ? ? ? fscanf(Users, "%d %s %s\n", &readNumber, readName, rborrowBook); ? ? ? ? if(strcmp(readerName, readName)==0) ? ? ? ? ? ? fprintf(Users1, "%d %s %s\n", readNumber, readName, "None"); //还回书后所借阅图书变为"None"? ? ? ? ? else ? ? ? ? ? ? fprintf(Users1, "%d %s %s\n", readNumber, readName, rborrowBook);? ? ? } ? ? fclose(Users1); ? ? fclose(Users); ? ? Users1 = fopen("d:/Users1.txt", "r"); ? ? Users = fopen("d:/Users.txt", "w+"); ? //刷新原文件,再次写入正确数据 ? ? while(!feof(Users1)) ? ? { ? ? ? ? fscanf(Users1, "%d %s %s\n", &readNumber, readName, rborrowBook); ? ? ? ? fprintf(Users, "%d %s %s\n", readNumber, readName, rborrowBook); ? ? } ? ? fclose(Users1); ? ? fclose(Users); ? ? remove("d:/Users1.txt"); ?//删除原文件 ?有时候还是删不掉 ? ? printf("成功还回%s\n", borrowBook); } //单独查询功能,根据编号或书名查询书被哪些人借走 void searchBook() { ? ? while (1) ? ? { ? ? ? ? int function = 0; ? ? ? ? FILE *Book = fopen("d:/Book.txt", "r"); ? ? ? ? FILE *Users = fopen("d:/Users.txt", "r"); ? ? ? ? char readerName[20] = {0}, bookName[20] = {0}, borrowBook[20] = {0}, name[20] = {0}; ? ? ? ? int bookNumber, bookNum, find = 0, readerNumber; ? ? ? ? printf(" ? ? ? ? ? ? ? ? ? Search ? ? ? ? ? ? ? ? ? \n"); ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? printf("\t\t请选择查询功能:\n\t1.根据编号查询\n\t2.根据书名查询\n\t3.返回主界面\n"); ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? scanf("%d",&function); // 输入需要的功能 ? ? ? ? switch (function) ? ? ? ? { ? ? ? ? ? ? case 1: ? ? ? ? ? ? ? ? printf("您要查找的书序号是:"); ? ? ? ? ? ? ? ? scanf("%d",&function); // 输入需要查找的图书编号 ? ? ? ? ? ? ? ? while(!feof(Book)) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? fscanf(Book, "%d %s %d\n", &bookNumber, bookName, &bookNum); //由于bookName已经表示地址,不需要取地址符 ? ? ? ? ? ? ? ? ? ? if(bookNumber==function) ?//发现查找的书后跳出循环 ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? find = 1;//找到书 ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if(find==0) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? printf("没有找到编号为%d的图书。\n",function); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? printf(" ? ? ? ? ? ? ? Search Result ? ? ? ? ? ? ? ?\n"); ? ? ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? ? ? find = 0;//需要在查找谁借阅时再次使用 ? ? ? ? ? ? ? ? printf("\t编号:\t\t%d\n\t书名:\t\t%s\n\t剩余数量:\t%d\n\t",bookNumber, bookName, bookNum); ? ? ? ? ? ? ? ? while (!feof(Users)) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? fscanf(Users, "%d %s %s\n", &readerNumber, readerName, borrowBook);//遍历读者查找谁借阅了这本书 ?? ? ? ? ? ? ? ? ? ? ? if (strcmp(borrowBook, bookName)==0) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? if(find==0) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? find = 1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("借阅此书的读者:"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("%s",readerName); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf(" ,%s",readerName); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if(find==0) ? ? ? ? ? ? ? ? ? ? printf("还没有读者借阅此书。\n"); ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? ? ? printf("输入回车返回...\n"); ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? case 2: ? ? ? ? ? ? ? ? printf("您要查找的书名是:"); ? ? ? ? ? ? ? ? scanf("%s",name); // 输入需要查找的图书名 ? ? ? ? ? ? ? ? while(!feof(Book)) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? fscanf(Book, "%d %s %d\n", &bookNumber, bookName, &bookNum); //由于bookName已经表示地址,不需要取地址符 ? ? ? ? ? ? ? ? ? ? if(strcmp(bookName, name)==0) ?//发现查找的书后跳出循环 ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? find = 1;//找到书 ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if(find==0) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? printf("没有找到名称为%s的图书。\n",name); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? printf(" ? ? ? ? ? ? ? Search Result ? ? ? ? ? ? ? ?\n"); ? ? ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? ? ? find = 0;//需要在查找谁借阅时再次使用 ? ? ? ? ? ? ? ? printf("\t编号:\t\t%d\n\t书名:\t\t%s\n\t剩余数量:\t%d\n\t",bookNumber, bookName, bookNum); ? ? ? ? ? ? ? ? while (!feof(Users)) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? fscanf(Users, "%d %s %s\n", &readerNumber, readerName, borrowBook);//遍历读者查找谁借阅了这本书 ?? ? ? ? ? ? ? ? ? ? ? if (strcmp(borrowBook, bookName)==0) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? if(find==0) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? find = 1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("借阅此书的读者:"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("%s",readerName); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf(" ,%s",readerName); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if(find==0) ? ? ? ? ? ? ? ? ? ? printf("还没有读者借阅此书。\n"); ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? ? ? printf("输入回车返回...\n"); ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? case 3: ? ? ? ? ? ? ? ? return; ? ? ? ? ? ? default: ? ? ? ? ? ? ? ? printf("您输入的格式有误,请重新输入\n"); ? ? ? ? ? ? ? ? break; ? ? ? ? } ? ? ? ? fclose(Book); ? ? ? ? fclose(Users); ? ? } } int main(int argc, char *argv[]) ?//需要从命令行读入参数 { ? ? char identity1[] = "-u"; ?//读者身份 ? ? char identity2[] = "-a"; ?//管理员身份 ? ? FILE *Book, *Users; ?//两个文件分别存储图书信息和读者信息。 ?? ?int function1, function2; //功能选项 ? ? /*调试用 ? ? char readerName[20] = {0}; ? ? int test = 0; ? ? scanf("%d %s",&test, readerName); ? ? if(test==1) ? ? */ ? ? if(strcmp(argv[1], identity2)==0) ?//管理员操作界面 ? ? { ? ? ? ? char Administrator[20] = "Zhang"; ? ? ? ? if(strcmp(Administrator, argv[2])==0) ? ? ? ? { ? ? ? ? ? ? ? ? while(1) ? ? ? ? ? ? { ?? ? ? ? ? ? ? ? ? printf(" ? ? ? ? ? ? ? ? ? ?menu ? ? ? ? ? ? ? ? ? ?\n"); ? ? ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? ? ? printf(" ? ? 管理员您好!请选择您要使用的功能:\n ?1.新增或修改图书信息\n ?2.新增或修改读者信息\n ?3.查看全部馆藏书籍\n ?4.查看全部读者及其借阅信息\n ?5.图书详情查询\n ?6.结束程序\n"); ? ? ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? ? ? scanf("%d",&function1); ? ? ? ? ? ? ? ? ? switch (function1) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? case 1: ?//更改图书信息 ? ? ? ? ? ? ? ? ? ? ? ? printf(" ? ? ? ? ? ? ? ? ?Books ? ? ? ? ? ? ? ? ? ? \n"); ? ? ? ? ? ? ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? ? ? ? ? ? ? printf("\t请选择要对图书进行的操作:\n ?1.添加图书信息\n ?2.修改图书信息\n ?3.删除图书信息\n ?4.返回主菜单\n"); ? ? ? ? ? ? ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? ? ? ? ? ? ? scanf("%d",&function2); ?//输入第二级操作指令 ? ? ? ? ? ? ? ? ? ? ? ? switch (function2) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 1: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? addBook(Book); ?//调用添加图书函数 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 2: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? changeBook(Book); ?//修改函数 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 3: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? scanf("%c",&enter); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? delBook(Book); ?//删除函数 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 4: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? default: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("输入的值令有误,请重新输入"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? case 2: ?//更改读者信息 ? ? ? ? ? ? ? ? ? ? ? ? printf(" ? ? ? ? ? ? ? ? ?Readers ? ? ? ? ? ? ? ? ? \n"); ? ? ? ? ? ? ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? ? ? ? ? ? ? printf("\t请选择要对用户进行的操作:\n ?1.添加用户信息\n ?2.修改用户信息\n ?3.删除用户信息\n"); ? ? ? ? ? ? ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? ? ? ? ? ? ? scanf("%d",&function2); ?//输入第二级操作指令 ? ? ? ? ? ? ? ? ? ? ? ? switch (function2) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 1: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? addUsers(Users); ?//添加用户信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 2: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? changeUsers(Users); ?//修改用户信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? case 3: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? scanf("%c",&enter); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? delUsers(Users); ?//删除用户信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? default: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("输入的值令有误,请重新输入"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? case 3: ? ? ? ? ? ? ? ? ? ? ? ? showBook(Book); ? ? ? ? ? ? ? ? ? ? ? ? printf("输入回车返回...\n"); ? ? ? ? ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? case 4: ? ? ? ? ? ? ? ? ? ? ? ? showUsers(Users); ? ? ? ? ? ? ? ? ? ? ? ? printf("输入回车返回...\n"); ? ? ? ? ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? case 5: ? ? ? ? ? ? ? ? ? ? ? ? searchBook(); ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? case 6: ? ? ? ? ? ? ? ? ? ? ? ? printf("感谢您的使用,再见!"); ? ? ? ? ? ? ? ? ? ? ? ? return 0; ? ? ? ? ? ? ? ? ? ? default: ? ? ? ? ? ? ? ? ? ? ? ? printf("输入格式有误,请重新输入!"); ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? else ? ? ? ? ? ? printf("管理员名有误,请重新输入!"); ? ? } ? ? /* ? ? else if(test == 2) ? ? */ ? ? ? ? ? ? ? ? ? ? ?? ? ? else if (strcmp(argv[1], identity1)==0) ?//读者的操作界面 ? ? { ? ? ? ? char readName[20] = {0}, borrowBook[20] = {"None"}; ? ? ? ? int readNumber,find = 0; ? ? ? ? FILE *Users = fopen("d:/Users.txt","r"); ?//需要判断是否存在此用户 ? ? ? ? while (!feof(Users)) ? ? ? ? { ? ? ? ? ? ? fscanf(Users, "%d %s %s\n", &readNumber, readName, borrowBook); ? ? ? ? ? ? if(strcmp(argv[2], readName)==0) ? ? ? ? ? ? { ?? ? ? ? ? ? ? ? ? find = 1; ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? fclose(Users); ? ? ? ? if(find==0) ? ? ? ? { ? ? ? ? ? ? printf("不存在用户名为%s的读者!", argv[2]); ? ? ? ? ? ? return 0; ? ? ? ? } ? ? ? ? while (1) ? ? ? ? { ? ? ? ? ? ? FILE *Users = fopen("d:/Users.txt","r"); ?//刷新用户的借阅信息 ? ? ? ? ? ? while (!feof(Users)) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? fscanf(Users, "%d %s %s\n", &readNumber, readName, borrowBook); ? ? ? ? ? ? ? ? if(strcmp(argv[2], readName)==0) ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? ? ? fclose(Users); ? ? ? ? ? ? printf(" ? ? ? ? ? ? ? ? ? ?menu ? ? ? ? ? ? ? ? ? ?\n"); ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? printf("\t读者%s您好!请选择您要使用的功能:\n ?1.借阅图书\n ?2.还回图书\n ?3.查看全部馆藏书籍\n ?4.结束程序\n", argv[2]); ? ? ? ? ? ? printf("[------------------------------------------]\n"); ? ? ? ? ? ? scanf("%d",&function1); ? ? ? ? ? ? ? switch (function1) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? case 1: ?//借阅图书 ? ? ? ? ? ? ? ? ? ? if(strcmp(borrowBook, "None")==0) ? ? ? ? ? ? ? ? ? ? ? ? borrowBooking(argv[2]); ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? printf("您已经借阅图书,请先还书再进行借阅操作。\n"); ? ? ? ? ? ? ? ? ? ? printf("输入回车返回...\n"); ? ? ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 2: ?//还书 ? ? ? ? ? ? ? ? ? ? if(strcmp(borrowBook, "None")!=0) ? ? ? ? ? ? ? ? ? ? ? ? returnBooking(argv[2], borrowBook); ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? printf("您当前还没有借阅图书。\n"); ? ? ? ? ? ? ? ? ? ? printf("输入回车返回...\n"); ? ? ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 3: ? ? ? ? ? ? ? ? ? ? showBook(Book); ? ? ? ? ? ? ? ? ? ? printf("输入回车返回...\n"); ? ? ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? ? ? enter = getchar(); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case 4: ? ? ? ? ? ? ? ? ? ? printf("感谢您的使用,再见!"); ? ? ? ? ? ? ? ? ? ? return 0; ? ? ? ? ? ? ? ? default: ? ? ? ? ? ? ? ? ? ? printf("输入格式有误,请重新输入!"); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? else ? ? ? ? printf("您输入的格式有误,请重新输入!"); ? ? return 0; }

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

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些
  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些,关系型数据库与非关系型数据库简介
  • 关于redis数据库入门详细介绍图片,redis数据库的使用,关于Redis数据库入门详细介绍
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 什么是分库分表,为什么要进行分库分表-,分库分表的区别,数据库分库分表是什么,什么情况下需要用分库分表
  • vb中adodb连接数据库,
  • treeview控件绑定数据,wpf treeview数据绑定,详解TreeView绑定数据库
  • sql的多表查询,数据库如何实现多表查询
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库,SQLServer2019 数据库的基本使用之图形化界面操作的实现
  • sql数据库定时备份怎么弄,mysql 定期备份
  • sql数据库定时备份怎么弄,mysql 定期备份,MySQL 数据库定时备份的几种方式(全面)
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar,SQL中varchar和nvarchar的基本介绍及其区别
  • 留言与评论(共有 条评论)
       
    验证码: