精华内容
下载资源
问答
  • C语言课程设计图书馆管理系统程序代码.docincludestdio.h includewindows.h includestring.h includeconio.h define M 100 struct books char tsmc12; int tsbh; float dj; char zz12; char czzt12; char xm12; char...

    253b171540df25e1b84436cbe50dfc72.gifC语言课程设计图书馆管理系统程序代码.doc

    includestdio.h includewindows.h includestring.h includeconio.h define M 100 struct books char tsmc12; int tsbh; float dj; char zz12; char czzt12; char xm12; char xb12; int xh; sM; int N; bool flag; int main int sele; flag0; sele1; void sr; void cx; void sc; void js; void hs; void tc; void jsh; system tsgl; printfnn; printf n; printf 1输入 2查询 3删除 n; printf 4借书 5还书 0退出 n; printf n; while1 printfnn请输入功能序号; scanf d, ifsele0 sele5 switchsele case 1sr;break; case 2cx;break; case 3sc;break; case 4js;break; case 5hs;break; case 0jsh;break; ifflag break; printfnn; printf n; printf 1输入 2查询 3删除 n; printf 4借书 5还书 0退出 n; printf n; else printf输入错误请再次输入|nn; printfnn; printf n; printf 1输入 2查询 3删除 n; printf 4借书 5还书 0退出 n; printf n; printfnn让任意键继续n; wr_file; /主函数*/ /*输入*/ void sr int n,i; N0; printf可输入的书本数; scanfd, NnN; printf请输入相关信息n; fori1;in;i printf图书名称; scanfs,sN-n-1i.tsmc; printf图书编号; scanfd, printf单价; scanff, printf作者; scanfs, strcpysN-n-1i.czzt,未借出; strcpysN-n-1i.xm,无; /查询/ void cx int i,j100-1,d,k,t0; char m20; printf查询; printf1图书名称 2图书编号; printfnn请输入查询选项; scanfd, ifk1 printf请输入图书名称; scanfs,m; fori0;iN;i ifstrcmpm,si.tsmc0 jti; tt1; else ifk2 printf请输入图书编号; scanfd, fori0;iN;i ifdsi.tsbh jti; t; ifj0-1t0 printf没有找到n; ifj0-1 t0 printft图书名称 t图书编号 t单价 t作者 t存在状态 t借书人姓名 t性别 t学号n; fori0;it;i printfts td tf ts ts ts ts td , sji.tsmc,sji.tsbh,sji.dj,sji.zz,sji.czzt,sji.xm,sji.xb,sji.xh; /删除模块*/ void sc int i,d,k,t0; char ms20; int ja-1; printf查询; printf1图书名称 2图书编号; printfnn请输入查询选项; scanfd, ifk1 printf请输入图书名称; scanfs,ms; fori0;iN;i ifstrcmpms,si.tsmc0 jai; break; else ifk2 printf请输入图书编号; scanfd, fori0;iN;i ifdsi.tsbh jai; break; printf确定删除该图书吗1表示Yes,其他No; int p; scanfd, ifp1 printfCongratulations,删除成功n; ifja-1 p NN-1; forija;iN;i strcpysi.tsmc,si1.tsmc; si.tsbhsi1.tsbh; si.djsi1.dj; strcpysi.zz,si1.zz; strcpysi.czzt,si1.czzt; strcpysi.xm,si1.xm; strcpysi.xb,si1.xb; si.xhsi1.xh; else ifja-1 printf 没有找到n; /借书模块*/ void js int i,j100-1,d,k,t0; char m20; printf查询; printf1图书名称 2图书编号; printfnn请输入查询选项; scanfd, ifk1 printf请输入图书名称; scanfs, fori0;iN;i ifstrcmpm,si.tsmc0 jti; tt1; else ifk2 printf请输入图书编号; scanfd, fori0;iN;i ifdsi.tsbh jti; t; ifj0-1t0 printf没有找到n; strcpysji.czzt,已借出; printf此书已借出n; ifj0-1t0sji.czzt 未借出 printfs d f s s s s d , sji.tsmc,sji.tsbh,sji.dj,sji.zz,sji.czzt,sji.xm,sji.xb,sji.xh; printf1确定借阅 2退出n; scanfd, switchk case 1printf请输入学号n; scanfd, printf请输入姓名n; scanfs, printf请输入性别n; scanfs, strcpysji.czzt,已借出; printf已借出,按任意键继续n; getch; case 2break; /*还书模块*/ void hs int i,j100-1,d,k,t0; char m20; printf查询; printf1图书名称 2图书编号; printfnn请输入查询选项; scanfd, ifk1 printf请输入图书名称; scanfs, fori0;iN;i ifstrcmpm,si.tsmc0 jti; t; break; else ifk2 printf请输入图书编号; scanfd, fori0;iN;i ifdsi.tsbh jti; t; break; ift0 printf没有找到n; else printfs f s s s s d n,sji.tsmc,sji.dj,sji.zz,sji.czzt,sji.xm,sji.xb,sji.xh; printf1确定归还 2退出n; int p; scanfd, ifp1 strcpysji.czzt,未借出; strcpysji.xm,无; sji.xh0; printf已归还,按任意键继续n; getch; /*结束模块*/ void jsh flag1; 7

    展开全文
  • C语言课程设计作业–图书馆系统 这系统功能挺强大的,管理员密码:666666 #include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #include<time.h> #include<...

    C语言课程设计作业–图书馆系统

    这系统功能挺强大的,管理员密码:666666

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<string.h>
    #include<time.h>
    #include<malloc.h>
    #include<conio.h>
    struct _BOOK//只有价钱 和状态 已经借书人性别是整形
    {
       char book_name[20];
       char book_num[15];
       double book_prices;
       char author_name[20];
       int _state;
       char Borrower_name[20];
       char Borrower_num[15];
       int Borrower_sex;
       struct _BOOK  *next;
    };
    struct _VIP//借书人的信息
    {
        char vip_name[20];
        char vip_num[15];
        char vip_mm[19];
        int vip_sex;
        int many;
        struct _VIP *next;
    };
    struct _BOOK *head_book;
    struct _VIP *head_vip,*vip=NULL;//该vip是间接地址指针
    int login_state,book_many,vip_many;
    char _num[20],_mm[20],admin_mm[]="123456";//记录用户的登录信息
    int main()
    {
    
        struct _BOOK *creat_book();//ok
        struct _VIP* creat_vip();//ok
        bool check_name(char *s);//
        struct _BOOK* look_book0(char *str);
        void* p_malloc(int a);
        bool add_book();
        void delete_book(struct _BOOK *p,int);
        void revise_book1(struct _BOOK *p,int);
        bool revise_book2(struct _BOOK *p,int);
        void revise_book3(struct _BOOK *p,int);
        void revise_book4(struct _BOOK *p,int);
        bool revise_book5(struct _BOOK *p,int);
        bool revise_book0(struct _BOOK *p,int);
        void look_book1(struct _BOOK *p,int);
        void look_book2(char *name,int);
        void look_book3(char *title,int);
        struct _VIP* look_vip0(char *num);
        void revise_vip1(struct _VIP *p,int);
        void revise_vip2(struct _VIP *p,int);
        void revise_vip3(struct _VIP *p,int);
        void add_vip();
        bool vip_login();
        bool _continue();
        bool borrow_book();
        bool back_book();
        void book_updated();
        void vip_updated();
        void all_book(int);
        void all_vip();
        void reset_book();
        void reset_vip();
        void revise_color();
        head_book=creat_book();//ok
         head_vip=creat_vip();//ok
         void welcome_op();
        void identity_op();
        welcome_op();
        identity_op();
    }
    struct _BOOK *creat_book()//创建一个book信息的链表~导入图书信息//OK//
    {
        struct _BOOK *h,*p,*s;
        void* p_malloc(int);
        int n;//n为图书的个数
        FILE *fp;
        if((fp=fopen("book.txt","rb"))==NULL)
        {
            fp=fopen("book.txt","wb");
            int a=0;
            fwrite(&a,4,1,fp);
            fclose(fp);
            printf("未找到book.txt文件,已经自动创建!,请重新启动该程序\n");
            exit(1);
        }
        fread(&n,sizeof(int),1,fp);
        book_many=n;
        h=(struct _BOOK*)p_malloc(sizeof(struct _BOOK));
        h->author_name[0]='\0';
        h->book_name[0]='\0';
        h->book_num[0]='\0';
        h->Borrower_name[0]='\0';
        h->Borrower_num[0]='\0';
        h->_state=0;
        h->next=NULL;
        p=h;
        for(int i=0;i<n;i++)//
        {
          if((s=(struct _BOOK*)malloc(sizeof(struct _BOOK)))==NULL)
          {
            printf("error!\n");
            exit(1);
          }
          p->next=s;
          if(fread(s,sizeof(struct _BOOK),1,fp)==EOF)
              break;
          s->next=NULL;
          p=s;
        }//文件读入完成
        fclose(fp);
        head_book=h;
        return h;
    }
    struct _VIP* creat_vip()//~导入vip信息
    {
        void* p_malloc(int);
        struct _VIP *h,*p,*s;
        int n;//n为注册VIP个数
        FILE *fp;
        if((fp=fopen("vip.txt","rb"))==NULL)//准备读取文件
        {
            fp=fopen("vip.txt","wb");
            int a=0;
            fwrite(&a,4,1,fp);
            printf("未找到vip.txt文件,已经自动创建!,请重新启动该程序\n");
            exit(1);
        }
        fread(&n,sizeof(int),1,fp);
        vip_many=n;
        h=(struct _VIP*)p_malloc(sizeof(struct _VIP));
        h->many=0;
        h->vip_mm[0]='\0';
        h->vip_name[0]='\0';
        h->vip_num[0]='\0';
        h->vip_sex=0;
        h->next=NULL;
        p=h;
        for(int i=0;i<n;i++)
        {
          s=(struct _VIP*)p_malloc(sizeof(struct _VIP));
          p->next=s;
          if(fread(s,sizeof(struct _VIP),1,fp)==EOF)
          {
               break;
          }
           s->next=NULL;
          p=s;
        }//文件读入完成
        fclose(fp);
        head_vip=h;
        return h;
    }
    bool check_mm(char *s)//检查mm是否合法,并且带不符合时的警告
    {
        int len,flag=0;
        len=strlen(s);
        if(len>=18||len<10)
        {
            printf("\t*密码长度在10~17位之间!!\n");
            getch();
            return 1;
        }
        for(int i=0;i<len;i++)
        {
            if( (s[i]>='a'&&s[i]<='z') || (s[i]>='A'&&s[i]<='Z') || s[i]=='_' || (s[i]>='0'&&s[i]<='9') || s[i]=='.')
                continue;
            else
            {
                 flag=1;
                 break;
            }
        }
        if(flag)
        {
            printf("所用密码不合法! 请重新输入\n");
            getch();
            return 1;
        }
        return 0;
    }
    bool check_name(char *s)//检查名字是否合格,不允许出现空白符就行
    {
        int len,flag=0;
        len=strlen(s);
        if(len>20||len<2)
        {
            printf("\t*****名字太短或太长!\n");
            getch();
            return 1;
        }
        for(int i=0;i<len;i++)
        {
            if(s[i]==' '||s[i]=='\t')
            {
                flag=1;
                break;
            }
        }
        if(flag)
        {
            printf("\t*****名字不能包含空白符\n");
            getch();
            return 1;
        }
        return 0;
    }
    bool check_num(char *s)//检查编号是否符合
    {
        int len;
        len=strlen(s);
        if(len!=10)
        {
            printf("\t*编号只能是一串十位的数字编号!\n");
            getch();
            return 1;
        }
        for(int i=0;i<len;i++)
        {
            if(s[i]>='0'&&s[i]<='9')
                continue;
            printf("\t*编号只能是一串十位的数字编号!\n");
            getch();
            return 1;
        }
        return 0;
    }
    struct _BOOK* look_book0(char *str)//通过*编号*,查找对应书编号结构体所在地址的前一个*地址*,如s的前一个地址//没找到对应编号则返回NULL
    {
        bool flag=1;
        struct _BOOK *p,*s;
        p=head_book;
        s=p->next;//对s进行判断
        while(s!=NULL)
        {
            flag=strcmp(s->book_num,str);//0是找到了
            if(!flag)
                break;
            p=s;
            s=p->next;
        }
        if(!flag)
            return p;
        return NULL;
    }
    void * p_malloc(int a)//带警告的malloc
    {
        void *p;
        if((p=malloc(a))==NULL)
        {
            printf("\t\t*****error!\n");
            getch();
            exit(1);
        }
        return p;
    }
    bool add_book()//书名 作者 编号 价钱//
    {
        bool revise_book0(struct _BOOK *p,int);
        void delete_book(struct _BOOK *p,int);
        void reset_book();
        void reset_vip();
        char *num;
        struct _BOOK *p,*s;
        num=(char*)p_malloc(15);
        s=head_book->next;
        p=(struct _BOOK*)p_malloc(sizeof(struct _BOOK));
        head_book->next=p;
        p->next=s;
        do
        {
            fflush(stdin);
            printf("\t请输入新输入书的编号:");
            gets(num);
        }
        while(check_num(num));
        if(look_book0(num)!=NULL)
        {
            printf("\t*该书编号已经存在!!\n");
            getch();
            free(num);
            free(p);
            return 0;
        }
        strcpy(p->book_num,num);
        free(num);
        if(!revise_book0(head_book,1))
        {
            delete_book(head_book,1);
            return 0;
        }
        book_many++;
        reset_book();
        reset_vip();
        printf("\t\t书籍添加成功\n");
        getch();
        return 1;
    }
    void delete_book(struct _BOOK *p,int sign)//*删除*对应地址的书的信息//间接指针
    {
        void reset_book();
        struct _BOOK *s;
        s=p->next;
        p->next=s->next;
        free(s);//释放s指向的区域//未测试不知道是否会死机;
        book_many--;
        if(!sign)
        {
           printf("\t\t删除成功\n");
           getch();
        }
    }
    void revise_book1(struct _BOOK *p,int sign)//通过地址*修改*book的书名//参数的对应编号的地址的前一个地址//sign为1时表明在注册 2表示修改的全体参数
    {
        struct _BOOK *s;
        s=p->next;
        char *mod;
        mod=(char*)p_malloc(20);
        fflush(stdin);
        if(sign==1)
            printf("\t请输入该书的书名:");
    
        else
            printf("\t请输入修改后的书名:");
        do
        {
            gets(mod);
        }
        while(check_name(mod));
        strcpy(s->book_name,mod);
        if(!sign)
        {
            printf("\t\t修改信息成功\n");
            getch();
        }
    
        free(mod);
    }
    bool revise_book2(struct _BOOK *p,int sign)//通过地址*修改*借书的状态//进入按提示输入/ 0为不在书架
    {
        struct _BOOK *s;
        bool revise_book5(struct _BOOK *p,int);
        s=p->next;
        if(sign==1)
            printf("\t请确定所添加的该书的状态0/1(1为在书架,0为不在书架):");
        else
             printf("\t请输入修改后的状态0/1(1为在书架,0为不在书架):");
        scanf("%d",&s->_state);
        if(s->_state)
        {
            s->Borrower_name[0]='\0';
            s->Borrower_num[0]='\0';
            s->Borrower_sex=0;
            if(!sign)
            {
               printf("\t\t状态信息修改成功\n");
               getch();
            }
            return 1;
        }
        else
        {
            if(!revise_book5(p,1))
                return 0;
            else
            {
                if(!sign)
                {
                  printf("状态信息修改成功\n");
                  getch();
                }
                return 1;
            }
        }
    
    }
    void revise_book3(struct _BOOK *p,int sign)//通过地址*修改*书的作者名称
    {
        char *mod;
        mod=(char*)p_malloc(20);
        fflush(stdin);
        do
        {
            if(sign==1)
            printf("\t请输入所进该书的作者名:");
        else
            printf("\t请输入该书修改后的作者名:");
    
            gets(mod);
        }
        while(check_name(mod));
        p=p->next;
        strcpy(p->author_name,mod);
        if(!sign)
        {
            printf("\t\t修改成功\n");
            getch();
        }
        free(mod);
    }
    void revise_book4(struct _BOOK *p,int sign)//通过地址*修改*书的价格
    {
        p=p->next;
        if(sign==1)
            printf("\t请输入该进图书的价格:");
        else
            printf("\t请输入新的价格:");
        scanf("%lf",&p->book_prices);
        if(!sign)
        {
            printf("\t\t价格修改成功\n");
            getch();
        }
    
    }
    bool revise_book5(struct _BOOK *p,int sign)//通过地址修改书的状态信息//改变该间接指向的用户信息
    {
        struct _VIP *pp,*ss;
        struct _BOOK *s;
        char *mod;
        struct _VIP* look_vip0(char *num);
        mod=(char*)p_malloc(20);//输入用户的号码
        fflush(stdin);
        printf("\t请输入该用户的号码:");
        do
        {
            gets(mod);
        }
        while(check_num(mod));
        if((pp=look_vip0(mod))==NULL)//所要操作的VIP的间接指针
        {
            printf("\t*****抱歉,该用户编号不存在(返回原来的界面)\n");
            getch();
            free(mod);
            return 0;
        }
           ss=pp->next;
           s=p->next;
           strcpy(s->Borrower_name,ss->vip_name);
           strcpy(s->Borrower_num,ss->vip_num);
           s->Borrower_sex=ss->vip_sex;
           if(!sign)
           {
              printf("该书用户信息修改成功\n");
              getch();
           }
           free(mod);
           return 1;
    }
    bool revise_book0(struct _BOOK *p,int sign)//通过地址*修改*书的所有参数//sign 在此中要么为1要么为2
    {
        revise_book1(p,sign);
        revise_book4(p,sign);
        revise_book3(p,sign);
        if(!revise_book2(p,sign))
            return 0;
        return 1;
    }
    void look_book1(struct _BOOK *p,int sign)//通过地址*输出*书的基本*信息*//0代表基本信息 1代表详细信息***************
    {
        p=p->next;
        printf("《%-20s》\t%-18s\t%-20s\t%-20.2lf\t",p->book_name,p->book_num,p->author_name,p->book_prices);
        if(p->_state)
            printf("%-20s","在架");
        else
            printf("%-20s","不在架");
        if(!sign)
            printf("\n");
        else
        {
            printf("%-20s\t%-20s\n",p->Borrower_name,p->Borrower_num);
        }
    }
    void look_book2(char *name,int sign)//通过作者名*输出*书的基本*信息*
    {
        int flag=0;
        struct _BOOK *p,*s;
        p=head_book;
        s=p->next;
        while(s!=NULL)
        {
            if(!strcmp(s->author_name,name))
            {
                look_book1(p,sign);
                flag++;
            }
            p=s;
            s=p->next;
        }
        if(!flag)
          printf("\n\n抱歉,此书库没有该作者所创作的书...................................\n");
        else
          printf("\n\n以上共有%d个查询结果.....................................\n",flag);
        getch();
    }
    void look_book2_(int sign)//带提示输入 book2//OK
    {
        char *mod;
        mod=(char*)p_malloc(20);
        fflush(stdin);
        do
        {
            printf("\t请输入作者名:");
            gets(mod);
        }
        while(check_name(mod));
        look_book2(mod,sign);
        free(mod);
    }
    void look_book3(char *title,int sign)//通过书名*输出*书的基本*信息*//OK
    {
        struct _BOOK *p,*s;
        int flag=0;
        p=head_book;
        s=p->next;
        while(s!=NULL)
        {
            if(!strcmp(s->book_name,title))
            {
                look_book1(p,sign);
                flag++;
            }
            p=s;
            s=p->next;
        }
        if(!flag)
            printf("\n\n抱歉,此书库没有该书......................\n");
        else
            printf("\n\n以上共有%d个查询结果......................\n",flag);
        getch();
    }
    void look_book3_(int sign)//带提示的 书名 信息//OK
    {
        char *mod;
        mod=(char*)p_malloc(20);
        fflush(stdin);
        do
        {
            printf("\t请输入书名:");
            gets(mod);
        }
        while(check_name(mod));
        look_book3(mod,sign);
        free(mod);
    }
    void look_book4(int sign)//带提示的 编号找到信息//OK
    {
        struct _BOOK *p;
        char *mod;
        mod=(char*)p_malloc(20);
        fflush(stdin);
        do
        {
            printf("\t请输入该书的编号:");
            gets(mod);
        }
        while(check_num(mod));
        p=look_book0(mod);
        if(p==NULL)
        {
            printf("\t*该书编不存在!!!\n");
            getch();
            free(mod);
            return;
        }
        look_book1(p,sign);
        getch();
        free(mod);
    
    }
    struct _VIP* look_vip0(char *num)//通过*vip号码* *找到*对应地址的*前一个地址*
    {
        struct _VIP *p,*s;
        int flag=0;
        p=head_vip;
        s=p->next;
        while(s!=NULL)
        {
            if(!strcmp(s->vip_num,num))
            {
                flag=1;
                break;
            }
            p=s;
            s=p->next;
        }
        if(flag)
            return p;
        else
            return NULL;
    }
    void revise_vip1(struct _VIP *p,int sign)//通过地址*修改*vip性别
    {
        p=p->next;
        printf("\t请确认您的性别0/1(0男 1女):");
        scanf("%d",&p->vip_sex);
        fflush(stdin);
        if(!sign)
        {
          printf("\t\t性别修改成功\n");
          getch();
        }
    
    }
    void revise_vip2(struct _VIP *p,int sign)//通过地址*修改*密码
    {
        char *mod;
        mod=(char*)p_malloc(20);
        p=p->next;
        fflush(stdin);
        do
        {
          if(sign)
            printf("\t请设置您的密码:");
          else
            printf("\t请输入您要设置的密码:");
          gets(mod);
        }
        while(check_mm(mod));
        strcpy(p->vip_mm,mod);
        strcpy(_mm,mod);
        if(!sign)
        {
         printf("\t\t密码修改成功\n");
         getch();
        }
        free(mod);
    
    }
    void revise_vip3(struct _VIP *p,int sign)//通过地址*修改*昵称
    {
        p=p->next;
        char *mod;
        mod=(char*)p_malloc(20);
        fflush(stdin);
        do
        {
            printf("\t请输入您要设置的昵称:");
            gets(mod);
        }
        while(check_name(mod));
        strcpy(p->vip_name,mod);
        if(!sign)
        {
        printf("\t\t昵称修改成功\n");
        getch();
        }
        free(mod);
    }
    void add_vip()//账号 密码 性别 昵称
    {
        char *num;
        void reset_book();
        void reset_vip();
        struct _VIP *p,*s;
        num=(char*)p_malloc(20);
        s=head_vip->next;
        p=(struct _VIP*)p_malloc(sizeof(struct _VIP));
        head_vip->next=p;
        p->next=s;
        fflush(stdin);
        do
        {
            printf("\t请输入您的学号(工号):");
            gets(num);
        }
        while(check_num(num));
        if(look_vip0(num)!=NULL)
        {
            printf("\t*此号码已经存在!!\n");
            getch();
            free(num);
            free(p);
            return ;
        }
        strcpy(p->vip_num,num);
        free(num);
        revise_vip1(head_vip,1);
        revise_vip2(head_vip,1);
        revise_vip3(head_vip,1);
        p->many=0;
        vip_many++;
        reset_book();
        reset_vip();
        printf("\t\t账号注册成功请注意保管\n");
        getch();
    }
    bool vip_login()//登陆 登陆成功返回1 失败返回0//没有该账号//密码错误,
    {
        struct _VIP *p,*s;
        fflush(stdin);
        do
        {
          printf("\t请输入您的账号:");
          gets(_num);
        }
        while(check_num(_num));
        do
        {
        printf("\t请输入您的密码:");
        gets(_mm);
        }
        while(check_mm(_mm));
        if((p=look_vip0(_num))==NULL)
        {
            login_state=0;
            printf("\t*****没有该账号\n");
            getch();
            return 0;
        }
        else//找到对应的账号
        {
            s=p->next;
            if(strcmp(s->vip_mm,_mm))
            {
               login_state=0;
               printf("密码错误\n");
               getch();
               return 0;
            }
            login_state=1;
            printf("登陆成功\n");
            getch();
            vip=p;//信息导入
            return 1;
        }
    }
    bool _continue()//通过发送是否继续,并且加以用户的判断返回对应值
    {
        char mod;
        fflush(stdin);
        printf("\t\t\tcontinue(y/n)?:");
        mod=getchar();
        if(mod=='y'||mod=='Y')
            return 1;
        return 0;
    }
    bool borrow_book()//借书 借书成功返回1 失败返回0  ///*通过提示输入编号来借书*//不在书架,或者编号不存在返回0
    {
        char *num;
        struct _BOOK *p;
        struct _VIP *vvip;
        void reset_book();
        void reset_vip();
        void login_state2();
        int flag=0;
        num=(char*)p_malloc(20);
        do
        {
            fflush(stdin);
            printf("\t请输入所借书的索书号:");
            gets(num);
            if(!check_num(num))
            {
                flag=1;
                break;
            }
            printf("\t*****您输入的编号不合法!\n");
            getch();
        }
        while(_continue());
        if(!flag)
        {
            free(num);
            return 0;
        }
        if((p=look_book0(num))==NULL)
        {
            printf("\t\t抱歉没有找到该编号对应的书\n");
            getch();
            free(num);
            return 0;
        }
        p=p->next;//找到对应编号对应的书
        vvip=vip->next;
        if(!p->_state)
        {
             printf("\t\t抱歉该编号对应的书不在书架\n");
             getch();
             free(num);
             return 0;
        }
        p->_state=0;//借书成功
        strcpy(p->Borrower_name,vvip->vip_name);
        strcpy(p->Borrower_num,vvip->vip_num);
        p->Borrower_sex=vvip->vip_sex;
        vvip->many++;
        reset_book();
        reset_vip();
        login_state2();
        printf("\t\t借书成功\n");
        getch();
        free(num);
        return 1;
    }
    bool back_book()//还书 通过对应的编号还书//如果用户不想输入或者书编对应的借书人不是自己//或者在书架 /
    {
        struct _BOOK *p;
        struct _VIP *vvip;//中间用一下
        void login_state2();
        void reset_book();
        void reset_vip();
        char *num;
        int flag=0;
        num=(char*)p_malloc(20);
        do
        {
            fflush(stdin);
            printf("\t请输入所还书的书编号:");
            gets(num);
            if(!check_num(num))
            {
                flag=1;
                break;
            }
        }
        while(_continue());
        if(!flag)
        {
            free(num);
            return 0;
        }
        if((p=look_book0(num))==NULL)
        {
            printf("\t*此书编不存在!!!\n");
            getch();
            free(num);
            return 0;
        }
        p=p->next;//有该书
        vvip=vip->next;
        if(strcmp(p->Borrower_num,vvip->vip_num))
        {
           printf("抱歉,您未借此编号的书\n");
           getch();
           free(num);
           return 0;
        }
        p->_state=1;
        p->Borrower_name[0]='\0';
        p->Borrower_num[0]='\0';
        vvip->many--;
        free(num);
        reset_book();
        reset_vip();
        login_state2();
        printf("\t\t还书成功\n");
        getch();
        return 1;
    }
    void book_updated()//把所有数据保存
    {
        struct _BOOK *p,*s;
        FILE *fp;
        p=head_book;
        s=p->next;
        if((fp=fopen("d:\\bookinformation\\book.txt","wb"))==NULL)
        {
           printf("open file:book error!!\n");
           exit(1);
        }
        fwrite(&book_many,sizeof(int),1,fp);
        while(s!=NULL)
        {
            fwrite(s,sizeof(struct _BOOK),1,fp);
            p=s;
            s=p->next;
        }
        fclose(fp);
    }
    void vip_updated()//vip数据保存
    {
        struct _VIP *pp,*ss;
        FILE *fp;
        pp=head_vip;
        ss=pp->next;
        if((fp=fopen("d:\\bookinformation\\vip.txt","wb"))==NULL)//准备读取文件
        {
            printf("open file:vip error!!\n");
            exit(1);
        }
        fwrite(&vip_many,sizeof(int),1,fp);
        while(ss!=NULL)
        {
            fwrite(ss,sizeof(struct _VIP),1,fp);
            pp=ss;
            ss=pp->next;
        }
        fclose(fp);
    }
    void all_book(int sign)//输出所有书的基本信息
    {
        system("cls");
        struct _BOOK *p,*s;
        void print_biao();
        void print_biao2();
        p=head_book;
        s=p->next;
        if(!sign)
          print_biao();
        else
          print_biao2();
         while(s!=NULL)
        {
            look_book1(p,sign);
            p=s;
            s=p->next;
        }
        printf("\n\n以上共有%d个结果......................\n",book_many);
        getch();
    }
    void print_biao()//输出一个book信息表头
    {
        printf("%-247s\t%-20s\t%-20s\t%-20s\t%-20s\n\n","书名","编号","作者","价格","状态");
    }
    void print_biao2()//输出一个详细书籍信息的表头
    {
        printf("%-24s\t%-20s\t%-20s\t%-20s\t%-20s%-20s\t%-20s\n\n","书名","编号","作者","价格","状态","Borrow name","Borrow num");
    }
    void all_vip()//输出所有VIP的基本信息 测试用
    {
        struct _VIP *pp,*ss;
        pp=head_vip;
        ss=pp->next;
        while(ss!=NULL)
        {
            printf("nick:%20s\tnum:%20s\tmm:%20s\tsex: ",ss->vip_name,ss->vip_num,ss->vip_mm);
            if(ss->vip_sex)
                printf("女\n");
            else
                printf("男\n");
            pp=ss;
            ss=pp->next;
        }
        puts("—————————————————————————————————————————————————————");
        printf("\n\n以上共有%d个结果.........................\n",vip_many);
        getch();
    }//2
    void free_book()//释放book 链表内存
    {
        struct _BOOK *p,*s;
        p=head_book;
        s=p->next;
        while(s!=NULL)
        {
            free(p);
            p=s;
            s=p->next;
        }
        free(p);
    }
    void free_vip()//释放vip链表内存
    {
        struct _VIP *pp,*ss;
        pp=head_vip;
        ss=pp->next;
        while(ss!=NULL)
        {
            free(pp);
            pp=ss;
            ss=pp->next;
        }
        free(pp);
        login_state=0;
    }
    void reset_book()//用在已经打开链表的情况
    {
        book_updated();
        free_book();
        creat_book();
    }
    void reset_vip()
    {
        vip_updated();
        free_vip();
        creat_vip();
    }
    void welcome_op()//OK  欢迎界面
    {
        system("cls");
        puts("\t\t\t-----------------------------------------\n");
        puts("\t\t\t----------欢迎进入图书信息管理系统-------\n");
        puts("\t\t\t-----------------------------------------\n");
        getch();
    }
    void identity_op()// //选择用户界面
    {
        void _tourist();
        void _vip();
        void _administrator();
        void revise_color();
        char flag=0;
        do
        {
        system("cls");
        puts("\t\t\t-----------------------------------------\n");
        puts("\t\t\t① 游客    \n");
        puts("\t\t\t② 会员    \n");
        puts("\t\t\t③ 管理员  \n");
        puts("\t\t\t④ 调色人员\n");
        puts("\n\n\n");
        fflush(stdin);
        printf("\t\t请确认您的身份:[ ]\b\b");
        flag=getchar();
        switch(flag)
        {
        case '1':_tourist();break;
        case '2':if(vip_login()) _vip();break;//登陆成功才可进入vip页面
        case '3':_administrator();break;
        case '4':revise_color();break;
            default : fflush(stdin);puts("\t\t您的输入有误,请重新输入.\n");puts("plese enter any key return \n");getch();
        }
        }
        while(1);//为了减少空间复杂度
    }
    void _tourist()//OK//游客身份的界面//有BUg  同时输入123时只取第一个
    {
       char flag=0;
        do
       {
        system("cls");
        puts("\t尊敬的游客您好:\n");
        puts("\n\n");
        puts("\t\t\t1.查看所有书籍信息\n");
        puts("\t\t\t2.根据书名查看信息\n");
        puts("\t\t\t3.根据作者名查看书籍信息\n");
        puts("\t\t\t4.根据编号查看书籍信息\n");
        puts("\t\t\t5.返回上一界面\n");
        puts("\t\t\t6.注册会员\n");
        puts("\t\t\t7.退出系统\n");
        puts("\n\n\n");
        fflush(stdin);
        printf("\t\t请输入您要选的功能:[ ]\b\b");
        flag=getchar();
        switch(flag)
        {
        case '1':all_book(0);break;
        case '2':look_book3_(0);break;
        case '3':look_book2_(0);break;
        case '4':look_book4(0);break;
        case '5':return;
        case '6':add_vip();break;
        case '7':exit(0);
            default : fflush(stdin);puts("\t*****您的输入有误,请重新输入.\n");getch();
        }
       }
       while(1);
    }
    void _vip()//会员身份的界面//进入就已经登陆 //ok
    {
        char flag=0;
       void revise_vip();
       void look_vip(struct _VIP *pp,int);
       do
       {
        system("cls");
        puts("\t尊敬的会员您好:\n");
        puts("\t\t\t1.查看所有书籍信息\n");
        puts("\t\t\t2.根据书名查看信息\n");
        puts("\t\t\t3.根据作者名查看书籍信息\n");
        puts("\t\t\t4.根据编号查看书籍信息\n");
        puts("\t\t\t5.借书\n");
        puts("\t\t\t6.还书\n");
        puts("\t\t\t7.查看个人信息\n");
        puts("\t\t\t8.个人信息修改\n");
        puts("\t\t\t9.退出登陆\n");
        fflush(stdin);
        printf("\t\t请输入您要选的功能:[ ]\b\b");
        flag=getchar();
        switch(flag)
        {
        case '1':all_book(0);break;
        case '2':look_book3_(0);break;
        case '3':look_book2_(0);break;
        case '4':look_book4(0);break;
        case '5':borrow_book();break;
        case '6':back_book();break;
        case '7':look_vip(vip,0);break;
        case '8':revise_vip();break;
        case '9':login_state=0;vip=NULL;return;
            default : fflush(stdin);puts("\t****您的输入有误,请重新输入.\n");getch();
        }
       }
       while(1);
    }
    void _administrator()//管理员身份
    {
        char mod[20];
        void revise_book_();
        void look_vip1();
        void delete_vip1();
        void delete_vip(struct _VIP *pp);
        void delete_book1();
        printf("请输入管理员密码:");
        scanf("%s",mod);
        if(strcmp(mod,admin_mm))
        {
            puts("\t\t密码错误!");
            getch();
            return ;
        }
        do
       {
        char flag=0;
        system("cls");
        puts("\t管理员您好:\n");
        puts("\n\n");
        puts("\t\t\t1.查看所有书籍的详细信息\n");
        puts("\t\t\t2.根据书名查看详细信息\n");
        puts("\t\t\t3.根据作者名查看书籍详细信息\n");
        puts("\t\t\t4.根据编号查看书籍详细信息\n");
        puts("\t\t\t5.查看所有vip会员信息\n");
        puts("\t\t\t6.查看某一会员的信息\n");
        puts("\t\t\t7.删除某一会员的信息\n");
        puts("\t\t\t8.添加书籍\n");
        puts("\t\t\t9.删除书籍\n");
        puts("\t\t\ta.修改某一书籍的信息\n");
        puts("\t\t\tb.返回上一界面\n");
        puts("\t\t\tc.退出系统\n");
        fflush(stdin);
        printf("\t\t请输入您要选的功能:[ ]\b\b");
        flag=getchar();
        switch(flag)
        {
        case '1':all_book(1);break;
        case '2':look_book3_(1);break;
        case '3':look_book2_(1);break;
        case '4':look_book4(1);break;
        case '5':all_vip();break;
        case '6':look_vip1();break;
        case '7':delete_vip1();break;
        case '8':add_book();break;
        case '9':delete_book1();break;
        case 'a':revise_book_();break;
        case 'b':return;
        case 'c':exit(0);
            default : fflush(stdin);puts("\t*****您的输入有误,请重新输入.\n");getch();
        }
       }
        while(1);
    }
    void revise_vip()//修改vip的所有信息
    {
        void look_vip(struct _VIP *pp,int);
        void login_state2();
        struct _VIP *pp;
        pp=vip;
        look_vip(pp,1);
        revise_vip1(pp,1);
        revise_vip2(pp,1);
        revise_vip3(pp,1);
        reset_book();
        reset_vip();
        login_state2();
        puts("\t\t信息修改成功\n");
        getch();
    }
    void look_vip(struct _VIP *pp,int sign)//间接地址查看信息
    {
        pp=pp->next;
        if(!sign)
           printf("您的个人信息:\n\n");
        else if(sign==1)
            printf("您此时的个人信息:\n\n");
        else
            printf("该用户的个人信息:\n\n");
        printf("nick:%20s\tnum:%20s\tmm:%20s\t性别: ",pp->vip_name,pp->vip_num,pp->vip_mm);
        if(pp->vip_sex)
            printf("女\n\n");
        else
            printf("男\n\n");
        if(!sign)
            getch();
    }
    void login_state2()//不带提示信息的重新登陆VIP
    {
        struct _VIP *pp,*ss;
        pp=head_vip;
        ss=pp->next;
        while(ss!=NULL)
        {
            if(!strcmp(ss->vip_num,_num))
            {
                login_state=1;
                vip=pp;
                return;
            }
            pp=ss;
            ss=pp->next;
        }
    }
    void look_vip1()//带查看某一会员信息
    {
        struct _VIP *pp;
        char *num;
        num=(char*)p_malloc(20);
        fflush(stdin);
        do
        {
            printf("\t\t请输入所要查看会员的账号:");
            gets(num);
        }
        while(check_num(num));
       if((pp=look_vip0(num))==NULL)
          {
            printf("\t*****该会员不存在!\n");
            getch();
            free(num);
            return ;
          }
        else
        {
            pp=pp->next;
            printf("nick:%20s\tnum:%20s\tmm:%20s\tsex: ",pp->vip_name,pp->vip_num,pp->vip_mm);
            if(pp->vip_sex)
                printf("女\n");
            else
                printf("男\n");
            getch();
            free(num);
            return;
        }
    }
    void delete_vip1()//带提示删除会员信息
    {
        struct _VIP *pp;
        char *num;
        void delete_vip(struct _VIP *pp);
        num=(char*)p_malloc(20);
        fflush(stdin);
        do
        {
            printf("\t\t请输入所要删除会员的账号:");
            gets(num);
        }
        while(check_num(num));
       if((pp=look_vip0(num))==NULL)
          {
            printf("\t*****该会员不存在!\n");
            getch();
            free(num);
            return ;
          }
        else
        {
            look_vip(pp,2);
            delete_vip(pp);
            printf("\t\t删除成功\n");
            getch();
            free(num);
            return;
        }
    }
    void delete_vip(struct _VIP *pp)//根据间接地址删除会员信息
    {
        struct _VIP *ss;
        ss=pp->next;
        pp->next=ss->next;
        free(ss);
        vip_many--;
        reset_vip();
    }
    void delete_book1()//带提示的删除某一书籍 1表示还书 0表示删除书的操作
    {
        struct _BOOK *p;
        char *num;
        num=(char*)p_malloc(20);
        fflush(stdin);
        do
        {
            printf("请输入所要删除的书编号:");
            gets(num);
        }
        while(check_num(num));
        if((p=look_book0(num))==NULL)
        {
            free(num);
            return;
        }
        else
        {
            printf("该书的信息为:\n\n");
            print_biao2();
            look_book1(p,2);
            delete_book(p,1);
            reset_book();
            reset_vip();
            printf("该书已从书库移除\n");
            getch();
            free(num);
            return;
        }
    }
    void revise_book_()//带提示的修改书的全部参数
    {
        struct _BOOK *p;
        char *num;
        num=(char*)p_malloc(20);
        fflush(stdin);
        do
        {
            printf("\t请输入所修改书的编号:");
            gets(num);
        }
        while(check_num(num));
        if((p=look_book0(num))==NULL)
        {
            printf("\t*该书编号不存在!!!\n");
            getch();
            free(num);
            return;
        }
        else
        {
            printf("该书的信息:\n\n");
            print_biao2();
            look_book1(p,1);
            if(!revise_book0(p,2))
            {
                free(num);
                return;
            }
            else
            {
                free(num);
                reset_book();
                reset_vip();
                printf("\t\t该书的所有参数修改成功\n");
                getch();
                return;
            }
        }
    }
    void revise_color()
    {
        system("cls");
        char a[2],b[2],color[10]="color ";
        puts("\t\t\t0 = 黑色\n");
        puts("\t\t\t1 = 蓝色\n");
        puts("\t\t\t2 = 绿色\n");
        puts("\t\t\t3 = 湖蓝色\n");
        puts("\t\t\t4 = 红色\n");
        puts("\t\t\t5 = 紫色\n");
        puts("\t\t\t6 = 黄色\n");
        puts("\t\t\t7 = 白色\n");
        puts("\t\t\t8 = 灰色\n");
        puts("\t\t\t9 = 淡蓝色\n");
        puts("\t\t\tA = 淡绿色\n");
        puts("\t\t\tB = 淡浅绿色\n");
        puts("\t\t\tC = 淡红色\n");
        puts("\t\t\tD = 淡紫色\n");
        puts("\t\t\tE = 淡黄色\n");
        puts("\t\t\tF = 亮白色\n\n\n");
        puts("\t原色   窗口色选0,字体颜色选7");
        puts("\t白枫色 窗口色选f,字体颜色选4");
        puts("\t请输入窗口背景色  窗口字体颜色(用空格隔开):\n");
        scanf("%s",a);
        scanf("%s",b);
        if(((a[0]>='0'&&a[0]<='9')||(a[0]>='A'&&a[0]<='F')||(a[0]>='a'&&a[0]<='f'))&&((b[0]>='0'&&b[0]<='9')||(b[0]>='A'&&b[0]<='F')||(b[0]>='a'&&b[0]<='f')))
        {
            if(a[0]==b[0])
            {
                printf("You can't choose the same color\n");
                getch();
            }
    
            else
            {
                color[6]=a[0];
                color[7]=b[0];
                color[8]='\0';
                system(color);
            }
        }
        else
        {
            printf("输入格式错误\n");
            getch();
        }
        return;
    }
    
    
    

    转载于:https://www.cnblogs.com/dchnzlh/p/10427254.html

    展开全文
  • 课程设计的目的就是要锻炼大家运用所学知识解决实际问题的能力,让我们在实践中更加深刻的了解C语言的运用特点。本次课程设计要完成以下目的:1、 新书入库: 图书信息包括书名, 书号, 库存量, 现存量共4项. 首先输入...

    图书管理系统

    一 课程设计目的:

    通过一年的学习,使我们对自己涉及的专业有了一定的了解。课程设计的目的就是要锻炼大家运用所学知识解决实际问题的能力,让我们在实践中更加深刻的了解C语言的运用特点。

    本次课程设计要完成以下目的:

    1、 新书入库: 图书信息包括书名, 书号, 库存量, 现存量共4项. 首先输入3本书的信息, 并将其存入文件

    ”book.dat” 中. 当有新书入库时, 先判断文件中是否有此书( 即比较书名 ),

    若有该书在图书账目中已经存在,则将其库存量增加(包括总库存量和现库存量的信息); 若该书不存在,

    则在图书账目中增加一种书,总库存量和现库存量的信息添加到文件中.

    2、图书查询: 输入一个书号, 在文件中查找此书, 若找到则输出此书的全部信息; 若找不到则输出查找失败的信息.

    3、借阅管理

    3.1每个读者的信息包括姓名, 编号, 1张借书卡( 限借一本书 ), 输入3个读者的信息存入文件 “reader . dat”

    中.

    3.2借书登记: 输入读者的编号, 所借图书的书号,

    先判断姓名是否在文件”reader.dat” 中, 若有则将书号存入一张借书卡上( 注: 初始时借书卡的信息都为零,

    借书后借书卡的信息改为所借书的书号), 并修改文件”reader.dat”的相应内容,

    同时修改文件”book.dat”中此书的现存量. 若”reader.dat”无此姓名, 则应提示错误

    3.3还书管理: 输入读者的编号, 所还图书的书号, 将借书卡的信息置为零, 并修改文件”reader.dat”的相应内容,

    同时修改文件”book.dat”中此书的现存量.

    4、输出全部图书信息和全部读者信息:virtual viod Show(); // 显示书的信息,class Reader { // 读者信息类 char Name[ ],//姓名 char position[ ];//职务 int age; //年龄 long code;//借书证号}

    5、退出系统.

    6、附加说明:系统将来完善的功能有:添加读者,一位读者可同时借阅和归还多本图书等

    二 设计方案论证

    1 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)

    1.1新书入库模块:可用一个函数insert_new_book(char book_num[],char

    book_name[],int number)来实现。形参分别为:书名,

    书号,以及有多少本书要入库,再根据要求将信息写入文件boot.dat中。又由于最开始要输入三本新书,故可以加一个初始化函数init_book(),但是初始化函数只执行一次,也就是在系统第一次运行的时候执行,此时可以根据判断是否存在boot.dat这个文件来决定是否执行初始化函数.

    1.2查询模块:可用一个函数void find_book(char

    book_num[])来实现。找到就输出此书全部信息,找不到就输出查找失败信息。

    1.3借阅管理模块:

    三个读者的信息可以在系统初始化时完成.即可用初始化函数init_reader()来实现对读者的初始化。因为读者初始化函数也只是在系统第一次运行的时候执行一次,故也可以根据是否存在reader.dat文件来确定是否执行此函数。(到现在可以发现在系统初始化函数里,至少已经需要调用两个初始化函数了)

    借书登记模块:可用一个函数borrow_book(char reader_num[],char

    book_num[])来实现。在函数中要分别判断

    A 该读者的编号是否已经存在,如果不存在,则提示错误。

    B 该读者的借阅书是否已满(即最多只能借1本书)如果是,则提醒该用户先去还书

    C 输出的书号对应的书是否存在,如果不存在,则提醒读者不存在此书。

    D 借书过程完成后,则对读者信息里的借书信息写上所借书号,并修改库存量。

    1.4还书管理模块:可用一个函数return_book(char reader_num[],

    char book_num[])来实现。在实现此函数时要判断:

    A 该读者的姓名是否已经存在,如果不存在,则提示错误。

    B 该读者是否已经借阅此书。如果没有,则提示错误。

    C 还书过程完成后,则对读者信息里的借书信息清零,并修改库存量。

    输出图书和读者信息:可分别用模块print_book()和print_reader()来实现

    直接从book.dat文件和reader.dat文件中读取信息并输出。

    退出系统:可用一个函数exit()来实现。首先将信息保存到文件,释放动态创建的内存空间,再退出此程序。

    2

    系统主模块结构图:

    新书入库

    图书查询

    借书登记

    借书登记

    输出图书信息

    输出读者信息

    退出系统

    图书管理系统

    图1 图书管理系统结构图

    3  界面设计

    此系统界面采用图形和数字化菜单设计。

    主界面设计如下:

    图书管理系统

    图书管理系统主菜单

    请选择相应的数字执行相应的功能:

    0:退出此系统

    1:新书入库

    2:图书查询

    3:借书登记

    4:还书管理

    5:输出全部图书信息和读者信息

    各子界面如下:

    1、新书入库界面:

    请选择相应的数字执行相应的功能:

    10:返回主菜单

    11:新书入库

    请输入新书名:

    请输入新书号:

    请输入新书数量:

    (注:新书入库成功后,程序返回到子界面1)

    2、图书查询界面界面:

    请选择相应的数字执行相应的功能:

    20:返回主菜单

    21:图书查询

    请输入需要查询的书号:

    (注:图书查询完成后,返回到子界面2)

    ` 3、借书登记界面:

    请选择相应的数字执行相应的功能:

    30:返回主菜单

    31:借书登记

    请输入读者编号:

    请输入所借书号:

    (注:借书过程完成后,返回到子界面3)

    ` 4、还书管理:

    请选择相应的数字执行相应的功能:

    40:返回主菜单

    41:还书登记

    请输入读者编号:

    请输入所借书号:

    (注:还书过程完成后,返回到子界面4)

    5、输出全部图书和读者信息:

    请选择相应的数字执行相应的功能:

    50:返回主菜单

    51:输出全部图书信息:

    书号: 书名: 库存量: 现存量:

    52:输出全部读者信息:

    读者编号 读者姓名 所借书号

    (注:输出图书和读者信息后,返回到子界面5)

    4  数据结构设计

    程序中考虑到图书信息和读者信息中都包含有不同类型的数据,故分别建立图书和读者两种类型的结构体;由于图书和读者的数量非固定,所以采用动态链式存储来实现。

    图书类型:

    typedef struct bk{

    char book_num[11];

    char book_name[41];

    unsigned book_kc,book_xc;

    struct bk *next;

    }book;

    读者类型:

    typedef struct rd{

    char reader_num[11];

    char reader_name[11];

    char reader_book_num[11];

    struct bk *next;

    }reader;

    5  主要功能程序结构设计

    5.1 系统主要结构流程图:

    已做初始化

    开始

    初始化

    退出系统

    功能选择

    新书入库

    借书登记

    还书

    图书查询

    入库完否

    输出图书信息

    输出读者信息

    图2 主程序流程图

    5.2 新书入库功能程序结构图

    开始

    输入新书名、新书号和新书数量

    展开全文
  • 一、学生信息存放在文件中,提供文件的输入、输出等操作;...管理员模式包含7种权限:1.学生信息的录入,2.学生信息的显示,3.学生信息的修改,4.学生信息的删除,5.学生信息的查询,6.学生人数的统计7....
  • c语言课程设计报告(答辩上交)》由会员分享,可在线阅读,更多相关《c语言课程设计报告(答辩上交)(7页珍藏版)》请在人人文库网上搜索。1、青岛理工大学C语言程序设计主题家庭财务管理系统导师:王金龙名字:吴魏...

    《c语言课程设计报告(答辩上交)》由会员分享,可在线阅读,更多相关《c语言课程设计报告(答辩上交)(7页珍藏版)》请在人人文库网上搜索。

    1、青岛理工大学C语言程序设计主题家庭财务管理系统导师:王金龙名字:吴魏学号: 201007133类别:网络102专业:网络工程。地点:多媒体大楼207时间: 6.277.01一、内容家庭财务管理系统主要进行家庭成员的收入、支出、追加、删除、查询等操作,可以统计总收入和总支出。 这个软件为家人提供了管理家庭财务的平台。1 )菜单设计:本系统提供了一个简单操作的界面。 有提示帮助用户根据需要操作家庭财务管理系统。2 )附加模块:根据实际收入和支出,添加相应的记录。 数量没有限制。3 )查询模块:您可以选择不同的关键字输入来搜索该记录。4 )删除模块:如果某条记录错误或不需要,可以删除。5 )显示模块。

    2、:按照添加的优先顺序在画面上依次显示记录,显示总收入、总支出和馀额。6 )退出模块:退出财务管理系统,保存文件。(请参见。)二、登机环境操作系统: windows XP开发工具: VC6.0三、函数调用关系图开始。打开文件,读入信息菜单界面1添东西建立联系。2询问联系方式。3删除联系人4显示联系人0退出保存结束。四、各函数的功能说明1 .系统的主要函数和功能。1.)add函数:功能是添加收入或支出的记录2.)search函数:搜索联系人的功能输入关键字,从文件中查找并显示相应的记录。3.)delete_rec函数:删除记录的功能如果记录错误或不需要,可以删除。4.)show函数:显示记录的功能。

    3、,在画面上显示添加的记录。5.)quit函数:退出系统以保存信息。五、算法说明添加:如果在主菜单中选择“添加”选项,请让用户依次输入年月日,输入月时限制在1到12之间,满足条件时继续运行,输入整个记录。 动态链表可以根据用户的使用情况动态地调整内存的大小. 在现有链表中插入节点时,head指的是插入的节点,该节点指的是head本来指定的节点。 每次添加记录时,都会添加接点。查询:在主菜单中选择查询选项后,选择查询方法,1 .按名称查,2 .按注释查。 此后,根据提示输入相应的信息名(或注释)时,系统根据信息从该链表的第一个节点开始顺序地向后查询,如果有某个节点存在,则输出该记录的信息,如果指定。

    4、NULL,则询问至最后的节点删除:输入要删除的名称和金额后,系统从该链表的第一个节点开始依次用q指针进行查询,将查询的节点分配给另一个p指针。 如果符合某个节点,则显示该记录的信息,再次确认是否让用户删除。 如果指向NULL并检查完最后一个节点也没有找到,则返回到主菜单。 当确定要删除该节点时,q所指定的节点之前的节点(即p所指定的节点)将该节点所指定的下一个节点、即q所指定的节点从原链表中分离。 每次删除记录,都会减少一个接点。六、程序执行效果图1 .添加联系人添加记录时,月限制为112月,不能添加时,每次添加记录时返回主菜单,在链表中插入该节点。2询问联系方式查询记录时,可以选择注释或名称。

    5、进行搜索。 如果选择“按名称查找”,则输入名称后,该联系人的所有记录将根据添加的优先级依次显示在屏幕上。3删除联系人如果选择了“删除”选项,用户将输入要删除的人的姓名和金额,根据输入的信息显示该记录,并出现一条消息,提示用户在多次确认后删除。4显示联系人如果从菜单中选择显示选项,则所有记录将依次显示在屏幕上,并计算总收入、总支出和当前盈馀。五退出从菜单中选择此选项可将所有数据保存到文件中,并关闭系统。七、总结这次家庭财务管理系统的建立,我遇到了很多困难。 主要原因是不太擅长使用“指针”。 在追加模块中,因为不太理解插入指针的专用句,所以离开书时,不知道是怎么开始的,自己很长时间没想,后来翻阅书。

    6、,抄写了相关的句后,就背下来了。 p-next=头部; 头=p; 附加节点数没有强调Recordcount数据类型。 写删除模块也发生了同样的问题。 读了书的例题,其中有两个指针,但我的代码中只有一个。 怎么做才好模仿书的写法,以失败告终。 经过很多修正总结失败的原因是这个指针的定义错误,对于这个错误,很多尝试成功了。 显示函数中,自己的感觉没有错误,但每次在“收入、支出、现在的剩馀额”的后面显示数字列,开始放弃的时候,发现自己犯了一个奇怪的错误,在printf语言中竟然使用了地址符号。 保存函数也会犯常见错误,文件中使用了fscanf语句。八、参考文献谭浩强. c编程(第4版).清华大学出版。

    7、社。九、程序清单(重组版,小五号)#include#include#includestruct F_Data举止英年; /年int month; /月int data; /日期浮动模式; /金额char name20; /名字int type; /收入或支出类型char comment100; /备注struct f _ dat a *下一步; /定义指针void main ()举止PS、w=1;void add ();void search ();void delete_rec ();void show ();PS举止printf,打印机,打印机,打印机。欢迎使用printf (家庭金融系统。

    8、n );printf(1:添加记录n );printf(2:查询记录n );printf(3:删除记录n );printf(4:显示所有记录n );printf(0:结束n );扫描( % d ,I );交换机(I )举止case 1:add (); break;case 2:search (); break;case 3:delete_rec (); break;case 4:show (); break;以下while(w=1)以下void add ()举止系统( cls ); /*清除屏幕*/内记录计数;结构f _ dat a *头部;struct F_Data *p=NULL; pNo。

    9、de是struct F_Data型指针*/p=(structf _ dat a * ) malloc (sizeof (structf _ data ) ); /*动态更改运行时使用的内存大小*/printf (年: );扫描( % d ,p-year );请输入printf (月: 。 )扫描( % d ,p-month );if(p-month0)(p-month13) /*限定月为112 */举止请输入printf (日期: 。 )扫描( % d ,p-data );printf (金额: );扫描( % f ,p-amout );printf (名称: );扫描( % s ,p-nam。

    10、e );printf (收入为1,支出为0: );扫描( % d ,p-type );请输入printf (类型: 。 )扫描( % s ,p-comment )p-next=头部; /*插入节点*/头=p;记录计数; /*节点数1*/以下系统( pause ); /*姿势*/以下void搜索()举止系统( cls ); /*清除屏幕*/struct F_Data*head;char name20;int type;int choice;struct F_Data*p=NULL; pNode是struct F_Data型指针*/printf (按名称搜索n2注释搜索n );printf (请输。

    11、入您的选择: );扫描( % d ,choice );PS (选择=1)举止printf (请输入名称: );扫描(“% s”,name )for (p=头部; p!=空值; p=p-next) /*链表中从第一个节点到最后一个节点*/if(strcmp(p-name,name)=0) /*如果输入的name与节点的name相同,*/举止打印( % dt ,p-year );打印( % dt ,p-month );printf(%dt”,p-data )打印( %.2ft ,p-amout );printf(%st”,p-name )打印( % dt ,p-type );打印(“% sn”,p。

    12、-comment )以下以下PK (选择=2)举止printf (请输入类型:1的收入0支出n );扫描( % d ,type );for (p=头部; p!=空值; p=p-next;if(p-type=type) /*如果输入的type与节点的type相同,*/举止打印( % dt ,p-year );打印( % dt ,p-month );printf(%dt”,p-data )打印( %.2ft ,p-amout );printf(%st”,p-name )打印( % dt ,p-type );printf(%sn”,p-comment )以下以下系统( pause ); /*姿势*/。

    13、以下void delete_rec ()举止系统( cls ); /*清除屏幕*/结构f _ dat a *头部;内记录计数;char name20;浮动模式;int choice;struct F_Data *p=NULL,*q=NULL; /*定义p和q是struct F_Data型指针*/p=头部; /*p指的是第一个节点*/q=头部; /*q指的是第一个节点*/printf (请输入要删除的人的名字: );扫描(“% s”,name )printf (请输入金额: );扫描( % f ,amout );for (; q!=空值; q=q-next) /*q指针从链表中的第一个节点到最后。

    14、一个节点*/举止if (头名=amout ) (strcmp (头名,name)=0) /*如果头节点满足要求*/举止打印( % dt ,q-year );打印( % dt ,q-month );打印( % dt ,q-data );打印( %.2ft ,q-amout );打印( % st ,q-name );打印( % dt ,q-type );打印( % sn ,q-comment )printf (确认删除吗? n 1是n 2否 n );扫描( % d ,choice );PK (选择=1)举止头=q-next; /*删除头部节点*/记录计数- -; /*节点数为1*/以下else break;以下else举止if(q。

    展开全文
  • c语言课程设计报告--万年历 c 语言课程设计报告--万年历C 语 言 课 程 设 计 报 告C 语言课程设计报告实验课程:c 语言课程设计 年级: 软件 2 班 实验成绩: 课程设计名称 万年历 姓名:**任课教师: 杨** 学号:**...
  • C语言课程设计(简易计算器设计)带所有代码.doc《C语言课程设计》报告设 计 题 目: 简单计算器设计学 院 名 称: 电子与信息工程学院专 业: 计算机科学与技术班 级: 计科姓 名: 学 号指 导 教 师:定稿日期: ...
  • 求救,本人电信大一女生,C语言确实也不太行,马上要交C语言课程设计作业,做一个小项目,代码在五六百行左右。有没有大佬能加个微信帮忙看一看代码,马上就要验收了,很急!!!虽然是学生党,但报酬还是会尽自己的...
  • C语言课程设计工资管理系统讲述东北大学信息科学与工程学院程序实践报告题目 工资管理系统课题组长 刘诚阳课题组成员 张鹏举 于文鑫专业名称 计算机科学与技术班 级 计算机1405指导教师 张晓红2015 年 4月目录 TOC \...
  • 大一c语言实训的课程设计。由小组分工完成。可做参考1.[文件] dao.h~888B 下载(32)/*模拟数据库*/#define casenum 50#define itemnum 20#define departmentnum 10//病历缓存 暂定记录50个struct hospital_case cases...
  • 学号20132013-2014学年 第二学期《高级语言程序设计》课程设计报告题目:进制转换专业:数字媒体技术班级:13级2班姓名:孙敏芳指导教师:吴海波成绩:计算机与信息工程系2014年6月20日目录TOC \o "1-3" \h \u1 需求...
  • C语言是一门编程语言,简单点说,就是由人类书写按照一定规范书写的字符,通过一定...其应用广泛,设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的...
  • C语言课程设计作业源代码(自存)

    千次阅读 2019-12-25 14:57:01
    五子棋小游戏界面设计功能实现游戏说明棋盘设计游戏中界面设计结束界面设计胜负判断游戏中的反馈
  • 第一章§1.1题目描述图书管理系统设计:【要求】图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。试设计一图书管理系统,使之能提供以下功能:(1) 新图书基本信息的输入;...
  • 上节课我们学习了文件型指针的运用。这节课我们则学习了变量型指针和链表的学习的使用。还了解了free函数、malloc函数的应用指向结构体变量的指针变量的定义形式与一般指针变量的定义形式相同,只是将其指向类型定义...
  • C语言课程设计,对于初学者来说,主要是综合运用C语言基础知识,以实际项目的形式锻炼编程能力。从今天开始,一起轻松学做C语言课程设计常见项目,建议先运行代码,再一步步理解其实现。题目要求图书管理系统提供...
  • C 语 言课 程 设 计 报 告设计题目:学生姓名:学生学号:专业班级:学院名称:同组人姓名:指导老师:2011年 月 日1 需求分析问题描述输入数据要求以命令行方式运行程序时所带参数用户的数据是将二进制数转换成十...
  • c语言课程设计机房机位预定系统绝对正确,附源代码》由会员分享,可在线阅读,更多相关《c语言课程设计机房机位预定系统绝对正确,附源代码(17页珍藏版)》请在人人文库网上搜索。1、1设计目的机房机位预定系统2任务...
  • 我国个人所得税采用7级计税办法,应征税额=应征税所得额*适用税率 –速算扣除数。细致税率和速算扣除数如下表所示。编程完成当收入不超越3500时的应扣税额。 级数 应征税所得额 适用税率 速算扣除数1 <...
  • C语言课程设计作业 之后未必会更新; 部分功能还有待优化。
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼/*************************************************查询函数**********************************************/void search(){int flag,j,x;char w[20];...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include #include #include int main(void){int level=0,choice=0;const int level_1=17850;const int level_2=23900;const int level_3=29750;const int level_4=14875...
  • Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998C语言课程设计作业郑 州 大 学课程报告课 程 名 称: C语言程序设计专 业 班 级 : (15)班学 生 ...
  • c语言课程设计报告模板是一款专业的设计模板,对于在大学有需要些设计报告的朋友,可以下载这款模板作为参考,了解设计报告的需求,基本上毕业的论文设计也是在这个基础上严格要求的,欢迎下载使用。C语言介绍C语言...
  • 大学时的C语言课程设计作业(图书管理系统),程序保证可以运行,同时压缩包里携带《程序设计规划书》和《课程设计报告》欢饮有需要的童鞋来下载
  • C语言课程设计-满分作业

    万次阅读 多人点赞 2018-03-11 10:41:49
    课程设计已经一周了,无形之间对c语言的了解更进一步。课程设计的题目是电话订餐系统,除了原有的查询删除插入查找修改五个功能外,自己又试着添加了几个功能,例如按照时间对客户进行排序,进行文件的保存与输出。...
  • 郑 州 大 学 课程报告 课 程 名 称 C 语言程序设计 专 业 班 级 15班 学 生 姓 名 谢* 学 号 20127611* 任 课 师 赵* 学 期 2012-2013-2 课程报告任务书 1 1 题 通讯录管理系统 目 开发一个通讯录管理系统基本信息...
  • 1 C C 语言程序设计课程形成性考核作业册语言程序设计课程形成性考核作业册 1 1 答案为隐藏文字 一 选择题一 选择题 1 在每个 C 语言程序中都必须包含有这样一个函数 该函数的函数名为 A main B MAIN C name D ...
  • 《超市管理系统(C语言课程设计报告)》由会员分享,可在线阅读,更多相关《超市管理系统(C语言课程设计报告)(22页珍藏版)》请在人人文库网上搜索。1、超市管理系统本设计运用C语言程序设计了一个超市管理系统。主要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,349
精华内容 939
关键字:

c语言课程设计作业

c语言 订阅