资源描述
更多企业学院:...../Shop/
《中小企业管理全能版》
183套讲座+89700份资料
...../Shop/40.shtml
《总经理、高层管理》
49套讲座+16388份资料
...../Shop/38.shtml
《中层管理学院》
46套讲座+6020份资料
...../Shop/39.shtml
《国学智慧、易经》
46套讲座
...../Shop/41.shtml
《人力资源学院》
56套讲座+27123份资料
...../Shop/44.shtml
《各阶段职员培训学院》
77套讲座+ 324份资料
...../Shop/49.shtml
《职员管理企业学院》
67套讲座+ 8720份资料
...../Shop/42.shtml
《工厂生产管理学院》
52套讲座+ 13920份资料
...../Shop/43.shtml
《财务管理学院》
53套讲座+ 17945份资料
...../Shop/45.shtml
《销售经理学院》
56套讲座+ 14350份资料
...../Shop/46.shtml
《销售人员培训学院》
72套讲座+ 4879份资料
...../Shop/47.shtml
目 录
一,试验概述 - 2 -
(一)试验目标及要求 - 2 -
(二)试验原理 - 2 -
(三)试验环境 - 2 -
二,试验内容 - 2 -
(一)试验方案设计 - 2 -
⑴方案介绍 - 2 -
⑵模块说明 - 3 -
(二)试验过程 - 4 -
⑴对代码具体介绍: - 4 -
⑵部分模块运行结果: - 11 -
(三)结论 - 14 -
一,试验概述
(一)试验目标及要求
应用所学C语言编程知识设计银行卡管理系统,应用到函数、数组、指针、结构等内容,利用模块化程序设计方法实现数据创建、查找、排序、删除等功效。
(二)试验原理
结构体,函数嵌套调用,数组,指针,选择结构。
(三)试验环境
Visual C++ 6.0
二,试验内容
(一)试验方案设计
⑴方案介绍
作为一名大学生,生活中对于银行卡使用很常见,依据日常经验,我设计了以下银行卡管理系统,包含:“卡管理”、“存取管理”、“查询”、“管理员”“退出系统”等五大块功效,具体以下:
Bank Card(银行卡系统)
1. Card Management Module(卡管理)
a.Application for a card(卡申请)
b.Entry(登录)
c.Change Code(修改密码)
2. Saving and Drawing Management Module(存取管理)
a.Saving(存款)
b.Drawing(取款)
c.Transfer(转账)
3. Inquire Module(查询)
Balance Inquire(余额查询)
4. Manager Log in(管理员登陆)
5. Exit(退出系统)
⑵模块说明
① 系统初始化以下,共储存了4张卡信息。包含账号、余额和密码。
struct card
{
char num[80]; /*银行卡账号*/
float balance; /*银行卡余额*/
char cipher[80]; /*银行卡密码*/
};
银行卡号 余额 密码
10246001 0 abc10246001
10246002 5000 def10246002
10246003 4000 ghi10246003
10246004 jkl10246004
② 为完成各项功效设计函数以下:
void read(struct card inf[],int m);
实施"读卡"功效函数
void CMM();
实施"卡管理"功效函数
void SDMM();
实施"存取管理"功效函数
void IM();
实施"查询"功效函数
void change();
实施"修改密码"功效函数
void Manager();
实施系统管理员职能函数
void bubble(struct card *p);
冒泡排序法
void menu();
菜单函数
void exit();
退出系统函数
(二)试验过程
⑴对代码具体介绍:
#include<stdio.h>
#include<string.h>
#include"malloc.h"
int j;
struct card
{
char num[80]; /*银行卡账号*/
float balance; /*银行卡余额*/
char cipher[80]; /*银行卡密码*/
};
void read(struct card inf[],int m); /*申明实施"读卡"功效函数*/
void CMM(); /*申明实施"卡管理"功效函数*/
void SDMM(); /*申明实施"存取管理"功效函数*/
void IM(); /*申明实施"查询"功效函数*/
void change(); /*申明"修改密码"函数*/
void Manager(); /*申明系统管理员职能函数*/
void bubble(struct card *p); /*申明冒泡排序法*/
void menu(); /*申明菜单函数*/
void exit(); //退出系统函数
struct card *p ;
card inf[10]={
{"10246001",0,"abc10246001"}, /*"银行卡信息"结构变量初始化*/
{"10246002",5000,"def10246002"},
{"10246003",4000,"ghi10246003"},
{"10246004",,"jkl10246004"}};
int main()
{
menu();
return 0;
}
void menu() //定义菜单函数
{
int choice1;
printf("*************************************************\n");
printf("-----------欢迎使用中国银行长城借记卡------------\n");
printf("*************************************************\n");
printf(" Bank Card(银行卡系统) \n");
printf(" 1. Card Management Module(卡管理) \n");
printf(" a.Application for a card(卡申请) \n");
printf(" b.Entry(登录) \n");
printf(" c.Change Code(修改密码) \n");
printf(" 2. Saving and Drawing Management Module(存取管理)\n");
printf(" a.Saving(存款) \n");
printf(" b.Drawing(取款) \n");
printf(" c.Transfer(转账) \n");
printf(" 3. Inquire Module(查询) \n");
printf(" Balance Inquire(余额查询) \n");
printf(" 4.Manager Log in(管理员登陆) \n");
printf(" 5.Exit(退出系统) \n");
printf("*************************************************\n");
printf("\n");
printf("请选择您所需要服务:\n");
scanf("%d",&choice1);
switch(choice1){ 菜单函数中switch语句实现对任务选择
case 1:CMM();break;
case 2:SDMM();break;
case 3:IM();break;
case 4:Manager();break;
case 5:
printf("您已经成功退出系统!\n");break;
}
}
void bubble(struct card *p) //定义“冒泡法”排序函数
{
int i,j;
card t;
for(i=0;i<4;i++)
for(j=1;j<4-i;j++)
{
if((*(p+j-1)).balance>(*(p+j)).balance)
{
t=*(p+j-1);
*(p+j-1)=*(p+j);
*(p+j)=t;
}
}
printf("账户余额从小到大排序以下:\n");
for(p=inf;p<inf+4;p++)
{
printf("%s %f\n",p->num,p->balance);
}
}
void exit() //定义退出系统函数
{
int k;
printf(" \n");
printf("__________________________________________________\n");
printf(" \n");
printf("请选择:\n");
printf("1.返回菜单\n");
printf("2.退出系统\n");
scanf("%d",&k);
if(k==1)
menu();
else
{
printf("您已经成功退出系统。\n");
}
}
void read(struct card inf[],int m) /*定义实施"读卡"功效函数*/
{
char number[80],code[80];
int i,k; /*定义i是循环变量,k是密码输入错误后作出选择*/
printf("请登录您个人中国银行长城借记卡系统\n");
printf("------------------------------------------------------------\n");
printf("请输入您银行卡号:\n");
scanf("%s",&number);
for(i=0;i<4;i++){
if(strcmp(inf[i].num,number)==0){
printf("请输入您银行卡密码: #温馨提醒:请注意保护好您个人信息。#\n");
do{
scanf("%s",&code);
if(strcmp(inf[i].cipher,code)==0){
j=i;
printf("您已经成功登陆,欢迎使用中国银行为您提供各项服务...\n");
}
else{
printf("您输入密码有误,请重新输入或退出...\n");
printf("1.重输密码\n");
printf("2.退出系统\n");
scanf("%d",&k);
if(k==1) continue;
else{
printf("您已经成功退出系统。\n");break;
}
}
}while(strcmp(inf[i].cipher,code)!=0);
}
}
}
void change() //定义实施“修改密码”功效函数
{
int m = 10;
read(inf,m);
printf("请输入您新密码:\n");
getchar();
gets(inf[j].cipher);
printf("修改密码成功!\n");
exit();
}
void CMM() /*定义实施"卡管理"功效函数*/
{ char choice2;
char code1[10],code2[10];
printf(" Card Management Module(卡管理): \n");
printf(" a.Application for a card(卡申请) \n");
printf(" b.Entry(登录) \n");
printf(" c.Change Code(修改密码) \n");
getchar();
printf("请选择您所需要服务:\n");
choice2=getchar();getchar();
switch(choice2)
{
case 'a': 申请卡号
printf("系统为您生成银行卡账号是10246005.\n");
printf("您现在账户余额为0.\n");
printf("____________________________________________________\n");
do{
printf("请设置您密码并妥善保管:\n");
scanf("%s",&code1);
printf("请再次确定您密码.\n");
scanf("%s",&code2);
if(strcmp(code1,code2)==0) 使用字符串比较函数
{
printf("恭喜您已经成功申请中国银行长城借记卡,感谢你支持!\n"); break;
}
else
{
printf("密码设置失败!请重新设置!\n");
printf("***********************************************\n");
}
}while(strcmp(code1,code2)); break;
case 'b':read(inf,10);break; 调用“登录”函数
case 'c':change();break; 调用“修改密码”函数
}
exit();
}
void SDMM() /*定义实施"存取管理"功效函数*/
{
char choice2;
float bank=10000; /*设置用于转账银行账户*/
float *p1=&bank;
float money;
read(inf,10);
printf(" 2. Saving and Drawing Management Module(存取管理)\n");
printf(" a.Saving(存款) \n");
printf(" b.Drawing(取款) \n");
printf(" c.Transfer(转账) \n");
getchar();
printf("请选择您所需要服务:\n");
choice2=getchar();
switch(choice2){ switch语句实现选择功效
case 'a': 使用指针实现对金额增减改变
printf("请输入您存款金额:\n"); 存款
scanf("%f",&money);
inf[j].balance+=money;
printf("您已经成功存款。");
break;
case 'b':
printf("请输入您取款金额:\n"); 取款
scanf("%f",&money);
if(money<=inf[j].balance){
inf[j].balance-=money;
printf("您已经成功取款。\n");}
else
printf("您账户余额不足!\n");
break;
case 'c':
printf("请输入您转账金额:\n"); 转账
scanf("%f",&money);
inf[j].balance+=money;
*p1-=money;
break;
}
printf("感谢您对中国银行支持!\n");
exit();
}
void IM() /*定义实施"查询"功效函数*/
{
read(inf,10);
printf("你账户余额是:\n"); 查询余额
printf("%10.2f",inf[j].balance);
printf(" \n");
printf("感谢您对中国银行支持!\n");
exit();
}
void Manager() //定义实施“管理员”功效函数
{
char managercode0[10]="manager";
char managercode1[20];
int m,k;
do{
printf("请输入密码:\n");
scanf("%s",&managercode1);
if(strcmp(managercode0,managercode1)==0)
{
printf("*************************************************\n");
printf("--------------系统管理员,欢迎进入!-------------\n");
printf("*************************************************\n");
printf("您能够实施任务: \n");
printf("1.对现在各账户进行余额数目从小到大排序; \n");
printf("2.清除余额为零账户. \n");
printf("请选择您要实施任务:\n");
scanf("%d",&m);
if(m==1)
{
bubble(inf); “冒泡排序法”实现对账户余额排序
}
else
{
int num=4; 查询余额为零账户并清除
for(int i=0;i<4;i++)
{
if(inf[i].balance==0)
{
for(int j=i+1;j<4;j++)
{ inf[j-1]=inf[j];
}
num--;
i--;
}
}
for(int r=0;r<num;r++)
printf("%f\n",inf[r].balance);
printf("清除完成。\n");
}
}
else 判定管理员输入密码是否正确
{
printf("您输入密码有误,请重新输入或退出...\n");
printf("1.重输密码\n");
printf("2.退出系统\n");
scanf("%d",&k);
if(k==1)
continue;
else
{
printf("您已经成功退出系统。\n");
break;
}
}
}while(strcmp(managercode0,managercode1)!=0);
}
⑵部分模块运行结果:
Ⅰ修改密码
Ⅱ取款功效
Ⅲ余额查询
Ⅳ管理员功效
Ⅴ卡申请功效
(三)结论
经过这次对银行卡管理系统程序编写,我对结构,指针,函数调用和数组使用了解更进了一步。该银行卡系统功效相对较为完善,涵盖了日常生活中对银行卡使用登录、存取款、转账、修改密码、余额查询等功效。不过还有很多不够完善地方,比如该系统实施过程中无法记住已登录账户,返回菜单实施其它功效时还需要重新登录;实施各项功效时仍然采取是较为简易模型,仅包含简单数据增减和增加数组元素等。即使如此,不过对于自己独立编写并完善银行卡管理系统还是比较满意,因为它表现了我C语言学习应用结果,而且增添了我对本身专业(信息管理和信息系统)学习爱好。
展开阅读全文