C语言课程设计报告-图书管理系统

时间:2024.4.21

课程设计报告

图书馆管理系统

目 录

1、题目与要求................................................................................... 2

2、系统总体设计(要给出必要的文字说明及必要的图示)........... 3

2.1 功能需求分析(明确选题的功能需求).................................... 3

2.2 系统功能模块划分(要给出系统功能模块图)........................ 4

3、详细设计....................................................................................... 4

3.1重要数据的数据结构设计(即结构体的声明、变量的定义、文件)  4

3.2 函数的规划和设计(即根据分析需要设计哪些函数及其之间的调用关系)     5

3.3 主控模块(main函数)的流程分析与设计(要画出主函数的流程图) 6

3.4 主要功能模块的流程分析与设计(分别要画出各主要功能模块实现的流程图)............................................................................................................ 7

4、课程设计小结............................................................................. 11

4.1 运行结果................................................................................... 11

4.2设计中的难点及其解决方法................................................................. 18

4.3 不足之处……………………………………………………………………………………..   19 

5、小组人员分工说明(明确各个组员的具体分工及实际完成情况)     19

评语及成绩....................................................................................... 20

6、附录(源代码)………………………………………………………21


1、题目与要求(标题的字体格式、段落格式照此,以下同!)

题目:图书馆管理系统

要求:能够完成图书馆日常操作,数据要能够保存,能够随时取出,并在任何操作后都能保持信息完整性,图书的原始数据需保存到磁盘文件中。

2、系统总体设计(要给出必要的文字说明及必要的图示)

主要分为四大部分:

1、图书查找(包括按书名或作者查找)

2、借阅图书

3、归还图书

4、管理系统(包括添加图书、修改图书、删除图书、图书统计、学生管理、职工管理等)

2.1 功能需求分析(明确选题的功能需求)

具体功能:

①图书查找

n  按书名查找。

n  按作者查找。

②图书借还

n  借书

l  判断所借书籍号是否存在,若不存在重新输入书籍号。

l  判断该借书证号是否存在,若不存在重新输入借书证号(即办卡功能)。

l  判断该书籍是否已借出,若是则不允许执行借书操作。

l  借书处理包括在“借还书登记”中增加该借书情况,在该图书信息中加上“已借”标记。

n  还书

l  判断所借书是否存在,若不存在重新输入书籍。

l  判断该书是否已借出,若不是则不允许执行还书操作。

l  借书处理包括在“借还书登记”中增加该还书情况,在该图书信息中加上“未借”标记。

③管理系统:

n  添加图书:增加新的图书,同时需检查新书的图书编号是否在原图书当中存在,若是则应取消添加并提示重新输入。

n  删除图书资料:通过编号查询该图书,若找到则允许删除,否则提示无该图书信息。删除对象包括该图书资料以及“借还书登记”中的相关记录。

n  删除图书资料:通过编号查询该图书,若找到则允许删除,否则提示无该图书信息。删除对象包括该图书资料以及“借还书登记”中的相关记录。

n  图书统计:统计图书馆里存有多本图书。

n  学生管理:办理借书卡,统计有多少人有该图书馆的借阅卡,取消在该图书馆借阅图书,查看有多图书被借出。

n  职工管理:增加该图书馆管理员工,除掉某员工,员工调职修改资料,统计员工人数等。

2.2 系统功能模块划分(要给出系统功能模块图)

3 、详细设计

3.1重要数据的数据结构设计(即结构体的声明、变量的定义、文件)


struct student /*定义学生类型,用于存放借出的书籍*/

{

int carnum;

char lendbook[10];

}student[1000];

struct employ /*定义职工类型*/

{

int employnum;

char employname[15];

int employage;

char employsex[2];

char employleve[10];

long int employtage;

}employ[50];

struct book /*定义书的类型*/

{

int booknum;

char bookname[10];

char bookcreat[10];

int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/

}book[1000];

struct car /*借书卡的数据类型*/

{

int carnum;

char studentname[10];

int studentclass;

}car[100];


文件有:

图书保存文件:book.txt

借阅卡文件:car.txt

借阅信息文件:record.txt

