【C语言期末/课程设计】银行存取款管理设计(vc2010项目)

代写C语言、C++、Java、Python、HTML、JavaScript、vue、MySQL相关编程作业,
长期接单,信誉有保证,标价10-20每份,如有需要请加文章最下方QQ。

本文资源:https://download.csdn.net/download/weixin_47040861/88974479


1.题目要求

题目描述:
能够输入和查询客户存款取款记录。每个客户是一条记录,包括记录编号、客户姓名、账户总金额,日期,操作类型(取款/存款)金额。(本系统实现单用户使用即可)

功能要求:
(1)输入功能:可以一次完成若干条记录的输入。
(2)显示功能:完成全部记录的显示。
(3)增加功能:在后面添加一条或多条存取款记录。
(4)查找功能:按日期区间查找相关存取款记录,并显示。
(5)排序功能:按存款或取款金额大小进行排序。
(6)统计功能:统计客户的所有取款记录总和,并显示。

2.视频演示

【C语言期末/课程设计】银行存取款管理设计(vc2010项目)

3.使用流程

结构体和变量:

//定义结构体数组最大长度
#define MAX_Records 50

// 定义银行客户记录结构体
struct Record {
    int id;// 编号
    char name[50]; // 客户姓名
    float deposit;// 账户总金额
    char date[50]; // 日期
    char operation[50]; // 操作类型(存款或取款)
    float amount;// 操作金额
};

主函数:

在主函数中,首先调用了 create() 函数来检查文件是否存在,然后调用 get() 函数从本地读取数据。接下来,使用一个循环来接受用户的选择,直到用户选择退出程序为止。

在循环中,首先调用 display() 函数打印菜单,然后使用 scanf() 获取用户的选择。根据用户的选择,通过 switch 语句执行相应的操作,这些操作包括添加客户、显示记录、添加记录、查找记录、排序记录、统计数据等。

在每次执行完用户选择的操作后,程序会使用 system("pause") 暂停窗口,等待用户按下任意键继续,并使用 system("cls") 清空窗口。然后调用 put() 函数将更新后的数据保存到本地。

int main() {
	// 创建长度为50的结构体数组
    struct Record Records[MAX_Records];
	//定义len存储数组长度,定义choice存储选择
	int len=0,choice=0;

	create();//调用函数,检查文件是否存在
	get(Records,&len);//读取本地数据
	while(choice!=8){
		// 打印菜单
		display();

		// 获取用户选择
        printf("请选择操作(1-7): ");
        scanf("%d", &choice);

        // 根据用户选择执行相应操作
        switch (choice) {
            case 1:
				add_customer(Records,&len);
                break;
            case 2:show(Records,len);
                break;
            case 3:
				add_record(Records,&len);
                break;
            case 4:
				find(Records,len);
                break;
            case 5:
				sort(Records,len);
                break;
            case 6:statistics(Records,len);
                break;
            case 7:
                printf("退出程序\n");
                break;
            default:
                printf("无效的选择,请重新选择\n");
        }

		system("pause");//暂停窗口
		system("cls");//清空窗口
		//执行完成一次操作后保存新数据
		put(Records,len);
	};
	
    return 0;
}

1.输入 add_customer()

  1. 用户输入要添加的客户数量。
  2. 使用 for 循环遍历要添加的客户数量。
  3. 在循环中,首先用户输入记录编号,并通过 isValidID() 函数校验编号是否唯一,如果不唯一则提示用户重新输入。
  4. 用户输入客户姓名,并通过 isValidName() 函数校验姓名是否唯一,如果不唯一则提示用户重新输入。
  5. 用户输入日期,通过 isValidDate() 函数校验日期格式是否合法,如果不合法则提示用户重新输入。
  6. 用户输入存款金额。
  7. 计算存款金额,同时将存款金额赋值给初始存款金额字段。
  8. 增加数组长度,将新客户信息存储到数组中。
  9. 如果数组已满,则提示用户无法添加更多数据。
  10. 添加成功后,显示添加成功的消息。

2.显示 show()

  1. 使用 printf() 函数打印表格的表头,包括记录的各个属性名称。
  2. 使用 for 循环遍历记录数组。
  3. 在循环中,使用 printf() 函数逐行打印每条记录的信息,包括记录编号、客户姓名、账号总金额、日期、操作类型和金额。
  4. 每条记录信息都按照指定的格式对齐打印在表格中。

3.增加 add_record()

  1. 用户输入要添加的记录数量。
  2. 使用 for 循环遍历要添加的记录数量。
  3. 在循环中,首先用户输入记录编号,并通过 isValidID() 函数校验编号是否唯一,如果不唯一则提示用户重新输入。
  4. 用户输入客户姓名,并通过循环遍历查找上一条该客户的记录,如果找到则将上一条记录的余额赋值给当前记录。
  5. 用户输入日期,通过 isValidDate() 函数校验日期格式是否合法,如果不合法则提示用户重新输入。
  6. 用户输入操作类型(存款或取款),如果输入不合法则提示用户重新输入。
  7. 用户输入金额。
  8. 根据操作类型进行存款或取款计算,并更新余额字段。
  9. 如果余额不足(取款时),则提示用户余额不足。
  10. 添加成功后,显示添加成功的消息。

4.查找 find()

  1. 定义了一个新的结构体数组 new_Records 以及一个整型变量 new_len,用于存储查询结果和查询结果的长度。
  2. 用户输入开始时间和结束时间。
  3. 将输入的开始时间和结束时间转换为 time_t 类型,并设置小时、分钟、秒为零。
  4. 遍历记录数组,将每条记录的日期转换为 time_t 类型,并判断是否在查询时间范围内。
  5. 如果在查询时间范围内,则将符合条件的记录存储到新的结构体数组中。
  6. 调用 show() 函数显示查询结果。
  7. 遍历新的结构体数组,统计存款总和和取款总和。
  8. 打印存款总和和取款总和。

5.排序 sort()

  1. 用户输入要筛选的操作类型(存款或取款)。
  2. 遍历记录数组,将符合操作类型的记录存储到新的结构体数组 new_Records 中。
  3. 使用冒泡排序算法按操作金额降序排序新的结构体数组。
  4. 调用 show() 函数显示排序后的结果。

6.统计 statistics()

  1. 用户输入要统计的客户姓名。
  2. 遍历记录数组,找到与用户输入的客户姓名匹配的记录。
  3. 如果记录的操作类型是存款,则将存款金额累加到总存款额中;如果是取款,则将取款金额累加到总取款额中。
  4. 打印统计结果,包括客户的存款总额和取款总额。

↓如有任何问题,请加下方QQ↓

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小辰代写

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值