C语言银行管理系统设计
c语言银行管理系统课程设计

C语言银行管理系统课程设计1. 简介本文档是一个关于C语言银行管理系统的课程设计项目,旨在帮助学生理解银行管理系统的基本原理和功能,并通过编程实现一个简单的银行管理系统。
2. 功能需求银行管理系统主要包含以下几个功能:2.1 用户管理•用户注册:用户可以通过输入个人信息进行注册,包括姓名、身份证号、手机号码等,系统会为每个用户分配一个唯一的用户ID。
•用户登录:用户可以通过输入用户名和密码登录系统。
•用户注销:用户可以选择注销已有账户。
2.2 账户管理•创建账户:用户可以创建多个不同类型的银行账户,包括储蓄账户、支票账户等。
•查询账户余额:用户可以查询某个账户的余额。
•存款:用户可以向账户存入一定金额。
•取款:用户可以从账户取出一定金额。
•转账:用户可以将一定金额从一个账户转入另一个账户。
2.3 交易记录•查询交易记录:用户可以查询自己的交易记录,包括存款、取款和转账等操作的日期、时间和金额。
2.4 管理员功能•管理员登录:管理员可以通过输入用户名和密码登录系统。
•用户管理:管理员可以对用户信息进行管理,包括添加用户、删除用户、修改用户信息等。
•账户管理:管理员可以对账户信息进行管理,包括添加账户、删除账户、修改账户信息等。
•查询统计:管理员可以查询系统中的账户总数和总金额。
3. 设计思路3.1 数据结构系统需要设计合适的数据结构来存储用户和账户信息,可以使用结构体来表示用户和账户,使用链表或数组来存储多个用户和账户。
3.2 用户界面为了方便用户操作,可以设计简单的用户界面,通过菜单选择方式实现用户和管理员的各项功能。
3.3 数据持久化为了保证用户和账户信息的长期存储,可以将数据存储在文件中,例如使用文本文件存储用户和账户信息。
3.4 安全性考虑为了保护用户个人信息和账户安全,需要对用户密码进行加密存储,并且在输入密码时进行隐藏处理。
4. 开发环境和工具本项目可以在以下开发环境和工具下开发:•操作系统:Windows、Linux、MacOS等。
C语言课程设计银行管理系统

系统测试与调试
单元测试
目的:验证单个模块或函数的正确性 测试方法:白盒测试和黑盒测试 测试内容:功能测试、性能测试、安全性测试等 测试工具:JUnit、NUnit、PyUnit等
集成测试
测试方法:黑盒测试、白盒 测试、灰盒测试
目的:验证系统各模块之间 的接口是否正确
测试内容:功能测试、性能 测试、安全性测试、兼容性
确认密码,点击注册按钮
款人账号,点击转账按钮
添加标题
添加标题
添加标题
添加标题
添加标题
登录界面:输入用户名、密码,
添加标题
查询界面:输入查询条件,点
点击登录按钮
击查询按钮,显示查询结果 账户管理界面:显示账户列表,
可以进行账户查询、修改、删
除等操作
模块设计
账户模块:账户创建、修改、 删除等
交易模块:存款、取款、转 账等
主界面:菜单栏、工具栏、状态栏,显示 账户信息、交易记录等
交易界面:选择交易类型(存款、取款、 转账等),输入金额,确认交易
查询界面:选择查询类型(账户余额、交 易记录等),显示查询结果
设置界面:修改密码、查看帮助等
退出界面:确认退出,关闭系统
模块实现
用户模块:用户登录、注册、修改密码等操作 账户模块:账户创建、修改、删除等操作 交易模块:转账、存款、取款等操作 查询模块:查询账户余额、交易记录等操作 系统管理模块:系统设置、用户管理、日志管理等操作
系统管理:用户管理、权限管理、系 统设置等
系统需求分析
用户需求分析
用户角色:银行员 工、客户
功能需求:存款、 取款、转账、查询、 修改密码等
性能需求:系统响 应时间、数据准确 性、安全性等
银行管理系统c语言程序设计代码