职工信息文件:employ.txt

修改文件:bookl.txt

3.2 函数的规划和设计(即根据分析需要设计哪些函数及其之间的调用关系)

主要设计的函数有:

添加图书函数addbook()

删除图书函数delbook()

图书查询函数chabook()、findbook()、findbook1()

图书统计函数bookcount()

办卡函数addcar()

删除卡函数delcar()

卡号统计函数carcount()

借书函数lendbook()  

借出图书统计函数lendcount()

还书函数huanbook()

修改员工资料函数changemploy()

删除员工函数delemploy()

添加员工函数addemploy()

员工统计函数employcount()

其中有调用关系的有

1、主函数main():查找图书函数chabook()、借书函数lendbook()、添加图书函数addbook()

、删除图书函数delbook()、修改图书函数changebook()、图书统计函数bookcount()

、修改员工资料函数changemploy()、删除员工函数delemploy()、添加员工函数addemploy()、员工统计函数employcount()、办卡函数addcar()、删除卡函数delcar()、卡号统计函数carcount()、借出图书统计函数lendcount()。

2、查找图书函数chabook():按书名查找函数findbook()、按作者查找函数findbook1()。

3.3 主控模块(main函数)的流程分析与设计(要画出主函数的流程图)

主函数主要分为4个部分的功能(查阅图书、借阅图书、管理系统、还书)和一个退出系统的选择,分

别用i的值判断其功能。当i=0时,为退出系统;当i=1时,为查阅图书;当i=2时,为借阅图书;当

i=3时,为管理系统,当i=4时,为还书功能。

3.4 主要功能模块的流程分析与设计(分别要画出各主要功能模块实现的流程图)

主要的功能模块有:管理流程、职工管理、学生管理、图书查找、借书流程、还书流程

4、课程设计小结

4.1 运行结果如下:

4.2 设计中的难点及其解决方法

这个系统设计中,主要的难点在于要两个方面,一是设计的对象分为两个方面(面向书

馆的管理方面和学生的借阅方面),二是历史查询的功能实现比较困难复杂。针对第一个问题,我们设计了书馆和借阅人这两个方面的结构体,分别实现不同的功能。针对第二个问

题,我们主要以多方面的查询来实现这一功能的。

此外,我们在借阅图书这个模块消耗了很多时间和人力,一开始总是运行不了,分析代码是没有问题的,可是就是无法实现功能。后来我们发现,主要是办卡功能被我们弄进去了,以至于借书的记录无法保存。所以我们就将办卡的功能放到图书管理那部分。

4.3 不足之处

首先,我们设计的界面不够美观整齐,本来想弄出表格的形式,但由于时间的关系,无法

具体完善。其次,这个系统中,部分功能的实现不够完善,缺乏人性化。最后,我们认为这个系统的的功能不够具体,缺少一些实用性的功能。而且,我们的系统运行繁琐,不够明朗,也没有使用清屏的功能,界面显得罗嗦。查询功能方面也不具人性化。

5、小组人员分工说明(明确各个组员的具体分工及实际完成情况)



附录源代码如下:

#include<stdio.h>

#include<string.h>

#include<conio.h>

#include<stdlib.h>

#include<ctype.h>

#define STACK_INIT_SIZE 10

#define OK 1

#define TRUE 1

#define FALSE 0

#define ERROR 0

struct student /*定义学生类型,用于存放借出的书籍*/

{

int carnum;

char lendbook[10];

}student[1000];

struct employ /*定义职工类型*/

{

int employnum;

char employname[15];

int employage;

char employsex[2];

char employleve[10];

long int employtage;

}employ[50];

struct book /*定义书的类型*/

{

int booknum;

char bookname[10];

char bookcreat[10];

int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/

}book[1000];

struct car /*借书卡的数据类型*/

{

int carnum;

char studentname[10];

int studentclass;

}car[100];

huanbook() /*还书函数*/

{

FILE *fp,*fp2; /*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/

int i,n;

int carnum;

char lendbook[10];

printf("请你输入你的卡号\n");

scanf("%d",&carnum);

fp=fopen("car.txt","r"); /*读取卡号记录*/

for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) /*for循环判断卡号是否存在*/

