代写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()
- 用户输入要添加的客户数量。
- 使用
for
循环遍历要添加的客户数量。 - 在循环中,首先用户输入记录编号,并通过
isValidID()
函数校验编号是否唯一,如果不唯一则提示用户重新输入。 - 用户输入客户姓名,并通过
isValidName()
函数校验姓名是否唯一,如果不唯一则提示用户重新输入。 - 用户输入日期,通过
isValidDate()
函数校验日期格式是否合法,如果不合法则提示用户重新输入。 - 用户输入存款金额。
- 计算存款金额,同时将存款金额赋值给初始存款金额字段。
- 增加数组长度,将新客户信息存储到数组中。
- 如果数组已满,则提示用户无法添加更多数据。
- 添加成功后,显示添加成功的消息。
2.显示 show()
- 使用
printf()
函数打印表格的表头,包括记录的各个属性名称。 - 使用
for
循环遍历记录数组。 - 在循环中,使用
printf()
函数逐行打印每条记录的信息,包括记录编号、客户姓名、账号总金额、日期、操作类型和金额。 - 每条记录信息都按照指定的格式对齐打印在表格中。
3.增加 add_record()
- 用户输入要添加的记录数量。
- 使用
for
循环遍历要添加的记录数量。 - 在循环中,首先用户输入记录编号,并通过
isValidID()
函数校验编号是否唯一,如果不唯一则提示用户重新输入。 - 用户输入客户姓名,并通过循环遍历查找上一条该客户的记录,如果找到则将上一条记录的余额赋值给当前记录。
- 用户输入日期,通过
isValidDate()
函数校验日期格式是否合法,如果不合法则提示用户重新输入。 - 用户输入操作类型(存款或取款),如果输入不合法则提示用户重新输入。
- 用户输入金额。
- 根据操作类型进行存款或取款计算,并更新余额字段。
- 如果余额不足(取款时),则提示用户余额不足。
- 添加成功后,显示添加成功的消息。
4.查找 find()
- 定义了一个新的结构体数组
new_Records
以及一个整型变量new_len
,用于存储查询结果和查询结果的长度。 - 用户输入开始时间和结束时间。
- 将输入的开始时间和结束时间转换为
time_t
类型,并设置小时、分钟、秒为零。 - 遍历记录数组,将每条记录的日期转换为
time_t
类型,并判断是否在查询时间范围内。 - 如果在查询时间范围内,则将符合条件的记录存储到新的结构体数组中。
- 调用
show()
函数显示查询结果。 - 遍历新的结构体数组,统计存款总和和取款总和。
- 打印存款总和和取款总和。
5.排序 sort()
- 用户输入要筛选的操作类型(存款或取款)。
- 遍历记录数组,将符合操作类型的记录存储到新的结构体数组
new_Records
中。 - 使用冒泡排序算法按操作金额降序排序新的结构体数组。
- 调用
show()
函数显示排序后的结果。
6.统计 statistics()
- 用户输入要统计的客户姓名。
- 遍历记录数组,找到与用户输入的客户姓名匹配的记录。
- 如果记录的操作类型是存款,则将存款金额累加到总存款额中;如果是取款,则将取款金额累加到总取款额中。
- 打印统计结果,包括客户的存款总额和取款总额。
↓如有任何问题,请加下方QQ↓