c语言图书管理系统

知识
张雷老师 2019-07-17 16:54:12
http://ask.csdn.net/questions/155275劳烦各位大神帮忙调试调试谢谢了只有添加和遍历函数能用其他都会出现乱码不知道怎么办了...

http://ask.csdn.net/questions/155275

劳烦各位大神帮忙调试调试 谢谢了
只有添加和遍历函数能用 其他都会出现乱码 不知道怎么办了

展开

#include<windows.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct book{
char number[100];
char tittle[100];
char writer[100];
char publisher[100];
char date[100];
char price[100];
char status[100];
char reader[100];
};
void search_book();
void borrow_book();
void return_book();
void add_book();
void delete_book();
void modify_book();
void scan_book();
int main()
{
int c1=0,c2,c3;
int l,x,z;
while(1)
{
system("color 2C");
printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\t\t\t| * - * - * -图书管理系统 * - * - * |\n");
printf("\t\t\t* [1] 用户登录 *\n");
printf("\t\t\t* [2] 管理员登录 *\n");
printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\n");
printf("请选择你的操作 :");
scanf("%d",&c1);
system("cls");
break;
}
if(c1==1)
{
while(1){
system("color 2C");
printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\t\t\t| * - * - * -图书管理系统 * - * - * |\n");
printf("\t\t\t* [1] 查询图书 *\n");
printf("\t\t\t| [2] 借阅图书 |\n");
printf("\t\t\t* [3] 借还图书 *\n");
printf("\t\t\t* [4] 浏览图书信息 *\n");
printf("\t\t\t| [5] 退出图书管理系统 |\n");
printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\n");
printf("请选择你的操作 :");
scanf("%d",&c2);
getchar();

switch(c2)
{
case 1:search_book(); break;
case 2:borrow_book(); break;
case 3:return_book(); break;
case 4:scan_book(); break;
case 5:system("cls"); return 0;
}
}
}
if(c1==2)
{
while(1){
system("color 2C");
printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\t\t\t| * - * - * -图书管理系统 * - * - * |\n");
printf("\t\t\t| [1] 添加图书 |\n");
printf("\t\t\t* [2] 删减图书 *\n");
printf("\t\t\t| [3] 修改图书信息 |\n");
printf("\t\t\t* [4] 浏览图书信息 *\n");
printf("\t\t\t| [5] 退出图书管理系统 |\n");
printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n");
printf("\n");
printf("请选择你的操作 :");
scanf("%d",&c3);
getchar();

switch(c3)
{
case 1:add_book(); break;
case 2:delete_book(); break;
case 3:modify_book(); break;
case 4:scan_book(); break;
case 5:system("cls"); return 0;
}
}
}
}

/*查询图书*/
void search_book()
{
FILE*fp;
struct book n;
struct book nn;
int l,r;
char x,z;
fp=fopen("F:\\课程设计\\图书管理系统.txt","rb");
while(1)
{
l=0;
system("cls");
printf("请输入图书名称:");
scanf("%s",n.tittle);
fflush(stdin);
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle );
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf("没有要查询的图书!!!\n\n ");
}
else
{
printf("查询的图书为:");
printf("\n");
printf("****************************************\n");
printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n");

printf("\n");
printf("%s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);
printf("\n\n\n");
}
printf("是否继续查询图书 ? [是(y)/否(n)] ? \n\n");
do
{
x=getche();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}

//添加

void add_book()
{
FILE *fp;
struct book n;
struct book nn;
char x,z;
int l,r;
fp=fopen("F:\\课程设计\\图书管理系统.txt","ab+");
do
{
system("cls");
do
{

l=0;
printf("\n");
printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n");
fflush(stdin);
scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);
system("cls");
rewind(fp);
while(!feof(fp))
{
fread(&nn,sizeof(nn),1,fp);
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
printf(" 该图书已存在,请输入新的图书信息: \n\n");
break;
}
}
}while(l);
fwrite(&n,sizeof(n),1,fp);
printf("\n");
printf("是否继续输入新的图书信息[y/n] \n\n");
do
{
x=getche();
}while(x!='n'&&x!='y');
}while(x=='y');
fclose(fp);
system("cls");

}