{

   if(car[i].carnum==carnum) /*卡号存在,进入下一循环*/

   {

    n=i;

    fclose(fp);

    printf("请输入你要还的书的名字\n");

    scanf("%s",lendbook);

    fp=fopen("record.txt","r");

    for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) /*判断是否借阅了输入的书*/

    {

     if(strcmp(student[i].lendbook,lendbook)==0) /*借阅了该书,进入下一循环,否则出错显示*/

     {

      fclose(fp);

      fp=fopen("record.txt","r");

      fp2=fopen("bookl.txt","w");

      for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)

      {

       if(strcmp(student[i].lendbook,lendbook)==0)

       {

        continue; /*删除还掉的书的借书记录*/

       }

       fwrite(&student[i],sizeof(struct student),1,fp2); /*写入原来没还的书的记录*/

      }

      fclose(fp);

      fclose(fp2);

      fp=fopen("record.txt","w");

      fp2=fopen("bookl.txt","r");

      for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++)

       {

        fwrite(&student[i],sizeof(struct student),1,fp); /*将借书记录信息写回*/

       }

      fclose(fp);

      fclose(fp2);

      fopen("bookl.txt","w"); /*清临时文件的记录*/

      fclose(fp2);

      fp=fopen("book.txt","r");

      fp2=fopen("bookl.txt","w");

      for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) /*将书的记录写入临时文件,防止

因为修改信息破坏以前的记录*/

      {

       if(i==n)

       {

        book[i].turefalse=1;

        fwrite(&book[i],sizeof(struct book),1,fp2); /*将还的书的原来状态设为无人借阅的*/

        continue;

       }

       fwrite(&book[i],sizeof(struct book),1,fp2);

      }

      fclose(fp);

      fclose(fp2);

      fp=fopen("book.txt","w");

      fp2=fopen("bookl.txt","r");

      for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)

      {

       fwrite(&book[i],sizeof(struct book),1,fp); /*将临时文件写回*/

      }

      fclose(fp);

      fclose(fp2);

      fopen("bookl.txt","w"); /*清临时文件*/

      fclose(fp2);

      printf("还书完毕,按任意键返回\n");

      getch();

      return 1;

     }

    }

    printf("你没有借这样的书,任意键返回\n"); /*出错提示*/

    fclose(fp);

    getch();

    return 0;

   }

}

printf("系统没这样的卡,和管理员联系,按任意键返回\n"); /*出错提示*/

fclose(fp);

getch();

}

findbook()

{

FILE *fp;

char bookname[10];

int ture,i;

fp=fopen("book.txt","r");

printf("请输入你要查找的书名\n");

scanf("%s",bookname);

for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)

{

   if(strcmp(bookname,book[i].bookname)==0)

   {

    if(book[i].turefalse==1)

    {

     printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);

    }

    else {printf("这本书已经有人借出\n");fclose(fp);return 0;}

    fclose(fp);

    return FALSE;

   }

}

printf("没有你要查询的书籍\n");

fclose(fp);

return FALSE;

}

findbook1()

{

FILE *fp;

char bookcreat[10];

int ture,i;

fp=fopen("book.txt","r");

printf("请输入你要查找的作者名\n");

scanf("%s",bookcreat);

for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)

{

   if(strcmp(bookcreat,book[i].bookcreat)==0)

   {

    if(book[i].turefalse==1)

    {

     printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);

    }

    else {printf("这本书已经有人借出\n");fclose(fp);return 0;}

    fclose(fp);

    return FALSE;

   }

}

printf("没有你要查询的书籍\n");

fclose(fp);

return FALSE;

}

lendcount()

{

FILE *fp;

int i,n=0;

fp=fopen("record.txt","r");

for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)

{

   printf("卡号:%d 借出的书籍:%s \n",student[i].carnum,student[i].lendbook);

   n=n+1;

}

fclose(fp);

printf("目前共有%d本书借出\n",n);

printf("按任意键\n");

getch();

return n;

}

chabook()

