精华内容
下载资源
问答
  • java实现银行管理系统
    千次阅读
    2021-03-07 21:18:35

    本文实例为大家分享了java实现银行管理系统的具体代码,供大家参考,具体内容如下

    Bank类

    package First;

    import java.util.TreeSet;

    //银行类

    public class Bank {

    private String Bankname = "坑对对银行"; //银行名称

    TreeSet holder = null; //银行存储的信息

    private static Bank INSTANCE = new Bank();

    private Bank() {} //私有化银行类

    public static Bank getInstance() {

    // TODO Auto-generated method stub

    return INSTANCE;

    }

    //存款功能

    public void saveMoney(User user,double money) {

    //初始金额与存入金额相加

    double sum = user.getSum()+money;

    user.setSum(sum);

    System.out.print(money+"存款成功!!!"+",当前余额是:"+user.getSum());

    System.out.print("\n");

    }

    //取款功能

    public void drawMoney(User user,double money,String pw) {

    if(user.getPw().equals(pw)) { //先判断取款密码

    if(user.getSum()>=money) { //判断余额

    user.setSum(user.getSum()-money);

    System.out.print("取款成功");

    System.out.print("\n");

    System.out.print("当前余额为:"+"\t"+user.getSum());

    System.out.print("\n");

    }else {

    System.out.print("抱歉余额不足!!! 当前余额:"+user.getSum());

    System.out.print("\n");

    }

    }

    }

    //查看余额以及信息

    public void looksum(User user) {

    System.out.print("姓名:"+user.getName()+",账号:"+user.getAccount()+",余额:"+user.getSum());

    System.out.print("\n");

    }

    //欢迎语句

    public void welcom(User user) {

    if(user.getSexual().equals("男")) {

    System.out.print(user.getName()+" 先生!!"+" "+(this.Bankname)+" 欢迎您!!!");

    System.out.print("\n");

    }else if(user.getSexual().equals("女")){

    System.out.print(user.getName()+" 女士!!"+" "+(this.Bankname)+" 欢迎您!!!");

    System.out.print("\n");

    }

    }

    //再见语句

    public void GoodBye(User user) {

    if(user.getSexual().equals("男")) {

    System.out.print(user.getName()+" 先生!!"+" "+(this.Bankname)+" 祝您生活愉快!!!");

    System.out.print("\n");

    }else if(user.getSexual().equals("女")){

    System.out.print(user.getName()+" 女士!!"+" "+(this.Bankname)+" 祝您生活愉快!!!");

    System.out.print("\n");

    }

    }

    }

    Data:数据存储类

    package First;

    import java.util.TreeSet;

    //模拟一个数据库

    //银行的数据库

    public class Data {

    TreeSet holder = new TreeSet(new MyComparator()); //用于存储用户信息的容器---自定义比较规则

    File file = File.getFile(); //获取一个文件类

    private static Data data = new Data();

    //单例模式--因为存储数据的类唯一.所以不能随意被实例化

    private Data() {} //私有化构造方法

    public static Data getData() { //提供返回该对象的静态方法

    return data;

    }

    //添加用户

    public void addUser(User user) {

    holder.add(user);

    System.out.print("注册成功!!");

    System.out.print("\n");

    }

    //删除用户

    public void removeUser(User user) {

    if(holder.contains(user)) { //如果容器中包含所user对象,则移除对象

    holder.remove(user);

    }else { //如果不包含则打印语句

    System.out.print("抱歉请检查输入的信息是否正确");

    System.out.print("\n");

    }

    }

    //获取容器

    public TreeSet getHolder() {

    return holder;

    }

    //写入容器

    public void setHolder(TreeSet holder) {

    this.holder = holder;

    }

    }

    FIie:文件IO类

    package First;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.ObjectInputStream;

    import java.io.ObjectOutputStream;

    import java.util.Iterator;

    import java.util.TreeSet;

    /*

    * 文件类--负责向内存中初始化信息以及程序结束后向内存中存入信息

    * */

    public class File {

    TreeSet holder = Data.getData().getHolder(); //从Data数据库中获取容器

    //文件类只供使用不能被任意实际化

    public static File FILE; //私有化一个File类

    private File() {};

    public static File getFile() { //对外界提供获取方法

    return FILE;

    }

    //保存到文件里

    public static void SaveToFile(TreeSet list) { //将获取到的容器存入到文件中----序列化

    ObjectOutputStream oo = null;

    try {

    oo = new ObjectOutputStream(new FileOutputStream(".\\src\\Test\\text1.txt")); //获取文件存储地址

    oo.writeObject(list); //将容器写入

    } catch (Exception ex) {

    ex.printStackTrace();

    }finally {

    try {

    oo.close(); //将流关闭

    }catch(IOException e) {

    e.printStackTrace();

    }

    }

    }

    //从文件里读取

    public static TreeSet ReadFromFile() {

    ObjectInputStream ois = null;

    TreeSet list = null;

    try {

    ois = new ObjectInputStream(new FileInputStream(".\\src\\Test\\text1.txt"));//反序列化从文件中获取容器加载到内存

    list = Data.getData().getHolder(); //获取容器

    list = (TreeSet) ois.readObject(); //从流中获取对象

    Iterator it = list.iterator(); //迭代器

    System.out.print("当前用户信息:");

    System.out.print("\n");

    System.out.print("\n");

    while(it.hasNext()) { //迭代初始信息

    User user = (User) it.next();

    System.out.print("\t"+"姓名:"+user.getName()+"\t"+"账号:"+user.getAccount()+"\t"+"密码:"+user.getPassword()+"\t"+"余额:"+user.getSum()+"\t");

    System.out.print("\n");

    System.out.print("\n");

    }

    } catch (Exception ex) {

    ex.printStackTrace();

    }finally {

    try {

    ois.close(); //将流关闭

    }catch(IOException e){

    e.printStackTrace();

    }

    }

    return list;

    }

    }

    MyComparator:自定义比较器类

    package First;

    import java.io.Serializable;

    import java.util.Comparator;

    //自定义比较器

    //想要存入集合必须实现序列化和反序列化

    public class MyComparator implements Comparator,Serializable{

    /**

    *

    */

    private static final long serialVersionUID = 1L;

    @Override

    public int compare(Object arg0, Object arg1) {

    User user1 = (User)arg0; //重写比较方法 --- 强转成User类型

    User user2 = (User)arg1;

    return user1.getAccount().compareTo(user2.getAccount());//比较两个银行账户

    }

    }

    Operate:系统核心

    package First;

    import java.util.Iterator;

    import java.util.Scanner;

    import java.util.TreeSet;

    //后台操作系统

    //后台管理员

    public class Operate {

    Scanner sc = new Scanner(System.in); //键盘录入

    TreeSet holder = Data.getData().getHolder(); //从Data数据库中获取容器

    Bank bank = Bank.getInstance(); //获取一个银行类

    File file = File.getFile(); //获取一个文件类

    //登录菜单

    public void registerMenu(){

    System.out.print("****************************");

    System.out.print("\n");

    System.out.print("\n");

    System.out.print(" 欢迎来到坑多多银行登录系统!!!\n");

    System.out.print("\n");

    System.out.print("****************************");

    System.out.print("\n");

    System.out.print("\n");

    holder = File.ReadFromFile(); //从文件中获取容器

    Data.getData().setHolder(holder); //把从文件中获取容器存储到数据库中

    int str=1; //从键盘获取数字

    while(str!=0) {

    System.out.print("****************************");

    System.out.print("\n");

    System.out.print(" 1: 登录 ");

    System.out.print("\n");

    System.out.print(" 2: 注册 ");

    System.out.print("\n");

    System.out.print(" 3: 忘记密码");

    System.out.print("\n");

    System.out.print(" 4: 注销用户");

    System.out.print("\n");

    System.out.print(" 0: 退出");

    System.out.print("\n");

    System.out.print("****************************");

    System.out.print("\n");

    System.out.print("请输入:");

    str = sc.nextInt();

    switch(str){ //根据用户输入的值进行选择

    case 1:

    System.out.print("请输入您的账号:");

    String account = sc.next(); //从键盘中获取录入用户名

    System.out.print("请输入您的密码:");

    String pw = sc.next(); //从键盘中录入密码

    User user = logon(holder,account,pw);

    if(user!=null) { //判断是否登录成功

    System.out.print("登录成功!!!!欢迎使用");

    System.out.print("\n");

    System.out.print("正在跳转到银行操作界面.........");

    System.out.print("\n");

    this.BankMenu(user); //如果登录成功则将user对象传入到银行操作界面并跳转

    }else {

    System.out.print("登录失败!!!请从新输入"); //如果登录失败打印此语句

    System.out.print("\n");

    }

    break;

    case 2:

    this.logon(); //调用注册方法

    break;

    case 3:

    this.modify(); //调用修改方法

    break;

    case 4:

    holder = logout(holder); //调用删除操作

    break;

    case 0:

    File.SaveToFile(holder); //退出系统式将信息保存到文件中

    System.out.print("再见!!!!");

    System.out.print("\n");

    default:

    System.out.print("输入错误!!!!");

    System.out.print("\n");

    }

    }

    }

    //登录方法

    public User logon(TreeSet holder,String account,String pw) {

    Iterator it = holder.iterator(); //获取迭代器

    while(it.hasNext()) {

    User user = it.next();

    if(user.getAccount().equals(account)&&user.getPassword().equals(pw)){

    System.out.print("登录成功!!");

    System.out.print("\n");

    return user;

    }

    }

    System.out.print("账户或密码错误 登录失败!!");

    System.out.print("\n");

    return null;

    }

    //注册方法体

    public void logon(){

    System.out.print("欢迎来到注册界面!!!!");

    System.out.print("\n");

    String name; //用户名

    String account; //银行账号

    String password; //密码

    String pw; //取款密码

    double sum; //账户金额

    String sexual; //性别

    User user = new User(); //先创建一个空参的user对象

    boolean flag = true; //语句的开关

    while(flag) { //将注册的信息依次输入

    switch(1) {

    case 1:

    System.out.print("请输入姓名:"); //依次从键盘中获取对应的姓名----正则表达式

    name = sc.next();

    user.setName(name); //将名字写入对象中

    case 2:

    System.out.print("请输入账号(9位数字):");

    account = sc.next(); //从键盘中获取账号

    String reges ="[0-9]{9}"; //正则表达式规则对账号进行限制

    if(!account.matches(reges)) { //如果不符合要求则报错

    System.out.print("账号不符合规范!!");

    System.out.print("\n");

    System.out.print("请重新注册");

    System.out.print("\n");

    break;

    }

    user.setAccount(account); //将账号写入对象中

    case 3:

    System.out.print("请输入密码(6位):");

    password = sc.next();

    reges ="[0-9]{6}"; //正则表达式规则

    if(!password.matches(reges)){ //如果密码不符合正则规则则报错

    System.out.print("密码不符合规范!!");

    System.out.print("\n");

    System.out.print("请重新注册");

    System.out.print("\n");

    break;

    }

    user.setPassword(password); //将密码写入对象中

    case 4:

    System.out.print("请输入取款密码(6位):");

    pw = sc.next();

    reges ="[0-9]{6}"; //正则表达式规则

    if(!pw.matches(reges)) {

    System.out.print("取款密码不符合规范!!");

    System.out.print("\n");

    System.out.print("请重新注册");

    System.out.print("\n");

    break;

    }

    user.setPw(pw); //将取款密码写入到对象中

    case 5:

    System.out.print("请输入金额:");

    sum = sc.nextDouble();

    user.setSum(sum); //将金额写入到对象中

    case 6:

    System.out.print("请输入性别:");

    sexual = sc.next();

    user.setSexual(sexual); //将性别写入到对象中

    case 7:

    if(!holder.contains(user)){

    Data.getData().addUser(user); //一切准确无误后将user存入数据库Data中

    }

    else {

    System.out.print("用户存在!!!");

    System.out.print("\n");

    //结束循环

    }

    flag = false;

    break;

    }

    }

    }

    //忘记密码操作

    public void modify() {

    boolean flag = true;

    Iterator it = holder.iterator(); //获取迭代器

    System.out.print("请输入账户:");

    String account = sc.next(); //从键盘中获取账户

    while(it.hasNext()) {

    User user = it.next();

    if(user.getAccount().equals(account)){ //如果容器中有这个对象则对它进行修改

    System.out.print("请输入新账户的密码:");

    String pw = sc.next(); //从监盘上录入新的密码

    String reges ="[0-9]{6}"; //正则表达式规则

    if(!pw.matches(reges)) { //如果密码不符合正则规则则报错

    System.out.print("密码不符合规范!!");

    System.out.print("\n");

    }else { //正则表达式判断是否符合条件

    holder.remove(user); //先从原容器中删除user

    user.setPassword(pw); //修改user的属性

    holder.add(user); //然后再向容器中添加

    System.out.print("修改成功!!!");

    System.out.print("\n");

    flag = false;

    break;

    }

    }

    }

    if(flag) {

    System.out.print("没有找到该用户");

    System.out.print("\n");

    }

    }

    //注销方法

    public TreeSet logout(TreeSet list) {

    String username; //用户名

    String password; //密码

    System.out.print("请输入用户账号:");

    username = sc.next(); //从键盘录入用户名

    System.out.print("请输入密码:");

    password = sc.next(); //从键盘录入密码

    Iterator it = list.iterator(); //获取迭代器

    while(it.hasNext()) {

    User user = (User)it.next(); //获取对象

    if(user.getAccount().equals(username)&&user.getPassword().equals(password)){

    list.remove(user); //如果录入的信息匹配则从容器中删除user对象

    System.out.print("注销成功!!");

    System.out.print("\n");

    return list;

    }

    }

    System.out.print("账号或者密码错误"); //不匹配打印提示语句

    System.out.print("\n");

    return list;

    }

    //银行操作界面

    public void BankMenu(User user) {

    bank.welcom(user); //银行调用欢迎语句

    System.out.print("****************************");

    System.out.print("\n");

    System.out.print("\n");

    System.out.print(" 欢迎来到坑多多银行擦操作系统!!!\n");

    System.out.print("\n");

    int str = 1;

    while(str!=0) {

    System.out.print("****************************");

    System.out.print("\n");

    System.out.print(" 1: 取钱 ");

    System.out.print("\n");

    System.out.print(" 2: 存钱 ");

    System.out.print("\n");

    System.out.print(" 3: 查看余额");

    System.out.print("\n");

    System.out.print(" 0: 退出登录");

    System.out.print("\n");

    System.out.print("****************************");

    System.out.print("\n");

    System.out.print("\n");

    System.out.print("请输入您的选项:"); //从键盘中读取字符串

    str = sc.nextInt();

    switch(str){ //根据用户输入的值进行选择

    case 1: //取钱选项

    System.out.print("请输入取款密码:");

    String pw = sc.next(); //从键盘获取输入的密码

    if(user.getPw().equals(pw)) { //将输入的取款密码与用户的密码进行比对:如果相同则继续执行

    System.out.print("请输入取款金额:");

    double money = sc.nextDouble(); //从键盘获取输入的金额

    if(money>=0) { //判断金额是否有误

    bank.drawMoney(user, money, pw); //调用取款方法

    }else {

    System.out.print("输入金额错误!!!");

    System.out.print("\n");

    }

    }else {

    System.out.print("输入密码有误!!!");

    System.out.print("\n");

    }

    break;

    case 2:

    System.out.print("请输入取款金额:");

    System.out.print("\n");

    double money1 = sc.nextDouble(); //从键盘获取输入的金额

    if(money1>=0) { //判断金额是否有误

    bank.saveMoney(user, money1);; //调用存款方法

    }else {

    System.out.print("输入金额错误!!!");

    System.out.print("\n");

    }

    break;

    case 3:

    bank.looksum(user); //调用银行---查询账户操作

    break;

    case 0:

    bank.GoodBye(user); //调用结束语句

    break;

    default:

    System.out.print("输入错误");

    System.out.print("\n");

    }

    }

    }

    }

    User类:

    package First;

    import java.io.Serializable;

    /*

    * 这是一个User类

    * */

    public class User implements Serializable{

    /**

    * 实现接口,用于序列化和反序列化

    */

    private static final long serialVersionUID = 1L;

    private String name; //用户名

    private String account; //银行账号

    private String password; //密码

    private String pw; //取款密码

    private double sum; //账户金额

    private String sexual; //性别

    //获取用户名

    public String getName() {

    return name;

    }

    //写入用户名

    public void setName(String name) {

    this.name = name;

    }

    //获取账号

    public String getAccount() {

    return account;

    }

    //写入账号

    public void setAccount(String account) {

    this.account = account;

    }

    //获取密码

    public String getPassword() {

    return password;

    }

    //修改密码

    public void setPassword(String password) {

    this.password = password;

    }

    //查看余额

    public double getSum() {

    return sum;

    }

    //修改余额

    public void setSum(double sum) {

    this.sum = sum;

    }

    //写入性别

    public String getSexual() {

    return sexual;

    }

    //修改性别

    public void setSexual(String sexual) {

    this.sexual = sexual;

    }

    //获取取款密码

    public String getPw() {

    return pw;

    }

    //写入取款密码

    public void setPw(String pw) {

    this.pw = pw;

    }

    //hashCode比较方法

    @Override

    public int hashCode() {

    final int prime = 31;

    int result = 1;

    result = prime * result + ((account == null) ? 0 : account.hashCode());

    result = prime * result + ((name == null) ? 0 : name.hashCode());

    result = prime * result + ((password == null) ? 0 : password.hashCode());

    result = prime * result + ((pw == null) ? 0 : pw.hashCode());

    result = prime * result + ((sexual == null) ? 0 : sexual.hashCode());

    long temp;

    temp = Double.doubleToLongBits(sum);

    result = prime * result + (int) (temp ^ (temp >>> 32));

    return result;

    }

    //equals比较方法

    /*

    * 知识点:

    * public boolean equals(Object obj)名称不可改变

    * */

    @Override

    public boolean equals(Object obj) {

    if (this == obj)

    return true;

    if (obj == null)

    return false;

    if (getClass() != obj.getClass())

    return false;

    User other = (User) obj;

    if (account == null) {

    if (other.account != null)

    return false;

    } else if (!account.equals(other.account))

    return false;

    if (name == null) {

    if (other.name != null)

    return false;

    } else if (!name.equals(other.name))

    return false;

    if (password == null) {

    if (other.password != null)

    return false;

    } else if (!password.equals(other.password))

    return false;

    if (pw == null) {

    if (other.pw != null)

    return false;

    } else if (!pw.equals(other.pw))

    return false;

    if (sexual == null) {

    if (other.sexual != null)

    return false;

    } else if (!sexual.equals(other.sexual))

    return false;

    if (Double.doubleToLongBits(sum) != Double.doubleToLongBits(other.sum))

    return false;

    return true;

    }

    //初始化用户

    User(String name,String account,String password,String pw,double sum,String sexual){

    this.name = name;

    this.account = account;

    this.password = password;

    this.sum = sum;

    this.sexual = sexual;

    this.pw = pw;

    }

    //空参构造函数

    User(){

    }

    }

    Main()类

    package First;

    public class Test {

    //测试类----唯一的主函数

    public static void main(String[] args) {

    Operate operate = new Operate();

    operate.registerMenu(); //调用登录方法

    }

    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

    时间: 2019-12-23

    更多相关内容
  • Java银行管理系统+MySQL

    2016-08-22 11:08:20
    JAVA+Mysql编写的银行管理系统 包括开户、存取、转账、改密、销户、 通过数据库进行增删改查、本资源仅供参考学习、版权所有、严禁侵权!
  • 这个是用qt做的一个银行管理系统,可以实现职工的注册登录,客户的开户、销户、存款、取款、转账、查看存折以及银行的交易记录等功能。
  • JAVA小项目-银行管理系统(图形界面&&文件读写+源文件)
  • 用QT设计一个银行管理系统 用到QT自带的数据库和Tcp网络协议和文件流等
  • C++银行管理系统源代码

    千次阅读 2020-12-28 10:53:32
    相关文章推荐: 1、C语言学生成绩管理系统源代码★★★★★ 2、C语言学籍管理系统源代码★★ 3、C语言学生成绩管理系统设计...C++银行管理系统源代码: #include<iostream> #include<fstream> #inc...

    相关文章推荐:

    1、 C语言学生成绩管理系统源代码 ★★★★★

    2、 C语言学籍管理系统源代码 ★★

    3、C语言学生成绩管理系统设计 《C语言程序设计》实训报告 ★★★

    4、C语言学生信息管理系统源代码 ★★★★

    每天都会为大家分享之前学习过程中收藏的代码,由于时间有些久了,具体作者是哪位已经记不清,如有不妥请联系删除,在此谢谢原作者的分享,帮到了很多同学。

    扫描上方二维码,回复 999 直接获取作者之前收藏的学习资源,谢谢网友们的分享。

    更多管理系统更新中,请注意关注!

    C++银行管理系统源代码:

    #include<iostream>
    #include<fstream>
    #include<string>
    #include<vector>
    #include<algorithm>
    #include<strstream>
    #include<conio.h>
    using namespace std;
    class Function;
    class User
    {
    public:
        void get(User& );
    	friend class Function;
        ostream &print(ostream &os);
    	//friend ostream & operator<<(ostream & o, const User & u);
        friend istream & operator>>(istream & i, User & u);
    	void PassWord();
    	bool Login(User &);
    	void SaveFile(User &);
        vector<string> StrFunction;
    	User(){}
    	User(int A,string N,int F,string I,string Ad,int T):Accout(A),Name(N),Fmoney(F),ID(I),Address(Ad),Telephone(T){}
    private:
      int Accout;
      string Name;
      int Fmoney;
      string ID;
      string Address;
      int Telephone;
      char  Pword1[9];
      char Pword2[9];
    };
    class Function
    {
    public:
        void Saving(User &);
    	void Drawing(User &);
    	void Balance(User &);
    	void Record(User &);
    private:
    	int  SaveAndDrawMoney;
    };
    void Function::Saving(User &u)
    {
     system("cls");
     cout<<"\n\n\n\t\t*********************************************\n"<<endl;
     cout<<"\t\t请输入存款金额:";
     string str1("\n\t\t现存 RMB  钞 + ");
     cin>>SaveAndDrawMoney;
     u.Fmoney+=SaveAndDrawMoney;
       strstream ss;
       string str2;
    	ss<<u.Accout;
    	ss>>str2;
     	string frist="Record"+str2 +".txt";
     const char *RecordFile=frist.c_str();
     ofstream outfile(RecordFile,ios::out|ios::app);
     outfile<<str1<<SaveAndDrawMoney<<endl;
     outfile.close();
     outfile.clear();
     cout<<"\n\n\t\t操作成功,单击任何键返回主菜单!";
     getch();
    }
    void Function::Drawing(User &u)
    {
      system("cls");
      cout<<"\n\n\n\t\t*********************************************\n"<<endl;
      cout<<"\t\t请输入取款金额:";
      string str1("\n\t\t现取 RMB  钞 - ");
      string str2;
      int k=0;
      while(k<=3)
      {
    	cin>>SaveAndDrawMoney;
    	u.Fmoney -=SaveAndDrawMoney;
       if(u.Fmoney>=0)
      {
    	 system("cls");
    	cout<<"\n\n\n\t\t正在出炒,请稍等!"<<endl;
    	strstream ss;
    	ss<<u.Accout;
    	ss>>str2;
    	string frist="Record"+str2 +".txt";
        const char *RecordFile=frist.c_str();
        ofstream outfile(RecordFile,ios::out|ios::app);
        outfile<<str1<<SaveAndDrawMoney<<endl;
        outfile.close();
        outfile.clear();
    	break;
      }
      else
      {   
    	  k++;
    	  if(k>=3)
          {
    	  system("cls");
          cerr<<"\n\n\n\t\t很抱歉,你重复输入错误多次"<<endl
    		    <<"\n\t\t正在退卡中……"<<endl;
    	  exit(0);
          }
    	  system("cls");
          u.Fmoney +=SaveAndDrawMoney;
    	  cerr<<"\n\n\n\t\t对不起,你输入的金额超出有效金额。"<<endl
    		  <<"\n\t\t       请重新输入:  ";
      }
      }
      cout<<"\n\n\t\t操作成功,单击任何键返回主菜单!";
      getch();
    }
    void Function::Balance(User &u)
    {
      system("cls");
      cout<<"\n\n\n\t\t*********************************************\n"<<endl;
      cout<<"\t\t你当前的余额是:";
      cout<<"\t\t"<<u.Fmoney<<endl;
      cout<<"\n\t\t*********************************************\n"<<endl;
      cout<<"\n\t\t操作成功,单击任何键返回主菜单!";
      getch();
    }
    void Function::Record(User &u)
    {   
    	string str1,str2;
    	system("cls");
    	cout<<"\n\n\n\t\t*********************************************\n"<<endl;
    	cout<<"\t\t摘要 币种 钞汇 存/取款金额"<<endl;
    	strstream ss;
    	ss<<u.Accout;
    	ss>>str2;
    	string frist="Record"+str2 +".txt";
        const char *RecordFile=frist.c_str();
    	ifstream infile(RecordFile,ios::in);	
    	if(!infile)
    	{
    	 cout<<"\n\t\t没有任何历史记录!"<<endl;
    	 getch();
    	 return ;
    	}
    	while(!infile.eof())
    	{
    	  getline (infile,str1);
    	  cout<<"\n\t\t"<<str1<<endl;
    	}
    	cout<<"\n\t\t*********************************************\n"<<endl;
    	cout<<"\n\t\t操作成功,单击任何键返回主菜单!";
    	getch();
    }
    ostream &User::print(ostream &os) //mark
    {
    	system("cls");
     os<<"\n\n\n\t\t*********************************************\n"<<endl;
     os<<"\n\t\t用户卡号: "<<Accout<<endl;
     os<<"\n\t\t姓名:     "<<Name <<endl;
     os<<"\n\t\t账户金额: "<<Fmoney<<endl;
     os<<"\n\t\t身份证号: "<<ID<<endl;
     os<<"\n\t\t地址:     "<<Address <<endl;
     os<<"\n\t\t联系电话: "<<Telephone <<endl;
     os<<"\n\t\t密码:     "<<Pword1<<endl;
     os<<"\n\t\t*********************************************\n"<<endl;
     cout<<"\n\t\t操作成功,单击任何键返回主菜单!";
     getch();
     return os;
    }
    void User::SaveFile(User &u)
    {   
        int filename=u.Accout;
        string frist;
        string last(".txt");
        strstream ss;
        ss<<filename;
        ss>>frist;
    	frist+=last;
        const char *UserID=frist.c_str();
    	ofstream outfile(UserID,ios::out |ios::trunc );
    	//outfile<<(*this);
       outfile<<Accout<<' '<<Name<<' '<<Fmoney<<' '<<ID<<' '<<Address<<' '<<Telephone<<' '<<Pword1<<endl;
       outfile.close();
    }
    bool User::Login(User &u)
    {
        int acc;
        string pwd;
        cout<<"\n\t\t登陆用户:"<<endl;
        cout<<"\t\t卡号:";
        cin>>acc;
        cout<<"\t\t密码:";
        cin>>pwd;
        int filename=acc;
        string frist;
        string last(".txt");
        strstream ss;
        ss<<filename;
        ss>>frist;
    	frist+=last;
        const char *UserID=frist.c_str();
    	ifstream  infile(UserID,ios::in  );
        while (infile >> (*this))
        {
           if (u.Accout  == acc )
            { 
                 string str;
    			 str=Pword1;
    			if(str== pwd)
    			{  
    				return true;	
    			}
            }	
        }
        return false;
    }
    /*ostream & operator<<(ostream & o, const User & u)
    {
        o<<u.Accout <<'  '<<u.Name<<'  '<<u.Fmoney<<'  ' <<u.ID<<'  ' <<u.Address <<'  '<<u.Telephone<<'  ' <<u.Pword1 <<endl;
        return o;
    }*/
    
    istream & operator>>(istream & i, User & u)
    {
        i>>u.Accout >>u.Name >>u.Fmoney >>u.ID >>u.Address >>u.Telephone >>u.Pword1 ;
        return i;
    }
    void User::PassWord() 
    {
       int num=0;
     while(num<3)
     {
      cout<<"\n\t\t请输入8位储蓄密码:";
     for(int i=0;i<8;i++)
     { Pword1[i]=getch();cout<<"*";}
       Pword1[8]='\0';
       cout<<endl;
       cout<<"\n\t\t请再一次确认密码:";
       for(int i=0;i<8;i++)
       { Pword2[i]=getch();cout<<"*";}
       cout<<endl;
       Pword2[8]='\0';
     if(strcmp(Pword1,Pword2)==0)
     {
    	 cout<<"\n\n\t\t密码确认成功,单击任何键进入主菜单";
        getch(); 
    	return ;
     }
     else 
     {   
    	 num++;
    	 cout<<"\n\t\t你输入的密码错误,请重新输入!\n"<<endl; 
     }
     if(num==3)
     {  
    	 system("cls");
    	 cerr<<"\n\n\n\t\t对不起,你三次输入不正确\n"<<endl
    		    <<"\t\t感谢你的使用,再见!    "<<endl;
    	 exit(0);
     }
     }
    }
    void User::get(User& u)
    {
    	system("cls");
       cout<<"\n\n\n\t\t请输入用户信息:\n"<<endl;
       cout<<"\t\t*********************************************\n"<<endl;
       cout<<"\n\t\t卡号:";
       cin>>Accout;
       cout<<"\n\t\t姓名:";
       cin>>Name;
       cout<<"\n\t\t账户金额:";
       cin>>Fmoney;
       cout<<"\n\t\t身份证号:";
       cin>>ID;
       cout<<"\n\t\t地址:";
       cin>>Address;
       cout<<"\n\t\t联系电话:";
       cin>>Telephone;
       u.PassWord();
       cout<<"\n\t\t*********************************************\n"<<endl;
    }
    void Sign()
    {
    	system("cls");
    	cout<<"\n\n\n\n\n\n\t\t\t谢谢您使用银行管理系统 \t \n\n"<<endl;
    	cout<<"\t\t*********************************************\n"<<endl;
    	cout<<"\t\t         姓名:     \n\n"
    		   <<"\t\t         班级: \n\n"
    		   <<"\t\t         学号: \n\n"<<endl;
         cout<<"\n\t\t         已经成功退出"<<endl
                <<"\n\t\t         欢迎你的光临!" <<endl;
    }
    char custom(User &u)
    {
      	char x;
    	int k=0;
    	system("cls");
    cout<<"\n\n\n\t\t※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"
    		<<"\t\t※                                                   ※\n"
    		<<"\t\t※            欢迎使用储蓄管理系统                   ※\n"
    		<<"\t\t※                                                   ※\n"
    		<<"\t\t※            请用户在使用前选择开户:               ※\n"
    		<<"\t\t※                                                   ※\n"
    		<<"\t\t※            请选择:                               ※\n"
    		<<"\t\t※                1:注册开户                        ※\n"
    		<<"\t\t※                2:用户登录                        ※\n"
    		<<"\t\t※                其他:退出                         ※\n"
    		<<"\t\t※                                                   ※\n"
    		<<"\t\t※                                                   ※\n"
    		<<"\t\t※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<endl;
    		 cout<<"\n\t\t请选择操作方式: ";
    	     cin>>x;
    		 if(x=='1')
    		 { u.get(u);}
    		 else if(x=='2')  
    		 {
    			while(k<3)
    	     { 
    		 if(u.Login(u))  //判断登陆是否成功
    		 {  return  0;}
             else
    		{
    		system("cls");
    		cerr<<"\n\n\n\t\t\t输入有误!\n"<<endl
    		      <<"\t\t\t请重新输入: "<<endl;
    		  k++;
    		 }
    		while(k>=3)
    		{
    		 system("cls");
    		  cerr<<"\n\n\n\t\t对不起,你三次输入不正确\n"<<endl
    			 <<"\n\t\t感谢你的使用,再见!\n"<<endl;
    		    exit(0);
    		 } } }
    		 else 
    		 {  Sign(); exit(0); }
    		 return 0;
    }
    char menu()
    {
      int k=0;  
      char a[3],c,i;
    	system("cls");  
    	cout<<"\n\n\n\t\t                主菜单          \n\n" ;
    	cout<<"\t\t*********************************************\n"
    		<<"\t\t*                                           *\n"
    		<<"\t\t*                                           *\n"
    		<<"\t\t*     操作方式:                             *\n"
    		<<"\t\t*                                           *\n"
    		<<"\t\t*             1.存款       2.取款           *\n"
    		<<"\t\t*                                           *\n"
    		<<"\t\t*             3.查询余额   4.查询历史记录   *\n"
    		<<"\t\t*                                           *\n"
    		<<"\t\t*             5.用户信息   6.保存并退出     *\n"
    		<<"\t\t*********************************************\n"<<endl;
    		while(k<3)
    		{
    			cout<<"\n\t\t请选择操作方式:  ";
    		cin>>a;
    		if(strlen(a)==1)
    		{
    			for(i='1';i<='6';i++)
    			{  c=i;
    			if(c==a[0]) return c;
    			}
    		}
    		else
    		{
    			system("cls");
    		cerr<<"\n\n\n\t\t\t输入有误!\n"<<endl
    		      <<"\t\t\t请重新输入: "<<endl;
    		k++;
    		}
    		while(k>=3)
    		{
    			system("cls");
    		  cerr<<"\n\n\n\t\t对不起,你三次输入不正确\n"<<endl
    			 <<"\n\t\t感谢你的使用,再见!\n"<<endl;
    		    exit(0);
    		}
    		}
    		return c;
    	}
    char Choose(  User &u,Function &F)
    {
      char c=menu();
      while(c!='6')
      {
    	  switch(c)
      {
      case '1': F.Saving(u);c=menu();break;
      case '2':F.Drawing(u);c=menu();break;
      case '3':F.Balance(u);c=menu();break;
      case '4':F.Record(u);c=menu();break;
      case '5':u.print(cout);c=menu();break;
      }
      
      }
      u.SaveFile(u);
      Sign();
      return 0;
    }
    int main()
    {
      User u;
      Function F;
      vector<Function> FunctionUser;
      custom(u);
      Choose(u,F);
    }
    

    希望能帮到正在做实训报告、课程设计的你,欢迎留言区讨论。

    分享:C语言学生成绩管理系统设计 《C语言程序设计》实训报告

    扫描下方公众号,发送 成绩系统 4个字,获取下载实训源码

    回复 系统大全,即可获得关于C语言管理系统比较全面的文章内容,覆盖全网(有点夸张,随时更新,没获取到的朋友直接留言告诉一声)

    展开全文
  • C++银行管理系统

    千次阅读 2021-05-29 09:56:42
    C++银行管理系统 本文没有完整代码,想找作业的就别在这浪费时间了 最近实在是闲来无事,想着重新温习一下之前c++的一个大作业:银行管理系统,C++当时学的十分痛苦,毕竟是从面向过程到面向对象转变的过程,十分不...

    C++银行管理系统

    本文没有完整代码,想找作业的就别在这浪费时间了

    最近实在是闲来无事,想着重新温习一下之前c++的一个大作业:银行管理系统,C++当时学的十分痛苦,毕竟是从面向过程到面向对象转变的过程,十分不理解为什么非要封装起来,为什么要写那么多函数来回调用,但是现在明白回来,真正在学习的痛苦的时候,那正是长知识的最快的时候。

    账户内部设置

    将每一个用户账户封装为对象,其中包括账号、密码、余额等,还有获得密码设置密码账户等的方法,后续还可以拓展更多。
    创建对象数组,即预估总共的用户数量,这个有较大的限制,我也想过将用户文件等写入文件,读出文件的方法,也想过使用数据库存储的方法;为了最快写出框架,就简单写了一点。
    希望就当个段子看了吧

    代码

    #include <iostream>
    #include <sstream>
    
    
    using namespace std;
    
    void menu();
    string inchangestr(int x);
    void regisid();
    void regispas();
    void usregister();
    void uslogin();
    int checkid(int x);
    bool checkpass(int x);
    void clean();
    void mainmenu(int id);
    class Bankuser{
    public:
        int  getaccount();
        string  getpassword();
        void setaccount(int x);
        void setpassword(string p);
    
    private:
        int count;
        string pass="";
    
        double balence=0.00;
    
    };
    int  Bankuser::getaccount()
    {
        return count;
    }
    string Bankuser::getpassword()
    {
        return pass;
    }
    void Bankuser::setaccount(int x)
    {
        count=x;
    
    }
    void Bankuser::setpassword(string p)
    {
        pass=p;
    }
    
    //Bankuser bankuser;
    Bankuser bank[100];
    int associat[100][2]={0};
    int num=0,t=0;
    void menu(){
        int f;
        cout<<"******************************************************"<<endl;
        cout<<"                请输入你要进行的操作                      "<<endl;
        cout<<"                 1.注册账户                             "<<endl;
        cout<<"                 2.登录账户                             "<<endl;
        cout<<"******************************************************"<<endl;
        cin>>f;
        if(f==1){
            //system("cls");
            clean();
            usregister();
        }
        else if(f==2){
            uslogin();
            clean();
            //system("cls");
        }
        else{
            cout<<"操作有误,请重新输入"<<endl;
            clean();
            menu();
        }
    }
    void clean(){
        cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;
        //cout<<endl;cout<<endl;//cout<<endl;cout<<endl;cout<<endl;cout<<endl;
        //cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;
    }
    string inchangestr(int x){ //int 型转换为string类型
        stringstream s;
        s<<x;
        string ss;
        s>>ss;
        return ss;
    }
    void regisid(){  //注册存入账户
        int counts;
        cout<<"******************************************************"<<endl;
        cout<<"         请输入你要注册的账号(4位数字):";
        cin>>counts;
        cout<<endl;
        bank[num].setaccount(counts);
        int x=bank[num].getaccount();
        string str=inchangestr(x);
        cout<<"          你的账号是:"+str<<endl;
    }
    void regispas(){  //注册存入密码
        string password1,password2;
        cout<<"          请第一遍输入你的密码:(8位以内数字或字母):";
        cin>>password1;
        cout<<endl;
        cout<<"          请第二遍输入你的密码:";
        cin>>password2;
        cout<<"******************************************************"<<endl;
        cout<<endl;
        if(password1==password2){
            cout<<"注册成功"<<endl;
            cout<<"******************************************************"<<endl;
            bank[num].setpassword(password1);
        }
        else{
            clean();
            cout<<"******************************************************"<<endl;
            cout<<"            两次密码输入不一致,请重新输入"<<endl;
            regispas();
        }
    
    }
    void usregister(){  //实现注册功能
        regisid();
        regispas();
        //string str= inchangestr(bank[num].getaccount());
        //cout<<"注册成功,您的账号是:"+str<<endl;
        associat[num][1]=bank[num].getaccount();
        num++;
        clean();
        uslogin();
    }
    
    void uslogin(){  //实现登录功能
        int id,bankuserid=0;
        string password;
        cout<<"******************************************************"<<endl;
        cout<<"                请输入你的账号和密码                      "<<endl;
        cout<<"                     账号:";
        cin>>id;
        cout<<endl;
        int m=checkid(id);
        if(m==-1){
            cout<<"               查无此账号,请重新输入"<<endl;
            cout<<"******************************************************"<<endl;
            cout<<endl;
            clean();
            uslogin();
        }
        t=0;
        if(checkpass(m)) {
            cout << "******************************************************" << endl;
            clean();
            mainmenu(m);
    
        }
        else{
            cout<<"                  密码错误,请重新输入"<<endl;
            uslogin();
        }
        //cout<<"登录测试成功";
    }
    int checkid(int x){
        int f=0,i;
        for(int i=0;i<100;i++){
            if(x==associat[i][1]){
                f=i;
                return f;
            }
            else{
                return -1;
            }
        }
        return -1;
    }
    bool checkpass(int x){
    
        string password;
        cout<<"                     密码:";
        cin>>password;
        cout<<endl;
        string pass=bank[x].getpassword();
        if(pass==password)
            return true;
        else{
            cout<<"输入错误,请重新输入你的密码"<<endl;
            t++;
            if(t==3){
                cout<<"你已经三次输入密码错误"<<endl;
                clean();
                uslogin();
            }
            else
                checkpass(x);
        }
        return false;
    }
    
    void mainmenu(int id){//传入账号,执行下一步对对象的操作
        int f;
        cout<<"*******************************************************"<<endl;
        cout<<"              请输入你要执行的操作:"<<endl;
        cout<<"                1.存款"<<endl;
        cout<<"                2.取款"<<endl;
        cout<<"                3.查询余额"<<endl;
        cout<<"                4.修改密码"<<endl;
        cout<<"*******************************************************"<<endl;
        cin>>f;
        switch (f) {
            case 1:
                cout<<"测试存款成功"<<endl;
                break;
            case 2:
                cout<<"测试取款成功"<<endl;
                break;
            case 3:
                cout<<"测试查询金额成功"<<endl;
                break;
            case 4:
                cout<<"修改密码测试"<<endl;
                break;
            default:
                clean();
                cout<<"输入操作有误,请重新进行"<<endl;
                mainmenu(id);
                break;
        }
    }
    int main() {
        menu();
        return 0;
    }
    
    

    总结

    说是写代码练手,实际上写银行管理,连存款取款都没得写,哈哈哈哈哈哈,还希望我将来没事还能想到这个东西。写到一半我认为对我的帮助没有很大了,都是些简单的逻辑结构,新学的一点设计模式应用起来还没得头绪,等再写个新的小项目再用设计模式,这就当是对之前C++的纪念了,嘿嘿

    展开全文
  • 里面有一个简单的银行管理系统和一些其他方面的练习代码
  • 简易银行管理系统(C语言)

    千次阅读 多人点赞 2020-11-08 06:12:32
    简易银行管理系统(C语言)

    程序要求

    在这里插入图片描述

    结构图

    在这里插入图片描述

    源码

    由于我平时上课不听讲,数据结构没搞懂,导致代码中文件保存和用户结构部分都是copy站内大佬的代码,在此我表示感谢
    另外,由于我没有定义消费的结构体,导致无法查询消费记录,等我学会这块了会重新完善此系统,也希望有大佬可以教教我咋搞,感谢

    Bank.h

    #ifndef BANK_H_INCLUDED
    #define BANK_H_INCLUDED
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #define upNum 2000 //系统最多容纳的用户数
    
    struct record
    {
        int account; //账号
        int password;  //密码
        char name[10];   //用户名
        double balance;  //账户余额
        int status;  //状态
    };
    
    struct record users[upNum];   //银行所有用户
    
    int N;  //实际的用户数目
    
    void pass();  //用户登录
    
    void adminpass(); //管理员登录
    
    void readData();  //开始前从文件中读数据,存在数组中
    
    void writeData();   //程序结束前,将数组中的数据写入到文件中
    
    int chooseInMenu(); //显示菜单并由业务员选择
    
    void openAccount(); //开户
    
    void save();   //存款
    
    void Menu(); //用户菜单
    
    void withdraw();   //取款
    
    void showAccount(); //查询用户信息
    
    void showAll();  //显示所有用户
    
    void showBalance(); //查询余额
    
    void findData();  //查询消费记录(没做出来)
    
    void freeze();  //冻结
    
    void cancelfreeze();  //解除冻结
    
    int inputPassword();   //返回键盘输入的密码
    
    int search(int);  //根据账号找到用户数据对应的下标
    
    int welcomeMenu();//登录界面
    
    int ichooseInMenu();//用户菜单
    
    int adminchooseMenu();//管理员菜单
    
    void adminMenu();//管理员菜单
    
    
    void welcome();//欢迎界面功能
    #endif // BANK_H_INCLUDED
    
    

    此处为头文件,所有函数,变量的定义都放在这里,每行后都有注释,我就不多说了

    interface.c

    #include "Bank.h"
    
    
    /*登录界面*/
    int welcomeMenu()
    {
        int i;
        while(1)
        {
        printf("+------------------------------+\n");
        printf("+                              +\n");
        printf("+     欢迎使用银行管理系统     +\n");
        printf("+                              +\n");
        printf("+  1 开户  2 登录  3 管理员登录+\n");
        printf("+          0 退出系统          +\n");
        printf("+------------------------------+\n");
        printf("请选择: ");
        fflush(stdin);
        scanf("%d",&i);
        if(i>=0 &&i<=3)
                break;
            else
                printf("输入有误,请重新选择\n\n");
        }
        return i;
    }
    
    /*用户菜单*/
    int ichooseInMenu()
    {
        int i;
        while(1)
        {
            printf("\n");
            printf("+--------------+\n");
            printf("|  1 查询余额  |\n");
            printf("|  2 记录查询  |\n");
            printf("|  3 存钱      |\n");
            printf("|  4 取钱      |\n");
            printf("|  0 退出      |\n");
            printf("+--------------+\n");
            printf("请输入您的选择: ");
            scanf("%d",&i);
            if(i>=0 &&i<=4)
                break;
            else
                printf("输入有误,请重新选择\n\n");
        }
        return i;
    }
    
    /*管理员菜单*/
    int adminchooseMenu()
    {
        int i;
        while(1)
        {
            printf("\n");
            printf("+-------------------+\n");
            printf("|   1 查询余额      |\n");
            printf("|   2 记录查询      |\n");
            printf("|   3 存钱          |\n");
            printf("|   4 取钱          |\n");
            printf("|   5 查看所有账户  |\n");
            printf("|   6 查询账户信息  |\n");
            printf("|   7 冻结账户      |\n");
            printf("|   8 解冻账户      |\n");
            printf("|   0 退出          |\n");
            printf("+-------------------+\n");
            printf("请输入您的选择: ");
            scanf("%d",&i);
            if(i>=0 &&i<=8)
                break;
            else
                printf("输入有误,请重新选择!\n\n");
        }
        return i;
    }
    
    

    这里是所有用户界面,有注释,也没啥说的

    function.c

    #include "bank.h"
    
    
    /*欢迎界面功能*/
    void welcome()
    {
        int Choice;/*用户选择功能*/
        do
        {
            Choice=welcomeMenu();
            switch(Choice)
            {
            case 1:
                openAccount();/*开户*/
                break;
            case 2:
                pass();/*用户登录*/
                break;
            case 3:
                adminpass();/*管理员登录*/
                break;
            case 0:
                printf("欢迎您再来. \n");
            }
        }
        while(Choice);
    }
    
    
    
    
    /*开户*/
    void openAccount()
    {
        if(N==upNum)
        {
            printf("银行用户数已经达到上限,不能再开户");
            return;
        }
        //下面正常办理开户业务
        printf("正在开户\n");
        users[N].account=10001+N;
        printf("账号:%d", users[N].account);
        printf("户主姓名:");
        scanf("%s", users[N].name);
        int iPass1, iPass2;
        printf("密码:");
        iPass1=inputPassword();  //输入密码1
        printf("确认密码:");
        iPass2=inputPassword();  //输入密码2
        if(iPass1==iPass2)
        {
            users[N].password=iPass1;
            users[N].status=0; //账户状态为“正常”
            printf("存入金额:");
            scanf("%lf", &users[N].balance);
            N++; //正式用户数增加1,确认了新用户已经加入
            printf("成功开户!\n");
        }
        else
        {
            printf("两次密码不一致,未成功开户!\n"); //没有N++,则读入的值无效
        }
    }
    
    
    
    /*用户登录*/
    void pass()
    {
        int id;   //用于输入的账号
        int who;  //查找到该账号在数组中对应的下标
        int sPass;  //业务员登录时输入的密码
        int right = 0;  //要返回的结果:0-不正确 1-正确
    
        printf("请输入账号:");
        scanf("%d", &id);
        who = search(id);  //根据账号查询用户,返回用户的下标
        if(who<0)   //说明id账户不存在
        {
            printf("该用户不存在,登录失败!\n");
        }
        else
        {
            printf("请输入密码:");
            sPass=inputPassword();
            if(sPass==users[who].password)
            {
                right = 1;
            }
            else
                {
                    printf("对不起,密码错误\n");
                }
        if (right==1)
            Menu();
        else
            return;
        }
    }
    
    /*管理员登录*/
    void adminpass()
    {
        char userName[7];
        char userPWD[7];
        int i;
    
        for(i=0; i<3; i++)
        {
            printf("\n");
            printf("请输入用户名:");
            scanf("%s", userName);
            fflush(stdin);
    
            printf("\n请输入您的密码:");
            scanf("%s", userPWD);
            fflush(stdin);
    
    
            if ((strcmp(userName,"admin")==0) && (strcmp(userPWD,"admin")==0))
            {
                //用户名和密码正确,显示管理员菜单
                adminMenu();
                return;
            }
            else
            {
                if (i < 2)
                {
                    //用户名或密码错误,提示用户重新输入
                    printf("用户名或密码错误,请重新输入!\n");
                }
                else
                {
                    //连续3次输错用户名或密码,退出系统。
                    printf("用户名或密码错误,退出系统!\n");
                }
            }
        }
    }
    
    
    /*用户菜单*/
    void Menu()
    {
        int iChoice;/*用户选择功能*/
        do
        {
            iChoice=ichooseInMenu();
            switch(iChoice)
            {
            case 1:
                showBalance();/*查询余额*/
                break;
            case 2:
                findData();/*查询记录,还没做好*/
                break;
            case 3:
                save();/*存钱*/
                break;
            case 4:
                withdraw();/*取钱*/
                break;
            case 0:
                printf("欢迎您再来. \n");
                break;
            }
        }
        while(iChoice);
    }
    
    /*管理员菜单*/
    void adminMenu()
    {
        int Choice;/*用户选择功能*/
        do
        {
            Choice=adminchooseMenu();
            switch(Choice)
            {
            case 1:
                showBalance();//查询余额
                break;
            case 2:
                findData();//查询记录,还没做好
                break;
            case 3:
                save();//存钱
                break;
            case 4:
                withdraw();//取钱
                break;
            case 5:
                showAll();//查询所有账户
                break;
            case 6:
                showAccount();//查询账户信息
                break;
            case 7:
                freeze();//冻结
                break;
            case 8:
                cancelfreeze();//解冻
                break;
            case 0:
                printf("欢迎您再来. \n");
            }
        }
        while(Choice);
    }
    
    
    /*存款*/
    void save()
    {
        int id, who;
        double money;
        printf("输入要存款的账号:");
        scanf("%d", &id);
        who = search(id);  //根据账号查询用户,返回用户的下标
        if(who<0)   //说明id账户不存在
        {
            printf("该用户不存在,存款失败!\n");
        }
        else
        {
            if(users[who].status==0)
            {
                printf("用户姓名:%s\n", users[who].name);
                printf("输入存款额:");
                scanf("%lf", &money);
                users[who].balance+=money;
                printf("存款后,您有%.2f元. \n",users[who].balance);
            }
            else if(users[who].status==1)
            {
                printf("该用户处于冻结状态,存款失败!\n");
            }
        }
        return;
    }
    
    
    
    
    /*取款*/
    void withdraw()
    {
        int id, who;
        int iPass;
        double money;
        printf("输入要取款的账号:");
        scanf("%d", &id);
        who = search(id);  //根据账号查询用户,返回用户的下标
        if(who<0)   //说明id账户不存在
        {
            printf("该用户不存在,取款失败!\n");
        }
        else
        {
            if(users[who].status==0)
            {
                printf("用户姓名:%s\n", users[who].name);
                printf("密码:");
                iPass=inputPassword();
                if(iPass!=users[who].password)
                {
                    printf("输入密码错误,取款失败!\n");
                }
                else
                {
                    printf("输入取款额:");
                    scanf("%lf", &money);
                    if(money>users[who].balance)  //亲,不玩透支
                    {
                        printf("余额不足,取款失败!\n");
                    }
                    else
                    {
                        users[who].balance-=money;
                        printf("取款后,还有%.2f元. \n",users[who].balance);
                    }
                }
            }
            else if(users[who].status==1)
            {
                printf("该用户处于冻结状态,取款失败!\n");
            }
        }
        return;
    }
    
    /*余额查询*/
    void showBalance()
    {
        int id, who;
        printf("账号:");
        scanf("%d", &id);
        who = search(id);  //根据账号查询用户,返回用户的下标
        if(who<0)   //说明id账户不存在
        {
            printf("该用户不存在!\n");
        }
        else
        {
            printf("用户姓名:%s\n", users[who].name);
            {
                printf("余额:%.2f元. \n",users[who].balance);
            }
        }
        return;
    }
    
    
    /*查询账户*/
    void showAccount()
    {
        int id, who;
        printf("账号:");
        scanf("%d", &id);
        who = search(id);  //根据账号查询用户,返回用户的下标
        if(who<0)   //说明id账户不存在
        {
            printf("该用户不存在!\n");
        }
        else
        {
            printf("户主姓名:%s\n", users[who].name);
            {
                printf("余额:%.2f元. \n",users[who].balance);
                printf("状态:");
                if(users[who].status==0)
                {
                    printf("正常\n");
                }
                else if(users[who].status==1)
                {
                    printf("冻结\n");
                }
            }
        }
        return;
    }
    
    
    
    
    /*查询记录还没做好*/
    void findData()
    {
        return ;
    }
    
    
    /*显示所有账户*/
    void showAll()
    {
        int i;
        printf("账号 用户名 密码\n");
        for(i=0;i<=N;i++)
        {
            printf("%d %s %d",users[i].account, users[i].name, users[i].password);
        }
    }
    
    
    /*冻结账户*/
    void freeze()
    {
        int id, who;
        printf("账号:");
        scanf("%d", &id);
        who = search(id);  //根据账号查询用户,返回用户的下标
        if(who<0)   //说明id账户不存在
        {
            printf("该用户不存在,无法冻结!\n");
        }
        else
        {
            printf("户主姓名:%s\n", users[who].name);
    
    
                if(users[who].status==0)
                {
                    users[who].status=1;
                    printf("挂失成功\n");
                }
                else if(users[who].status==1)
                {
                    printf("该账户已经处于冻结状态\n");
                }
        }
        return;
    }
    
    
    
    
    /*解除冻结*/
    void cancelfreeze()
    {
        int id, who;
        printf("账号:");
        scanf("%d", &id);
        who = search(id);  //根据账号查询用户,返回用户的下标
        if(who<0)   //说明id账户不存在
        {
            printf("该用户不存在,解除冻结失败!\n");
        }
        else
        {
            printf("户主姓名:%s\n", users[who].name);
                if(users[who].status==0)
                {
                    printf("该账户处于正常状态,不需要解除冻结\n");
                }
                else if(users[who].status==1)
                {
                    users[who].status=0;
                    printf("解除冻结成功\n");
                }
    
        }
        return;
    }
    
    
    
    /*根据账号查询用户,返回用户的下标*/
    int search(int id)
    {
        int index=-1;
        int low=0, high=N-1, mid;
        while(low<=high)
        {
            mid = (low+high)/2;
            if(users[mid].account==id)
            {
                index=mid;
                break;   //找到了,立即退出循环
            }
            else if (users[mid].account>id)
                high=mid-1;
            else
                low=mid+1;
        }
        return index; //若找到,其值在0~N-1间,否则,保持-1
    }
    
    
    
    /*读取文件内容*/
    void readData()
    {
        FILE *fp;  //用于文件操作
        int i = 0;
        //从文件中取出余额
        if ((fp=fopen("account.txt", "a+"))==NULL)
        {
            printf("data file cannot open!");
            exit(0);
        }
        while(fscanf(fp,"%d %s %d %lf %d",&users[i].account, users[i].name, &users[i].password, &users[i].balance,&users[i].status ) != EOF)
        {
            i++;
        }
        N = i; //用全局变量存储用户的总人数
        fclose(fp);
        return;
    }
    
    
    /*将数据保存到文件中*/
    void writeData()
    {
        FILE *fp;  //用于文件操作
        int i=0;
        //保存余额
        if ((fp=fopen("account.txt", "w"))==NULL)
        {
            printf("data file cannot open!");
            exit(0);
        }
        for(i=0; i<N; i++)
            fprintf(fp,"%d %s %d %f %d\n",users[i].account, users[i].name, users[i].password, users[i].balance,users[i].status);
        fclose(fp);
    }
    
    
    
    /*规范密码并将输入密码变成星号*/
    int inputPassword()
    {
        char ch;  //接收字符形式密码
        int iPass=0;   //要转换为数字
        int i;
        while(1)
        {
            for(i=0; i<6; i++)
            {
                ch=getch();  //输入但不显示
                putchar('*');   //输出*
                if(isdigit(ch))
                    iPass=iPass*10+(ch-'0');
                else
                {
                    iPass=0;
                    break;  //退出for循环后,再次接受
                }
            }
            fflush(stdin); //清除键盘缓存区中已经有的输入
            printf("\n");
            if(iPass==0)  //此条件成立可能由两种情况引起:输入了非数字字符被直接重置为0,或6位全0后正常退出for循环
            {
                printf("密码要求全为数字,且不全为0!\n");
                printf("请重新输入密码: ");
            }
            else
                break;
        }
        return iPass;
    }
    
    

    所有函数都在这里,每个都有功能注释
    管理员的账号密码都是:admin
    也没啥需要特殊说明的。

    最后是

    main.c

    #include "bank.h"
    /*主函数:*/
    int main()
    {
        system("title 银行管理系统");
        readData();
        welcome();
        writeData();
    
        return 0;
    }
    

    就是读取文件里的数据,进入程序,然后运算一番,最后把数据再写回去,这里我想说的是一开始文件的打开方式给我造成了很多麻烦,有时写不进去,有时读不出来,还有无法创建和每次都要重新注册的情况,我一直不知道哪出了问题,最后发现是文件打开方式的原因。
    附上百度来的各种打开方式用法

    r 以只读方式打开文件,该文件必须存在。
    r+ 以可读写方式打开文件,该文件必须存在。
    rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
    w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
    w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
    a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
    a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
    wb 只写打开或新建一个二进制文件;只允许写数据。
    wb+ 读写打开或建立一个二进制文件,允许读和写。
    ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
    wx 创建文本文件,只允许写入数据.[C11]
    wbx 创建一个二进制文件,只允许写入数据.[C11]
    w+x 创建一个文本文件,允许读写.[C11]
    wb+x 创建一个二进制文件,允许读写.[C11]
    w+bx 和"wb+x"相同[C11]

    我最后用了a+读取文件,w 修改文件,这样第一次开户时就可以自动创建文件,不需要手动操作,在最后将数据写入文件时先将文件中的旧数据进行清理,再将新的数据存放进到文件中。

    放几张图吧
    在这里插入图片描述
    在这里插入图片描述

    总结

    一开始我真没想到会把问题搞得这么复杂,以为挺简单的小程序搞到最后一天早上6点才草草收尾,我的c语言基础太薄弱了,

    一直以来也眼高手低,只想着把学校里的东西学会就行(也没学多少),自己上手试一试才知道里面蕴含的各种知识是学校里根本没有教过的,

    不论结果如何,我从这次入门测试中收获了许多,也找到了前进的方向,希望我下次回来重新编写这个程序的时候,能无情的嘲笑现在的自己代码写的有多么烂

    不多说了,好困,睡觉去了,各位早安

    展开全文
  • MFC 银行管理系统 C++开发,在vs2012上面完美运行,功能有登录,开户,查询,取款,存款,销户。。。。。 可以作为C++课程的大作业,放出来供大家参考。
  • C语言实现银行管理系统

    万次阅读 多人点赞 2020-06-15 15:35:41
    C语言编写的银行管理系统关键代码 #include <stdio.h> #include <conio.h> #include <windows.h> #include <time.h> #include <string.h> #include <stdlib.h> struct bank{ ...
  • 本文为大家分享了python银行管理系统的具体代码,供大家参考,具体内容如下自己写的练手小程序,练习面向对象的概念,代码中都有注释,刚学的同学也可以很容易看懂(需要自己用pickle模块新建一个database.txt文件,...
  • 简单银行管理系统C#版本

    千次阅读 2020-06-03 22:54:53
    1.使用Asp.NET技术,完成银行管理系统 2.开发工具:VS2010 3.数据库:SQL Server 2008 功能模块:登录、开户、存款、取款、转账、挂失等功能 代码托管:https://github.com/956159241/SimpleBankManage 运行界面: 1...
  • python银行管理系统

    千次阅读 多人点赞 2021-04-18 23:08:56
    阶段案例-银行管理系统 P118 分析部分 代码部分 import random class bankUser: # 卡号,用户姓名,身份证号,手机,预存,密码 Count_id = "" Count_Name = "" Count_IDCard = "" Count_phone = "" ...
  • JavaEE + Oracle + Spring Boot + Mybatis + Maven 开发的简易版银行管理系统,本文主要介绍了一个用 JavaEE + Oracle 开发的简易版银行信息管理系统,具备用户管理、银行卡管理、存取款管理、贷款管理、业务提醒、...
  • 1.使用Asp.NET技术,完成银行管理系统 2.开发工具:VS2010 3.数据库:SQL Server 2008 功能模块:登录、开户、存款、取款、转账、挂失等功能 运行界面: ####1.登录界面(Login.aspx),在后台提供筛选,如果是管理...
  • java银行管理系统(实训项目)

    热门讨论 2011-05-18 22:00:48
    大学实训项目,用java实现银行管理系统简单的开户、挂失、存、取、贷款、转账等一系列操作(数据库是mysql,加载一下驱动就可以运行了)
  • 银行管理系统(简单概述)

    千次阅读 2020-11-27 14:06:20
    银行管理系统(简单概述) 1,创建项目: 创建Java名为BankSystem的项目 项目下创建包com.shanxiguofang.ban 2,创建类: 3、使用步骤 Bank类代码如下(示例): private String name;//银行名 private String ...
  • 基于SSH的银行管理系统,运用了Struts2+Hibernate4+Spring3技术,运行工具MyEclipse+mysql.
  • 简单的纯java银行管理系统

    万次阅读 多人点赞 2018-03-18 09:37:46
    本人写下这篇文章时也是初学者,初入贵圈,...这个银行管理系统是在我刚学完面向对象的时候写的,具体功能如下: 1、开户 2、登录 3、取款 4、存款 5、查询余额 6、修改密码 7、转账 8、注销 9、销户 0、退出 /...
  • 用java实现简单的银行管理系统

    万次阅读 多人点赞 2021-01-03 17:27:39
    用java实现简单的银行管理系统页面代码之一:mvc设计模式,分包分包图片简单效果演示:登陆主页面注册页面登录:功能页面!存款转账查看近期流水账单! 页面代码之一: package org.vector.view; import java.awt....
  • JAVA简单的银行管理系统

    万次阅读 多人点赞 2018-07-16 19:50:21
    public Bank() { } // 主界面 public void mainView() { System.out.println("******欢迎登入银行管理系统********"); System.out.println("******请选择业务***************"); System.out.println("******1、创建...
  • C++银行管理系统设计分析及程序设计介绍

    千次阅读 多人点赞 2020-07-20 23:56:48
    银行管理系统设计分析及程序设计介绍 信息 时间:2020年7月12日 语言:C++ mysql 项目开发环境: (1操作系统:windows10 64位 (2编译环境:vs2015社区版 (3数据库: MySQL 8.0.19 设计分析介绍 一.管理员模式 ...
  • c语言写的银行管理系统 c语言写的银行管理系统 c语言写的银行管理系统 c语言写的银行管理系统
  • 前端HTML银行管理系统界面部分实现

    千次阅读 2020-09-21 18:45:08
    前端HTML银行管理系统界面部分实现 第一种出现形式 完整代码 第二种出现形式 完整代码 第一种出现形式 这个主要是通过定义高度 首先在ul块区域把高度设置为0 .parent ul{ /* 初始定义高度为0,这样ul面板就不显示 */...
  • 基于jsp+servlet实现的银行管理系统

    千次阅读 2019-07-08 11:22:02
    jsp+Servlet图书管理系统第一版的第一次更新:免费源码下载,停更,自行下载即可,谢谢:http://download.csdn.net/detail/biexiansheng/9877270 jsp+Servlet图书管理系统第一版的第二次更新:免费源码下载,停更...
  • Python——银行管理系统

    万次阅读 多人点赞 2020-04-10 18:47:11
    银行代码源码解析管理员类Admin()Admin代码ATM()类ATM代码人类person()类person代码银行卡类card()card代码main()主函数银行自动提款代码主函数main()代码银行提款机演示 目录上面 先需要分析,有那些类,类有什么...
  • 银行管理系统(一看就懂)

    千次阅读 2020-12-04 10:44:30
    一、招商管理系统项目介绍说明 (1)系统欢迎界面展示。 (2)管理员登陆界面展示。 (3)用户登陆界面展示。 (4)项目结构图。 用户信息至少要包括四项,用户名,账号,密码,账户余额,联系方式。 二,项目...
  • 大一mfc课程设计 银行管理系统

    热门讨论 2009-03-15 19:24:38
    大一短学期c++课程设计 和另外一个同学一起做的银行管理系统

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 169,320
精华内容 67,728
关键字:

银行管理系统

友情链接: 860311.rar