//删除图书
void delete_book()
{
FILE *fp,*fp1;
char x,z;
struct book n;
struct book nn;
int l,r;
fp=fopen("F:\\课程设计\\图书管理系统.txt","ab+");
while(1)
{
l=0;
system("cls");
printf("\n");
printf("请输入需要删除的图书名: \n\n");
fflush(stdin);
scanf("%s",&n.tittle);
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf("\n");
printf("对不起,未找到该图书 \n");
}
else
{
printf("\n");
printf("****************************************\n");
printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n");
printf("\n");
printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);
printf("\n");
printf("确认删除图书信息? [是(y)/否(n)]\n\n");
do
{
z=getche();
}while(z!='n'&&z!='y');
if(z=='n')
break;
else
{
fp1=fopen("F:\\课程设计\\图书管理系统new.txt","wb");
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r!=0)
fwrite(&nn,sizeof(nn),1,fp1);
}
fclose(fp);
fclose(fp1);
fp=fopen("F:\\课程设计\\图书管理系统.txt","wb");
fp1=fopen("F:\\课程设计\\图书管理系统new.txt","rb");
while(1)
{
fread(&nn,sizeof(nn),1,fp1);
if(feof(fp1))
break;
fwrite(&nn,sizeof(nn),1,fp);
}
fclose(fp);
fclose(fp1);
}
}
printf("\n");
printf("是否继续删除图书信息? [是(y)/否(n)] \n");
do
{
x=getche();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}
//修改图书信息

void modify_book()
{
FILE *fp;
struct book n;
struct book nn;
int l,r;
char x,z;
fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+");
while(1)
{
l=0;
printf("\n");
system("cls");
printf("请输入需要修改的图书名: \n\n");
fflush(stdin);
scanf("%s",&n.tittle);
system("cls");
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf("\n");
printf("对不起,未找到该图书信息 \n\n");
}
else
{
printf("\n");
printf("****************************************\n");
printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n");
printf("\n");
printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);
printf("请依次修改图书信息\n\n\n");
fflush(stdin);
scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);
fseek(fp,sizeof(nn),1);
fwrite(&n,sizeof(nn),1,fp);
}
printf("\n");
printf(" 是否继续修改用户信息[y/n]? \n\n");
do
{
x=getch();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}
//借书
void borrow_book()
{
FILE*fp;
struct book n;
struct book nn;
char x,z;
int l,r;
fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+");
while(1)
{
l=0;
system("cls");
printf("\n");
printf("请输入需要借阅的图书名: \n");
fflush(stdin);
scanf("%s",&n.tittle);
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf("\n");
printf("对不起,未找到该图书。 \n");
}
else

{ printf("\n");
printf("****************************************\n");
printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n");
printf("\n");
printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);
printf("\n");
fflush(stdin);
printf("请输入图书信息并修改在库状态及借阅者信息");
printf("****************************************\n");
printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n");
printf("\n");
scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);
fseek(fp,sizeof(nn),1);
fwrite(&n,sizeof(nn),1,fp);
}
printf("\n");
printf(" 是否继续借书? [是(y)/否(n)] \n\n");
do
{
x=getch();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}

//还书
void return_book()
{
FILE*fp;
struct book n;
struct book nn;
char x,z;
int l,r;
fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+");
while(1)
{
l=0;
system("cls");
printf("\n");
printf("请输入需要借还的图书名: \n");
fflush(stdin);
scanf("%s",&n.tittle);
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.tittle,nn.tittle);
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf("\n");
printf("对不起,未找到该图书。 \n");
}
else
{
printf("\n");
printf("****************************************\n");
printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n");
printf("\n");
printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader);
printf("\n");
fflush(stdin);
printf("请输入图书信息并修改在库状态 \n\n");
printf("****************************************\n");
printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n");
printf("\n");
scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);
fseek(fp,-(int)sizeof(nn),1);
fwrite(&n,sizeof(nn),1,fp);
}
printf("\n");
printf("是否继续还书? [是(y)/否(n)] \n");
do
{
x=getche();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}

