2 lee xz Lee_xz 于 2014.11.16 21:57 提问

有关图书管理系统的课程设计

#include
#include
#include
#include
#include

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;
char admin[77];
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");

    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;
            }
        }
    }

else
{

    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

{
memset(&n,0,sizeof(struct book));

l=0;
printf("\n");
printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n");
fflush(stdin);

scanf("%s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,nn.reader);
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",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);
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",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",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=getche();
}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",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",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\n");
    do
    {
        x=getche();
    }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",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",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",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");
}
}

1个回答

max_min_
max_min_   Rxr 2014.11.18 09:25

问题在哪里呢?这个项目已经太多了!网上很多源码的,把上层业务逻辑整理清楚就没什么东西

Lee_xz
Lee_xz 额 因为我是大一的 。。 然后有个这样的课设,遇到了麻烦。 主要就是添加函数那里我输入数据之后就崩溃了。还有就是我不知道怎么把结构体里面的一个成员修改然后保存,就是借还书函数不知道怎么写。
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片