数据结构课程设计报告


一.问题描述   

     小明是一个计算机专业top student,祝贺他毕业了。并准备到银行参加工作。上班第一天,经理叫他编制一个实现一个活期储蓄处理程序,算作考查。上班第一天, 一定要给领导一个好印象,小明二话没说,就答应了。现要你是小明了,请完成如下题目功能。储户开户、销户、存入、支出活动频繁,系统设计要求:(1)能比较迅速地找到储户的帐户,以实现存款、取款记账;

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

 

 

 

二.问题分析

    

本程序需要先建立节点类模板 (YinHang,然后使用链表的基本操作应用实现各个程序的实现,头插法先建立链表使之成当前操作数据基础,然后可以使用节点的删除进行储户的销户,结点的插入的应用成为程序的开户(注意:建立新的用户要先确认新建的用户号不可以语之前的用户号码相同, 引起系统错误!本程序应用链表节点的比较改进程序。)。储户的存取也是应用节点的比较查找之后进行的账户钱数加减。

 

 

三.逻辑结构和存储结构设计

逻辑结构是线性结构,方便存储银行开户信息。存储结构是双链表,能够从任意点开始向前向后快速检索用户资料,操作灵活。方便查找

 

 

 

四.代码分析

1.建立头文件YinHang.h   

建立用户结构体

struct YongHu     

{

string Name;   //姓名

string Sex;    //性别

string ID;     //ID

string Number; //账号

string Password;  //密码

long long Money;  //金额

YongHu *pre, *next; //双链表前驱后继指针

YongHu(stringstringstringstringlong long);  //用户构造函数

};

银行类的声明

class YinHang

{

public:

YinHang();

void KaiHu();  //开户

void ChaKan();  //查看

void Cha_Shan(); //查看并删户

void Cha_Cun();  //查看并存钱

void Cha_Qu();  //查看并取钱

private:

YongHu* ShuRu();  //输入

YongHu* ChaZhao();  //查找

void ShanChu(YongHu*);  //删户

void CunQian(YongHu*);  //存钱

void QuQian(YongHu*);  //取钱

 

YongHu *Head;

YongHu *Rear;

};

 

2.建立一个源文件YinHang.cpp,该文件包括类YinHang中成员的定义

    1#include"YinHang.h"在本源文件中包含头文件YinHang.h

    (2)构造函数YinHang()

 YinHang::YinHang() :

Head(nullptr), Rear(nullptr)

{

Head = new YongHu("#""#""#""#", 0);    //建立头结点

Rear = new YongHu("#""#""#""#", 0);

Head->next = Rear;

Rear->pre = Head;

cout << "系统启动成功" << endl;

}   定义一个空节点

 

 

(3)用户输入定义

YongHuYinHang::ShuRu()

{

system("cls");

string name;

cout << "请输入您的姓名:" << ends;

cin >> name;

 

unsigned sex = 0;

string sexual;

while (sex != 1 && sex != 2)

{

cout << "请选择您的性别:1:女,2:男" << ends;

cin >> sex;

if (sex == 1)

sexual = "女";

else sexual = "男";

}

 

string ID;

cout << "请输入您帐户号码:" << ends;

cin >> ID;

 

string password;

cout << "请输入您的密码:" << ends;

cin >> password;

 

long long money;

cout << "请输入您的账户余额:" << ends;

cin >> money;

 

YongHu *a = new YongHu(name, sexual, ID, password,money);

return a;

}

 

 

(4)开户。通过if语句来录入多个用户信息。使用头插法一个个插入:p->next = Head->next

Head->next = p  p->next->pre = p  p->pre = Head

 

void YinHang::KaiHu()

{

YongHu *p = nullptr;

while (true)

{

system("cls");

cout << "是否继续录入:Y/N" << endl;

char chosse = 'Y';

cin >> chosse;

if (chosse == 'n' || chosse == 'N')

break;

p = Shu

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值