//浏览
void scan_book()
{
FILE*fp;
char x,z;
struct book n;
fp=fopen("F:\\课程设计\\图书管理系统.txt","rb");
rewind(fp);
system("cls");
while(1)
{
fread(&n,sizeof(n),1,fp);
if(feof(fp))
break;
else
{
printf("********************************************\n");
printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n");
printf("\n");
printf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader);
printf("\n");
}
}
printf("\n");
printf("回到主菜单请按回车");
do
{
x=getche();
}while(x!='\r');
if(x=='\r')
{
fclose(fp);
system("cls");
}
}

#c语言图书管理系统#

返回顶部

影响力:717

c语言求一个图书管理系统

描述: c语言求一个图书管理系统要求以下每步都要做到:数据库的方法实现读者基本信息的输入;读者基本信息的查询、修改;书籍类别标准的制定、类别信息的输入;书籍类别信息的查询、修改;借... c语言求一个图书管理系统要求以下每步都要做到:
数据库的方法实现读者基本信息的输入;
读者基本信息的查询、修改;
书籍类别标准的制定、类别信息的输入;
书籍类别信息的查询、修改;借书信息的输入;借书信息的查询、修改;
还书信息的输入;
还书信息的查询、修改。
(尽量原创,并且不用文件,尽量容易看懂)
每一步都要做到!!拜托了!!!尤其是读者借书情况和还书的情况 (鞠躬)
展开
这个解答帮助过5555人

定义结构体
struct student{ char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄};
struct student stu1,stu2;
然后用数组保存 , 索引用数组下标为准 ,每条信息独立 可做单一修改。
思路告诉你了 自己用C写吧,这个东西典型的 毕业作品 ,连这个都不会就不要学了

追问

emmmm这个不是毕业作品 大一的暑假作业。。

编辑时间 2019-12-25 12:34:15
影响力:5708

c语言小型图书信息管理系统

这个解答帮助过260人

#include <stdio.h>
#include <stdlib.h>
#include "windows.h"
#include "string.h"

#define S_MAX 50

int user_count = 0;     //用户信息的总数
int book_count = 0;
char ini_path[100] = { "\0" };   //数据文件的绝对路径
char user_path[100] = { "\0" };  //用户数据文件的绝对路径
char book_path[100] = { "\0" };
int book_pos = 0;                    //book数组的计数 
int user_pos = 0;

struct user_data
{
char name[10];
char book_name[50];
}user[S_MAX];

struct book_data
{
char no[10];
char name[50];
char author[30];
char money[10];
char in_or_out[10];
char user_name[10];
}book[S_MAX];

void read_file()   //从文件读取数据 
{
user_pos = 0;
int i;
for (i = 0; i<S_MAX; i++)
{
memset(user[i].name, '\0', 10);
memset(user[i].book_name, '\0', 50);

memset(book[i].no, '\0', 10);
memset(book[i].name, '\0', 50);
memset(book[i].author, '\0', 30);
memset(book[i].money, '\0', 10);
memset(book[i].in_or_out, '\0', 10);
memset(book[i].user_name, '\0', 10);
}
user_count = GetPrivateProfileInt("USER", "user_count", 0, user_path);
book_count = GetPrivateProfileInt("book", "book_count", 0, book_path);

for (i = 0; i<user_count; i++)
{
char t[5] = { "\0" };
sprintf(t, "%d", i + 1);
GetPrivateProfileString(t, "name", "", user[i].name, 10, user_path);
GetPrivateProfileString(t, "book_name", "", user[i].book_name, 50, user_path);
user_pos++;
}
for (i = 0; i<book_count; i++)
{
char t[5] = { "\0" };
sprintf(t, "%d", i + 1);
GetPrivateProfileString(t, "no", "", book[i].no, 10, book_path);
GetPrivateProfileString(t, "name", "", book[i].name, 50, book_path);
GetPrivateProfileString(t, "author", "", book[i].author, 30, book_path);
GetPrivateProfileString(t, "money", "", book[i].money, 10, book_path);
GetPrivateProfileString(t, "in_or_out", "", book[i].in_or_out, 10, book_path);
GetPrivateProfileString(t, "user_name", "", book[i].user_name, 10, book_path);
book_pos++;
}
}