{

char ch5;

do

{

printf("---------------欢迎进入图书查询系统!--------------\n");

printf(" 1:<按书名查找>\n");

printf(" 2:<按作者查找>\n");

printf(" 0:<返回>\n");

printf("请输入0--2,其他输入非法!\n");

scanf("%s",&ch5);

switch(ch5)

   {

    case '1':findbook();getch();break;

    case '2':findbook1();getch();break;

    case '0':break;

    default:printf("无此操作\n");getch();break;

   }

}while(ch5!='0');

return FALSE;

}

lendbook()

{

FILE *fp,*fp2;

int i,n;

int carnum;

printf("请你输入你的卡号\n");

scanf("%d",&carnum);

fp=fopen("car.txt","r");

for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)

{

   if(car[i].carnum==carnum)

   {

    n=i;

    fclose(fp);

    printf("请输入你要借阅的书的名字\n");

    scanf("%s",student[n].lendbook);

    fp=fopen("book.txt","r");

    for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)

    {

     if(strcmp(book[i].bookname,student[n].lendbook)==0)

     {

      if(book[i].turefalse==0) {printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return;}

      else

      fclose(fp);

      fp=fopen("record.txt","a+");

      student[n].carnum=carnum;

      fwrite(&student[n],sizeof(struct student),1,fp);

      fclose(fp);

      fp=fopen("book.txt","r");

      fp2=fopen("bookl.txt","w");

      for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)

      {

       if(strcmp(book[i].bookname,student[n].lendbook)==0)

       {

        book[i].turefalse=0;

        fwrite(&book[i],sizeof(struct book),1,fp2);

        continue;

       }

       fwrite(&book[i],sizeof(struct book),1,fp2);

      }

      fclose(fp);

      fclose(fp2);

      fp=fopen("book.txt","w");

      fp2=fopen("bookl.txt","r");

      for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)

      {

       fwrite(&book[i],sizeof(struct book),1,fp);

      }

      fclose(fp);

      fclose(fp2);

      fopen("bookl.txt","w");

      fclose(fp2);

      printf("借书完毕,按任意键返回\n");

      getch();

      return;

     }

    }

    printf("不存在这样的书,任意键返回\n");

    fclose(fp);

    getch();

    return;

   }

}

printf("你的卡号不存在,请申请新卡,按任意键返回\n");

fclose(fp);

getch();

}

carcount()

{

FILE *fp;

int i,n=0;

fp=fopen("car.txt","r");

for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)

{

   printf("第%d张卡<卡号:%d 姓名:%s 班级:%d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);

   n=n+1;

}

fclose(fp);

printf("目前共有%d本书\n",n);

printf("按任意键\n");

getch();

}

delcar()

{

FILE *fp,*fp2;

int i;

int carnum;

char choice;

fp=fopen("car.txt","r");

fp2=fopen("bookl.txt","w");

printf("请输入你要删除的卡号\n");

printf("如果你输入的卡号存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");

scanf("%d",&carnum);

for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)

{

   if(car[i].carnum!=carnum)

   {

    fwrite(&car[i],sizeof(struct car),1,fp2);

   }

}

fclose(fp);

fclose(fp2);

printf("是否真的要删除该卡?删除后该书籍的所有信息将无法恢复《Y/N》\n");

scanf("%s",&choice);

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

{

   fp=fopen("car.txt","w");

   fp2=fopen("bookl.txt","r");

   for(i=0;fread(&car[i],sizeof(struct car),1,fp2)!=0;i++)

   {

    fwrite(&car[i],sizeof(struct car),1,fp);

   }

   fclose(fp);

   fclose(fp2);

   fp2=fopen("bookl.txt","w");

   fclose(fp2);

   printf("按任意键返回\n");

   getch();

   return;

}

else

{

   printf("按任意键返回\n");

   getch();

   return;

}

}

addcar()

{

FILE *fp;

int i=0;

fp=fopen("car.txt","a+");

printf("请你输入卡号\n");

scanf("%d",&car[i].carnum);

printf("请你输入学生姓名\n");

scanf("%s",car[i].studentname);

printf("请你输入班级\n");

scanf("%d",&car[i].studentclass);

fwrite(&car[i],sizeof(struct car),1,fp);

fclose(fp);

printf("输入完毕,任意键返回\n");

getch();

}

