广西工学院课程设计用纸
广西工学院计算机工程系
《算法与数据结构》
课程设计说明书
课题名称:
学生姓名:
学 号:
班 级:
指导教师:
完成日期: 年 月 日
第 页 共 页
广西工学院课程设计用纸
目 录
问题陈述及其需求分析….................................................P
总体设计………………………………………………….P
详细设计………………………………………………….P
程序代码……………………………………...…………..p
运行结果及分析…………………………………………P
总结………………………………………………………P
第 页 共 页
广西工学院课程设计用纸
一、问题陈述及其需求分析
1.解决一个什么样的问题?
模拟银行系统模拟的是银行的储蓄的操作(银行用户和银行管理人员的操
作)
2.功能上需求
1)满足两种不同用户的操作:
a.银行用户:申请办理新的银行账户、对自己账户进行取钱、存钱、账户查询、
修改密码、账户删除、计算账户余额等操作。b.银行管理人员:修改管理人员密码、
删除银行账户、核对存钱数、查询银行账户、冻结银行账户、激活银行账户。
2)其他功能需求:
a.当银行用户和管理人员信息发生改变时候自动保存的银行用户和银行管理
人员的资料信息到文件中去。下次使用该系统时自动载入管理人员和银行用户的
信息。b.设计对应用户的各种操作菜单,并且在菜单输入可以检查错误输入。c.
密码输入的时候要求不回显。用“*”号代替。
3.性能上的需求
要求程序能够完成功能上所有的各种功能需求、程序能够运行正常稳定的运
行、程序能够检查错误输入、菜单项简单明了容易操作、关于钱的数据精度到小
数点后 2 位、dos 环境下运行。
二、总体设计
1.模块划分
该系统划分为两大模块:一个是 BankManagerBook(面向银行管理人员使
用)的类模块,另外一个 NormalUserBook(面向是银行用户使用的)类模块。
2.模块之间的关系
类模块 BankManagerBook 继承于类 BankManager,类 BankManager 继承
于 NormalUserList(处理银行用户链表的底层处理类)。
类模块 NormalUserBook 继承于类 NormalUserList(处理银行用户链表的底
第 页 共 页
广西工学院课程设计用纸
层处理类)。
3。模块接口
类模块 BankManagerBook 的接口 public:下的各种函数包含所有的功能用户
界面和用户交互的实现。(详见详细设计)。
类模块 NormalUserBook 的接口 public:下的各种函数包含所有的功能用户界
面和用户交互的实现。(详见详细设计)
三、详细设计
1.计算方法(数学模型)
用结构体 struct User 来描述一个银行用户的所有信息,包括账号、姓名、密
码、存钱数目、余额、删除标记、冻结标记、冻结标记、激活标记。
用结构体 struct Manager 来描述银行管理人员的信息,包括管理人员账号、
姓名、由管理人员设置的利率、利息税。
2.算法、数据结构设计
本程序使用双向链表保存数据的底成结构,使用了 C++标准库提供的 List 来
实现这个链表结构。
程序定义了两个结构体和三个类,分别是:
struct User//银行用户
{
string account;//银行账户
string cipher;//银行密码
string name;//用户姓名
string time;//开户时间
double remainingmoney;//余额
double depositmoney;//存钱数目
bool tobedeleted;//删除标志
bool tobefreezed;//冻结标志
bool tobedopsited;//存钱标志
bool activation;//激活标志
};
struct Manager//银行管理员
{ string account;//管理员账户
string cipher;//管理元密码
double interest;//管理员设置的利率
double interest_tax;//管理员设置的利息税
};
class NormalUserList//类处理银行用户链表的底层处理类
{protected:
list<User*> userlist;//银行用户链表
public:
typedef list<User*>::iterator Iterator;
第 页 共 页
广西工学院课程设计用纸
virtual NormalUserList::Iterator finduser(int type,char pattern[],Iterator
from);//查找银行用户函数
virtual void adduser(User* rec);//添加一个银行用户信息到链表中
virtual void saveuserlist(ostream& os);//保存银行用户链表信息到文件
virtual void loaduserlist(istream& is);//读取文件中银行用户信息到链表
virtual void markectdeleteduser(Iterator it);//标记节点的待删除标记
virtual void pushmoney(Iterator it,double money);//修改节点的存钱数目
virtual void popmoney(Iterator it,double money);//修改节点的取钱数目
virtual void modifycipher(Iterator it);//修改指定节点的密码
virtual void outputuser(Iterator it);//输出节点信息
friend ostream& operator<<(ostream& os,const list<User*>& r1);//重载〈〈
friend istream& operator>>(istream& is,list<User*>& c_r2);//重载流〉〉
int size() {return (int)userlist.size();}//记录链表中节点个数
bool nouser(char pattern[]);//验证银行账号是否存在
bool checked(char account[]);//验证银行账户名和密码是否正确
bool freezed(char account[]);//验证账户是否被冻结
};
class NormalUserBook:public NormalUserList//面向银行用户操作的类
{//继承于 NormalUserList
public:
NormalUserBook();
~NormalUserBook();
virtual void start();//银行用户 开始函数
virtual void handlemenu();//银行用户 菜单选择
virtual void adduser();//银行用户 新建银行账户
virtual void marketdeleteduser(char account[]);//银行用户 进行删除标记
virtual void pushmoney(char account[]);//银行用户 存钱
virtual void popmoney(char account[]);//银行用户 取钱
virtual void modifycipher(char account[]);//银行用户修改银行账户密码
virtual void saveuserlist();//保存内存链表中的银行用户信息到文件
virtual void loaduserlist();//读取文件中银行用户的信息到内存链表中
virtual void outputuser();//输出银行账户信息
int menuselect();//用户菜单选择函数
};
class BankManager:public NormalUserList//银行管理人员数据处理基层类
{//继承于 NormalUserList
protected:
Manager banker;
public:
virtual void setmanager(string account,char cipher[],double interest,double tax);
//新建管理人员账户
virtual void modifymanagercipher(string newcipher);//修改管理员密码
virtual void managersettax(double tax);//设置利息碎
virtual void managersetinterest(double interest);//设置利息率
第 页 共 页