精华内容
下载资源
问答
  • 报告有运行图,流程图,有自己感受总结,格式很好适合修改。程序代码用了类关于数据结构的知识,增删查改功能齐全
  • 课程设计报告 科目:数据结构课程设计 题目: 专业: 班级: 学号: 姓名: 目 录 1.需求分析……………………………………………………………1 1.1题目内容及要求………………………………………………………1 1.2...

    南阳理工学院

    课程设计报告

    科目:数据结构课程设计
    题目:

    专业:
    班级:
    学号:
    姓名:

    目 录

    1.需求分析……………………………………………………………1
    1.1题目内容及要求………………………………………………………1
    1.2题目分析………………………………………………………………1
    2.系统设计……………………………………………………………1
    2.1数据结构设计…………………………………………………………1
    2.2流程图设计……………………………………………………………1
    2.3函数设计………………………………………………………………1
    3.实现代码……………………………………………………………1
    4.测试及运行效果……………………………………………………1
    5.课程设计总结………………………………………………………1
    6. 参考书目……………………………………………………………1

    1、需求分析
    1.1题目内容及要求

    1.2题目分析

    2、系统设计
    2.1数据结构设计

    2.2流程图设计

    2.3函数设计

    3、实现代码

    4、测试及运行效果(需要截图)

    5、课程设计总结

    6.参考书目

    展开全文
  • 实 验 报 告 课程名称 数据结构程序设计 实验项目 数据结构中栈和队列的应用 系 别_ _计算机学院 _ _ 专 业_ 网络工程 _ 班级/学号_网工1202/2012011411_ 学生姓名 _王宇涵_ 实验日期 _2014年6月2日 成 绩 _ 指导...
  • 数据结构课程设计报告 ( 样 例) 数据结构与算法 课程设计报告 王婧龚丹宋毅 编 写 题目 航空订票管理系统 学期 2014 秋 班号 学号 姓名 成绩 哈尔滨华德学院电子与信息工程学院 2014 年 12 月 一实训设计的目的与...
  • 数据结构课程的课程设计报告。共包含约瑟夫环、用顺序栈计算表达式、串的基本操作、二叉树基本操作、排序算法设计和比较等设计题目。这是本人的作业,得了优秀所以提供给大家做参考。绝对的物超所值!
  • 1 主要针对数据结构和 c/c++语言开展 的实践性课程要求学生掌握数据结构的应用算法的编写类 C 语言的算法转换成 CC++程序 并上机调试的基本方法课程设计要求学生在完成程序设计的同时能够写出比较规范的课程设计报告 ...
  • 上班第一天,经理叫他编制一个实现一个活期储蓄处理程序,算作考查。 上班第一天, 一定要给领导一个好印象,小明二话没说,就答应了。现要你是小明了, 请完成如下题目功能。储户开户、销户、存入、支出活动频繁...

    问题描述:

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

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

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

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

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

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

    问题分析:

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

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

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

    算法设计:

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

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

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

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


    运行结果截图:

    1、主菜单:



    2、开户功能:


    3、销户功能:



    4、存取款功能:



    5、修改密码:


    6、搜索账户信息:

    源代码:

    #ifndef bank_H
    #define bank_H
    #include 
    #include
    using namespace std;
    struct Account
    {
    	string name;     //账户所有人姓名
    	string id;      //身份证号
    	string number;   //账号
    	string phone;   //联系方式
    	unsigned int password; //账户密码
    	double balance;  //账户余额
    	Account *next;
    };
    class Bank
    {
    public:
    	Bank();
    	~Bank(){};
    	void insert();
    	int length();  //求长度
    	void del(int i);  //销户
        int search(string S);    //寻找
    	void save(int j);  //存款
    	void withdraw(int k); //取款
    	void modify(int i); //修改密码
    	void show(int i);//显示单个账户的信息
    private:
    Account *first;
    };
    #endif
    #define _CRT_SECURE_NO_WARNINGS
    #include"bank.h"
    #include
    #include
    #include
    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;
    	int count = 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;
    		delete q;
    	}
    }
    
    void Bank::save(int j)
    {
    	Account *p = first;
    	int count=0;
    	while (p != nullptr&& count <= j - 1)
    	{
    		p = p->next;
    		count++;
    	}
    	cout << "姓名是: "<name<number << endl;
    	double money;
    	cout << "请输入要存入的金额: ";
    	cin >> money;
    	p->balance = p->balance + money;
    }//存款
    
    void Bank::withdraw(int k)
    {
    	Account *p = first;
    	int count = 0;
    	while (p != nullptr&& count <= k - 1)
    	{
    		p = p->next;
    		count++;
    	}
    	cout << "姓名是:" << p->name << endl;
    	cout << "账号是:" << p->number << endl;
    	unsigned int password;
    	cout << "输入账户密码:";
    	cin >> password;
    	cout << endl;
    	if (p->password==password)
    	{
    	double money;
    	cout << "请输入要取出的金额:";
    	cin >> money;
    	p->balance = p->balance - money;
    	}
    	else cout << "密码有误!";
    }//取款
    
    void Bank::modify(int i)
    {
    	Account *p = first;
    	int count = 0;
    	while (p != nullptr&& count <= i - 1)
    	{
    		p = p->next;
    		count++;
    	}
    	cout << "姓名是:  " << p->name << endl;
    	cout << "账号是:  " << p->number << endl;
    	unsigned int password;
    	cout << "输入账户密码:";
    	cin >> password;
    	cout << endl;
    	if (p->password == password)
    	{
    		unsigned int temp, temp_0;
    		cout << "请输入新密码:";
    		cin >> temp;
    		cout << "请再输入一次以确认:";
    		cin >> temp_0;
    		if (temp != temp_0)
    		{
    			cout << "两次密码输入不一致!"<password = temp;
    		}
    	}
    	else
    	{
    		cout << "您输入的密码不正确!"<next;
    	int count = 1;
    	while (p != nullptr)
    	{
    		if (S==p->name)
    			return count;
    		p = p->next;
    		count++;
    	}
    	return 0;
    }  //通过名字搜索
    
    {
    	Account *p = first->next;
    	while (p == nullptr)
    	{
    		cout << "未输入任何账号信息!"<name << setw(15) << p->number << "      " << p->balance << endl;
    		p = p->next;
    	}
    	system("pause");
    } */
    void Bank::show(int i)
    {
    	Account *p = first;
    	int count = 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");
    	
    }
    #include
    #include"bank.h"
    #include
    #include
    #include
    using namespace std;
    
    void menu();
    int main()
    {
    	system("color F0");
    	Bank A;
    	short choose;
    	while (1)
    	{
    		menu();
    		cout << "   请输入功能代码:";
    		cin >> choose;
    		switch(choose)
    		{
    		case 0:
    			char h;
    			cout << "是否退出系统(Y/N):";
    			cin >> h;
    			if (h == 'Y' || h == 'y')
    			{
    				cout << "正在退出系统,再见!" << endl;
    				system("pause");
    				return 0;
    			}
    			else
    				cout << "取消退出指令。";
    			 break;
    		case 1:
    			A.insert();
    			 break;
    		case 2:
    		{
    			int a;
    			string S;
    			cout << "输入姓名:" << ends;
    			cin >> S;
    			a = A.search(S);
    			if (a == 0)
    			{
    				cout << "你输入的姓名有误!!";
    				system("pause");
    				break;
    			}
    			else
    			{
    				cout << "已找到:" << endl;
    				A.show(a);
    				cout << "请确认是否删除?(Y/N):";
    				char choose_1;
    				cin >> choose_1;
    				if (choose_1 == 'Y' || choose_1 == 'y')
    				{
    					A.del(a);
    					break;
    				}
    				else
    				{
    					break;
    				}
    			}
    		}
    		case 3:
    		{
    			cout << "输入姓名:";
    			string S1;
    			cin >> S1;
    			int j;
    			j = A.search(S1);
    			if (j == 0)
    			{
    				cout << "你输入的姓名有误!!";
    				system("pause");
    				break;
    			}
    			else
    			{
    				A.save(j);
    				break;
    			}
    		}
    		case 4:
    		{
    			cout << "输入姓名:";
    			string S2;
    			cin >> S2;
    			int k;
    			k = A.search(S2);
    			if (k == 0)
    			{
    				cout << "你输入的姓名有误!!";
    				system("pause");
    				break;
    			}
    			else
    			{
    				A.withdraw(k);
    				break;
    			}
    		}
    		case 5:
    		{
    			cout << "输入姓名:";
    			string S3;
    			cin >> S3;
    			int i;
    			i = A.search(S3);
    			if (i == 0)
    			{
    				cout << "你输入的姓名有误!!";
    				system("pause");
    				break;
    			}
    			else
    			{
    				A.modify(i);
    				break;
    			}
    		}
    		case 6:
    		{
    			cout << "输入要搜索的姓名:";
    			string S4;
    			cin >> S4;
    			int i;
    			i = A.search(S4);
    			if (i == 0)
    			{
    				cout << "你输入的姓名有误!!"<
    展开全文
  • 设计报告题目停车场管理问题 学院信息科学与工程学院 数据结构课程设计报告书 1.1 课程设计选题的目的 为大家解决一些生活中的实际问题在这个过程中自我设计的能力也在不断地提高此次程序设计综合运用所学数据额结构...
  • PAGE PAGE # PAGE PAGE # 算法与数据结构课程设计报告 课程设计题目图的基本操作及应用 数据结构课程设计是在学完数据结构课程之后的实践教学环节 本实践教学 是培养学生数据抽象能力 进行复杂程序设计的训练过程 ...
  • 数据结构课程设计报告 题目长整数四则运算 一 需求分析 问题描述 由于工程上有时候需要对很大的数进行计算但是计算机本身提供的数据类型无法保 存几百位甚至几千位的数字所以需要设计专门的算法对数据进行相应的计算...
  • 数据结构课程设计实验报告 设计题目一 单位员工通讯录管理系统 一 题目要求 为某个单位建立一个员工通讯录管理系统可以方便查询每一个员工的办公室电话手机号及电子邮箱其功能包括通讯录链表的建立员工通讯信息的...
  • WORD格式 专业资料整理 课程设计报告 课程名称 专业 班级 姓名 学号 成绩 完成日期 年 月 日 任务书 题目黑白棋系统 设计内容及要求 课程设计任务内容 通过玩家与电脑双方的交替下棋在一个 8行8列的方格中进行棋子的...
  • . 1. 运动会分数统计 问题描述 n m w 参加运动会的 n个学校编号为 1 比赛分成 个...得分顺序为 53 2 写一个统计程序产生各种成绩单和得分报表 基本要求 1) 可以输入各个项目的前三名或前五名的成绩 2) 能统计各学校总分
  • 数据结构课程设计报告一简单 计算器 计算机科学与信息工程学院 数据结构课程设计 设计题目简单计算器 业. 级 计算机软件 计软2班 小组成员一蔡松佐陈吉院王希 刘军符锦柏 曾祖滨刘一霖 指导教师 2010年12月25日 数据...
  • 信息科学与技术学院 程序设计基础课程设计报告 题目名称 通信管理系统 学生姓名 学 号 专业班级 指导教师 2016年 12月 31日 目录 TOC \o "1-3" \h \z \u 1.课程设计题目与要求 1 1.1设计题目 1 1.2设计要求 1 2.总体...
  • 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 要求: (1)设计学校的校园平面图,所含景点不少于10个,以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等...
  • 学院名称 数据结构课程设计报告 题目航班信息查询与检索 班 级 姓 名 时 间 2012/12/292013/1/5 教育资料 . 二一二年十二月二十九日 课程设计任务书及成绩评定 课题名称 航班信息查询与检索 题目的目的和要求 1设计...
  • 青岛理工大学 数据结构课程设计报告 题目 宿舍管理查询软件 院系 计算机工程学院 学生姓名: 谢茂盛 班级 网络121 学号:201207131 起迄日期2014.07.07-2014.07.20 指导教师: 张艳 一 需求分析所有大标题宋体加粗四号...
  • PAGE 教育资料 学院名称 数据结构课程设计报告 题目航班信息查询与检索 班 级 姓 名 时 间 2012/12/292013/1/5 二一二年十二月二十九日 课程设计任务书及成绩评定 课题名称 航班信息查询与检索 题目的目的和要求 1...
  • 黄淮学院信息工程学院 课程设计报告 设计题目 哈夫曼编码 / 译码系统 姓 名 学 号 专业班级 计算机科学与技术 0601 本 系 院 信息工程学院 设计时间 2012~2013 学年第一学期 设计地点 1#615 机房 成绩 指导教师签名 ...
  • 数据结构课程设计 题目为哈夫曼编译器 文章编辑 哈希表 普利姆算法 需要的童鞋速度下载啦。。全是用C写的程序 都有流程图
  • 数据结构课程设计报告 题 目 纸 牌 游 戏 学生姓名 薛 丹 学 号 08120132 专业班级 计算机0801班 指导老师 方 霞 设计日期 2009年12月27日 指导老师评阅意见 评阅成绩 签名 一问题定义 1.课题目的做一个纸牌游戏的...
  • 数据结构课程设计报告 PAGE PAGE 1 第 PAGE 1页 . Word资料. 课 程 设 计 报 告 课程设计名称 数据结构 系 计算机科学系 学生姓名 李锡会 班 级 13計算機科學與技術1班 学 号 1314080901118 成 绩 指导教师 肖錦輝老...
  • xx 理 工 学 院 课 程 设 计 说 明 书 课程名称 数据结构课程设计 设计课题 校园导游程序 专 业 计算机科学与技术 班 级 学 号 姓 名 完成日期 课 程 设 计 任 务 书 设计题目 校园导游程序 设计内容与要求 [问题...
  • 数据结构c++ 课程设计题目 需求分析说明 总体设计 详细设计 程序测试 总结 附录
  • 程 设 计 数据结构 班 级 姓 名 学 号 指导教师 welcome 精品 二 一一年一月二十日 课程设计任务书及成绩评定 课题名称 数据结构 题目的目的和要求 1 设计目的 巩固和加深对数据结构的理解通过上机实验调试程序加深...
  • 计算机科学与技术系 课程设计报告 2014-2015学年第二学期 课程 数据结构 课程设计名称 Kruskal算法求最小生成树 学生姓名 姚国栋 学号 1204091021 专业班级 12软件工程 指导教师 何立新 2014年9月 题目设计程序完成...
  • 姓 学 级 名 号 计科0901班 许山蒙 0911051002 指导教师 张先伟 二一一年一月二十日 课程设计任务书及成绩评定 课题名称 题目的目的和要求 1设计目的 文章编辑 巩固和加深对数据结构的理解通过上机实验调试程序加深...
  • 分类号 编号 华北水利水电学院 North China Institute of Water Conservancy and Hydroelectric Power 课 程 设 计 题目:全国交通资讯系统 院 系 信息工程学院 专 业 计算机科学与技术专业 姓 名 指 导 教 师 杨彬 ...
  • 数据结构课程设计报告(附代码)

    千次阅读 2015-01-14 13:16:41
    数据结构课程设计报告 一、实训目的 通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现。掌握C++较复杂程序的组织和设计...


    数据结构课程设计报告


    、实训目的

    通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现。掌握C++较复杂程序的组织和设计过程,调试技巧。学习解决实际问题的能力。

    、实训环境

    计算机windows xp或其它版本,VC6.0或更高版本,或其它语言环境。

    、实习题目

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

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

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

    四、问题分析

    需求分析:

    1、 创建文件,用数组形式存储用户数据,开户时自定义用户账户、姓名、密码、开户金额;

    2、 用户登录时,输入正确的用户姓名、用户密码,完成登陆后即可进行存款、取款、查询、修改密码;

    3、 实现输入用户的账户名和密码,将其全部信息删除,进行销户。

    五、逻辑结构和存储结构设计

    逻辑结构:

    存储结构设计:该存储结构是链式存储结构,本系统主要用线性表结构类型来存储在“活期储蓄账目管理系统”中的信息。其中,结构体由4个分量构成:用户账号名、用户姓名、用户密码、开户金额。

    六、算法设计

    本系统采用链式结构存储储蓄账目管理

    1、用户输入想开户的储户输入其姓名账户密码,然后显示开户成功,会有一个账户生成,然后开户成功。

    2、用户登录需要输入账号名和密码,判断密码是否正确,如果错误则返回,然后点击登录,就可以进入管理系统。

    3、用户的存取款和查询余额,首先在登录账户的基础上,选择存或取款,然后输入相应的金额,若是取款应判断其金额是否小于账户上的金额,如果不小于,则提示储户重新输入相应的金额,或者退出。 4、储户需要销户的账户,然后程序自动判断该账户是否存在,然后输入账户密码,若密码与账户相对应,则删除该账户。

    七、空间复杂度和时间复杂度分析

    空间复杂度:

    是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,

    简单说就是递归集算时通常是反复调用同一个方法,递归n次,就需要n个空间。 时间复杂度:

    一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。

    一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。

    在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。

    八、代码

    #include<iostream>

    #include<string>

    #include<stdlib.h>

    #include<fstream>

    using namespace std;           //加了

     

    class consumer;

    class YH

    {

    public:

        YH();

        voidbuilt_account();   //建立账户

        voiddelet_account();   //销户

        voidtransfer(int);     //转账

        voidenter_account();   //登录账户

        voidaddmoney(int,float);

        voidexitYH();      //退出系统

        voidfunctionshow();     //功能界面

        voidsave();            //文件存储函数

       void load();            //文件打开函数

    protected:

        consumer*account[20];    /* 账户数  定义了一个指针数组,

                                     共20个元素,每个元素均为指针*/

        staticint acnum;

    };

     

     

    int YH::acnum =0;       //初始化账户数为0

     

     

    YH::YH()            //定义用户类Yonghu函数

    {

        for(inti=0;i<20;i++)

        {

            account[i]=NULL;    /*初步建立了数组空间,

                                未建立任何账户,元素均为

                                空值*/

        }

    }

     

    class consumer:public YH     //公有继承Yonghu类

    {

    public:

        friendclass YH;           /*友元类Yonghu可以访问consumer的

                                       所有成员(包括私有成员)*/

        consumer(intid,string Name,string PassWord,float m)

        {

            ID=id;name=Name;money=m;passwd=PassWord;

        }                                //定义有参构造函数consumer

        consumer(){ID=0;name='0';money=0;passwd='0';}/*初始化 (name,passwd的

                                                      类型为字符型,用

                                                      引号括起)*/

        intget_id(){return ID;}         //获取账号

        voidsavemoney();                //存钱

        stringget_passwd()      

        {

            return passwd;

        }                                //获取密码

       void display();                 //显示屏幕

       void getmoney();                  //取钱

        voidchange_passwd();                //修改密码

        voidadd_money(float);            //添加money

        voiddec_money(float);           //扣钱

       float get_money();               //得到money

    private:

        intID;                         //开户账号

        stringpasswd;                   //账号密码

        stringname;                    //用户名

        floatmoney;                   

    };

     

     

    void YH::save()                             //定义文件存储函数

    {ofstreamofile("bankdat.dat",ios::out);       /*通过构造函数打开文件,相当于  ofstream ofile;(说明一个输出流)

    ofile.open("bankdat.dat,ios::out);

    ofstream ofile("文件",打开方式) 1]如果文件存在  则存放在C:\\ temp\\

    bankdat.dat    2]文件不存在 打开方式一般在ofstream流中默认为

    ios_base::out    早期的C++使用ios代替ios::base   ifile相当于cin,ofile

    相当于cout,它们从文件读/写数据。 在成功读/写过程前,要确定ifile和

    ofile读/写的目标文件*/

    ofstreamoutfile("bankdat.dat",ios::out);      /*格式:输出到磁盘 

           ofstream 识别字("文件名")     ios::out  文件以输出方式打开(内存数据输出到文件)  解释:写入到磁盘bankdat.dat中*/                                             

    int n=0;                                      

    outfile<<acnum<<"   ";                        //输出数据到文件里

    for(;n<acnum;n++)                              //for语句,初始化n=0提前

    {outfile<<account[n]->ID<<""; 

    outfile<<account[n]->money<<"";

    outfile<<account[n]->name<<"";

    outfile<<account[n]->passwd<<"";               //指针获取各参数值

    }

    outfile.close();

    }            

     

     

    void YH::load()                             //定义文件打开函数

    {ifstreaminfile("bankdat.dat",ios::in);          /*格式:从磁盘读文件

                   ifstream  识别字("文件名")*/

    if(!infile)

    {

        cerr<<"读取错误,无资料!"<<endl;

        return;              //

    }

    int n=0;

    int id,m;

    string nam,passw;                             //定义变量id,m,nam,passw

    infile>>acnum;

    for(;n<acnum;n++)

    {infile>>id;                                 //从文件读取数据

    infile>>m;

    infile>>nam;

    infile>>passw;

    account[n]->passwd;

    consumer*acc=newconsumer(id,nam,passw,m);

    account[n]=acc;

    }

    infile.close();

    cout<<"读取资料正常!"<<endl;

    }

     

     

    void YH::transfer(int x)                   //定义转账函数,带一个参数

    {int id;

    cout<<"请输入账号:";

    cin>>id;

    int flag=1;

    int i=0;

    while((i<acnum)&&(flag))

    {

        if(id==account[i]->get_id())flag=0;elsei++;

    }

    if(flag)

    {

        cout<<"账号不存在!"<<endl<<endl;         //看看是不是多了<<endl

        return  ;        //

    }

    float b;

    cout<<endl<<"请输入你要转账的金额:";

    cin>>b;

    while(b<=0)

    {

    cout<<"请输入正确的数字!"<<endl;

    cout<<"$>";

    cin>>b;

    }

    if(account[x]->get_money()<b)

    cout<<"对不起,金额不够!!"<<endl;

    else

    {

        account[x]->dec_money(b);

        account[i]->add_money(b);

       cout<<"转账成功";

    }

    return ;             //

    }

     

     

     

    void consumer::add_money(float x)         //转账之后某用户添加money

    {money=x+money;}

    void consumer::dec_money(float x)              //转账之后某用户扣money

    {money=money-x;}

     

     

    void YH::addmoney(int x,float y)          

    {

        account[x]->money=account[x]->money-y;

    }

     

     

     

    float consumer::get_money()

    {return money;}

     

     

    void main()

    {

        YHa;

        a.functionshow();

    }

     

    void YH::functionshow()                        //显示界面设计

    {

        intn;

        do

        {system("cls");load();

        cout<<"******************  银行管理系统****************"<<endl;

       

        cout<<"1)用户开户"<<endl<<"2)登陆账户"<<endl

            <<"3)注销账户"<<endl<<"4)退出系统"<<endl;

        cout<<"**************************************************"<<endl;

        cout<<endl<<"请你输入相应的操作序号进行操作:"<<endl;  //多了endl?

        cout<<"$>";

        cin>>n;

        while(n<1||n>4)

        {

            cout<<"请输入正确的操作序号!"<<endl;

            cout<<"$>";

            cin>>n;

        }

        switch(n)                            //选择语句

        {

        case1:built_account();

            break;

        case2:enter_account();

            break;

        case3:delet_account();

            break;

        case4:exitYH();

            break;

        }

        cin.get();

        }

        while(true);

    }

     

    void YH::enter_account()

    {

        intid;

        cout<<"请输入账户:";

        cin>>id;

        intflag=1;

        inti=0;

        while((i<acnum)&&(flag))

        {

            if(id==account[i]->get_id())flag=0;elsei++;   //*****//

        }

        if(flag)

        {

            cout<<"账号不存在!"<<endl<<endl;       //多加一个<<endl?

            cin.get();           //这里看看了

            return ;                  //

        }

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

        stringpassw;

        cin>>passw;

        if(passw!=account[i]->get_passwd())return;    //

        account[i]->display();cin.get();  cin.get();          //多加一个cin.get();?

        intn;

        do{system("cls");

        cout<<"请选择你要进行的操作:"<<endl<<"1)查看信息"<<endl

            <<"2)取款"<<endl<<"3)存款"<<endl<<"4)修改密码"<<endl

            <<"5)转账"<<endl<<"6)返回"<<endl;

     

        cin>>n;

        switch(n)

        {

        case1:account[i]->display();break;

        case2:account[i]->getmoney();save();break;

        case3:account[i]->savemoney();save();break;

        case4:account[i]->change_passwd();save();break;

        case5:transfer(i);save();break;

        case6:return ;             //

        }cin.get();cin.get();      //多了cin.get()?

        }

        while(1);

     

    }  

     

     

    void YH::built_account()

    {

        intid;

        stringnam;

        stringpassw;

        floatm;

        cout<<endl<<"请输入开户号:";

        cin>>id;

        cout<<endl<<"请输入开户人姓名:";

        cin>>nam;

        cout<<endl<<"请输入开户密码:";

        cin>>passw;

        cout<<endl<<"请输入存入金额:";

        cin>>m;

        while(m<=0)

        {

            cout<<"请输入正确的数字!"<<endl;

            cin>>m;

        }

        consumer*acc=new consumer(id,nam,passw,m);

        account[acnum]=acc;

        cout<<"开户成功!"<<endl;        //再加一个<<endl

        acnum++;

        save();

        cin.get();

        return;            //

    }          //建立账户

     

    void YH::delet_account()

    {

        intid;

        cout<<endl<<"请输入你要注销的账户号: ";

        cin>>id;

        intflag=1;

        inti=0;

        while((i<acnum)&&(flag))

        {

            if(id==account[i]->get_id()){flag=0;}

            else{i++;}

        }

            if(flag)

            {

                cout<<"账号不存在!"<<endl<<endl;            //多了<<endl?

                return;         //

            }

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

            string passw;

            cin>>passw;

           if(passw!=account[i]->get_passwd())return ;    //

            for(int j=i;j<acnum;j++)

            {

                account[j]=account[j-1];

            }

                account[acnum-1]=NULL;

                acnum--;

                cout<<"注销成功!"<<endl<<endl;

                save();

                cin.get();

                return  ;   //

    }

     

               

    void consumer::change_passwd()

    {

        stringpwd,repwd;

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

        cin>>pwd;

        cout<<"请再输入一次新密码:";

        cin>>repwd;

        if(pwd!=repwd)

            cout<<"你输入的两次密码不同,请重新输入!"<<endl;

        passwd=pwd;

        cout<<"密码修改成功!"<<endl;cin.get();

    }

     

     

    void consumer::getmoney()

    {

        floatm;

        charch;

        do

        {

            cout<<endl <<"你要取多少钱:"<<"$>"<<endl; //多了endl?

            cin>>m;

            while(m<=0)

            {

                cout<<"请输入正确的数字!"<<endl;

                cout<<"$>";

                cin>>m;

            }

            if(money<m)

            {

                cout<<"对不起,你的余额已不足!"<<endl;

            }

            else

            {money=money-m;

            cout<<endl <<"操作成功!"<<endl;  //多了endl?

            }

            cout<<"是否继续执行该操作:(Y/N)"<<endl;

           cout<<"$>";

            cin>>ch;

            while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')

            {

                cout<<"$>";

                cin>>ch;

            }

        }while(ch=='y'||ch=='Y');

     

    }

     

     

    void consumer::savemoney()     //存款

    {

        floatc;

        charch;

        do

        {

           cout<<endl <<"你要存多少钱:"<<"$>"<<endl;  //多了endl?

            cin>>c;

            while(c<=0)

            {

               cout<<"请输入正确的数字!"<<endl;

                cout<<"$>";

                cin>>c;

            }

            money=money+c;

            cout<<"操作成功!"<<endl;

            cout<<"是否继续执行该操作:(Y/N)"<<endl;

           cout<<"$>";

            cin>>ch;

            while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')

            {

                cout<<"$>";

                cin>>ch;

            }

        }while(ch=='y'||ch=='Y');

     

    }

     

     

     

    void consumer::display()

    {system("cls");

    cout<<"*********************************"<<endl;

    cout<<"*"<<endl;

    cout<<"*                用户姓名:  "<<name<<endl;

    cout<<"*                 账号:     "<<ID<<endl;

    cout<<"*                 余额:     "<<money<<endl;

    cout<<"*********************************"<<endl;

    }

     

     

     

    void YH::exitYH()

    {

        cout<<"感谢你的支持,欢迎下次光临!"<<endl;

        exit(0);

    }

    九、效果截图

    主界面

    开户界面

    登陆界面

     

     账户信息界面


     账户操作界面

    账户取款界面

     账户存款界面

     账户修改密码界面

     

    账户转账界面


     注销界面

     

     退出界面

     

     十、收获和体会及不足

     这是第二次做课程设计了,但开始自己读题时,思路不是很清晰,也不明白这个程序就是要结合所学数据结构的思想,要首先定义了多个数组,包含了储户的各类信息,如姓名,账号,金额等等,并利用文件将用户信息加以存储。开户时将输入的信息写入文件,存款和取款时对用户的存款加以处理并更新到文件中。

     最后在分析好活期储蓄帐目管理的功能模块后,我开始编写代码,在代码调试的过成中,并不是一帆风顺的,这也是平常练的不够吧,经过几轮删删改改,终于做的差不多了,基本达到了老师的要求,但是还是有很多不足的地方。通过这次对银行管理系统的编写与调试,巩固了有关结构体的知识及其操作,锻炼了实际应用能力,同时对文件有了更进一步的了解及应用,明白文件的读写等相关知识。

     在不断地进行书面设计和上机调试的过程中,认识到掌握设计程序的思路非常重要,要正确处理算法与语法的关系,算法是程序的核心,是灵魂,语法是外壳是工具。但是光掌握语法也是不够的,应该还要把重点放在解题思路上。这个实验也让我认识到自己知识的有限,与同学讨论的益处,培养了我的团队意识。

     在这一周的课程设计中,我通过这次设计我也着实又感受了一次编程的乐趣,从中也学到了不少知识。书上和老师都说“程序=数据结构+算法”,但我在学习运用数据结构编程之前,并没能深刻体会到这一点,直到这次课程设计实践。

     我感受最深的一点是:以前用C编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。现在编程感觉完全不同了。在编写一个程序之前,自己能够综合考虑各种因素,

    首先选取自己需要的数据结构,是树还是图或是别的什么?然后选定一种或几种存储结构来具体的决定后面的函数的主要风格。最后在编写每一个函数之前,可以仔细斟酌比对,挑选出最适合当前状况的算法。另外,我还体会到深刻理解数据结构的重要性。只有真正理解这样定义数据类型的好处,才能用好这样一种数据结构。了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。

     通过这次课程设计逐渐提高了自己的程序设计和调试能力,通过上机实习,严整自己设计算法的正确性,学会了有效利用基本调试方法,查找出代码中的错误并且修27 改,我对参数的调用也进行了很多种尝试,已经能够相对准确的选择合适的参数形式来实现函数之间的数据传输交互了。

     这次试验也让我看到了自己的不足,许多关于C++的一些比较具体的东西还不太懂,比方说指针。这次课程设计也让我知道了自己的能力只有经过不断地锻炼才能提高。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


    展开全文

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 372
精华内容 148
关键字:

数据结构程序设计报告题目

数据结构 订阅