当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

图书管理程序

    #include<stdio.h>
    #include<string.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<ctype.h>
    #define STACK_IN99v_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;
    }
    }
    printf("你没有借这样的书,不要耍我,任意键返回\n");    /*出错提示*/
    fclose(fp);
    getch();
    return;
    }
    }
    printf("系统没这样的卡,和管理员联系,按任意键返回\n");   /*出错提示*/
    fclose(fp);
    getch();
    }
    lendcount()             /*其他的自己看就懂了,不行也可以QQ联系:258032791,c++版本要的话跟我说,愿意交爱好编程的交友,毕业没时间了,找工作忙,有些模块没写,发现什么问题自己改,*/
    {
    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();
    }
    chabook()
    {
    char ch5;
 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接