C语言 会员卡计费系统

设计一个会员卡计费管理系统。

功能要求:

(1)新会员登记。(将会员个人信息及此会员的会员卡信息进行录入。)

(2)会员信息修改。

(3)会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。此时可以进行续费,续费后,提示成功,并显示更新后的信息。)

(4)会员消费结算。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息,结算本次费用。提示成功,并显示更新后的信息。)累计消费满1000元,及自动升级为VIP会员。之后每次消费给予9折优惠。

(5) 会员退卡。(收回会员卡,并将余额退还,删除该会员信息。)

(6)用菜单进行管理

(7)统计功能。

能够按每个会员的缴费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。能够按累计消费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。

C语言程序设计A课程设计任务书

需求分析

1.1功能

(1)新会员登记。(将会员个人信息及此会员的会员卡信息进行录入。)

(2)会员信息修改。

(3)会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。此时可以进行续费,续费后,提示成功,并显示更新后的信息。)

(4)会员消费结算。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息,结算本次费用。提示成功,并显示更新后的信息。)累计消费满1000元,及自动升级为VIP会员。之后每次消费给予9折优惠。

(5) 会员退卡。(收回会员卡,并将余额退还,删除该会员信息。)

(6)用菜单进行管理

(7)统计功能。

能够按每个会员的缴费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。能够按累计消费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。

1.2数据需

(1)会员信息包括卡号(整数)、姓名(字符串)、性别(字符)、年龄(整数)、缴费金额(浮点数)、消费金额(浮点数)、住址(字符串)、电话(字符串)。

(2)会员信息通过文件“employee_list”进行持久化存储,文件以二进制形式读写。

1.3性能需

(1)系统在执行各项操作时,响应时间应在用户可接受的范围内,确保用户体验流畅。

(2)对文件的读写操作应稳定可靠,避免数据丢失或损坏。

1.4界面需

(1)系统提供清晰明了的菜单,方便用户选择操作选项。

(2)在用户进行输入时,提供明确的提示信息,指导用户正确输入。

(3)操作过程中及操作完成后,向用户显示相应的结果和反馈信息。

概要设计

(1)菜单模块

menu()函数:负责显示系统的菜单选项,包括新会员登记、会员信息修改、会员续费、会员消费结算、会员退卡、统计功能和退出系统。

(2)读取模块

load()函数:从指定文件中读取会员信息到内存。

(3)会员管理模块

input()函数:实现新会员的登记功能,包括生成卡号、收集会员信息并保存。

modify()函数:根据输入的会员姓名查找并修改会员信息,提供多种信息字段的修改选项。

add()函数:根据输入的会员卡号进行续费操作,更新缴费金额。

search()函数:通过输入会员卡号进行消费结算,根据消费金额计算余额并给予相应优惠。

del()函数:根据输入的会员姓名删除会员信息。

total()函数:提供按缴费总额和消费总额两种排序方式,对会员信息进行降序排序,并计算所有会员的缴费总额和消费总额。

(4)数据存储模块

save(int m)函数:以覆盖写入的方式将内存中的会员信息保存到文件。

save1(int m)函数:以追加的方式将新会员信息保存到文件。


三、详细设计

1.数据结构:定义了一个名为employee的结构体来存储会员信息,包括会员卡号num(整数)、姓名name(字符串)、性别sex(字符)、年龄age(浮点数)、缴费金额wage(浮点数)、消费金额xiao(浮点数)、住址addr(字符串)和电话tel(字符串)。

2.函数设计:

(1)menu函数的功能:显示系统的操作菜单,包括新会员登记、会员信息修改、会员续费、会员消费结算、会员退卡、统计功能和退出。

(2)save1和 save函数的功能:将内存中的会员信息保存到文件employee_list中。save1用于追加保存,save用于覆盖保存。

(3)load函数的功能:从文件employee_list中加载会员信息到内存中,并返回会员数量。

(4)loadAndGetMaxNum函数的功能:加载会员数据,并返回最大的会员编号。

(5)input函数的功能:实现新会员信息的录入,包括生成会员编号、姓名、性别、年龄、缴费金额、住址和电话等,并保存录入的信息。

(6)modify函数的功能:根据输入的会员姓名查找会员信息,提供修改选项,包括卡号、姓名、性别、年龄、缴费金额、住址和电话,并根据用户选择进行修改。

(7)add函数的功能:根据输入的会员卡号进行续费操作,更新会员的缴费金额,并保存修改后的信息。

(8)search和search_num函数的功能:根据输入的会员卡号查找会员信息,输入消费金额,计算余额,并根据消费金额给予相应的优惠。

(9)del函数的功能:根据输入的会员姓名删除会员信息,并更新会员列表。

(10)total函数的功能:提供按照缴费总额或消费总额进行降序排序的选择,并计算和显示总额统计信息。

3.主函数流程:显示菜单;接收用户输入的操作选项;根据选项调用相应的函数进行处理;在每次操作完成后,询问用户是否继续进行操作或退出系统。

4.文件操作:使用文件employee_list来持久化存储会员信息,通过文件读写操作实现数据的保存和加载。

5.交互设计:在每个操作函数中,都为用户提供了清晰的操作提示和输入要求。对于关键操作,如修改、删除等,会多次向用户确认,以避免误操作。在文件打开操作中,对无法打开文件的情况进行了提示和处理,程序退出。在输入操作选项和会员信息时,对输入不合法的情况进行了提示,要求重新输入。

  • 源程序清单和执行结果

1.新会员登记功能:使用input函数,用于生成卡号、收集会员信息并保存。

int loadAndGetMaxNum() //加载已有会员数据,并返回最大卡号

{

    FILE *fp;

    int j,i=0;

    int maxNum=3000;  //假设首次登记的最小卡号为 3000

    if ((fp=fopen("employee_list","rb"))==NULL)

    {

        return maxNum;

    }

    else

    {

        do

        {

            fread(&em[i],sizeof(struct employee),1,fp);

            i++;

        }while(feof(fp)==0);

        for(j=0;j<i;j++)

        {

            if(em[j].num>maxNum)

                maxNum=em[j].num;

        }

    }

fclose(fp);

return maxNum;

}

void input()

{

    int i,m;

    printf("请输入需要创建信息的会员人数(1--100):");

    scanf("%d",&m);printf("\n");

    int lastMaxNum=loadAndGetMaxNum();  //获取上次最大卡号

    int currentNum=lastMaxNum+1;  //本次起始卡号

    for(i=0;i<m;i++)

    {

        em[i].num=currentNum+i;  //按顺序生成卡号

        printf("卡号: %d\n",em[i].num);

        printf("请输入姓名: ");scanf("%s",em[i].name);getchar();

        printf("请输入性别(f--女 or m--男): ");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值