精华内容
下载资源
问答
  • 图书销售管理系统

    2012-11-18 22:07:00
    图书销售管理系统主要功能为用户的管理和图书的管理
  • 目录 图书销售管理系统设计 2 一设计要求 2 二总体设计思路 2 1. 主要功能系统主要包括八个功能模块 2 2. 总体思路框图 3 三主要参数和函数 4 1. 全局变量 4 2. 主要函数 4 四程序调试及整体实现 18 1. 主菜单运行...
  • 基于JavaEE的网上图书销售管理系统,完整源码,保证可以运行,可以用来学习参考
  • 面向用户,利用文件、数据库存储或者固定的用户名、密码,验证之后进入图书销售管理系统,用户可以实现图书信息添加和按照条件的查询、修改、删除等操作;也可以实现图书下单等操作。
  • VFP 图书销售管理系统

    2014-06-26 10:29:17
    VFP 图书销售管理系统
  • C语言 图书销售管理系统

    图书销售管理系统

    C语言程序设计的大作业,现在发出来啦



    软件功能

    1.登陆系统与主菜单

    运行系统时,首先出现登陆界面,输入用户名admin和密码123456,进入系统。
    如果用户名或密码错误,出现提示信息“您输入的用户名或密码错误。”只有两者完全正确才能进入系统主界面;否则根据提示再次输入用户名和密码。如果连续输入三次都不正确,则出现提示信息“您已经输入了三次错误密码。您已经退出系统。”,然后退出系统,结束程序运行。
    界面如下。
    在这里插入图片描述
    在这里插入图片描述


    2.会员管理功能

    从主菜单选择会员管理后,出现会员管理的子菜单。
    进入“会员管理”二级菜单,通过用户输入的操作数字1-3,进行相应的功能操作;如输入数字4,则返回“图书销售管理系统”主界面。
    界面如下。
    在这里插入图片描述


    (1)显示会员功能

    在“会员管理”界面中,如果用户输入的是数字1,则显示如下的会员信息:
    在这里插入图片描述


    (2)添加会员信息功能

    返回上一级菜单后,在“会员管理”界面中,如果用户输入的是数字2,则根据用户输入的信息,进行会员添加操作(添加到现有记录的最后)。成功添加会员信息后,出现提示信息“添加成功!”。
    界面如下。
    在这里插入图片描述
    按1↙返回到“会员管理”界面,此时用户可输入数字1,再次显示会员信息,查看新增加的会员信息。
    界面如下。
    在这里插入图片描述
    可以看到小明已经成功被添加到会员列表中。


    (3)修改会员信息功能

    在“会员管理”界面中,如果用户输入的是数字3,则根据用户输入的会员号,进行合法性检验。
    如果输入信息合法则进行会员修改操作。如果输入的会员号不存在,则显示提示信息“没找到该会员,请重新输入会员号。”然后让用户重新输入,直到输入合法为止。
    修改会员信息成功后,会出现提示信息“修改成功!”
    界面如下。(此处只展示合法输入的情况)
    在这里插入图片描述
    按1↙返回到“会员管理”界面,此时用户可输入数字1,再次显示会员信息,以查看修改的会员信息。
    界面如下。
    在这里插入图片描述
    可以看到会员号为4的会员信息已被成功修改。


    3. 书籍管理功能

    在“图书销售管理系统”主界面中,如果此时用户输入的是数字2,则进入“书籍管理”二级菜单,用户通过输入操作数字1-3,可以进行相应的功能操作;如输入数字4,则返回“图书销售管理系统”主界面。
    界面如下。
    在这里插入图片描述


    (1)查看书目功能

    在“书籍管理”界面中,如果用户输入的是数字1,则显示所有的图书信息。
    界面如下。
    在这里插入图片描述


    (2)添加书籍功能

    在“书籍管理”界面中,如果用户输入数字2,则可进行添加书籍操作(添加到现有记录的最后)。成功添加会员信息后,出现提示信息“添加成功!”。
    界面如下。
    在这里插入图片描述
    按1返回“书籍管理”的二级菜单,此时用户可输入数字1,再次显示图书信息,查看新增加的书籍信息。
    界面如下。
    在这里插入图片描述
    可以看到书籍信息已经添加到列表末尾。


    (3)删除书籍功能

    在“书籍管理”界面中,如果用户输入的是数字3,则进行删除书籍操作。通过用户输入的图书名,进行合法性检验,查找该图书信息。
    如果该图书存在,则输出提示信息及该图书对应的图书号“找到该图书,位置为: ”然后进行图书删除操作,成功删除后显示提示信息“删除成功!”。如果输入的图书名不存在,则显示提示信息“没找到该图书,请重新输入图书名。”然后让用户重新输入,直到输入合法为止。
    界面如下。(此处只展示合法输入的情况)
    在这里插入图片描述
    返回到“书籍管理”界面,此时用户可输入数字1,再次显示图书信息,可查看删除书籍的功能效果。
    界面如下。
    在这里插入图片描述
    可以看到C#2.0宝典已被成功删除。


    4. 购物结算功能

    在“图书销售管理系统”主界面中,如果此时用户输入的是数字3,则进入“购物结算”功能。
    首先显示书籍的所有信息,便于用户查看购书。接着根据用户输入的会员号、书籍编号和购买量信息,并进行合法性检验。
    检查用户输入会员号是否存在。如用户输入的会员号不存在,则显示提示信息“没有找到该会员,请重新输入会员号。”,并让用户重新输入,直到合法为止。
    同理,检查用户输入书籍号是否存在。如用户输入的书籍号不存在,则显示提示信息“没有找到该会员,请重新输入图书号。”,并让用户重新输入,直到合法为止。
    然后,检查该用户积分是否可以支付此次购书操作。如余额充足,则显示信息“您购买的图书为 ,数量为 ,总额为 。”并询问用户是否确认购买,若确认则显示“购买成功!”,否则显示“取消购买。”。
    如余额不足,则提示信息“您的余额不足,购买失败。”
    操作完成后,继续询问用户是否接着购书,只要用户输入的不是字符‘n’或‘N’,此购书操作可以反复进行;当输入字符‘n’或‘N’,则返回“图书销售管理系统”主界面。
    界面如下。(此处只展示合法输入且购买成功的情况。)
    在这里插入图片描述
    此时系统返回到“图书销售管理系统”主界面,输入数字1进入“会员管理”界面,可查看刚才购书的会员信息是否发生相应的改变。
    界面如下。
    在这里插入图片描述
    可以看到会员号为4的小红,积分从550变为500。


    5.注销

    在主页面按4↙,释放内存,注销成功,结束程序。
    界面如下。
    在这里插入图片描述


    源代码

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 30
    /*定义会员结构体*/
    struct member
    {
        int num;
        char name[N];
        int points;
        struct member *next;
    };
    /*定义书籍结构体*/
    struct book
    {
        int num;
        char name[N];
        int price;
        struct book *next;
    };
    /*登录及主菜单相关函数*/
    void Login(char *user,char *password); /*登录页面*/
    int ComparePassword (char *user,char *password);  /*验证用户输入的用户名及密码是否正确*/
    void PrintMenu(void);  /*打印主菜单*/
    /*会员管理相关函数*/
    void MemberManagement (struct member *head,int *sum);   /*会员管理*/
    void PrintMenu2(void);  /*打印会员管理子菜单*/
    struct member* ExistingMember(struct member *head,int *sum);  /*录入已有会员信息*/
    void PrintMember (struct member *head);  /*打印会员信息*/
    struct member* NewMember(struct member *head,int *sum);  /*新建会员信息*/
    struct member* ChangeMember(struct member *head);  /*修改会员信息*/
    /*书籍管理相关函数*/
    struct book* ExistingBook(struct book *head,int *sum);  /*录入已有书籍信息*/
    struct book* BookManagement (struct book *head2,int *sum);  /*书籍管理*/
    void PrintMenu3(void);  /*打印书籍管理子菜单*/
    void PrintBook (struct book *head);  /*打印书籍信息*/
    struct book* NewBook(struct book *head,int *sum);  /*新建书籍信息*/
    struct book* DeleteBook(struct book *head);  /*删除书籍*/
    /*购物结算相关函数*/
    void CheckOut(struct member *head1,struct book *head2);  /*购物结账*/
    /*释放内存*/
    void DeleteMemory1(struct member *head);
    void DeleteMemory2(struct book *head);
    int main()
    {
        char user[N],password[N];    /*用户输入的用户名和密码*/
        int choice;    /*菜单跳转的选项*/
        int sum1=0;/*会员总数*/
        int sum2=0;/*书籍总数*/
        struct member *head1=NULL;
        struct book *head2=NULL;
        int i;
        for (i=0; i<8; i++)
        {
            head1=ExistingMember(head1,&sum1);  /*录入已有会员信息*/
        }
        for (i=0; i<8; i++)
        {
            head2=ExistingBook(head2,&sum2);  /*录入已有书籍信息*/
        }
        system("cls");
        Login(user,password);
        for(;;)
        {
            PrintMenu();
            scanf("%d",&choice);
            switch (choice)
            {
            case 1:
                MemberManagement(head1,&sum1);
                break;
            case 2:
                head2=BookManagement(head2,&sum2);
                break;
            case 3:
                CheckOut(head1,head2);
                break;
            case 4:
                printf("注销成功!\n");
                break;
            }
            if (choice==4) break;
        }
        DeleteMemory1(head1);
        DeleteMemory2(head2);
        return 0;
    }
    /*登录页面*/
    void Login (char user[N],char password[N])
    {
        int i=0,flag=0;
        printf("\t*********************\n");
        do
        {
            printf("\t请输入用户名:");
            gets(user);
            printf("\t请输入密码:");
            gets(password);
            flag=ComparePassword(user,password);
            if (flag==1)
            {
                printf("\t*********************\n");
                printf("\n\t欢迎进入图书销售管理系统!\n");
                int choice;
                printf("\n按1进入主菜单\n");
                scanf("%d",&choice);
                break;
            }
            else
            {
                printf("您输入的用户名或密码错误。\n");
                i++;
            }
        }
        while(i<3);
        if (flag==0)
        {
            system("cls");
            printf("您已经输入了三次错误密码。\n");
            printf("您已经退出系统。\n");
            exit(0);
        }
        printf("*****************************\n");
    }
    /*验证用户输入的用户名及密码是否正确*/
    int ComparePassword (char *user,char *password)
    {
        char username[N]="admin";
        char pass[N]="123456";    /*正确的用户名和密码*/
        if (strcmp(user,username)==0&&strcmp(password,pass)==0) return 1;
        else return 0;
    }
    /*打印菜单*/
    void PrintMenu(void)
    {
        system("cls");
        printf("******************************\n");
        printf("*      图书销售管理系统      *\n");
        printf("*         1.会员管理         *\n");
        printf("*         2.书籍管理         *\n");
        printf("*         3.购物结算         *\n");
        printf("*         4.注销             *\n");
        printf("******************************\n");
        printf("请选择,输入数字(1-4):");
    }
    /*会员管理相关函数*/
    /*录入已有会员信息*/
    struct member* ExistingMember(struct member *head,int *sum)
    {
        struct member *p=NULL,*pr=head;
        p=(struct member*)malloc(sizeof(struct member));
        if (p==NULL)
        {
            printf("内存不足。\n");
            exit(0);
        }
        if (head==NULL)
        {
            head=p;
        }
        else
        {
            while (pr->next!=NULL)
            {
                pr=pr->next;
            }
            pr->next=p;
        }
        (*sum)++;
        p->num=*sum;
        switch ((*sum))
        {
        case 1:
            strcpy(p->name,"张三");
            p->points=100;
            break;
        case 2:
            strcpy(p->name,"李四");
            p->points=600;
            break;
        case 3:
            strcpy(p->name,"王五");
            p->points=500;
            break;
        case 4:
            strcpy(p->name,"陆六");
            p->points=1000;
            break;
        case 5:
            strcpy(p->name,"钱七");
            p->points=900;
            break;
        case 6:
            strcpy(p->name,"大强");
            p->points=100;
            break;
        case 7:
            strcpy(p->name,"小丽");
            p->points=100;
            break;
        case 8:
            strcpy(p->name,"敏敏");
            p->points=100;
            break;
        default:
            printf("录入会员信息错误。\n");
        }
        p->next=NULL;
        return head;
    }
    /*会员管理*/
    void MemberManagement (struct member *head1,int *sum)
    {
        int choice;
        system("cls");
        while(1)
        {
            PrintMenu2();
            scanf("%d",&choice);
            switch (choice)
            {
            case 1:
                PrintMember(head1);
                break;
            case 2:
                head1=NewMember(head1,sum);
                break;
            case 3:
                head1=ChangeMember(head1);
                break;
            default:
                break;
            }
            if (choice==4) break;
        }
    }
    /*打印会员管理子菜单*/
    void PrintMenu2(void)
    {
        system("cls");
        printf("图书销售管理系统>会员管理\n");
        printf("**************************\n");
        printf("*  1.显示所有会员        *\n");
        printf("*  2.添加会员信息        *\n");
        printf("*  3.修改会员信息        *\n");
        printf("*  4.返回主菜单          *\n");
        printf("**************************\n");
        printf("请选择,输入数字(1-4):");
    }
    /*新建会员信息*/
    struct member* NewMember(struct member *head,int *sum)
    {
        struct member *p=NULL,*pr=head;
        char name[N];
        int points;
        system("cls");
        printf("图书销售管理系统 > 会员信息管理 > 新增会员信息\n");
        p=(struct member*)malloc(sizeof(struct member));
        if (p==NULL)
        {
            printf("内存不足。\n");
            exit(0);
        }
        if (head==NULL)
        {
            head=p;
        }
        else
        {
            while (pr->next!=NULL)
            {
                pr=pr->next;
            }
            pr->next=p;
        }
        (*sum)++;
        p->num=*sum;
        printf("请输入新会员姓名:\n");
        scanf("%s",name);
        printf("请输入新会员积分:\n");
        scanf("%d",&points);
        strcpy(p->name,name);
        p->points=points;
        p->next=NULL;
        printf("添加成功!\n");
        int choice;
        printf("按1返回上一级菜单\n");
        scanf("%d",&choice);
        return head;
    }
    /*打印现有会员信息*/
    void PrintMember (struct member *head)
    {
        struct member *p=head;
        int choice;
        system("cls");
        printf("图书销售管理系统 > 会员信息管理 > 显示会员信息\n");
        printf("    会员号  \t姓名\t\t积分\n");
        do
        {
            printf("\t%d\t%s\t\t%d\n",p->num,p->name,p->points);
            p=p->next;
        }
        while(p!=NULL);
        printf("按1返回上一级菜单\n");
        scanf("%d",&choice);
    }
    /*修改会员信息*/
    struct member* ChangeMember(struct member *head)
    {
        system("cls");
        printf("图书销售管理系统 > 会员信息管理 >修改会员信息\n");
        int number,points;  /*用户输入需要修改的会员信息*/
        char name[N];
        struct member *p=head;
        int flag=0;
        do
        {
            printf("请输入要修改的会员号:");
            scanf("%d",&number);
            p=head;
            while(p!=NULL)
            {
                if (p->num==number)
                {
                    flag=1;
                    break;
                }
                p=p->next;
            }
            if (flag==0)
            {
                printf("没找到该会员,请重新输入会员号。\n");
            }
            else if (flag==1)
            {
                printf("请输入要修改的会员姓名:");
                scanf("%s",name);
                printf("请输入要修改的会员积分:");
                scanf("%d",&points);
            }
        }while(flag!=1);
        strcpy(p->name,name);
        p->points=points;
        printf("修改成功!\n");
        int choice;
        printf("按1返回上一级菜单\n");
        scanf("%d",&choice);
        return head;
    }
    /*书籍管理相关函数*/
    /*录入已有书籍信息*/
    struct book* ExistingBook(struct book *head,int *sum)
    {
        struct book *p=NULL,*pr=head;
        p=(struct book*)malloc(sizeof(struct book));
        if (p==NULL)
        {
            printf("内存不足。\n");
            exit(0);
        }
        if (head==NULL)
        {
            head=p;
        }
        else
        {
            while (pr->next!=NULL)
            {
                pr=pr->next;
            }
            pr->next=p;
        }
        (*sum)++;
        p->num=*sum;
        switch ((*sum))
        {
        case 1:
            strcpy(p->name,"C#2.0宝典");
            p->price=88;
            break;
        case 2:
            strcpy(p->name,"Java编程基础");
            p->price=55;
            break;
        case 3:
            strcpy(p->name,"J2SE桌面应用程序开发");
            p->price=60;
            break;
        case 4:
            strcpy(p->name,"数据库设计和应用");
            p->price=45;
            break;
        case 5:
            strcpy(p->name,"水浒传");
            p->price=55;
            break;
        case 6:
            strcpy(p->name,"红楼梦");
            p->price=68;
            break;
        case 7:
            strcpy(p->name,"三国演义");
            p->price=78;
            break;
        case 8:
            strcpy(p->name,"地心游记");
            p->price=29;
            break;
        default:
            printf("录入书籍信息错误。\n");
        }
        p->next=NULL;
        return head;
    }
    /*书籍管理*/
    struct book* BookManagement (struct book *head2,int *sum)
    {
        int choice;
        system("cls");
        while(1)
        {
            PrintMenu3();
            scanf("%d",&choice);
            switch (choice)
            {
            case 1:
                system("cls");
                PrintBook(head2);
                int choice;
                printf("按1返回上一级菜单\n");
                scanf("%d",&choice);
                break;
            case 2:
                head2=NewBook(head2,sum);
                break;
            case 3:
                head2=DeleteBook(head2);
                break;
            default:
                break;
            }
            if (choice==4) break;
        }
        return head2;
    }
    /*打印书籍管理子菜单*/
    void PrintMenu3(void)
    {
        system("cls");
        printf("图书销售管理系统 >书籍管理\n");
        printf("**************************\n");
        printf("*      1.查看书目        *\n");
        printf("*      2.添加书籍        *\n");
        printf("*      3.删除书籍        *\n");
        printf("*      4.返回主菜单      *\n");
        printf("**************************\n");
        printf("请选择,输入数字(1-4):");
    }
    /*新建书籍信息*/
    struct book* NewBook(struct book *head,int *sum)
    {
        struct book *p=NULL,*pr=head;
        char name[N];
        int price;
        system("cls");
        printf("图书销售管理系统 > 会员信息管理 > 新增会员信息\n");
        p=(struct book*)malloc(sizeof(struct book));
        if (p==NULL)
        {
            printf("内存不足。\n");
            exit(0);
        }
        if (head==NULL)
        {
            head=p;
        }
        else
        {
            while (pr->next!=NULL)
            {
                pr=pr->next;
            }
            pr->next=p;
        }
        (*sum)++;
        p->num=*sum;
        printf("请输入图书名:");
        scanf("%s",name);
        printf("请输入图书价钱:");
        scanf("%d",&price);
        strcpy(p->name,name);
        p->price=price;
        p->next=NULL;
        printf("添加成功!\n");
        int choice;
        printf("按1返回上一级菜单\n");
        scanf("%d",&choice);
        return head;
    }
    /*打印现有书籍信息*/
    void PrintBook (struct book *head)
    {
        struct book *p=head;
        printf("图书销售管理系统>书籍管理>书籍列表\n");
        printf("      图书号          图书名                  图书价钱\n");
        do
        {
            printf("\t%d\t%-25s%10d\n",p->num,p->name,p->price);
            p=p->next;
        }
        while(p!=NULL);
    }
    /*删除书籍*/
    struct book* DeleteBook(struct book *head)
    {
        system("cls");
        printf("图书销售管理系统 >书籍管理>书籍下架\n");
        struct book *p=head,*pr=head;
        char bookname[N];    /*用户输入的图书名*/
        int flag=0;
        do{
        printf("请输入要删除的图书书名:");
        scanf("%s",bookname);
        p=head;
        while (p!=NULL)
        {
            if (strcmp(p->name,bookname)==0)
            {
                flag=1;
                printf("找到该图书,位置为:%d\n",p->num);
                break;
            }
            p=p->next;
        }
        if (flag==0)
        {
            printf("没找到该图书,请重新输入图书名。\n");
        }
        }while(flag!=1);
        if (p==head)
        {
            head=p->next;
            free(p);
        }
        else
        {
            while (pr->next!=p)
            {
                pr=pr->next;
            }
            pr->next=p->next;
            free(p);
        }
        printf("删除成功!\n");
        int choice;
        printf("按1返回上一级菜单\n");
        scanf("%d",&choice);
        return head;
    }
    /*购物结账相关的函数*/
    /*购物结账*/
    void CheckOut(struct member *head1,struct book *head2)
    {
        system("cls");
        printf("图书销售管理系统 >购物结算\n");
        PrintBook(head2);
        int MemberNum;   /*用户会员号*/
        int BookNum;   /*用户购买书本的信息*/
        int amount;
        int total;
        struct member *pm=head1;
        struct book *pb=head2;
        while(1)
        {
            int flag1=0,flag2=0;
            do
            {
                pm=head1;
                printf("请输入会员号:");
                scanf("%d",&MemberNum);
                while(pm!=NULL)
                {
                    if (pm->num==MemberNum)
                    {
                        flag1=1;
                        break;
                    }
                    pm=pm->next;
                }
                if (flag1==0)
                {
                    printf("没有找到该会员,请重新输入会员号。\n");
                }
            }
            while(flag1!=1);
            do
            {
                pb=head2;
                printf("请输入要购买的书籍编号:");
                scanf("%d",&BookNum);
                while(pb!=NULL)
                {
                    if (pb->num==BookNum)
                    {
                        flag2=1;
                        break;
                    }
                    pb=pb->next;
                }
                if (flag2==0)
                {
                    printf("没有找到该图书,请重新输入图书号。\n");
                }
            }
            while(flag2!=1);
            printf("请输入您要购买的数量:");
            scanf("%d",&amount);
            total=amount*(pb->price);
            if (pm->points>=total)
            {
                printf("您购买的图书为%s,数量为%d,总额为%d。\n",pb->name,amount,total);
                printf("是否购买?(y/n 或 Y/N):");
                char ch;
                scanf(" %c",&ch);
                if (ch=='n'||ch=='N')
                {
                    printf("取消购买。\n");
                }
                else if (ch=='y'||ch=='Y')
                {
                    printf("购买成功!\n");
                    pm->points=pm->points-total;
                }
                else
                {
                    printf("没有输入y/n 或 Y/N,购买失败。");
                }
            }
            else
            {
                printf("您的余额不足,购买失败。\n");
            }
            printf("是否继续购买?(y/n 或 Y/N):");
            char ch;
            scanf(" %c",&ch);
            if (ch=='n'||ch=='N')
            {
                break;
            }
        }
    }
    /*释放内存*/
    void DeleteMemory1(struct member *head)
    {
        struct member *p=head,*pr=NULL;
        while (p!=NULL)
        {
            pr=p;
            p=p->next;
            free(pr);
        }
    }
    void DeleteMemory2(struct book *head)
    {
        struct book *p=head,*pr=NULL;
        while (p!=NULL)
        {
            pr=p;
            p=p->next;
            free(pr);
        }
    }
    
    

    有1、、想说

    大一上学期结束了,可太快了……
    做这个大作业的时候是期末了,猛赶ddl,代码是在一个上午(8点到11点多)加一个晚上(7点多到10点+11点多到1点)码出来的(当天中午考军事理论,当天下午出校门给室友庆生啦),然后第二天上午debug和测试,顺便把说明文档整理出来……
    对于我来说,那一天真的是爆肝……
    (这就是拖拉的代价)
    立个flag
    下学期希望能有计划地完成任务
    接下来的寒假又要爆肝了T^T

    时间:2021/1/24 16:51:55

    展开全文
  • 美萍图书销售管理系统
  • obj\Debug\图书销售管理系统.CrystalReport1.rpt obj\Debug\图书销售管理系统.CrystalReport2.rpt obj\Debug\图书销售管理系统.CrystalReport3.rpt obj\Debug\图书销售管理系统.Form1.resources obj\Debug\图书销售...
  • 博文图书销售管理系统
  • 目录 一 设计目的 2 二设计内容 2 三设计要求 2 四设计过程 3 1面向对象分析 3 2数据结构分析 3 3 系统执行流程 4 五 程序运行结果 4 六 设计总结 4 参考文献 4 附录 4 图书销售管理系统 一 设计目的 本图书销售管理...
  • 图书销售管理系统的各种说明:设计说明,需求说明,操作手册,测试报告;说明中的各种UML图都描述详尽
  • 博文图书销售管理系统
  • 图书销售管理系统c#

    2015-06-15 15:26:07
    数据库课程设计做的一个图书销售管理系统,附有完整的报告文档。比较简单,仅供参考
  • 本人2016年毕业设计,网上书店/图书销售管理系统,eclipse/mysql,代码以及数据库sql都在压缩包内,希望对大家有帮助。

空空如也

空空如也

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

图书销售管理系统