课程设计-李勋

来源:互联网 发布:linux打包命令 tar 编辑:程序博客网 时间:2024/05/21 21:39

 

 

 

 

 

《数据结构课程设计》

 

 

 

 

 

 

课程题目

  银行活期储蓄管理系统

课程编号

              j1620102

学生姓名

              李勋

学生学号

201311671111

所在班级

            信管1131

任课老师

易学明

实习时间

   2015年1月10日

设计成绩

 

老师评语

 

 

 

 

 

 

 

目 录:

1、问题描述······················································································3

2、问题分析····················································································3

3、程序总体分析············································································3

4、逻辑结构和存储结构设计························································4

5、算法设计····················································································4

6、时间复杂度和空间复杂度分析···············································4

7、程序运行演示·············································································5

8、心得体会·····················································································8

9、附录:源程序清单····································································8

 


 

1、问题描述:

小明是一个计算机专业top student,祝贺他毕业了。

并准备到银行参加工作。上班第一天,经理叫他编制一个实现一个活期储蓄处理程序,算作考查。

上班第一天, 一定要给领导一个好印象,小明二话没说,就答应了。现要你是小明了,

请完成如下题目功能。储户开户、销户、存入、支出活动频繁,系统设计要求:

(1)能比较迅速地找到储户的帐户,以实现存款、取款记账;

(2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。

2、问题分析:

根据该问题的描述,要求的是设计一个银行账户管理系统,需要对银行账户进行开户销户、通过一定条件快速搜索账户,然后进行存取款的操作。由于账户操作活动较为频繁,要迅速的进行插入和删除操作,故不能使用顺序表来存储,虽然使用顺序表搜索速度较链表快,但是顺序表在插入删除时必须移动大量的数据元素,且账户的数量难以确定,容易造成账户数据的存储问题。故采取单链表的方式进行存储。

3、程序总体分析:

这个程序主要包括了开户、销户、存取款、修改账户密码、检索账户信息等功能。

1)       开户功能:

该操作需要用户输入开户信息,例如姓名、账号号码、身份证号、联系电话和开户时所存入的金额。

2)       销户功能:

该操作就是用户进行删除账号及其信息。

3)       存取款功能:

该操作需要用户通过姓名来检索账户号码,然后进行存取款项,使得账户的余额有相应的变化。

4)       修改账户密码功能:

该操作需要用户通过姓名检索账户的信息,显示账户号码,输入旧密码,之后两次输入一致的新密码来实现修改密码。

5)       检索账户信息功能:


该操作通过姓名来搜索相关账户的姓名、账户号码、身份证号、电话号码、当前的账户余额等信息。

4、逻辑结构和存储结构设计:

该程序因为是对账户的存储及其操作,所以使用线性表的逻辑结构。存储结构使用的是链接存储结构即单链表的方式存储,以方便账户信息的存取操作。

5、算法设计:

在主程序运行时,先用无参构造函数Bank()来创建一个头结点first。开户函数insert()主要是在表尾进行插入账户信息的,销户函数del(),存款函数save(),取款函数withdraw(),修改密码函数modify()主要的是依赖搜索函数search()通过姓名搜索到账户所在位置,在利用所得位置完成后续的操作。

6、时间复杂度和空间复杂度分析:

由于程序中所有的操作都从头指针first开始进行逐个结点的搜索,所以所有函数的时间复杂度皆为T(n)=O(n).

该程序除了函数算法、存储的数据之外,临时开辟的存储空间都最多只是一个临时结点及即将要录入的数据,故空间复杂度为S(n)=O(1).

 

7、程序运行演示:

1、
主菜单:

 

2、
开户功能

 

3、
销户功能:

 

 

4、
存款功能:

 

 

5、
取款功能:

 

 

 

6、
修改密码:

 

 

7、
搜索账户信息:

 

 

 

8、心得体会:

其实这次的数据结构课程设计较之前的c++课程设计有一定的难度,因为需要使用数据结构的知识来实现功能和解决问题。由于参考了相关的书籍及资料,编写程序的时间使用得较少,多数时间都用于程序的调试及bug的修正,最后在同学的协助下成功完成了编程,并改正了大部分的错误。不足之处是有一些功能没有实现,例如利用文件流读写账户资料、设定存款利率及为账户计算利息,相比银行的管理系统还有很多的缺失。我会从这次的课程设计中汲取经验,在以后的程序设计编程中做得更好,编写出更加完善的程序。

 

 

 

 

 

