C语言程序设计之银行管理系统

这个银行管理系统有开卡,查询内容,存钱,取钱,以及转账,修改密码服务的功能

以下附上源代码

#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)
  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值