用C++编写的课程设计——学院资产管理系统(非图形界面)

课设的要求:

1、要求利用面向对象的编程思想来完成系统的设计;
2、要求在设计的过程中,建立清晰的类层次;
3、在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;
4、在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。
5、学院固定资产管理系统主要负责学院各顶资产的常规管理工作。
系统中的固定资产主要有台式计算机、便携式计算机、服务器、打印机、投影仪等类别。每件(台、套)有资产编号、资产名、制造公司、购买时间、单价、数量、使用人、性能参数等。由于这些不同类别的资产有相同内容,故可设计一个含有公共信息的父类。
设计“学院固定资产管理系统”,使之能提供以下功能:
1)添加资产;
2)查询资产:按资产类别查询、按资产使用人查询、按资产编号查询;
3)资产信息的删除和修改;
4)资产信息统计:如按资产类别统计、按资产金额统计等。

类的建立
注:类名取的是资产姓名前两个字的首字母。e.g:计算机——Js

菜单部分
部分功能展示:
编辑功能
添加功能
源代码:

#include<iostream> 
#include<string>
#include<fstream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
//record代表记录的所以资产件数 
int record;
void save();
void read();
//Content类用来记录参数 
class Content{
	protected:
		string num,name,maker;
		int time;
		double price;
		string user,parameter;
};
//Way类包含对参数操作的函数 
class Way:public Content{
	public:
		void show();
		void edit();
		void add();
		void getcontent(string s1,string s2,string s3,int n1,double n2,string s4,string s5);
		void del(); 
		string backnum();
		string backname();
		string backmaker();
		int backtime();
		double backprice();	
		string backuser();
		string backparameter();
};
//存放资产 
Way bigguy[100];

void Way::show(){
	cout<<"\t资产编号:"<<num<<endl;
	cout<<"\t资产名:"<<name<<endl;
	cout<<"\t制造公司:"<<maker<<endl;
	cout<<"\t购买时间:"<<time<<endl;
	cout<<"\t单价:"<<price<<endl;
	cout<<"\t使用人:"<<user<<endl;
	cout<<"\t性能参数:"<<parameter<<endl;
	cout<<"\t——————————————\n" ;}
void Way::edit(){
	int chose,mark=1,i;
	string temp;
	cout<<"\t选择要改表的内容\n";
	cout<<"\t 1.资产编号\t 2.资产名\t 3.制造公司\n";
	cout<<"\t 4.购买时间\t 5.单价 \t 6.使用人\n";
	cout<<"\t 7.性能参数\n"; 
	cin>>chose;
	switch(chose){
		case 1:{cout<<"\t资产编号:";
			while(1){
				cin>>temp;
				for(i=0;i<record;i++)
					if(bigguy[i].backnum()==temp){
						cout<<"\t该编号已存在!请重新输入:";
						break;}
			if(i>=record){
				num=temp;
				break;
			}		
		}
			break;
		}
		case 2:{cout<<"\t资产名:";
			cin>>name;
			break;
		}
		case 3:{cout<<"\t制造公司:";
			cin>>maker;
			break;
		}
		case 4:{cout<<"\t购买时间(如:20200121):";
			while(1){
				cin>>time;
				if(time<20201232&&time>20000101)
					break;				
				else cout<<"\t输入的时间有误,请重输:";
			} 
			break;
		}
		case 5:{cout<<"\t单价(元):";
			while(1)
				{
					cin>>price;
					if(cin.fail()||price<0)
					{	
						cout<<"\t请输入有效数字:";
						cin.clear();
						cin.ignore(1024,'\n');
					}
					else
					break;
				}
			break;
		}
		case 6:{cout<<"\t使用人:";
			cin>>user;
			break;
		}
		case 7:{cout<<"\t性能参数:";
			cin>>parameter;
			break;
		}
		default:{cout<<"\t无效选择";
			mark==0;
		}
	}
	if(mark==1)
		cout<<"\t修改完成\n";
	else
		cout<<"\t请重新输入!";
}
void Way::add(){
	int i;
	cout<<"\t请按要求输入信息:\n";
	cout<<"\t 1.资产编号:";	
		while(1){
			cin>>num;
			for(i=0;i<record;i++)
				if(bigguy[i].backnum()==num){
					cout<<"\t该编号已存在!请重新输入:";
					break;
				}
			if(i>=record)break;		
		}
	cout<<"\t 2.制造公司:";	cin>>maker;
	cout<<"\t 3.购买时间(例:20200102):";
		while(1){
			cin>>time;
			if(cin.fail()){
			cin.clear();
			cin.ignore(100,'\n');
			cout<<"\t输入的时间有误,请重输:";
			}
			else if(time<20201232&&time>20000101)
				break;
		} 
	cout<<"\t 4.单价(元):";		
		while(1)
			{
				cin>>price;
				if(cin.fail()||price<0)
				{	
					cout<<"\t请输入有效数字:";
					cin.clear();
					cin.ignore(1024,'\n');
				}
				else
				break;
			}
	cout<<"\t 5.使用人:";	cin>>user;
	cout<<"\t 6.性能参数:";	cin>>parameter;
	cout<<"\t资产添加完毕!\n"; 
} 
void Way::getcontent(string s1,string s2,string s3,int n1,double n2,string s4,string s5){
	num=s1;	name=s2; maker=s3; time=n1; price=n2; user=s4; parameter=s5;
}
void Way::del(){
	num='\0';name='\0';maker='\0';time=0;price=0;user='\0';parameter='\0';
	cout<<"\t删除完成!\n";
}
string Way::backnum(){
	return num;
}
string Way::backname(){
	return name;
}
string Way::backmaker(){
	return maker;
}
int Way::backtime(){
	return time;
}
double Way::backprice(){
	return price;
}
string Way::backuser(){
	return user;
}
string Way::backparameter(){
	return parameter;
}