9、附录:源程序清单:

头文件Bank.h:

#ifndef bank_H

#define bank_H

#include<string.h>

#include<iostream>

using namespace std;

struct Account

{

       stringname;     //账户所有人姓名

       stringid;      //身份证号

       stringnumber;   //账号

       stringphone;   //联系方式

       unsignedint password; //账户密码

       doublebalance;  //账户余额

       Account*next;

};

class Bank

{

public:

       Bank();

       ~Bank(){};

       voidinsert();

       intlength();  //求长度

       voiddel(int i);  //销户

   int search(string S);    //寻找

       voidsave(int j);  //存款

       voidwithdraw(int k); //取款

       voidmodify(int i); //修改密码

       voidshow(int i);//显示单个账户的信息

private:

Account *first;

};

#endif

 

函数定义文件function.cpp:

#define _CRT_SECURE_NO_WARNINGS

#include"bank.h"

#include<iostream>

#include<iomanip>

#include<string>

using namespace std;

Bank::Bank()

{

       first= new Account;

       first->next=nullptr;

}

 

void Bank::insert()

{

       Account*p = new Account;

       p= first;

       while(p->next != nullptr)

       {

              p= p->next;

       }

              Account*s = new Account;

              cout<< "输入信息:" << endl;

              cout<< "姓名:" << ends;

              cin>> s->name;

              cout<< "\n身份证号码:" << ends;

              cin>> s->id;

              cout<< "\n联系电话:" << ends;

              cin>> s->phone;

              cout<< "\n账户号码:" << ends;

              cin>> s->number;

              cout<< "\n密码:" << ends;

              cin>> s->password;

              cout<< "\n存入金额:" << ends;

              cin>> s->balance;

              s->next= p->next;

              p->next= s;

}

 

void Bank::del(int i)

{

       Account*p = first;

       intcount = 0;

       while(p != nullptr&& count < i - 1)

       {

              p= p->next;

              count++;

       }

       if(p == nullptr || p->next == nullptr) throw "位置有误";

       else

       {

              Account*q=new Account;

              q= p->next;

              p->next= q->next;

              deleteq;

       }

}

 

void Bank::save(int j)

{

       Account*p = first;

       intcount=0;

       while(p != nullptr&& count <= j - 1)

       {

              p= p->next;

              count++;

       }

       cout<< "姓名是: "<<p->name<<endl;

       cout<< "账号是: " << p->number <<endl;

       doublemoney;

       cout<< "请输入要存入的金额: ";

       cin>> money;

       p->balance= p->balance + money;

}//存款

 

void Bank::withdraw(int k)

{

       Account*p = first;

       intcount = 0;

       while(p != nullptr&& count <= k - 1)

       {

              p= p->next;

              count++;

       }

       cout<< "姓名是:" << p->name << endl;

       cout<< "账号是:" << p->number <<endl;

       unsignedint password;

       cout<< "输入账户密码:";

       cin>> password;

       cout<< endl;

       if(p->password==password)

       {

       doublemoney;

       cout<< "请输入要取出的金额:";

       cin>> money;

       p->balance= p->balance - money;

       }

       elsecout << "密码有误!";

}//取款

 

void Bank::modify(int i)

{

       Account*p = first;

       intcount = 0;

       while(p != nullptr&& count <= i - 1)

       {

              p= p->next;

              count++;

       }

       cout<< "姓名是: " << p->name << endl;

       cout<< "账号是: " << p->number << endl;

       unsignedint password;

       cout<< "输入账户密码:";

       cin>> password;

       cout<< endl;

       if(p->password == password)

       {

              unsignedint temp, temp_0;

              cout<< "请输入新密码:";

              cin>> temp;

              cout<< "请再输入一次以确认:";

              cin>> temp_0;

              if(temp != temp_0)

              {

                     cout<< "两次密码输入不一致!"<<endl;

                     system("pause");

              }

              else

              {

                     p->password= temp;

              }

       }

       else

       {

              cout<< "您输入的密码不正确!"<<endl;

              system("pause");

              return;

       }

}

 

int Bank::search(string S)

{

       Account*p;

       p= first->next;

       intcount = 1;

       while(p != nullptr)

       {

              if(S==p->name)

                     returncount;

              p= p->next;

              count++;

       }

       return0;

}  //通过名字搜索

 

