C语言课程设计-模拟银行系统

本文档详细介绍了使用C语言进行课程设计,实现一个模拟银行系统的过程。包括主要的源代码文件`main.c`和`function.c`,以及个人学习与实践的在线资源链接。
摘要由CSDN通过智能技术生成

main.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
#define MaxNum 200
#define N_P 6
typedef struct
{
    int AccountNumber[3];
    char name[20];
    char password[N_P+1];
    unsigned long amount;
    int state;
} Account;
void Load(FILE *,Account *);
void ShowMenu(int );
int MakeChoice(int );
void EnterPassword(char *);
void CreatAccount(unsigned char *,Account *,int);  //第一个参数为加密关键字,第二个参数为账户序号
int JudgePassword(char *,char *);
int decrypt(int *,unsigned char *);
void LogIn(unsigned char *,Account *,int); //第二个参数为当前账户数目,登陆成功返回1,失败返回0
int EnterAccountNumber(unsigned char *,int );
void EnterNum(char *,int );
void Operate(unsigned char *,Account *,int ,int );
void ShowSubMenu(char *);
void AdministratorMode(unsigned char *,unsigned char *,Account *,char *,int);
void ShowAdministratorMenu();
void WriteToFile(FILE *,unsigned char *,Account*,char *,int);
int main()
{
    FILE *fp;
    int i,total;
    unsigned char key[4],key_en[4];
    char administrator_password[10];
    Account *user;
    user=(Account *)malloc(sizeof(Account)*MaxNum);
    fp=fopen("bank.txt","r+");
    if(fp==NULL)
    {
        printf("银行数据库无法打开,按任意键结束程序!\n");
        getch();
        exit(1);
    }
    fscanf(fp,"%d\n%s\n%s",&total,administrator_password,key);
    for(i=0;i<3;++i)//用key_en保存key的值
       key_en[i]=key[i];
    key_en[0]=(key_en[0]<<3)|(key_en[0]>>(sizeof(key_en[0])*8-3));
    key_en[2]=(key_en[2]>>3)|(key_en[2]<<(sizeof(key_en[2])*8-3));
    Load(fp,user);//将数据存入数组user中
    while(1)
    {
        system("cls");
        ShowMenu(total);
        switch(MakeChoice(4))
        {
        case 1:
            system("cls");
            LogIn(key_en,user,total);
            break;
        case 2:
            system("cls");
            CreatAccount(key_en,user,total++);
            break;
        case 3:
            system("cls");
            AdministratorMode(key,key_en,user,administrator_password,total);
            break;
        default:
            system("cls");
            WriteToFile(fp,key,user,administrator_password,total);
            return 0;
        }
    }
    return 0;
}


function.c

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
#define MaxNum 200
#define N_P 6
//账户状态 0为正常 1为挂失 2为冻结 3为销户
typedef struct
{
    int AccountNumber[3];
    char name[20];
    char password[N_P];
    unsigned long amount;
    int state;
} Account;
void Load(FILE *,Account *);
void ShowMenu(int );
int MakeChoice(int );
void EnterPassword(char *);
void CreatAccount(unsigned char *,Account *,int);  //第一个参数为加密关键字,第二个参数为账户序号
int JudgePassword(char *,char *);
int decrypt(int *,unsigned char *);
void LogIn(unsigned char *,Account *,int); //第二个参数为当前账户数目,登陆成功返回1,失败返回0
int EnterAccountNumber(unsigned char *,int );
void EnterNum(char *,int );
void Operate(unsigned char *,Account *,int,int );
void ShowSubMenu(char *);
void AdministratorMode(unsigned char *,unsigned char *,Account *,char *,int);
void ShowAdministratorMenu();
void WriteToFile(FILE *,unsigned char *,Account*,char *,int);
void Load(FILE *fp,Account *user)
{
    int count=0;
    //将文件中的用户信息存到数组中
    while(fscanf(fp,"\n%d%d%d %s %s %lu %d\n",&user[count].AccountNumber[0],&user[count].AccountNumber[1],\
                 &user[count].AccountNumber[2],user[count].name,\
                 user[count].password,&user[count].amount,&user[count].state)!=EOF)
        ++count;
}
void ShowMenu(int total)
{
    printf("****中国银行烟大计163-1分行****\n");
    printf("目前共有%d名注册用户*****\n",total);
    printf("1.登陆*************************\n");
    printf("2.开户*************************\n");
    pri
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值