changemploy()

{

FILE *fp,*fp2;

char employname[10],choice;

int i;

fp=fopen("employ.txt","r");

fp2=fopen("bookl.txt","w");

printf("请你输入要修改的职工的名字\n");

scanf("%s",employname);

for(i=0;fread(&employ[i],sizeof(struct employ),1,fp)!=0;i++)

{

   if(strcmp(employ[i].employname,employname)==0)

   {

    printf("你所要修改的职工的资料如下,请选择你要修改的内容\n");

    printf("<职工号:%d职工名:%s 年龄:%d 性别:%s 学历:%s 工资:%d>\n",employ[i].employnum,employ[i].employname,employ[i].employage,employ[i].employsex,employ[i].employleve,employ[i].employtage);

    printf("2:修改职工名\n");

    printf("3:修改职工年龄\n");

    printf("4:修改职工工资\n");

    printf("5:修改职工学历\n");

    printf("请输入1-5:");

    scanf("%s",&choice);

    switch(choice)

    {

     case '1':

     {

     printf("请输入新的职工号\n");

     scanf("%d",&employ[i].employnum);

     fwrite(&employ[i],sizeof(struct employ),1,fp2);

     }break;

     case '2':

     {

     printf("请输入新的职工姓名\n");

     scanf("%s",employ[i].employname);

     fwrite(&employ[i],sizeof(struct employ),1,fp2);

     }break;

     case '3':

     {

     printf("请输入新的年龄\n");

     scanf("%d",&employ[i].employage);

     fwrite(&employ[i],sizeof(struct employ),1,fp2);

     }break;

     case '4':

     {

     printf("请输入新的职工工资\n");

     scanf("%d",&employ[i].employtage);

     fwrite(&employ[i],sizeof(struct employ),1,fp2);

     }break;

     case '5':

     {

     printf("请输入新的职工学历\n");

     scanf("%s",employ[i].employleve);

     fwrite(&employ[i],sizeof(struct employ),1,fp2);

     }

     default:printf("没有这样的操作");break;

    }

    continue;

   }

   fwrite(&employ[i],sizeof(struct employ),1,fp2);

}

fclose(fp);

fclose(fp2);

fp=fopen("employ.txt","w");

fp2=fopen("bookl.txt","r");

for(i=0;fread(&employ[i],sizeof(struct employ),1,fp2)!=0;i++)

   {

    fwrite(&employ[i],sizeof(struct employ),1,fp);

   }

fclose(fp);

fclose(fp2);

fp2=fopen("bookl.txt","w");

fclose(fp2);

printf("按任意键返回\n");

getchar();

return;

}

delemploy()

{

FILE *fp,*fp2;

int i;

char employname[10],choice;

fp=fopen("employ.txt","r");

fp2=fopen("bookl.txt","w");

printf("请输入你要删除的职工名\n");

printf("如果你输入的职工存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");

scanf("%s",employname);

for(i=0;fread(&employ[i],sizeof(struct employ),1,fp)!=0;i++)

{

   if(strcmp(employname,employ[i].employname)!=0)

   {

    fwrite(&employ[i],sizeof(struct employ),1,fp2);

   }

}

fclose(fp);

fclose(fp2);

printf("是否真的要删除该职工信息?删除后的所有信息将无法恢复《Y/N》\n");

scanf("%s",&choice);

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

{

   fp=fopen("employ.txt","w");

   fp2=fopen("bookl.txt","r");

   for(i=0;fread(&employ[i],sizeof(struct employ),1,fp2)!=0;i++)

   {

    fwrite(&employ[i],sizeof(struct employ),1,fp);

   }

   fclose(fp);

   fclose(fp2);

   fp2=fopen("bookl.txt","w");

   fclose(fp2);

   printf("按任意键返回\n");

   getch();

   return TRUE;

}

else

{

printf("按任意键返回\n");

getch();

return FALSE;

}

}

employcount()