{

       Account*p = first->next;

       while(p == nullptr)

       {

              cout<< "未输入任何账号信息!"<<endl;

              system("pause");return;

       }

       cout<< "姓名" << setw(12) << "账号" << "           " << "余额" << endl;

       while(p != nullptr)

       {

              cout<< p->name << setw(15) << p->number <<"      " << p->balance<< endl;

              p = p->next;

       }

       system("pause");

} */

void Bank::show(int i)

{

       Account*p = first;

       intcount = 0;

       while(p != nullptr&& count <= i - 1)

       {

              p= p->next;

              count++;

       }

              cout<< "该账户的信息如下:" << endl;

              cout<< "姓名: " << p->name << endl;

              cout<< "账号: " << p->number << endl;

              cout<< "身份证号码: " << p->id << endl;

              cout<< "联系电话: " << p->phone << endl;

              cout<< "账户余额: " << p->balance << endl;

              system("pause");

      

}

 

主函数bank_main.cpp:

#include<iostream>

#include"bank.h"

#include<iomanip>

#include<cstdlib>

#include<string>

using namespace std;

void menu();

int main()

{

       system("colorF0");

       BankA;

       shortchoose;

       while(1)

       {

              menu();

              cout<< "   请输入功能代码:";

              cin>> choose;

              switch(choose)

              {

              case0:

                     charh;

                     cout<< "是否退出系统(Y/N):";

                     cin>> h;

                     if(h == 'Y' || h == 'y')

                     {

                            cout<< "正在退出系统,再见!" << endl;

                            system("pause");

                            return0;

                     }

                     else

                            cout<< "取消退出指令。";

                      break;

              case1:

                     A.insert();

                      break;

              case2:

              {

                     inta;

                     stringS;

                     cout<< "输入姓名:" << ends;

                     cin>> S;

                     a= A.search(S);

                     if(a == 0)

                     {

                            cout<< "你输入的姓名有误!!";

                            system("pause");

                            break;

                     }

                     else

                     {

                            cout<< "已找到:" << endl;

                            A.show(a);

                            cout<< "请确认是否删除?(Y/N):";

                            charchoose_1;

                            cin>> choose_1;

                            if(choose_1 == 'Y' || choose_1 == 'y')

                            {

                                   A.del(a);

                                   break;

                            }

                            else

                            {

                                   break;

                            }

                     }

              }

              case3:

              {

                     cout<< "输入姓名:";

                     stringS1;

                     cin>> S1;

                     intj;

                     j= A.search(S1);

                     if(j == 0)

                     {

                            cout<< "你输入的姓名有误!!";

                            system("pause");

                            break;

                     }

                     else

                     {

                            A.save(j);

                            break;

                     }

              }

              case4:

              {

                     cout<< "输入姓名:";

                     stringS2;

                     cin>> S2;

                     intk;

                     k= A.search(S2);

                     if(k == 0)

                     {

                            cout<< "你输入的姓名有误!!";

                            system("pause");

                            break;

                     }

                     else

                     {

                            A.withdraw(k);

                            break;

                     }

              }

              case5:

              {

                     cout<< "输入姓名:";

                     stringS3;

                     cin>> S3;

                     inti;

                     i= A.search(S3);

                     if(i == 0)

                     {

                            cout<< "你输入的姓名有误!!";

                            system("pause");

                            break;

                     }

                     else

                     {

                            A.modify(i);

                            break;

                     }

              }

              case6:

              {

                     cout<< "输入要搜索的姓名:";

                     stringS4;

                     cin>> S4;

                     inti;

                     i= A.search(S4);

                     if(i == 0)

                     {

                            cout<< "你输入的姓名有误!!"<<endl;

                            system("pause");

                            break;

                     }

                     else

                     {

                            A.show(i);

                            break;

                     }

              }

              default:

                     cout<< "输入有误,请重新输入!"<< endl; break;

              }

       }

       return0;

}

void menu()

{

       system("cls");

       cout<<"\t****************"<< "银行活期储蓄管理系统"<<"*****************" <<endl;

       cout<< "\t-------------------- 【1】.开户 ---------------------" << endl;

       cout<< "\t-------------------- 【2】.销户 ---------------------" << endl;

       cout<< "\t-------------------- 【3】.存款 ---------------------" << endl;

       cout<< "\t-------------------- 【4】.取款 ---------------------" << endl;

       cout<< "\t-------------------- 【5】.修改账户密码 -------------" << endl;

       cout<< "\t-------------------- 【6】.搜索账户信息 -------------" << endl;

       cout<< "\t-------------------- 【0】.退出系统 -----------------" << endl;

}

 

0 0
原创粉丝点击