void write_file()
{
int i;
for (i = 0; i<user_count; i++)
{
char t[5] = { "\0" };
sprintf(t, "%d", i + 1);
WritePrivateProfileString(t, "name", NULL, user_path);
WritePrivateProfileString(t, "book_name", NULL, user_path);

WritePrivateProfileString(t, "no", NULL, book_path);
WritePrivateProfileString(t, "name", NULL, book_path);
WritePrivateProfileString(t, "author", NULL, book_path);
WritePrivateProfileString(t, "money", NULL, book_path);
WritePrivateProfileString(t, "in_or_out", NULL, book_path);
WritePrivateProfileString(t, "user_name", NULL, book_path);
}
char temp[5] = { "\0" };
int temp_count = 0;
for (i = 0; i<user_pos; i++)
{
if (strcmp(user[i].name, "") == 0)
{
continue;
}
char t[5] = { "\0" };
sprintf(t, "%d", i + 1);
WritePrivateProfileString(t, "name", user[i].name, user_path);
WritePrivateProfileString(t, "book_name", user[i].book_name, user_path);
temp_count++;
}
sprintf(temp, "%d", temp_count);
WritePrivateProfileString("USER", "user_count", temp, user_path);

temp_count = 0;
for (i = 0; i<book_pos; i++)
{
if (strcmp(book[i].no, "") == 0)
{
continue;
}
char t[5] = { "\0" };
sprintf(t, "%d", i + 1);
WritePrivateProfileString(t, "no", book[i].no, book_path);
WritePrivateProfileString(t, "name", book[i].name, book_path);
WritePrivateProfileString(t, "author", book[i].author, book_path);
WritePrivateProfileString(t, "money", book[i].money, book_path);
WritePrivateProfileString(t, "in_or_out", book[i].in_or_out, book_path);
WritePrivateProfileString(t, "user_name", book[i].user_name, book_path);
temp_count++;
}
sprintf(temp, "%d", temp_count);
WritePrivateProfileString("BOOK", "book_count", temp, book_path);
}

void search_user_name()     //按借书人姓名查询
{
system("cls");
char search_key[10] = { "\0" };
printf("请输入要查询图书借书人:");
scanf("%s", search_key);
int i;
int s[10] = { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1 };
int s_i = 0;
int find = 0;
for (i = 0; i<book_pos; i++)
{
if (strcmp(book[i].user_name, search_key) == 0)
{
find = 1;
s[s_i] = i;
s_i++;
printf("\n编    号: %s", book[i].no);
printf("\n名    称: %s", book[i].name);
printf("\n作    者: %s", book[i].author);
printf("\n金    额: %s", book[i].money);
printf("\n状    态: %s", book[i].in_or_out);
printf("\n借 书 人: %s\n", book[i].user_name);
}
}
if (find == 0)
{
printf("\n\n未找到符合条件的信息!");
}
else
{
for (i = 0; i<s_i; i++)
{
printf("\n\n第%d本书:     %s", i + 1, book[i].name);
}
printf("\n\n共%d本", i);
}
fflush(stdin);
getchar();
}

void search_book_author()   //按图书作者查询
{
system("cls");
char search_key[50] = { "\0" };
printf("请输入要查询图书的作者:");
scanf("%s", search_key);
int i;
int find = 0;
for (i = 0; i<book_pos; i++)
{
if (strcmp(book[i].author, search_key) == 0)
{
find = 1;
printf("\n编    号: %s", book[i].no);
printf("\n名    称: %s", book[i].name);
printf("\n作    者: %s", book[i].author);
printf("\n金    额: %s", book[i].money);
printf("\n状    态: %s", book[i].in_or_out);
printf("\n借 书 人: %s\n", book[i].user_name);
break;
}
}
if (find == 0)
{
printf("\n\n未找到符合条件的信息!");
}
fflush(stdin);
getchar();
}

