• 我的第一个C++程序( C++语言程序设计项目任务书 )


    帮同学写的,不面向对象的面向对象

    C++语言程序设计项目任务书

    一、目的与要求:

    1、目的:

    (1)要求学生达到熟练掌握C++语言的基本知识和技能;

    (2)基本掌握面向对象程序设计的基本思路和方法;

    (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

    2、基本要求:

    (1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;

    (2)要求在设计的过程中,建立清晰的类层次;

    (3)功能用菜单实现

    (4)数据的输入输出可根据用户选择,从文件或键盘输入。

    (5)提交项目源码(带注释)和报告,报告包括设计思路,系统功能,调试过程,程序代码,

    (6)提交完整的项目实施过程报告和项目总结。

    3、创新要求:

    在基本要求达到后,可进行创新设计。例如加入类的派生和新的属性及功能等。

    二、评分标准:

    1、完成基本功能:10分;

    2、设计报告及使用说明书:5分;

    3、创新功能:0-5分。

    三、项目内容列表

    项目1:学生毕业设计管理系统

    某学校有本科生若干。需要存储这些学生的编号、姓名、年级和班级、论文题目、指导老师和成绩,并显示全部信息。

    要求:

    1)其中,学生编号在生成学生信息时同时生成,每输入一个学生信息编号顺序加1

    2)能按姓名或者编号显示、查找、增加、删除和保存学生的信息

     

    项目2:教师课程管理系统

    某学校有课程若干。需要存储这些课程的编号、名称、学时、类型,老师的编号、姓名,并显示全部信息。 其中类型分为基础课、专业课、选修课等。

    要求:

    1)其中,课程编号在生成课程信息时同时生成,每输入一个课程信息编号顺序加1

    2)能按课程名字或者老师编号显示、查找、增加、删除和保存各种课程和老师信息。

     

    项目3:公交信息管理系统

    某公交公司有车辆若干。现在,需要存储这些公交的编号、名称、类型、起点站和终点站,并显示全部信息。 类型包括普通车、空调车、双层车等。

    要求:

    1)其中,公交编号在生成公交车信息时同时生成,每输入一辆公交车信息编号顺序加1

    2)能按名称或者编号显示、查找、增加、删除和保存各类公交的信息

     

    项目4:家具商店管理系统

    某家具商店现有家具若干,类型包括椅、桌、柜和床等。要求对所有的库存家具都能按照名称或编号进行显示、查找、增加和删除、保存的功能。

     

    项目5:服装商店管理系统

    某服装商店现有服装若干,类型包括:外衣、衬衣、裤子和套装。要求对所有的库存服装都能按照名称或编号进行显示、查找、增加和删除、保存的功能。

     

    项目6:新科公司的设备管理系统

    新科公司设备若干,类型包括普通电视机、DVD、带DVD的电视机,要求对所有的库存设备都能按照品名进行显示、查找、增加和删除、保存的功能。

     

    项目7:图书信息管理系统

    某公司有图书若干。现在,需要存储这些图书的编号、名称、类型、价格,并显示全部信息。 类型包括工具书、专业书、杂志等。

    要求:

    1)其中,图书编号在生成图书信息时同时生成,每输入一本图书信息编号顺序加1

    2)能按名称或者编号显示、查找、增加、删除和保存各类图书的信息

    #include<iostream>
    #include<string>
    #include<vector>
    #include<fstream>
    #include<set>
    using namespace std;
    
    //使用宏定义输出文件名
    #define file_name "bus.txt"
    
    //Bus类
    class Bus
    {
    public:
    	//编号、名称、类型、起点站和终点站
    	//公交编号在生成公交车信息时同时生成,每输入一辆公交车信息编号顺序加1。
    	string name;//名称
    	int leixing;//类型:0.其它.1.普通车、2.空调车、3.双层车
    	string qidian,zhongdian;//起点、终点站
    	Bus(string nam1,int typ,string qd,string zd) //带参数构造
    	{
    		name=nam1;
    		leixing=typ;
    		qidian=qd;
    		zhongdian=zd;
    	}
    };
    
    //全局Global类
    class Global
    {
    public:
    	vector<Bus> bus;	
    	bool addBus(string nam1,int typ,string qd,string zd);
    	bool deleteBus(int num);
    	void displayBus(vector<Bus>::iterator iter1);
    	void Global::displayAllBus();
    	void findBus1(string nam1);
    	void findBus2(int typ);
    	void findBus3(string qd);
    	void findBus4(string zd);
    	void readfromtxt();
    	void savetxt();
    	void allStop();
    } ans;
    
    //添加车辆
    bool Global::addBus(string nam1,int typ,string qd,string zd)
    {
    	Bus tmp(nam1,typ,qd,zd);
    	for(int i=0;i<bus.size();i++)
    	{
    		if( nam1==bus[i].name )
    		{
    			cout << "该名称的公交车已经存在" << endl;
    			return false;
    		}
    	}
    	bus.push_back(tmp);
    	cout<< "添加公交车"<<tmp.name<<"成功" << endl;
    	return false;
    }
    
    //删除车辆
    bool Global::deleteBus(int num)
    {
    	if(num>bus.size()||num<1)
    	{
    		cout << "编号输入错误" << endl;
    		return false;
    	}
    	vector<Bus>::iterator iter1;
    	iter1=bus.begin()+num-1;
    	bus.erase(iter1);
    	return true;
    }
    
    //显示全部信息(调用显示单一车辆的方法)
    void Global::displayAllBus()
    {
    	////编号、名称、类型、起点站和终点站
    	if( bus.size()==0 ) 
    	{
    		cout << "没有车辆信息" << endl;
    		return;
    	}
    	cout << "编号\t名称\t类型\t起点站\t\t终点站" << endl;	
    	for(vector<Bus>::iterator iter1=bus.begin();iter1!=bus.end();iter1++)
    	{
    		displayBus(iter1);
    	}
    }
    
    //显示单一车辆
    void Global::displayBus(vector<Bus>::iterator iter1)
    {
    	cout << (int)(iter1-bus.begin()+1) << "\t" << iter1->name << "\t";
    	switch( iter1->leixing )
    	{
    	case 1:cout << "普通车";break;
    	case 2:cout << "空调车";break;
    	case 3:cout << "双层车";break;
    	default:cout << "其它";break;
    	}
    	cout << "\t" << iter1->qidian << "\t\t" << iter1->zhongdian <<endl;
    }
    
    //用STL的set实现无重复显示全部车站
    void Global::allStop()
    {
    	if( bus.size() == 0 )
    	{
    		cout << "无车辆信息,无法查询" << endl;
    		return;
    	}
    	set<string> alstop;
    	for(vector<Bus>::iterator iter1=bus.begin();iter1!=bus.end();iter1++)
    	{
    		if( !alstop.count( iter1->qidian ) )
    			alstop.insert( iter1->qidian );
    		if( !alstop.count( iter1->zhongdian) )
    			alstop.insert( iter1->zhongdian);
    	}
    	cout << "所有的车站:" << endl;
    	for(set<string>::iterator iter2=alstop.begin();iter2!=alstop.end();iter2++)
    	{
    		cout << *iter2 << " ";
    	}
    	cout << endl;
    }
    
    //按名称查找
    void Global::findBus1(string nam1)
    {
    	bool flag(true);
    	for(vector<Bus>::iterator iter1=bus.begin();iter1!=bus.end();iter1++)
    	{
    		if( iter1->name==nam1 )
    		{
    			if(flag) {
    				cout << "编号\t名称\t类型\t起点站\t终点站" << endl;	
    				flag=false;
    			}
    			displayBus(iter1);
    		}
    	}
    	if(flag)
    	{
    		cout << "没有找到名称为" << nam1 << "的公交车" << endl;
    	}
    }
    
    //按类型查找
    void Global::findBus2(int typ)
    {
    	//cout << "0.其它 1.普通车 2.空调车 3.双层车" << endl;
    	bool flag(true);
    	for(vector<Bus>::iterator iter1=bus.begin();iter1!=bus.end();iter1++)
    	{
    		if( iter1->leixing==typ )
    		{
    			if(flag) {
    				cout << "编号\t名称\t类型\t起点站\t终点站" << endl;	
    				flag=false;
    			}
    			displayBus(iter1);
    		}
    	}
    	if(flag)
    	{
    		cout << "没有找到类型为";
    		switch( typ )
    		{
    		case 1:cout << "普通车";break;
    		case 2:cout << "空调车";break;
    		case 3:cout << "双层车";break;
    		default:cout << "其它";break;
    		}
    		cout << "的公交车" << endl;
    	}
    }
    
    //按起点查找
    void Global::findBus3(string qd)
    {
    	bool flag(true);
    	for(vector<Bus>::iterator iter1=bus.begin();iter1!=bus.end();iter1++)
    	{
    		if( iter1->qidian==qd )
    		{
    			if(flag) {
    				cout << "编号\t名称\t类型\t起点站\t终点站" << endl;	
    				flag=false;
    			}
    			displayBus(iter1);
    		}
    	}
    	if(flag)
    	{
    		cout << "没有找到起点为" << qd << "的公交车" << endl;
    	}
    }
    
    //按终点查找
    void Global::findBus4(string zd)
    {
    	bool flag(true);
    	for(vector<Bus>::iterator iter1=bus.begin();iter1!=bus.end();iter1++)
    	{
    		if( iter1->zhongdian==zd )
    		{
    			if(flag) {
    				flag=false;
    				cout << "编号\t名称\t类型\t起点站\t终点站" << endl;	
    			}
    			displayBus(iter1);
    		}
    	}
    	if(flag)
    	{
    		cout << "没有找到终点为" << zd << "的公交车" << endl;
    	}
    }
    
    //读取文件 文件名在程序最上面
    void Global::readfromtxt()
    {
    	ifstream fin(file_name);
    	string nam1,qd,zd;
    	int typ;
    	while(fin >> nam1 >> typ >> qd >> zd)
    	{
    		addBus(nam1,typ,qd,zd);		
    	}
    	fin.close();
    	cout << "读取到" << bus.size() << "组数据" << endl;
    	system("pause");
    }
    
    
    //存储文件,文件名在程序最上面
    void Global::savetxt()
    {
    	ofstream fout(file_name);
    	for(vector<Bus>::iterator iter1=bus.begin();iter1!=bus.end();iter1++)
    	{
    		fout << iter1->name << endl;
    		fout << iter1->leixing << endl;
    		fout << iter1->qidian << endl;
    		fout << iter1->zhongdian << endl;
    	}
    	fout.close();
    	cout << "存储完毕" << endl;
    }
    
    //添加车辆菜单
    void menu_add()
    {
    	cout << "->添加车辆" << endl;
    	cout << "您正在添加第" << ans.bus.size()+1 <<"辆车" << endl;
    	cout << "请输入车辆名称:" << endl;
    	string name,qidian,zhongdian;
    	int typ;
    	cin >> name;
    	cout << "请输入车辆类型:" << endl << "0.其它 1.普通车 2.空调车 3.双层车" << endl;
    	cin >> typ;
    	cout << "请输入车辆起点:" << endl;
    	cin >> qidian;
    	cout << "请输入车辆终点:" << endl;
    	cin >> zhongdian;
    	ans.addBus(name,typ,qidian,zhongdian);
    	return;
    }
    
    //删除菜单
    void menu_del()
    {
    	cout << "->删除车辆" << endl;
    	if( ans.bus.size()==0 ) 
    	{
    		cout << "没有车辆信息,无法执行删除操作" << endl;
    		return;
    	}
    	ans.displayAllBus();
    	cout << "请选择要删除的车辆的编号:" << endl;
    	int ipt;
    	cin >> ipt;
    	if(ans.deleteBus(ipt)) cout << "删除成功" << endl;
    	else cout << "删除失败" << endl;
    	return;
    }
    
    //查找菜单
    void menu_find()
    {
    	cout << "->查找车辆" << endl;
    	cout << "请选择查找方式:" << endl;
    	cout << "1.按名称" << endl;
    	cout << "2.按类型" << endl;
    	cout << "3.按起点" << endl;
    	cout << "4.按终点" << endl;
    	cout << "5.返回" << endl;
    	int ipt,typ;
    	string str;
    	cin >> ipt;
    	switch(ipt)
    	{
    	case 1:cout << "请输入要查找的车辆名称:" << endl;cin >> str;
    		ans.findBus1(str);
    		break;
    	case 2:cout << "请输入要查找的车辆类型:" << endl << "0.其它 1.普通车 2.空调车 3.双层车" << endl;cin >> typ;ans.findBus2(typ);break;
    	case 3:cout << "请输入要查找的车辆起点:" << endl;cin >> str;ans.findBus3(str);break;
    	case 4:cout << "请输入要查找的车辆终点:" << endl;cin >> str;ans.findBus4(str);break;
    	case 5:return;
    	default:cout << "输入有误" << endl;
    	}
    }
    
    //主菜单
    void menu1()
    {
    	int ipt;
    	system("cls");
    	while(true)
    	{
    		cout << "----------------------------------" << endl;
    		cout << "     欢迎使用公交信息管理系统     " << endl;
    		cout << "----------------------------------" << endl << endl;
    		cout << "请选择您要进行的操作:" << endl;
    		cout << "      1.添加车辆" << endl;
    		cout << "      2.删除车辆" << endl;
    		cout << "      3.显示全部车辆" << endl;
    		cout << "      4.查找车辆" << endl;
    		cout << "      5.查看所有车站" << endl;
    		cout << "      6.储存到文件" << endl;		
    		cout << "      7.退出程序" << endl;
    		cin >> ipt;
    		switch(ipt)
    		{
    		case 1:menu_add();break;
    		case 2:menu_del();break;
    		case 3:ans.displayAllBus();break;
    		case 4:menu_find();break;
    		case 5:ans.allStop();break;
    		case 6:ans.savetxt();break;
    		case 7:exit(0);break;
    		default:cout << "输入有误,请重新输入" << endl;break;
    		}
    		system("pause");
    		system("cls");
    	}	
    }
    
    //程序入口,选择数据来源
    int main()
    {
    	int ipt1;
    	string str1;
    	cout << "----------------------------------" << endl;
    	cout << "     欢迎使用公交信息管理系统     " << endl;
    	cout << "----------------------------------" << endl << endl;
    	
    retry:	cout << "请选择数据来源:" << endl;
    	cout << "1.从文件读入" << endl;
    	cout << "2.键盘录入" << endl;
    	cout << "请输入:" << endl;
    	cin >> ipt1;
    	switch(ipt1)
    	{
    	case 1:ans.readfromtxt();break;
    	case 2:break;
    	default:cout << "输入错误,请重新输入" << endl;goto retry;break; 
    	}
    	menu1();
    	return 0;
    }
    

      

  • 相关阅读:
    Java在控制台运行IDE工具编写的程序
    mysql数据库执行存储过程问题
    Java之正则表达式在字符串中查找中文
    java之endwith()方法以及正则表达式匹配中文
    工具资源 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
    5、概率图模型 Inference-Variable_Elimination
    4、概率图模型:Template Modles
    3、概率图模型:Local Structure in Markov Network
    2、概率图模型: Markov Random Fields
    1、概率图模型: Bayesian Networks
  • 原文地址:https://www.cnblogs.com/laputa/p/2125881.html
Copyright © 2020-2023  润新知