本文为大家分享了C语言银行系统课程设计,供大家参考,具体内容如下
main.c
#include#include #include #include #include #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,"%dn%sn%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#include #include #include #include #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 %dn",&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"); printf("3.进入管理员模式***************n"); printf("4.退出*************************n"); } int MakeChoice(int n) { int judge; printf("请输入1~%dn",n); scanf("%d",&judge); while(judge<1||judge>n)//确保输入的是1~n { printf("输入不合法,请输入1~%dn",n); fflush(stdin);//如果不加这句,输入一些字母会导致函数无限循环 scanf("%d",&judge); } return judge; } void EnterPassword(char *password) { int i; char t; for(i=0; i '9') t=getch(); password[i]=t; putchar('*'); } } void EnterNum(char *s,int n) { int i=0; char t; while(i '9') t=getch(); s[i]=t; putchar(t); ++i; } } int JudgePassword(char *temp_password,char *password) { int i; for(i=0; i =MaxNum) { printf("银行用户数量已达到上限!n按任意键返回主界面"); getch(); return; } int i,flag,num_de[3]; int num_en[3]; char temp_password[N_P],password[N_P]; //将num的个位十位和百位分解,num_de[2]存个位,以此类推 for(i=0; i<3; ++i) num_de[i]=0; for(i=0; i<3; ++i) num_en[i]=0; if(num<10) num_de[2]=num; else if(num<100) { num_de[2]=num%10; num_de[1]=num/10; } else { for(i=0; i<3; ++i) { num_de[i]=num%10; num/=10; } } //分解完成 while(1) { flag=0; printf("请输入用户姓名:"); fflush(stdin); scanf("%19[^n]",user[num].name); for(i=0; i