void search_book_name()  //按图书名称查询
{
system("cls");
char search_key[50] = { "\0" };
printf("请输入要查询图书的名称:");
scanf("%s", search_key);
int i;
int find = 0;
for (i = 0; i<book_pos; i++)
{
if (strcmp(book[i].name, search_key) == 0)
{
find = 1;
printf("\n编    号: %s", book[i].no);
printf("\n名    称: %s", book[i].name);
printf("\n作    者: %s", book[i].author);
printf("\n金    额: %s", book[i].money);
printf("\n状    态: %s", book[i].in_or_out);
printf("\n借 书 人: %s\n", book[i].user_name);
break;
}
}
if (find == 0)
{
printf("\n\n未找到符合条件的信息!");
}
fflush(stdin);
getchar();
}

void search_book_no()   //按图书编号查询 
{
system("cls");
char search_key[10] = { "\0" };
printf("请输入要查询图书的编号:");
scanf("%s", search_key);
int i;
int find = 0;
for (i = 0; i<book_pos; i++)
{
if (strcmp(book[i].no, search_key) == 0)
{
find = 1;
printf("\n编    号: %s", book[i].no);
printf("\n名    称: %s", book[i].name);
printf("\n作    者: %s", book[i].author);
printf("\n金    额: %s", book[i].money);
printf("\n状    态: %s", book[i].in_or_out);
printf("\n借 书 人: %s\n", book[i].user_name);
break;
}
}
if (find == 0)
{
printf("\n\n未找到符合条件的信息!");
}
fflush(stdin);
getchar();
}
void search_all_book()   //查询所有图书 
{
system("cls");
if (book_pos == 0)
{
printf("真TM穷,一本书都没有");
}
else
{
int i;
printf("共有%d本书\n", book_pos);
for (i = 0; i<book_pos; i++)
{
printf("\n编号:%s  名称:%s  作者:%s  金额:%s  状态:%s", book[i].no, book[i].name, book[i].author, book[i].money, book[i].in_or_out);
if (strcmp(book[i].in_or_out, "out") == 0)
{
printf("  借书人:%s", book[i].user_name);
}
}
}
fflush(stdin);
getchar();
}

void search_all_user()   //查询所有用户 
{
system("cls");
if (user_pos == 0)
{
printf("要倒闭了?一个人都没有!");
}
else
{
int i;
printf("共有%d个用户\n", user_pos);
for (i = 0; i<user_pos; i++)
{
printf("\n用户名称: %s     借书名称: ", user[i].name);
if (strcmp(user[i].book_name, "") != 0)
{
printf("%s", user[i].book_name);
}
else
{
printf("未借书");
}
}
}
fflush(stdin);
getchar();
}

void No7()    //查询 
{
int f = 1;
int sel;
while (f)
{
system("cls");
printf("                      *********************************\n");
printf("                      *                               *\n");
printf("                      *       图书管理系统--查询      *\n");
printf("                      *                               *\n");
printf("                      *        1.按图书编号查询       *\n");
printf("                      *                               *\n");
printf("                      *        2.按图书名称查询       *\n");
printf("                      *                               *\n");
printf("                      *        3.按作者查询           *\n");
printf("                      *                               *\n");
printf("                      *        4.按借书人姓名查询     *\n");
printf("                      *                               *\n");
printf("                      *        5.查询所有图书         *\n");
printf("                      *                               *\n");
printf("                      *        6.查询所有用户         *\n");
printf("                      *                               *\n");
printf("                      *        0.返回主菜单           *\n");
printf("                      *                               *\n");
printf("                      *********************************\n");
printf("请选择:(1,2,3,4,5,6,0) ");
fflush(stdin);
scanf("%d", &sel);
getchar();
switch (sel)
{
case 1:
search_book_no();

break;
case 2:
search_book_name();

break;
case 3:
search_book_author();

break;
case 4:
search_user_name();

break;
case 5:
search_all_book();
break;
case 6:
search_all_user();
break;
case 0:

f = 0;
break;
default:
break;
}
}
}

