课程设计之题目4

一、实训目的

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

二、实训环境

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

三、实习题目

     题目4赵斌是一个信管专业的学生,大学四年顺利毕业了。在毕业季,他也像其他学子一样,投身于求职大军,投出一份又一份求职简历,在苦苦地等待之后,他接到了中国移动通信公司广东分司的面试通知书,通知他于本月110点到公司面试。当天,晴空万里,艳阳高照,他身着西装,高兴地早早来到公司楼下等待。10点钟整,他和其他新人一起,坐到公司的面试现场。他领取的一一份程序设计题: 假如你是我公司一名客服技术人员,现请你选择自己熟悉的语言,来设计一个程序,管理客户向公司打进来的咨询电话。请事行分析析使用方法和工具,说明自己的思路方法,写一份完整的程序,并实例测试。

四、设计说明书。

功能:拨打10086的基本功能在这里都能实现,为了真实性,昨天晚上特意打了5、6次10086,再次特地鸣谢中国移动10086。(下面有图文说明)

要求以个人独立完成。

分析:我的分析与老师的不一样,所以有了上一篇文章。这篇课程设计的分析是借鉴信管班同学的,他的分析让我茅塞顿开!于是这片文章出现了。

代码:在最后。

收获和体会:这篇文章,要感谢中国移动,以及物联的小伙伴和信管班那位让我茅塞顿开的同学!下面的源代码于昨晚20:30左右,到今天14:40,历时多久,不知道!收获是巨大的。更深层次的了解到类函数的调用,返回值的使用,指针方方面面!还有激发我那死不认命的倔性!这么说吧,昨晚到今天我按F5(调试程序按钮)的次数,比我这半年来按的次数还要多!

不足:该程序代码本来是这个的1.5倍,后来被我删了好多,有一些我存在侥幸心理的,也就是说,这个代码有好多还是有bug的。但,我实在无法改了,已经到了我现在的极限了。我会继续努力的!

最后,附上一张电脑屏幕截图:




源代码如下:

头文件:

/*头文件aa.h*/
#include<iostream>
#include<stdlib.h>
#include<string>
#include <windows.h>

using namespace std;

struct Node                    //定义链表的节点
{
	string phone,yewu;
	bool zhuangtai;
	int huafei,liuliang,duanxin;
	Node *next;
};

class Phone
{
public:
	Phone();                 
	//Phone(string a);
	~Phone(){};
	int Insert(string a,int c);
	int chaxun(string a);
	int chongzhi(string a);
	int banli(string a);
	int tingji(string a);
	int rengong();
	void bianli(int c);
private:
	Node *first;
};


Phone::Phone()           //构造函数
{
	first = new Node;
	first->next=NULL;
	
}

int Phone::Insert(string a,int c)        //虽名为插入,实质是初始化
{
	Node *p=first,*s=NULL;
	bool t=false;
	int count = 0;
	while(count<c-1 && p->phone!=a){
		p=p->next;
		count++;
	}
	if(p->phone!=a){
		t=true;
	s = new	Node;            //构造新节点
	s->phone=a;              //初始化 
	s->huafei=rand()/100+21;        //随机数规律特定,原因未知      
	s->liuliang=rand()/100+200;    
	s->duanxin=rand()/100+29;      
	s->yewu="无";
	s->zhuangtai=true;
	p->next=s;p=s;
	}
	return t;
}

int Phone::chaxun(string a)               //查询服务
{
	Node *p=first;
	while(p->phone!=a)                    //找到你的手机号码
		p=p->next;
		for(;;){
			system("cls");
		int xuanze;
		cout<<"\n\n\t话费查询请按 1 ;"
		<<"\n\n\t流量查询请按 2 ;"
		<<"\n\n\t套餐查询请按 3 ;"
		<<"\n\n\t返回上层请按 0 ;"<<endl;
	cin>>xuanze;
	switch(xuanze)
	{
		system("cls");
	case 1:cout<<"您的余额为"<<p->huafei
			   <<"元"<<endl;break;
	case 2:cout<<"您的剩余流量为"<<p->liuliang
			   <<"MB"<<endl;break;
	case 3:cout<<"您的套餐使用情况如下:"
			   <<"您的余额为"<<p->huafei<<"元;"
			   <<"剩余流量为"<<p->liuliang<<"MB;"
			   <<"剩余短信为"<<p->duanxin<<"条."<<endl;break;
	case 0:return 0;
	default:cout<<"对不起,您的输入有误~"<<endl;
	}
	system("pause");
		}
}