class Ts:public Way{
	public:
		Ts(){
			name="台式计算机";}
};
class Bx:public Way{
	public:
		Bx(){
			name="便携式计算机";}
};
class Fw:public Way{
	public:
		Fw(){
			name="服务器";}
};
class Dy:public Way{
	public:
		Dy(){
			name="打印机";}
};
class Ty:public Way{
	public:
		Ty(){
			name="投影仪";}
};

void menu();
string chosekind();
void searchn(string x);
void searchu(string x);
int searchnum(string x);
void statisticskind();
void statisticsmoney();

int main(){	
	read();
	while(1){
		menu();	
	} 
	
}
void menu(){
	int chose,temp,temp_;
	string x;
	cout<<"\t——————欢迎使用 学院固定资产管理系统——————\n";
	cout<<endl;
	cout<<"\t请选择您要进行的操作:\n";
	cout<<"\t 1.添加资产 \t 2.查询资产\n" ;
	cout<<"\t 3.资产信息修改与删除 \t 4.资产信息统计\t 5.退出系统\n";
	cout<<endl;
	cout<<"\t———————————————————————————\n";
	while(1)
	{
		cin>>chose;
		if(cin.fail())
		{
			cin.clear();
			cin.ignore(1024,'\n');
		}
		else
		break;
	}
		switch(chose){
			case 1:{
				cout<<"\t选择要添加的资产类型\n";
				x=chosekind();
				if(x=="台式计算机"){
					Ts ts;
					ts.add();	
					bigguy[record]=ts;
					record++;
				}
				else if(x=="便携式计算机"){
					Bx bx; 
					bx.add();
					bigguy[record]=bx;
					record++;
				} 
				else if(x=="服务器"){
					Fw fw;
					fw.add(); 
					bigguy[record]=fw;
					record++;
				}
				else if(x=="打印机"){
					Dy dy;
					dy.add();
					bigguy[record]=dy;
					record++;
				}
				else if(x=="投影仪"){
					Ty ty;
					ty.add();
					bigguy[record]=ty;
					record++;
				}
				break;
			} 
			case 2:{
				cout<<"\t\t选择查询方式:\n";
				cout<<"\t\t\t 1.按资产类别查询\t 2.按资产使用人查询\t 3.按资产编号查询\n";
				cin>>temp;
					switch(temp){
						case 1:{
							x=chosekind();
							searchn(x);
							break;
						}
						case 2:{
							cout<<"\t请输入资产使用人姓名:";cin>>x;
							searchu(x);
							break;
						}
						case 3:{
							cout<<"\t请输入资产编号:";cin>>x;
							searchnum(x);
							break;
						}
						default:cout<<"\t请输入有效数字!\n";
					}
				break;}
			case 3:{
				cout<<"\t输入需要编辑或删除的编号:";
				cin>>x;
				temp_=searchnum(x);
				if(temp_!=-1){
					cout<<"\t请选择编辑或删除:1.编辑\t 2.删除\n";
					cin>>temp;
					switch(temp){
						case 1:bigguy[temp_].edit();break;
						case 2:bigguy[temp_].del();break;
						default:cout<<"\t请输入有效数字!\n";break;
					}}
				else cout<<"\t无此编号\n";
				
				break;
			}
			case 4:{
				cout<<"\t\t选择统计方式:\n";
				cout<<"\t\t\t1.按资产类别统计\t 2.按资产金额统计\n";
				cin>>temp;
					switch(temp){
						case 1:statisticskind();break;
						case 2:statisticsmoney();break;
						default:cout<<"\t请输入有效数字!\n"; 
					}
				break;
			}
			case 5:{	save();	cout<<"\t已退出!\n";	exit(0);	break;	}
			default:cout<<"无效选择\n";
			}
}
string chosekind(){
	int chose;
	string back;
	cout<<"\t 1.台式计算机 \t 2.便携式计算机 3.服务器\n";
	cout<<"\t 4.打印机 \t 5.投影仪\n";
	cin>>chose;
	switch(chose){
		case 1:back="台式计算机";break;
		case 2:back="便携式计算机";break;
		case 3:back="服务器";break;
		case 4:back="打印机";break;
		case 5:back="投影仪";break;
		default:cout<<"请输入有效值\n";
	}
	return back; 
}
//参数内容保存在 test.txt 文件中,同理一开始也从此文件中读取 
void read(){
	ifstream infile;
	infile.open("test.txt");
	if(!infile){
		cout<<"\t无此文件\n";return;
	}
	infile.seekg(ios::beg);
	record=0;
	int n1;
	double n2;
	string s1,s2,s3,s4,s5;
	char c;
	if(infile.eof())return;
	while(!infile.eof()){
		infile>>s1>>s2>>s3>>n1>>n2>>s4>>s5>>c;
		bigguy[record].getcontent(s1,s2,s3,n1,n2,s4,s5);
		record++;
	}
	infile.close();
}
void save(){
	int i;
	ofstream outfile("test.txt",ios::trunc);
	for(i=0;i<record;i++){
		if(bigguy[i].backtime()==0)continue;
		else 
			outfile<<bigguy[i].backnum()<<" "<<bigguy[i].backname()<<" "
				<<bigguy[i].backmaker()<<" "<<bigguy[i].backtime()<<" "
					<<bigguy[i].backprice()<<" "<<bigguy[i].backuser()<<" "<<bigguy[i].backparameter()<<endl;}
	outfile.close();
}
//通过用户搜索,searchn(ame),以下的函数命名意义相同 
void searchn(string x){
	int i;
	for(i=0;i<record;i++)
		if(bigguy[i].backname()==x)
			bigguy[i].show();
	if(i>record)cout<<"\t无此资产!\n";
} 