{

FILE *fp;

int i,n=0;

fp=fopen("employ.txt","r");

for(i=0;fread(&employ[i],sizeof(struct employ),1,fp)!=0;i++)

{

   printf("第%d职工的信息如下:\n<职工号:%d 职工名:%s 年龄:%d 性别:%s 学历:%s 工资:%d>\n",n+1,employ[i].employnum,employ[i].employname,employ[i].employage,employ[i].employsex,employ[i].employleve,employ[i].employtage);

   n++;

}

fclose(fp);

printf("目前共有%d个职工\n",n);

printf("按任意键返回\n");

}

addemploy()

{

FILE *fp;

char choice='y';

int i=1;

fp=fopen("employ.txt","a+");

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

{

   printf("请你输入职工号码\n");

   scanf("%d",&employ[i].employnum);

   printf("请你输入职工名\n");

   scanf("%s",employ[i].employname);

   printf("请输入职工年龄\n");

   scanf("%d",&employ[i].employage);

   printf("请你输入性别\n");

   scanf("%s",employ[i].employsex);

   printf("请你输入职工的学历水平\n");

   scanf("%s",employ[i].employleve);

   printf("请输入职工的工资\n");

   scanf("%d",&employ[i].employtage);

   fwrite(&employ[i],sizeof(struct employ),1,fp);

   printf("是否要输入下个职工信息?\n");

   scanf("%s",&choice);

}

printf("按任意键返回\n");

fclose(fp);

}

addbook()

{

FILE *fp;

int i=0;

char choice='y';

fp=fopen("book.txt","a+");

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

{

   printf("请你输入第%d本书的序号\n",i+1);

   scanf("%d",&book[i].booknum);

   printf("请你输入书名\n");

   scanf("%s",book[i].bookname);

   printf("请你输入书的作者\n");

   scanf("%s",book[i].bookcreat);

   printf("请设为1或0,1代表书还没人借,0表示书已经借出,设其他值,程序运行时无法得出正常结果\n");

   printf("请你设定书的状态\n");

   scanf("%d",&book[i].turefalse);

   fwrite(&book[i],sizeof(struct book),1,fp);

   printf("是否要输入下本书\n");

   scanf("%s",&choice);

}

fclose(fp);

}

bookcount()

{

FILE *fp;

int i,n=0;

fp=fopen("book.txt","r");

for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)

{

   if(book[i].booknum!=0&&strlen(book[i].bookname)!=0&&strlen(book[i].bookcreat)!=0)

   {

    printf("第%d本书<序号:%d 书名:%s 作者:%s 状态:%d>\n",i+1,book[i].booknum,book[i].bookname,book[i].bookcreat,book[i].turefalse);

n=n+1;

   }

}

fclose(fp);

printf("目前共有%d本书\n",n);

printf("按任意键\n");

}

delbook()

{

FILE *fp,*fp2;

int i;

char bookname[10],choice;

fp=fopen("book.txt","r");

fp2=fopen("bookl.txt","w");

printf("请输入你要删除的书名\n");

printf("如果你输入的书名存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");

scanf("%s",bookname);

for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)

{

   if(strcmp(bookname,book[i].bookname)!=0)

   {

    fwrite(&book[i],sizeof(struct book),1,fp2);

   }

}

fclose(fp);

fclose(fp2);

printf("是否真的要删除该书籍?删除后该书籍的所有信息将无法恢复《Y/N》\n");

scanf("%s",&choice);

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

{

   fp=fopen("book.txt","w");

   fp2=fopen("bookl.txt","r");

   for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)

   {

    fwrite(&book[i],sizeof(struct book),1,fp);

   }

   fclose(fp);

   fclose(fp2);

   fp2=fopen("bookl.txt","w");

   fclose(fp2);

   printf("按任意键返回\n");

   getch();

   return;

}

else

{

   printf("按任意键返回\n");

   getch();

   return;

}

}

changebook()

{

FILE *fp,*fp2;

char bookname[10],choice;

int i;

fp=fopen("book.txt","r");

fp2=fopen("bookl.txt","w");

printf("请你输入要修改的书籍的书字\n");

scanf("%s",bookname);

for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)