int Phone::chongzhi(string a)           //充值服务
{
	Node *p=first;
	while(p->phone!=a)                //找到你的手机号码
	{
		p=p->next;
	}
	int x;
	for(;;){
		system("cls");
	cout<<"\n\n\t请选择您的银行卡开行银行"
		<<"\n\n\t中 国 银 行 请按 1 ;"
		<<"\n\n\t中国人民银行请按 2 ;"
		<<"\n\n\t中国建设银行请按 3 ;"
		<<"\n\n\t中国工商银行请按 4 ;"
		<<"\n\n\t中国农业银行请按 5 ;"
		<<"\n\n\t中国交通银行请按 6 ;"
		<<"\n\n\t返回上 一 层请按 0 ;"<<endl;
	cin>>x;
	if(1<=x&&x<=6){
		system("cls");
		cout<<"请输入您的银行卡号码,回车键结束:";
		string id;
		cin>>id;
		cout<<"请输入您的银行卡密码,回车键结束:";
		cin>>id;
		cout<<"请输入您所要充值的金额,回车键结束:";
		int j;
		cin>>j;
		//if(p->phone==a)
		p->huafei=p->huafei+j;
		cout<<"您的充值已完成,你的余额为:"<<p->huafei<<"元"<<endl;
		system("pause");
	}
	else if(x==0)
		return 0;
	else
		cout<<"对不起,您的输入有误~!";
	}
}
int Phone::banli(string a)           //套餐办理
{
	string tel = a;
	Node *p=first;
	while(p->phone!=a)             //找到你的手机号码
	{
		p=p->next;
	}
	string yewu;
	int x;
	for(;;){
		system("cls");
	cout<<"\n\n\t开通19元包月套餐请按 1 ;"
		<<"\n\n\t开通29元包月套餐请按 2 ;"
		<<"\n\n\t开通49元包月套餐请按 3 ;"
		<<"\n\n\t开通99元包月套餐请按 4 ;"
		<<"\n\n\t 返 回 上 一 层 请按 0 ;"<<endl;
	cin>>x;
	switch(x)
	{
	case 0:return 0;
	case 1:yewu = "19元包月套餐";break;
	case 2:yewu = "29元包月套餐";break;
	case 3:yewu = "49元包月套餐";break;
	case 4:yewu = "99元包月套餐";break;
	default:cout<<"对不起,您的输入有误~!";
	}
	if(x==1||x==2||x==3||x==4){
	p->yewu=yewu;
	cout<<"您已开通"<<p->yewu<<",即日起开始生效。"<<endl;
	system("pause");
	}
	}
}

int Phone::tingji(string a)
{
	system("cls");
	Node *p=first;
	while(p->phone!=a)              //找到你的手机号码
	{
		p=p->next;
	}
	char k;
	if(p->zhuangtai!=true)
	{
		cout<<"您的手机卡已停机,是否开通(Y/N)?";
		cin>>k;
		if(k=='Y'||k=='y'){
			p->zhuangtai=true;
			cout<<"您的手机卡已重新开通。按任意键返回上一层~!"<<endl;
			system("pause");
		}
			return 0;
	}
	else
	{
		cout<<"您的手机卡确定要停机(Y/N)?";
		cin>>k;
		if(k=='Y'||k=='y'){
			p->zhuangtai=false;
			cout<<"您的手机卡已停机。按任意键返回上一层~!"<<endl;
			system("pause");
		}
			return 0;
	}
}