void searchu(string x){
	int i,mark=0;
	for(i=0;i<record;i++)
		if(bigguy[i].backuser()==x)
			{
				bigguy[i].show();
				mark=1;
			}
	if(mark==0)cout<<"\t查无此人!\n";
}
int searchnum(string x){
	int i;
	for(i=0;i<record;i++){
		if(bigguy[i].backnum()==x){
			bigguy[i].show();
			return i;
		}		
	}	
	cout<<"\t无此编号!\n";
	return -1;
} 
void statisticskind(){
	int i,n1,n2,n3,n4,n5;
	n1=n2=n3=n4=n5=0;
	for(i=0;i<record;i++){
		if(bigguy[i].backname()=="台式计算机")n1++;
		else if(bigguy[i].backname()=="便携式计算机")n2++; 
		else if(bigguy[i].backname()=="服务器")n3++;
		else if(bigguy[i].backname()=="打印机")n4++;
		else if(bigguy[i].backname()=="投影仪")n5++;	}
	cout<<"\t台式计算机\t"<<n1<<"台\n";
	cout<<"\t便携式计算机\t"<<n2<<"台\n";
	cout<<"\t服务器\t"<<n3<<"台\n";
	cout<<"\t打印机\t"<<n4<<"台\n";
	cout<<"\t投影仪\t"<<n5<<"台\n";
}
void statisticsmoney(){
	int i;
	double n1,n2,n3,n4,n5;
	n1=n2=n3=n4=n5=0.0;
	for(i=0;i<record;i++){
		if(bigguy[i].backname()=="台式计算机")n1+=bigguy[i].backprice();
		else if(bigguy[i].backname()=="便携式计算机")n2+=bigguy[i].backprice(); 
		else if(bigguy[i].backname()=="服务器")n3+=bigguy[i].backprice();
		else if(bigguy[i].backname()=="打印机")n4+=bigguy[i].backprice();
		else if(bigguy[i].backname()=="投影仪")n5+=bigguy[i].backprice();	}
	cout<<"\t台式计算机总金额(元)\t"<<n1<<endl;
	cout<<"\t便携式计算机总金额(元)\t"<<n2<<endl;
	cout<<"\t服务器总金额(元)\t"<<n3<<endl;
	cout<<"\t打印机总金额(元)\t"<<n4<<endl;
	cout<<"\t投影仪总金额(元)\t"<<n5<<endl;
}
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值