void No6()      //用户信息删除
{
system("cls");
char del_key[10] = { "\0" };
printf("请输入要删除的用户名称:");
scanf("%s", del_key);
int i, del_pos;
int find = 0;
for (i = 0; i<user_pos; i++)
{
if (strcmp(user[i].name, del_key) == 0)
{
find = 1;
printf("\n姓    名: %s", user[i].name);
if (strlen(user[i].book_name)>0)
{
printf("\n所借书籍: %s", user[i].book_name);
}
del_pos = i;
break;
}
}
if (find == 0)
{
printf("\n\n未找到符合条件的信息!");
fflush(stdin);
getchar();
return;
}

while (1)
{
fflush(stdin);
printf("\n\n确认要删除该记录吗?(y/n):");
char t;
scanf("%c", &t);
if (t == 'y' || t == 'Y')
{
if (strlen(user[del_pos].book_name)>0)
{
printf("\n\n该用户尚有书籍未归还,不能删除!");
fflush(stdin);
getchar();
return;
}
strcpy(user[del_pos].name, "");
strcpy(user[del_pos].book_name, "");
write_file();
printf("\n\n删除成功!");
read_file();
fflush(stdin);
getchar();
break;
}
else if (t == 'N' || t == 'n')
{
printf("\n\n你选择了不删除,按任意键返回!");
fflush(stdin);
getchar();
break;
}
else
{
continue;
}
}
}
//请在回复后发余下部分

编辑时间 2019-03-23
影响力:5481

c语言课程设计:图书管理系统。运行总出错,求大神修改,可追加悬赏

描述: 我分享了来自腾讯文章"源代码",点击查看:https://docs.qq.com/doc/BzpRjy0pYEr70HEQN64NoraD4bwyLw3yOQhC4望大神帮帮忙谢谢悬赏可追加总是无法回到主菜单并且老是有错误出现... 我分享了来自腾讯文章"源代码",点击查看:
https://docs.qq.com/doc/BzpRjy0pYEr70HEQN64NoraD4bwyLw3yOQhC4