int Phone::rengong()               //人工服务,想要人性化服务,请拨打10086按0!
{
	system("cls");
	cout<<"\n\t您好,000"<<rand()%100+1
		<<"号客服为您服务~!"<<endl;
	Sleep(1000);
	cout<<"... ...\n";
	Sleep(1000);
	cout<<"... ...\n";
	Sleep(1000);
	cout<<"... ...\n";
	Sleep(1000);
	cout<<"感谢您的来电,谢谢再见~!"<<endl;
	system("pause");
	return 0;
}

void Phone::bianli(int c)                 //今天谁打电话来了
{
	system("cls");
	string ting = "  ";
	Node *p = first->next;
	int count=0;
	cout<<"\n今天查询的号码情况如下:";
	while(count<c-1){ 
	if(p->zhuangtai!=true)
		ting = "已停机";
	cout<<"\n号码:"<<p->phone
		<<'\n'<<ting
		<<"\n已开通"<<p->yewu<<";"
		<<"\n套餐使用情况如下:"
		<<"余额为"<<p->huafei<<"元;"
	    <<"剩余流量为"<<p->liuliang<<"MB;"
	    <<"剩余短信为"<<p->duanxin<<"条."<<endl;
	p=p->next;
	count++;

	
}
}


 

源程序代码:

#include<iostream>
#include<stdlib.h>
#include<string>
#include <windows.h>
#include"aa.h"
using namespace std;

int main()
{
	Phone P;
	string a,s1;
	int ss,c=1;
	for(;;){
	cout<<"您的电话号码:";
	cin>>a;
	if(P.Insert(a,c)!=0)
	c++;
	for(;;){
		system("cls");
	cout<<"请选择语言:"                   //此处纯属搞怪~!
		<<"\n\n\t普通话请按 1 ;"
		<<"\n\n\t潮汕话请按 2 ;"
		<<"\n\n\t粤 语 请按 3 ;"
		<<"\n\n\t英 语 请按 4 ;"<<endl;

	cin>>ss;
	if(ss==4){
		system("cls");
		cout<<"对不起,该地区暂未开通英语服务,"
		    <<"请选择其他语言咨询,谢谢~!"<<endl;
		system("pause");
	}
	if(ss==1||ss==2||ss==3)
		break;
	}
	//system("cls");
	for(;;){
		system("cls");
	cout<<"\n\n\t欢迎致电10086!"
        <<"\n\n\t业务查询请按 1 ;"
		<<"\n\n\t话费充值请按 2 ;"
		<<"\n\n\t业务办理请按 3 ;"
		<<"\n\n\t停 开 机请按 4 ;"
		<<"\n\n\t人工服务请按 0 ;"
		<<"\n\n\t挂 机 请按 999 ;"<<endl;
	int b;
	cin>>b;
	switch(b)
	{
	case 1:P.chaxun(a);break;           //查询话费、流量之类的
	case 2:P.chongzhi(a);break;         //手机充值
	case 3:P.banli(a);break;            //套餐办理
	case 4:P.tingji(a);break;           //停机?
	case 0:P.rengong();break;           //人工服务,有惊喜哦!
	case 999:cout<<"感谢您的来电,祝您生活愉快,再见~!";break;
	default:cout<<"对不起,该服务尚未开启。"<<endl;
	}
	if(b==999){
		system("pause");
		break;
	}
	}
	system("cls");
	cout<<"\n拨打10086请按任意键回车~!"
		<<"\n如无需重新拨打10086咨询,请按88(拜拜)结束~!";
		cin>>s1;
	if(s1=="88")
	{
		P.bianli(c);
		system("pause");
		return 0;
	}
	}
}


以下是调试运行情况:

拨打10086:注:图片中电话号码为您的电话号码;

接通电话:

界面:

查询:

充值:


套餐办理:

停/开机:

人工服务:

挂机:

再次拨打:

最后这一个属于

中国移动内部的页面







评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值