{

   if(strcmp(book[i].bookname,bookname)==0)

   {

    printf("你所要修改的书的资料如下,请选择你要修改的内容\n");

    printf("序号:〈%d〉 书名:〈%s〉 作者:〈%s〉 \n",book[i].booknum,book[i].bookname,book[i].bookcreat);

    printf("1:修改书的序号\n");

    printf("2:修改书名\n");

    printf("3:修改作者\n");

    printf("请输入1-3:");

    scanf("%s",&choice);

    switch(choice)

    {

     case '1':

     {

      printf("请输入新的序号\n");

      scanf("%d",&book[i].booknum);

      fwrite(&book[i],sizeof(struct book),1,fp2);

     }break;

     case '2':

     {

      printf("请输入新的书名\n");

      scanf("%s",book[i].bookname);

      fwrite(&book[i],sizeof(struct book),1,fp2);

     }break;

     case '3':

     {

      printf("请输入新的作者\n");

      scanf("%s",book[i].bookcreat);

      fwrite(&book[i],sizeof(struct book),1,fp2);

     }break;

     defaut:printf("没有这样的操作");break;

    }

    continue;

   }

   fwrite(&book[i],sizeof(struct book),1,fp2);

}

fclose(fp);

fclose(fp2);

fp=fopen("book.txt","w");

fp2=fopen("bookl.txt","r");

for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)

{

   fwrite(&book[i],sizeof(struct book),1,fp);

}

fclose(fp2);

fp2=fopen("bookl.txt","w");

fclose(fp2);

printf("按任意键返回\n");

getchar();

return;

}

main()

{

char ch1,ch2,ch3,ch4,ch5;

do

{  

   printf("**************图书馆管理系统:***************\n");

   printf("*   1:<查阅图书>      2:<借阅图书>       *\n");

   printf("*                                          *\n");

   printf("*   3:<管理系统>      4:<还书>           *\n");

   printf("*                                          *\n");

   printf("*    0:<退出>                             *\n");                       

   printf("*                                          *\n");

   printf("*                                          *\n");

   printf("********************************************\n");

   printf("请输入0--4\n");

   scanf("%s",&ch1);

   switch(ch1)

   {

    case '1':chabook();break;

    case '2':lendbook();;break;

    case '3':{

       do

       {

        printf("---------------欢迎进入管理系统!---------------\n");

        printf("|       1:<增加图书>                          |\n");

        printf("|  2:<删除图书>                          |\n");

        printf("|       3:<修改图书资料>                      |\n");

        printf("|       4:<书籍统计>                          |\n");

        printf("|       5:<职工管理系统>           |\n");

        printf("|       6:<学生管理系统>               |\n");

        printf("|      0:<返回>             |\n"); 

          printf("-----------------------------------------------\n"); 

        printf("请输入0--6,其他输入非法!\n");

        scanf("%s",&ch2);

        switch(ch2)

        {

         case '1':addbook();

         break;

         case '2':delbook();break;

         case '3':changebook();break;

         case '4':bookcount();getch();break;

         case '5':{do

         {

          printf("---------------欢迎进入职工管理系统!--------------\n");

          printf("|        1:<增加员工>              |\n");

          printf("|        2:<删除员工>                            |\n");

          printf("|        3:<修改员工资料>                        |\n");

          printf("|        4:<员工统计>                            |\n");

          printf("|        0:<返回>                                |\n");    

            printf("-------------------------------------------------\n"); 

          printf("请输入0--4,其他输入非法!\n");

          scanf("%s",&ch3);

          switch(ch3)

          {     

           case '1':addemploy();getch();break;

           case '2':delemploy();break;

           case '3':changemploy();break;

           case '4':employcount();getch();break;

           case '0':break;

           default:printf("无此操作\n");getch();break;

}

}while(ch3!='0');}break;

case '6':{

do

{

printf("---------------欢迎进入学生管理系统!--------------\n");

printf(" \t\t1:<申请新卡>\n");

printf("\t\t 2:<删除卡号>\n");

printf(" \t\t3:<借书统计>\n");

printf(" \t\t4:<卡号统计>\n");

printf(" \t\t0:<返回>\n");

printf("----------------------------------------------------\n"); 

printf("请输入0--4,其他输入非法!\n");

scanf("%s",&ch4);

switch(ch4)

{

case '1':addcar();break;

case '2':delcar();break;

case '3':lendcount();break;

case '4':carcount();break;

case '0':break;

default:printf("无此操作\n");getch();break;

}

}while(ch4!='0');}break;

case '0':break;

default:printf("无此操作\n");getch();break;

}

}while(ch2!='0');}break;

case '4':huanbook();break;

case '0':break;

default:printf("无此操作\n");getch();break;

}

}while(ch1!='0');

}