银行管理系统c语言程序设计代码以下是一个简单的银行管理系统的C语言程序设计代码示例:```c#include <stdio.h>#include <stdlib.h>struct BankAccount {int accountNumber;char accountHolder[50];float balance;};void createAccount(struct BankAccount *account) {printf("请输入账户号码: ");scanf("%d", &(account->accountNumber));printf("请输入账户持有人姓名: ");scanf("%s", account->accountHolder);printf("请输入账户余额: ");scanf("%f", &(account->balance));printf("账户创建成功!\n");}void deposit(struct BankAccount *account) {float amount;printf("请输入存款金额: ");scanf("%f", &amount);account->balance += amount;printf("存款成功!\n");}void withdraw(struct BankAccount *account) {float amount;printf("请输入取款金额: ");scanf("%f", &amount);if (amount > account->balance) {printf("余额不足,取款失败!\n");} else {account->balance -= amount;printf("取款成功!\n");}}void displayAccount(struct BankAccount *account) {printf("账户号码: %d\n", account->accountNumber);printf("账户持有人姓名: %s\n", account->accountHolder); printf("账户余额: %.2f\n", account->balance);}int main() {struct BankAccount account;int choice;while (1) {printf("\n银行管理系统\n");printf("1. 创建账户\n");printf("2. 存款\n");printf("3. 取款\n");printf("4. 显示账户信息\n");printf("5. 退出\n");printf("请选择操作: ");scanf("%d", &choice);switch (choice) {case 1:createAccount(&account); break;case 2:deposit(&account);break;case 3:withdraw(&account);break;case 4:displayAccount(&account);break;case 5:printf("感谢使用银行管理系统,再见!\n");exit(0);default:printf("无效的选择,请重新输入。
c语言课程设计银行系统

c语言课程设计银行系统一、教学目标本课程的目标是让学生掌握C语言编程基础,能够运用C语言实现简单的银行系统。
通过本课程的学习,学生应达到以下知识目标:1.掌握C语言的基本语法和数据结构。
2.理解函数的定义和调用,能够编写简单的函数。
3.掌握文件操作的基本方法,能够实现文件的读写。
4.能够使用C语言编写程序,解决实际问题。
5.具备良好的编程习惯,代码结构清晰,易于阅读和维护。
6.能够运用C语言实现简单的银行系统,包括账户管理、存款、取款、查询等功能。
情感态度价值观目标:1.培养学生对计算机编程的兴趣,提高学生动手实践的能力。
2.培养学生团队协作的精神,学会与他人交流和分享。
3.培养学生解决问题的能力,培养学生的创新意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言的基本语法和数据结构:变量、数据类型、运算符、表达式、控制语句、数组、字符串、函数等。
2.函数的定义和调用:函数的定义、参数传递、返回值、递归等。
3.文件操作:文件的打开、关闭、读写、定位等。
4.银行系统的实现:账户管理、存款、取款、查询等功能的设计和实现。
三、教学方法本课程的教学方法主要包括以下几种:1.讲授法:通过讲解C语言的基本语法和数据结构,让学生掌握C语言的基础知识。
2.案例分析法:通过分析实际的银行系统案例,让学生学会如何运用C语言解决实际问题。
3.实验法:通过上机实验,让学生动手实践,加深对C语言编程的理解。
4.讨论法:通过小组讨论,让学生学会与他人交流和分享,培养团队协作的精神。
四、教学资源本课程的教学资源主要包括以下几种:1.教材:《C语言程序设计》等相关教材。
2.参考书:提供一些相关的参考书籍,供学生自主学习。
3.多媒体资料:制作一些教学视频和PPT,帮助学生更好地理解教学内容。
4.实验设备:提供计算机实验室,让学生能够进行上机实验。
五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。
C语言做的银行系统

C语言做的银行系统#include<stdio.h>#include<stdlib.h>#include<string.h>struct cust{int zhanghao; //帐号char mingzi[20]; //名字float bal; //开户的金额};struct tran{int acc_no;char trantype;float amt;};void addcust();void rectran();void prnlowbal();void huizong();void main(){int choice;while(choice!=5){system("cls");printf("\n****************************************\n");printf("\n* 银行交易系统 *\n");printf("\n* -1- 创建新用户信息 *\n");printf("\n* -2- 银行业务办理 *\n"); printf("\n* -3- 显示低存款用户信息 *\n");printf("\n* -4- 汇总 *\n");printf("\n* -5- 退出 *\n");printf("\n****************************************\n");printf("请选择:");scanf(" %d",&choice);switch(choice){case 1:addcust();break;case 2:rectran();break;case 3:prnlowbal();break;case 4:huizong();break;default:exit(0);}}}void addcust(){FILE *fp;char flag='y';struct cust people;if((fp=fopen("sql.txt","w"))==NULL){printf("\n **** 操作错误,重新输入 ****\n"); getchar();return;}while(flag=='y'){system("cls");printf("\n 帐号:");scanf("%d",&people.zhanghao);printf("\n 姓名:");scanf("%s",&people.mingzi);printf("\n 金额:");scanf("%f",&people.bal);fwrite(&people,sizeof(struct cust),1,fp);getchar();printf("\n 是否继续(y/n)?:");scanf(" %c",&flag);}fclose(fp);}void rectran(){FILE *fp1,*fp2;char flag='y',found,val_flag;struct cust people;struct tran people2;int size=sizeof(struct cust);if((fp1=fopen("sql.txt","a+f"))==NULL){printf("\n **** 操作错误,重新输入! ****\n");getchar();exit(0);}if((fp2=fopen("trans.dat","a+f"))==NULL){printf("\n **** 操作错误,重新输入! ****\n");getchar();return;}while(flag=='y'){system("cls");printf("\n帐号:");scanf("%d",&people2.acc_no);found='n';val_flag='n';rewind(fp1);while((fread(&people,size,1,fp1))==1 && found=='n'){if(people.zhanghao==people2.acc_no){found='y';break;}}if(found=='y'){while(val_flag=='n'){printf("\n 选择交易方式存/取(D/W)?:");scanf(" %c",&people2.trantype);if(people2.trantype!='D'&&people2.trantype!='d'&&people2.trantype!='w'&&people2.trantype!='W') {printf("\n **** 交易错误,重新输入 ****\n");}else{val_flag='y';}}val_flag='n';while(val_flag=='n'){printf("\n 金额:");scanf("%f",&people2.amt);if(people2.trantype=='w'||people2.trantype=='W'){if(people2.amt>people.bal){printf("\n *** 余额:%.2f不足.重新输入。
用c语言做了一个简单的银行系统

存款取款模块
存款功能
用户输入存款金额
系统验证用户输入的金额是否 合法
系统将存款金额加到用户账户 余额中
显示用户最新的账户余额
取款功能
用户输入取款金额
系统验证用户输入的金额是否 合法
系统验证用户账户余额是否足 够
如果以上验证通过,系统从用 户账户中扣除相应金额,并返 回取款成功信息
存款取款操作流程
交易记录:记录交易信息,方 便用户查询和核对交易明细
系统架构
系统由用户界面、业务逻辑层和数 据访问层组成
系统采用模块化设计,便于维护和 扩展
添加标题
添加标题
添加标题
添加标题
用户界面负责与用户交互,业务逻 辑层处理业务逻辑,数据访问层负 责数据存储和访问
各个层次之间通过接口进行通信, 确保系统的模块化和可扩展性
添加标题
转账成功后,及时核对账户余额和 交易记录
查询模块
查询账户余额
查询模块的功能: 提供账户余额查 询服务
查询流程:用户 输入账号,系统 通过块的C语 言实现:使用 SQL语句查询数 据库,并通过函 数返回结果
查询模块的输入 与输出:用户输 入账号,系统输 出账户余额
账户查询
查询账户余额
查询账户交易记录
查询账户开户信息
查询账户安全设置
账户修改
修改账户信息:包括姓名、账号、密码等 验证修改请求:确保修改请求来自账户持有人 更新账户数据:在数据库中更新账户信息 返回修改结果:成功或失败信息通知账户持有人
账户删除
删除账户的条件:账户余额为0,账户未签约任何服务 删除过程:先检查账户是否符合删除条件,再从系统中移除账户信息 删除后的影响:该账户无法进行任何交易,且无法恢复 安全措施:删除操作需要管理员权限,并记录操作日志
c银行储蓄管理系统课程设计

c 银行储蓄管理系统课程设计一、教学目标本课程旨在让学生了解和掌握银行储蓄管理的基本原理和方法,培养学生运用编程技能解决实际问题的能力。
具体目标如下:1.知识目标:使学生掌握银行储蓄管理的基本概念、业务流程和常用算法;了解编程语言在银行储蓄管理中的应用。
2.技能目标:培养学生使用编程语言进行银行储蓄管理系统的开发和调试;培养学生独立分析问题、解决问题的能力。
3.情感态度价值观目标:培养学生对银行储蓄管理工作的热爱和敬业精神,提高学生对社会金融行业的认识和责任感。
二、教学内容1.银行储蓄管理概述:介绍银行储蓄管理的定义、作用和业务范围。
2.银行储蓄业务流程:讲解银行储蓄业务的各个环节,包括开户、存钱、取钱、转账等。
3.常用算法:介绍在银行储蓄管理中常用的算法,如排序、查找等。
4.编程语言应用:学习编程语言的基本语法,掌握使用编程语言实现银行储蓄管理系统的关键技术。
5.项目实践:以小组为单位,学生自主设计并开发一个简单的银行储蓄管理系统。
三、教学方法1.讲授法:教师讲解银行储蓄管理的基本概念、业务流程和常用算法。
2.案例分析法:分析实际案例,让学生了解编程语言在银行储蓄管理中的应用。
3.实验法:学生动手实践,开发和调试银行储蓄管理系统。
4.讨论法:分组讨论,引导学生独立分析问题、解决问题。
四、教学资源1.教材:选用国内权威出版社出版的银行储蓄管理教材。
2.参考书:推荐学生阅读与银行储蓄管理相关的国内外经典著作。
3.多媒体资料:制作课件、视频等,为学生提供丰富的学习资源。
4.实验设备:为学生提供计算机、网络等实验设备,确保实验教学的顺利进行。
五、教学评估本课程的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
评估方式包括:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,以考察学生的学习态度和积极性。
2.作业:布置课后作业,评估学生的理解和应用能力,以及对银行储蓄管理知识掌握的程度。
银行管理系统c语言程序设计代码

银行管理系统C语言程序设计代码简介银行管理系统是一个用于模拟银行业务的计算机程序。
它可以实现用户账户的创建、存取款、转账等功能,同时还可以进行利息计算、账单管理等操作。
本文将详细介绍银行管理系统的设计和实现,包括系统的功能模块、数据结构和算法等内容。
功能模块银行管理系统主要包括以下功能模块:1.用户管理:包括用户账户的创建、修改、删除等操作。
2.账户管理:包括存款、取款、查询余额、转账等操作。
3.利息计算:根据存款金额和存款期限计算利息。
4.账单管理:记录用户的交易明细和账户余额变动。
数据结构银行管理系统使用了以下数据结构:1.用户账户结构体:包括账户ID、账户名称、账户类型等信息。
2.用户交易结构体:包括交易类型、交易金额、交易时间等信息。
3.用户账户链表:用于保存所有用户账户的信息。
4.用户交易链表:用于保存用户的交易明细。
算法设计银行管理系统使用了以下算法:1.用户账户创建算法:通过用户输入的信息创建新的账户,并将其添加到账户链表中。
2.存款算法:根据用户输入的存款金额,将其添加到账户余额中。
3.取款算法:根据用户输入的取款金额,从账户余额中扣除相应金额。
4.转账算法:根据用户输入的转账金额和目标账户ID,将相应金额从当前账户中转到目标账户中。
5.利息计算算法:根据存款金额和存款期限,计算相应的利息。
6.账单记录算法:将用户的交易明细和账户余额变动记录到交易链表中。
代码实现以下是银行管理系统的C语言代码示例:#include <stdio.h>// 用户账户结构体typedef struct {int accountId;char accountName[100];char accountType[100];float balance;} Account;// 用户交易结构体typedef struct {int accountId;char transactionType[100];float amount;char transactionTime[100];} Transaction;// 用户账户链表typedef struct {Account account;struct AccountNode* next;} AccountNode;// 用户交易链表typedef struct {Transaction transaction;struct TransactionNode* next;} TransactionNode;// 创建用户账户void createAccount(AccountNode** head, Account account) { // 创建新的账户节点AccountNode* newNode = (AccountNode*)malloc(sizeof(AccountNode)); newNode->account = account;newNode->next = NULL;// 将新的账户节点添加到链表中if (*head == NULL) {*head = newNode;} else {AccountNode* current = *head;while (current->next != NULL) {current = current->next;current->next = newNode;}}// 存款void deposit(AccountNode* head, int accountId, float amount) {AccountNode* current = head;while (current != NULL) {if (current->account.accountId == accountId) {current->account.balance += amount;break;}current = current->next;}}// 取款void withdraw(AccountNode* head, int accountId, float amount) {AccountNode* current = head;while (current != NULL) {if (current->account.accountId == accountId) {if (current->account.balance >= amount) {current->account.balance -= amount;} else {printf("Insufficient balance.\n");}break;}current = current->next;}}// 转账void transfer(AccountNode* head, int sourceAccountId, int targetAccountId, flo at amount) {AccountNode* current = head;while (current != NULL) {if (current->account.accountId == sourceAccountId) {if (current->account.balance >= amount) {current->account.balance -= amount;break;} else {printf("Insufficient balance.\n");}current = current->next;}current = head;while (current != NULL) {if (current->account.accountId == targetAccountId) {current->account.balance += amount;break;}current = current->next;}}// 利息计算float calculateInterest(float principal, int years) {float rate = 0.05; // 假设利率为5%return principal * rate * years;}// 账单记录void recordTransaction(TransactionNode** head, Transaction transaction) { // 创建新的交易节点TransactionNode* newNode = (TransactionNode*)malloc(sizeof(TransactionNod e));newNode->transaction = transaction;newNode->next = NULL;// 将新的交易节点添加到链表中if (*head == NULL) {*head = newNode;} else {TransactionNode* current = *head;while (current->next != NULL) {current = current->next;}current->next = newNode;}}int main() {AccountNode* accountList = NULL;TransactionNode* transactionList = NULL;// 创建账户Account account1 = {1, "John Doe", "Savings", 1000.0};createAccount(&accountList, account1);Account account2 = {2, "Jane Smith", "Checking", 2000.0};createAccount(&accountList, account2);// 存款deposit(accountList, 1, 500.0);// 取款withdraw(accountList, 1, 200.0);// 转账transfer(accountList, 1, 2, 300.0);// 利息计算float interest = calculateInterest(1000.0, 1);printf("Interest: %.2f\n", interest);// 账单记录Transaction transaction1 = {1, "Deposit", 500.0, "2022-01-01 10:00:00"};recordTransaction(&transactionList, transaction1);Transaction transaction2 = {1, "Withdraw", 200.0, "2022-01-02 11:00:00"};recordTransaction(&transactionList, transaction2);return 0;}总结银行管理系统是一个功能丰富的计算机程序,通过使用C语言进行设计和实现,可以实现用户账户的创建、存取款、转账等功能,同时还可以进行利息计算、账单管理等操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计基础(C语言) 课程设计说明书(20~ 20学年第_1_学期)题目名称:银行存取款管理系统姓名学号专业班级指导教师提交日期湖南应用技术学院课程设计任务书指导教师(签名):教研室主任(签名):年月日一、需求分析1、银行存取款管理系统在于如何使用户更便于去进行存取款等一系列操作,是为了解决银行在存取款方面的不便之处。
2、通过此系统,能录用用户存款的信息,其中包括用户的编号、姓名、性别、地址、年龄及账户总金额。
3、能够输入客户存款或取款记录。
4、能根据客户姓名查询存款和取款记录。
二、总体设计1、总体思路:本系统分为七个主功能模块(1)录入客户存取款信息模块;(2)修改客户存取款信息模块;(3)排序客户存取款信息模块(4)删除客户存取款信息模块;(5)查找客户存取款信息模块;(6)显示客户存取款信息模块;(7)系统退出模块。
通过对七个功能模块的设计和操作,使银行拥有一系列的存取款系统。
用户根据系统的提示进行七个功能模块的操作就能十分便捷的完成自己要进行银行存取款项目。
2、设计思想:银行存取款管理系统在于方便银行的存取款项目,因此对其设计有六个主功能模块:录入、修改、排序、查找、删除、显示和退出。
使用相应的c语言函数去实现这个模块的设计,最后通过这七个功能模块来完成存取款的一系列实现。
34、问题和方法(1)程序编码繁琐,难度较大。
方法:上网查资料弄懂不认识的程序,并向老师和会的同学请教。
(2)程序错误较多,无法执行。
方法:耐心的纠错,仔细地检查。
(3)容易粗心打错函数符号、参数或标点符号。
方法:吸取教训,编程时更加细心。
三、详细设计1、重要数据的数据结构设计客户存取款信息的记录项用student表示,包括6个属性:num1,name,addr,sex,age,num2, 其分别是编号,客户姓名,客户地址,性别,年龄,账户总金额。
2、函数设计银行存取款管理系统程序采用了结构化程序设计的思想,由4个h头文件和3个c源文件组成。
程序中除了主函数外,共设计了以下七个函数,分别包含在3个c源文件中。
以下是这些函数的函数原型及功能设计。
(1)void inputing(student *p);函数功能:输入函数中的输数据部分并保存的函数。
(2)void input(student *p,int i);函数功能:输入函数。
输入客户的基本信息。
(3)void insert(student *p,int i);函数功能:插入函数。
插入要输入的客户信息。
(4)void output(student *p,int i);函数功能:输出函数。
将需要的客户信息以列表的形式显示在屏幕上。
(5)void sort(student *p,int n);函数功能:排序函数。
按要将客户存取款信息以账号大小的顺序排列出来。
(6)void find(student *p,int n);函数功能:查找函数。
按要求通过输入客户姓名的方式查询客户存取款信息。
(7)int del(student *p,int n);函数功能:删除函数。
通过输入要删除的客户姓名,查询后删除该客户存取款信息。
3、函数关系调用图四、程序运行结果测试与分析1、调试分析本系统在VC6下编译调试通过,可顺利运行,各项功能达到设计要求。
本系统程序由4个h头文件和3个c源文件构成。
系统调试主要在VC++6.0下进行,采用分模块调试的方法进行编译,即完成一个函数功能模块就编译一个功能模块,最后再进行整体编译并生成可执行文件Student.exe.在调试的过程,主要碰到了以下问题:1、清屏函数在TC中使用的clrsrc函数,但在VC6中没有该函数也没有相应的函数。
查资料,发现在VC中可使用system()函数调用系统命令cls实现。
2、在使用C语言系统函数进行数据输入的时候,发现使用getchar()和gets()函数输入字符和字符串的时候,系统经常跳过相应的输入语句,无法输入数据。
查资料,是C系统的输入处理的输入缓存问题,解决方法是在进行字符和字符串输入的时候,先使用fflush(stdin)函数清除输入缓存,即可正常输入字符和字符串。
2、运行结果输入1得到图1图1输入2,得到图2图2 输入3,得到图3图3 输入4,得到图4图4输入5和6,得到图5图5输入7,得到图6图6五、结论与心得1、本次是我们第一次接触到课程设计这一课题,在做这个课题的过程中我们遇到了许多的困难:比如对结构体函数的运用,七个功能函数的操作,参数的定义等等。
虽然遇到了如此多的困难,但是在解决困难的途中我们没有放弃,最终我们解决了程序上的问题,也丰富了自己的知识。
2、通过本次的C语言程序设计,我发现自己在C语言方面还存在有较大的漏洞,对于各种函数的认知还不够清晰,无论是在函数的调用方面还是在函数的嵌套或定义方面,都还有所欠缺。
其次,对于C语言,细心是非常重要的。
一个括号,一个分号,乃至一个逗号在C语言的程序中都是十分重要的,无论少了哪一个程序都无法运行。
因此,在进行C语言程序的编程时要十分细心。
3、对于此次的题目银行存取款管理系统,我们觉得其实可以更加的简便,更加的智能化。
或许可以将其与银行的其他管理系统进行智能整合,让用户在进行存取款业务时有更多的选项,并且也可以增加银行的业务。
当然这些还只是我们的设想,但我们相信随着我们对专业的学习和知识技能的不断增长,我们总会学得如何去建立一个更好的管理系统。
六、附:源码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>//自定义结构体程序struct student{char acad[10],name[20],sex;//客户账号,姓名,性别int age;//客户年龄char addr[30];//客户住址long int num;//存取款数目};void inputing(student *p);//声明输入函数中的输数部分并保存函数void input(student *p,int i);//声明输入函数void insert(student *p,int i);//声明插入函数void output(student *p,int i);//声明输出函数void sort(student *p,int n);//声明排序函数void find(student *p,int n);//声明查找函数int del (student *p,int n);//声明删除函数void main(){system("color 34");student *q=NULL;//自定义类型指针int i=0,j,k,b=0;do{printf("\t\t|----------------------------------|\n");printf("\t\t|-------银行存取款管理系统---------|\n");printf("\t\t|1.输入客户信息 2.添加客户信息 |\n");printf("\t\t|3.排序客户信息 4.查找客户信息 |\n");printf("\t\t|5.删除客户信息 6.显示客户信息 |\n");printf("\t\t|7.退出系统 |\n");printf("\t\t\t\t请选择菜单:");scanf("%d",&j);switch(j){case 1:b++;if(b!=1){printf("你已经输入过一次了,不能再选择,加入可以选择<2.添加客户信息>\n");break;}else{printf("请输入要输入的客户数量:");scanf("%d",&i);while(b<=0);{printf("输入错误,请重新输入要输入的客户数量:");scanf("%d",&i);}q=(student *)malloc(i*sizeof(student));insert(q,i-1);//调用输入函数break;}case 2:i++;q=(student *)realloc(q,i*sizeof(student));insert(q,i-1);//调用插入函数break;case 3:sort(q,i);//调用排序函数break;case 4:find(q,i);//调用查找函数break;case 5:k=del(q,i);//调用删除函数if(k==1){i--;q=(student*)realloc(q,i*sizeof(student));}break;case 6:output(q,i);//调用输出函数break;case 7:printf("程序即将退出...\n");break;default:printf("菜单选择错误!");}}while(j!=7);free(q);}//输入函数中的输数据部分并保存的函数void inputing(student *p){printf("请输入客户账号:");scanf("%s",p->acad);printf("请输入客户姓名:");scanf("%s",p->name);printf("请输入客户住址:");scanf("%s",&(p->addr));do{printf("请输入客户性别<b:男/g:女>:");fflush(stdin);scanf("%c",&(p->sex));if(p->sex!='b'&&p->sex!='g'){printf("输入错误,重新输入");}}while(p->sex!='b'&&p->sex!='g');do{printf("输入客户年龄:");scanf("%d",&(p->age));if(p->age<1||p->age>100){printf("输入错误,重新");}}while(p->age<1||p->age>100);do{printf("输入客户存款数目:");scanf("%1d",&(p->num));if(p->num<0||p->num>1000000){printf("输入错误,重新");}}while(p->num>1000000);}//输入函数void input(student *p,int i){int x;for(x=0;x<i;x++,p++){printf("请输入第&d号客户存取款信息:\n",x+1);inputing(p);//调用输入函数中的输数据部分并保存函数printf("\n");}}void insert(student *p,int i){int x;for(x=0;x<i;x++,p++){printf("请输入第&d号客户存取款信息:\n",x+1);inputing(p);//调用输入函数中的输数据部分并保存函数printf("\n");}}//输出函数void outpt(student *p,int i){printf("账号\t姓名\t性别\t年龄\t住址\t存取款数目");int x=0;for(x=0;x<i;x++,p++){printf("%s\t%s\t%c\t%d\t%s\t%ld\n",p->acad,p->name,p->sex,p->age,p->addr,p->num);}printf("\n");}//插入函数void output(student *p,int i){p=p+i;printf("请输入要插入的存取款信息:\n");inputing(p);//调用输入函数中的输数据并保存函数printf("\n");}//排序函数void sort(student *p,int n){student t;int i,j;{printf("要求按账号从小到大排序:\n");for(i=0;i<n-1;i++){for(j=0;j<n-i-1;j++){if(strcmp((p+j)->acad,(p+j+1)->acad)==1){t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;}}}}output(p,n);}//查找函数void find(student *p,int n){student t;int i=0;printf("要求按客户姓名查找:");printf("请输入要查找的姓名:");scanf("%s",);for(i=0;i<n;i++){if(strcmp(,(p+i)->name)==0){break;}}if(i>=n){printf("查找的姓名是%d的客户,没有找到!\n",);}else{printf ("查找的姓名是%d的客户,是所输入的客户中的%d个客户\n",,i+1);printf("账号\t姓名\t性别\t年龄\t住址\t存取款数目");printf("%s\t%s\t%c\t%d\t%ld\n",p->acad,p->name,p->sex,p->age,p->a ddr,p->num);}}//删除函数int del(student *p,int n){student t;int i=0,j;char ch;printf("要求按客户姓名删除:");{printf("输入要删除的客户姓名:");scanf("%s",);for(i=0;i<n;i++){if(strcmp(,(p+i)->name)==0){break;}}if(i>=n){printf("删除的姓名是%d的客户,没有找到\n",);return 0;}else{printf("删除的姓名是%s的客户,是所输入的客户中的%d个客户\n",,i+1);printf("要删除的客户存取款信息:\n");printf("账号\t姓名\t性别\t年龄\t住址\t存取款数目");printf("%s\t%s\t%c\t%d\t%s\t%ld\n",p->acad,p->name,p->sex,p->age, p->addr,p->num);printf("是否一定删除<y:删除/n:不删除>:");fflush(stdin);scanf("%c",&ch);if(ch!='y'){printf("你选择了不删除%s客户存取款信息,没有删除\n",(p+i)->name);return 0;}else{printf("你选择了删除%s客户存取款信息,已删除\n",(p+i)->name);for(j=i;j<n;j++){*(p+j)=*(p+j+1);}return 1;}}}}。