望大神帮帮忙 谢谢 悬赏可追加
总是无法回到主菜单 并且老是有错误出现
这个解答帮助过525人

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct book{
char ISBN[10];
char book[30];
char author[20];
char edition[10];
char press[50];
char year[10];
};
void add_book();
void delete_book();
void modify_book();
void scan_book();
void Me();
int main()
{
int c3;
while(1)
{
system("color 2C");
printf("\t\t\t=========图书管理系统======\n");
printf("\t\t\t [1] 添加图书 \n");
printf("\t\t\t [2] 删减图书 \n");
printf("\t\t\t [3] 修改图书信息 \n");
printf("\t\t\t [4] 浏览图书信息 \n");
printf("\t\t\t [5] 作者信息 \n");
printf("\t\t\t [6] 退出图书管理系统 \n");
printf("\t\t\t=========================\n");
printf("\n");
printf("请选择你的操作 :");
scanf("%d",&c3);
getchar();
switch(c3)
{
case 1:add_book(); break;
case 2:delete_book(); break;
case 3:modify_book(); break;
case 4:scan_book(); break;
case 5:Me(); break;
case 6:system("cls");
//return 0;这是返回就跳出程序了,会终止程序运行
}
}
return 0;//其实这句被执行,这个程序就终结了,释放所有被使用的资源。
}
//添加
void add_book()
{
FILE *fp;
struct book n;
struct book nn;
char x;
int l,r;
fp=fopen("file:///Users/liangyiwen/Desktop/Book/图书管理系统.txt","ab+");
do
{
system("cls");
do//I标志用得不好
{
// l=0;此处的移进下一循环内
printf("\n");
printf("编号 书名 作者 版本号 出版社 出版时间\n");
fflush(stdin);
scanf("%s %s %s %s %s %s",n.ISBN,n.book,n.author,n.edition,n.press,n.year);
system("cls");
rewind(fp);
while(!feof(fp))
{
l=0;// 移进此处,每次判断都是设定默认值,否则被修改后不是默认值
fread(&nn,sizeof(nn),1,fp);
r=strcmp(n.book,nn.book);
if(r==0)
{
l=1;
printf(" 该图书已存在,请输入新的图书信息: \n\n");
break;
}
}
}while(l);
fwrite(&n,sizeof(n),1,fp);
printf("\n");
printf("是否继续输入新的图书信息[y/n] \n\n");
do
{
x=getchar();
}while(x!='n'&&x!='y');
}while(x=='y');
fclose(fp);
system("cls");

}
//删除图书
void delete_book()
{
FILE *fp,*fp1;
char x,z;
struct book n;
struct book nn;
int l,r;
fp=fopen("file:///Users/liangyiwen/Desktop/Book/图书管理系统.txt","ab+");
while(1)
{
l=0;
system("cls");
printf("\n");
printf("请输入需要删除的图书名: \n\n");
fflush(stdin);
scanf("%s",&n.book);
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.book,nn.book);
if(r==0)//本来可以 得到结果后可以直接进行删除动作,没有则检查下一个,你现在
//不用这种结构,写得太多了,不跟你修改了
{
l=1;
break;
}

if(l==0)
{
printf("\n");
printf("对不起,未找到该图书 \n");
}
else
{
printf("\n");
printf("编号 书名 作者 版本号 出版社 出版时间\n");
printf("\n");
//下面应该是打印,n的值应该从搜索到值读出来打印,怎么还手工输入图书信息,手
//工输入能保证每一次输入都与原信息一样吗?

scanf("%s %s %s %s %s %s",n.ISBN,n.book,n.author,n.edition,n.press,n.year);
printf("\n");
printf("确认删除图书信息? [是(y)/否(n)]\n\n");
do
{
z=getchar();
}while(z!='n'&&z!='y');
if(z=='n')
break;
else
{
fp1=fopen("file:///Users/liangyiwen/Desktop/Book/图书管理系统.txt","wb");
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.book,nn.book);
if(r!=0)
fwrite(&nn,sizeof(nn),1,fp1);
}
fclose(fp);
fclose(fp1);
fp=fopen("file:///Users/liangyiwen/Desktop/Book/图书管理系统.txt","wb");
fp1=fopen("file:///Users/liangyiwen/Desktop/Book/图书管理系统new.txt","rb");
while(1)
{
fread(&nn,sizeof(nn),1,fp1);
if(feof(fp1))
break;
fwrite(&nn,sizeof(nn),1,fp);
}
fclose(fp);
fclose(fp1);
}
}
printf("\n");
printf("是否继续删除图书信息? [是(y)/否(n)] \n");
do
{
x=getchar();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}
//修改图书信息
void modify_book()
{
FILE *fp;
struct book n;
struct book nn;
int l,r;
char x;
fp=fopen("file:///Users/liangyiwen/Desktop/Book/图书管理系统.txt","rb+");
while(1)
{
l=0;
printf("\n");
system("cls");
printf("请输入需要修改的图书名: \n\n");
fflush(stdin);
scanf("%s",&n.book);
system("cls");
rewind(fp);
while(1)
{
fread(&nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.book,nn.book);
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf("\n");
printf("对不起,未找到该图书信息 \n\n");
}
else
{
printf("\n");
printf("编号 书名 作者 版本号 出版社 出版时间\n");
printf("\n");
//下面应该是打印,n的值应该从搜索到值读出来打印,怎么还手工输入图书信息,
//手工输入能保证每一次输入都与原信息一样吗?
scanf("%s %s %s %s %s %s",n.ISBN,n.book,n.author,n.edition,n.press,n.year);
printf("请依次修改图书信息\n\n\n");
fflush(stdin);
scanf("%s %s %s %s %s %s",n.ISBN,n.book,n.author,n.edition,n.press,n.year);
fseek(fp,sizeof(nn),1);
fwrite(&n,sizeof(nn),1,fp);
}
printf("\n");
printf(" 是否继续修改用户信息[y/n]? \n\n");
do
{
x=getchar();
}while(x!='n'&&x!='y');
if(x=='n')
break;
}
fclose(fp);
system("cls");
}
//浏览
void scan_book()
{
FILE*fp;
char x;
struct book n;
fp=fopen("file:///Users/liangyiwen/Desktop/Book/图书管理系统.txt","rb");
rewind(fp);
system("cls");
while(1)
{
fread(&n,sizeof(n),1,fp);
if(feof(fp))
break;
else
{
printf("编号 书名 作者 版本号 出版社 出版时间\n");
printf("\n");
//下面应该是打印,n的值应该从搜索到值读出来打印,阅览信息怎会输入信息
scanf("%s %s %s %s %s %s",n.ISBN,n.book,n.author,n.edition,n.press,n.year);
printf("\n");
}
}
printf("\n");
printf("回到主菜单请按回车");
do
{
x=getchar();
}while(x!='\r');
if(x=='\r')
{
fclose(fp);
//main();子函数调用主函数,变成递归,不知程序怎么运行了;
system("cls");
return;//返回主程序就可以了,主程序一直主菜单里运行

}
}
void Me(){
printf("作者姓名:0\n");
printf("作者学号:0\n");
}

