这个银行管理系统有开卡,查询内容,存钱,取钱,以及转账,修改密码服务的功能
以下附上源代码
#define _CRT_SECURE_NO_WARNINGS 1
//实现功能:开卡 查询内容 存钱 取钱 转账 修改密码服务
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<time.h>
struct band {
char cardname[20];//卡号
char name[20];//姓名
char code[10];//密码
double money;//余额
struct band* next;//"band" 类型的指针,用于实现链表数据结构中的下一个节点的访问。
};
struct band* head, * tail, * temp;//指向链表头部的指针head,指向链表尾部的指针tail,一个临时指针temp。
void init() {
head = NULL;//给三个指针一个初始值null
tail = NULL;
temp = NULL;
}
//写入文件
void write() {
FILE* fp = fopen("2.txt", "w");//打开一个名为"2.txt"的文件FILE* fp = fopen是用来打开一个文件的函数,它返回指向该文件的指针。保存变量在fp中
temp = head;
while (temp != NULL) {
fprintf(fp, "%s %s %s %lf\n", temp->cardname, temp->name, temp->code, temp->money);
temp = temp->next; //将temp指针移动到当前节点的下一个节点,即将下一个节点的地址赋值给temp指针
}
fclose(fp); //调用 fclose 函数关闭文件并刷新缓冲区。
}
//读出文件
void read() {
int flag = 0;
FILE* fp = fopen("2.txt", "r");//读取一个叫做“2.txt”的文件中的数据
init();
while (1) {
temp = (struct band*)malloc(sizeof(struct band));//创建一个名为"band"的结构体类型的变量,并将该变量的地址赋值给指针变量temp.malloc函数返回指向该内存块的指针,在本代码中将其强制转换为struct band类型
if (temp != 0)
{
flag = fscanf(fp, "%s %s %s %lf", temp->cardname, temp->name, temp->code, &temp->money);//fp已打开的一个函数指针,fscanf将其存储到temp结构体类型变量的成员中,并将它们依次存储到temp结构体变量对应的成员变量中。
if (flag == -1) { //&运算符用来获取 money 成员变量的地址。flag是一个int类型的返回值,表示成功读取的数据项数量,即如果这一行代码成功读取了四个数据项则flag的值为4
break;//打开了一个文件,并检查该文件是否成功打开。当 flag 的值为 -1 时,程序将跳出循环。
}
else {
temp->next = NULL;
if (head == NULL) { //如果 flag 的值不是 -1,那么程序会创建一个链表节点 temp 并将数据存储在其中。
head = temp; //然后将 temp 插入到链表中。如果链表为空,则头指针和尾指针都指向 temp。
tail = temp;
}
else {
tail->next = temp;// 否则,tail 指针将被更新为新的节点 temp,并添加到链表末尾。
tail = tail->next;
}
}
}
}
fclose(fp);//缓冲区
}
//提示信息
void printUsage() {
printf("\n\t|-----------------------------------|\n");
printf("\n\t|*******欢迎您使用中国银行!********|\n");
printf("\n\t| *******开卡请按1******* |\n");
printf("\n\t| *******查询请按2******* |\n");
printf("\n\t| *******存钱请按3******* |\n");
printf("\n\t| *******取钱请按4******* |\n");
printf("\n\t| *******转账请按5******* |\n");
printf("\n\t| *******读文档请按6***** |\n");
printf("\n\t| *******修改密码请按7*** |\n");
printf("\n\t| *******结束请按0******* |\n");
printf("\n\t| ****请输入您的选择:*** |\n");
printf("\n\t|****(使用前请先使用读文档功能)****|\n");
printf("\n\t|-----------------------------------|\n");
}
//开卡
void createCard() {
//开始进行结点
char a[20] = { 0 };
printf("\n=======欢迎您使用开卡功能:========\n");
int i, mark = 0;
for (i = 0; i <= 6; i++) //随机生成一个不重复的卡号
{
srand((unsigned)time(NULL));//随时间变化而变化
mark = rand() % 36; //通过对模运算符 "%" 的使用,确定一个随机的数字 mark(范围为 0 到 35)
if (mark >= 0 && mark <= 9)