更多相关推荐:
c语言图书管理系统课程设计报告

合肥学院计算机科学与技术系课程设计报告20xx20xx学年第二学期课学学专指业导班教生姓程C语言课程设计图书管理系统名号级师课程设计名称20xx年6月一需求分析为了满足图书管理的要求通过计算机技术给图书管理人员...

c语言课程设计报告·图书管理系统

第一章11题目描述图书管理系统设计要求图书管理信息包括图书名称图书编号单价作者存在状态借书人姓名性别学号等试设计一图书管理系统使之能提供以下功能1新图书基本信息的输入2图书基本信息的查询3对撤销图书信息的删除4...

C语言图书管理系统课程设计报告[1]

第三章图书管理系统的设计与实现3.1系统的需求分析图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅、还书的平台。根据系统界面的提示信息对图书馆信息进行查询、初始化等操作系统…

c语言图书管理系统课程设计报告

沈航北方科技学院课程设计说明书课程名称教学部专业数控班级B042111学号B04211123学生姓名指导教师赵小磊20xx年6月链表实现图书信息操作田文目录摘要31绪论32系统分析321功能需求322数据需求4...

c语言图书管理系统课程设计报告

河南工业大学C语言课程设计报告20xx20xx学年第2学期课程C语言课程设计课程设计名称图书管理系统姓名晁永兵学号20xx16040220学院信息科学与工程学院专业软件工程班级2班20xx年05月04日一需求分...

C语言图书管理系统课程设计报告

C语言图书管理系统课程设计报告引言随着社会经济的迅速发展和现代科学技术的进步,人类社会正逐渐走向现代化。计算机事业的飞速发展,使得以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。同时,随着经济文化水平的…

c语言程序设计报告 图书管理系统

中国地质大学本科生课程论文封面课程名称c语言课程设计教师姓名樊媛媛本科生姓名本科生学本科生专业所在院系类别日期课程设计评语1注1无评阅人签名成绩无效2必须用钢笔或圆珠笔批阅用铅笔阅卷无效3如有平时成绩必须在上面...

C语言图书馆管理系统课程设计报告12

C语言课程设计学生姓名袁盛升学生学号所在班级任课教师姜林10211121图书馆管理系统设计目的图书信息包括登录号书名作者名分类号出版单位出版时间价格等试设计一图书信息管理系统使之能提供以下功能1系统以菜单方式工...

基于vc++的C语言图书馆管理系统课程设计报告

图书管理课程设计学生姓名学生学号所在班级任课教师图书馆管理系统设计目的图书信息包括登录号书名作者名分类号出版单位出版时间价格等试设计一图书信息管理系统使之能提供以下功能1系统以菜单方式工作2图书信息录入功能图书...

C语言课程设计报告—图书信息管理系统

C语言课程设计报告图书信息管理系统设计指导老师:C语言程序设计编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方法和调试技能。学…

C语言程序设计报告__图书馆信息管理系统

20xx年第二阶段课程设计成果报告实训项目程序设计技术课程设计学号20xx0210470335姓名郑毓豪专业电气工程及其自动化实训日期20xx年6月8日至20xx年6月20日指导教师舒蔚实训成绩华东交通大学理工...

《C语言程序设计》课程设计报告(图书信息管理系统)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:会计学院专业:会计学年级:20##班别:4班指导教师:组长:同组成员:目录一、目的...............................…

c语言图书管理系统课程设计报告(26篇)