编辑时间 2019-05-05
影响力:5268

C语言构建图书系统

描述: 假期的研究,结果发现自己根本不会搭建。。。第一是与不会导入与处理写字本里的数据,第二是不会设置菜单什么的,看了许多网上的代码,发现不会链表。希望哪位老哥能帮忙指点多加注释... 假期的研究,结果发现自己根本不会搭建。。。第一是与不会导入与处理写字本里的数据,第二是不会设置菜单什么的,看了许多网上的代码,发现不会链表。希望哪位老哥能帮忙指点多加注释,本着学习的态度向大家请教 以下是具体要求 !我用的编译器是codeblock!
建立一个小型图书管理系统,该系统具有输入、查询、排序、修改、插入、删除、输出等功能。(建议部分为选做)
(1) 从文件中读入图书信息,每种图书至少包括书号、书名、作者、出版社、出版日期、单价、数量、借阅次数等信息;图书种数不少于16种。
(2)至少能根据书号、书名、作者、出版年月查询出所有满足条件的图书;建议还可以根据出版社、数量、单价范围、借阅次数进行查询。
(3)系统界面自行设计,至少包含两级菜单,即主菜单和一级子菜单;希望能够建立交互性能比较好的菜单系统,即使用者用着方便,而不仅考虑程序编写方便
(4)能够按照书名、出版日期、借阅次数排序;建议也可以按照作者、出版社、单价、数量排序
(5)能显示所有图书的信息,一屏只输出8本图书的信息(模拟需要输出很多本书的情况),并把所有图书信息输出到文件中。
(6)能够增加和删除某些图书信息
以下为选做内容
(7)能修改图书除书号外的所有信息,并设置相应的修改口令(口令正确才能修改)
(8)能从文件中批量追加新的图书数据,也能从键盘上增加一本新的图书
(9)对已经遗失的图书能从系统中删除相应的图书信息
(10)还书时给出五级评价,可以根据评价推荐图书
展开
这个解答帮助过4218人

功能太多,代码太多我就不写了,我就简单讲一下链表,链表是两个部分组成的,数据域和指针域,数据域就是你存放数据的空间,可以是整型字符型,等等,具体看你如何定义,指针域就是存放指针的空间,用一个类似结构体的定义方法,如
struct p{
int a[100];
p *h;
}
在通过一个malloc申请一段空间即可

编辑时间 2019-08-05
影响力:1627

c语言程序 图书馆管理系统 运用fopen出现问题了

描述: 如图这段程序地址都是对的但是打了相应图书名字后一直得到的是查不到书本想知道是程序哪里错了... 如图这段程序 地址都是对的 但是打了相应图书名字后一直得到的是查不到书本 想知道是程序哪里错了

这个解答帮助过1015人

怎么判断是fopen出了问题了?你可以在fread后面把读取的每一行文字打印出来,或者用debug跟踪一下。
另外,你的函数开始的时候就/*,是把函数内容整个注释掉了吗?

编辑时间 2019-08-07