欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C/C++實(shí)現(xiàn)個(gè)人收支系統(tǒng)的示例代碼

 更新時(shí)間:2020年06月16日 09:08:58   作者:Jimobbb  
這篇文章主要介紹了C/C++實(shí)現(xiàn)個(gè)人收支系統(tǒng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

昨天朋友委托我做一個(gè)基于C++的課程小設(shè)計(jì),題目如下:
設(shè)計(jì)一個(gè)簡(jiǎn)單的個(gè)人收支管理系統(tǒng),至少包括如下功能:

1、逐筆輸入個(gè)人收入或支出的明細(xì),寫入到文件保存,可不斷進(jìn)行輸入和追加。
輸入的明細(xì)數(shù)據(jù)包括:收支明細(xì)類別編碼、發(fā)生日期、金額、備注。

1)為了簡(jiǎn)化用戶的輸入,類別編碼由字母和數(shù)字構(gòu)成:“a”表示收入、“b”表示支
出,數(shù)字是大類下的編號(hào)。類別編碼及類別名稱的對(duì)應(yīng)由自己定義、組織在程序中
并輸出展示。比如 a1 表示收入類的生活費(fèi),b1 表示支出類的學(xué)習(xí),編號(hào)依次遞增,
類別的數(shù)量和名稱根據(jù)日常需要自擬。
例如:
收入類:a1‐生活費(fèi),a2‐獎(jiǎng)學(xué)金,a3‐稿費(fèi)
支出類:b1‐學(xué)習(xí)用品,b2‐生活用品,b3‐游戲

2)用戶輸入收支明細(xì),具體的輸入格式如下(各數(shù)據(jù)用一個(gè)或多個(gè)連續(xù)空格分隔,
直接輸入回車表示輸入結(jié)束):
請(qǐng)逐筆輸入類別編碼、發(fā)生日期、金額、備注:
輸入收支明細(xì):a1 2020‐1‐26 2000.0 1 月生活費(fèi)
輸入收支明細(xì):b1 2020‐3‐9 52.5 買書

輸入收支明細(xì):b2 2020‐5‐9 78.00 購(gòu)買臺(tái)燈
3)將輸入的明細(xì)數(shù)據(jù)寫入到一個(gè)文件中進(jìn)行保存,便于以后進(jìn)行追加和處理。

2、根據(jù)日常對(duì)個(gè)人收支管理的需要,完成匯總,進(jìn)行功能設(shè)計(jì)和編碼實(shí)現(xiàn)。需要
統(tǒng)計(jì)并輸出用戶所輸入月份各收支類別的匯總情況,輸出后,再次詢問用戶是否輸
出該月的各筆明細(xì),用戶回答是,則按明細(xì)類別的升序輸出;回答否,則不輸出。
輸入和輸出結(jié)果如下:

請(qǐng)輸入對(duì)收支類別數(shù)據(jù)進(jìn)行匯總的月份:2020‐3
2020 年 3 月收支類別數(shù)據(jù)的匯總
收入/支出 明細(xì)類別 金額
收入 生活費(fèi) 2000

支出 學(xué)習(xí)用品 200

2020 年 3 月的總收入為:1500,總支出為:1200
是否輸出該月的各筆明細(xì)(y 為輸出,其他為不輸出):y
2020 年 3 月收支類別數(shù)據(jù)的明細(xì)
類別 收入/支出 發(fā)生日期 金額 備注
生活費(fèi) 收入 2020‐03‐01 2000.0 3 月生活費(fèi)
學(xué)習(xí)用品 支出 2020‐03‐03 10.0 買鋼筆

自己敲了一遍,具體實(shí)現(xiàn)如下:

#include <iostream>
#include <stdlib.h>
#include <string.h>
#define MAX_MARK 100

using namespace std;

struct Pay
{
	char payment[2];
	int inout;
	int year;
	int month;
	int day;
	int money;
	char mark[MAX_MARK];
}ioi;/*日期,收入/支出 金額 收入來(lái)源/支出目的*/


void displayMenu()
 {
  cout <<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
  cout <<"+    個(gè)人收支管理系統(tǒng)      +"<<endl;
  cout <<"+     1. 添加收支       +"<<endl;
  cout <<"+     2. 查找收支       +"<<endl;
  cout <<"+     3. 統(tǒng)計(jì)收支       +"<<endl;
  cout <<"+     4. 輸出文件       +"<<endl;
  cout <<"+     5. 結(jié)束程序       +"<<endl;
  cout <<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
}

int addPayment(Pay ioi[],int num)
{
	char tempPayment[3];
	cout <<"請(qǐng)逐筆輸入類別編碼、發(fā)生日期、金額、備注"<<endl;
	cout <<"輸入收支明細(xì):";
	scanf("%s %d-%d-%d %d %s",ioi[num].payment,&ioi[num].year,&ioi[num].month,&ioi[num].day,&ioi[num].money,ioi[num].mark);
	if(ioi[num].payment[0]=='a'){
		ioi[num].inout = 1;
	}else{
		ioi[num].inout = 0;
	}
	num++;
	return num;
};

void findPayment(Pay ioi[],int num)
{
	int kind;
	int i;
	int flag=0;
	int tempMonth=0,tempYear=0;
	cout <<"請(qǐng)輸入想要查找的目標(biāo)(1為年月,2為類別):"<<endl;
	cin >> kind;
	if(kind == 1){
		cout << "請(qǐng)輸入查找的年月(XXXX-XX):";
		scanf("%d-%d",&tempYear,&tempMonth);
		for(i=0;i<num;i++){
			if(ioi[i].year==tempYear && ioi[i].month== tempMonth){
				cout << "找到了!";
				if(ioi[i].inout == 1){
					cout <<"收入 ";
				}
				if(ioi[i].inout == 0){
					cout <<"支出 ";
				} 
				cout <<ioi[i].money;
				cout << '\t';
				cout <<ioi[i].mark<<endl;
			}
		}
	}
	char tempPayment[2];
	if(kind == 2){
		cout <<"請(qǐng)輸入查找的類別:";
		cin >> tempPayment;
		for(i=0;i<num;i++){
			if(ioi[i].payment[0] == tempPayment[0] && ioi[i].payment[1] == tempPayment[1]){
				cout <<"找到了!";
				if(ioi[i].inout == 1){
					cout <<"收入 ";
				}
				if(ioi[i].inout == 0){
					cout <<"支出 ";
				} 
				cout <<ioi[i].money;
				cout << '\t';
				cout <<ioi[i].mark<<endl;
			}
		}
	}
};


void sumPayment(Pay ioi[],int num)
{
	int i;
	int sumYear=0;
	int sumMonth=0;
	int judge=0;
	cout <<"請(qǐng)輸入對(duì)收支類別數(shù)據(jù)進(jìn)行匯總的月份:";
	scanf("%d-%d",&sumYear,&sumMonth);
	printf("%d年%d月收支類別數(shù)據(jù)的匯總:\n",sumYear,sumMonth); 
	cout << "收支\t明細(xì)\t金額" <<endl;
	for(i=0;i<num;i++){
		if(ioi[i].year==sumYear && ioi[i].month==sumMonth){
			if(ioi[i].inout == 1){
				cout <<"收入 ";
			}
			if(ioi[i].inout == 0){
				cout <<"支出 ";
			}
			cout <<ioi[i].money;
			cout << '\t';
			cout <<ioi[i].mark<<endl;
		}
	}
	
	int sumIn=0,sumOut=0;
	for(i=0;i<num;i++){
		if(ioi[i].inout == 1){
			sumIn+= ioi[i].money;
		}
		if(ioi[i].inout == 0){
			sumOut+= ioi[i].money;
		}
	}
	printf("%d年%d月的總收入為:%d 總支出為:%d\n",sumYear,sumMonth,sumIn,sumOut); 
	
	cout <<"是否輸出各筆明細(xì):(是1否0):";
	cin >>judge;
	if(judge==1){
		printf("%d年%d月收支類別數(shù)據(jù)的明細(xì):\n",sumYear,sumMonth); 
		cout <<"類別\t收入\t支出\t發(fā)生日期\t金額\t備注"<<endl;
		for(i=0;i<num;i++){
			if(ioi[i].payment[0] == 'a' &&ioi[i].payment[0] == '1')
					cout <<"生活費(fèi) ";
			if(ioi[i].payment[0] == 'a' &&ioi[i].payment[0] == '2')
					cout <<"獎(jiǎng)學(xué)金 ";
			if(ioi[i].payment[0] == 'a' &&ioi[i].payment[0] == '3')
					cout <<"稿費(fèi) ";
			if(ioi[i].payment[0] == 'b' &&ioi[i].payment[0] == '1')
					cout <<"學(xué)習(xí)用品 ";
			if(ioi[i].payment[0] == 'b' &&ioi[i].payment[0] == '2')
					cout <<"生活用品 ";
			if(ioi[i].payment[0] == 'b' &&ioi[i].payment[0] == '3')
					cout <<"游戲 ";
		
			if(ioi[i].inout == 1){
				cout <<"收入\t";
			}
			if(ioi[i].inout == 0){
				cout <<"支出\t";
			}
			cout <<ioi[i].money;
			cout << '\t';
			cout <<ioi[i].mark<<endl;
		}
	}
};

void writeFile(Pay ioi[])
{
	FILE *fp=NULL;
	int i=0;

	fp=fopen("payment.txt","wb");

	if(fp==NULL)
	{
		cout <<"打開文件出錯(cuò)!"<<endl;
		exit(0);
	}
	fwrite(&ioi,sizeof(struct Pay),1,fp);
	cout <<"信息已保存到文payment.txt中"<<endl;
	fclose(fp);
};

void sortMoney(Pay ioi[],int length)	//冒泡排序 
{
	int i=0,j=0,k=0;
	Pay temp;
	for(i=0;i<length;i++){
		k=i;
		for(j=i+1;j<length;j++)
			if(ioi[j].money>ioi[k].money)
				k=j;
  temp=ioi[k];
  ioi[k]=ioi[i];
  ioi[i]=temp;
	}
}

int main()
{
	int allNum=0;
	int choice=0;
	struct Pay ioi[50];
 while(1)
 {
		displayMenu();
		cout<<"請(qǐng)選擇您的操作(1,2,3,4,5)"<<endl;
  cin>>choice;
		switch(choice)
  {
			case 1:
				allNum = addPayment(ioi,allNum);
				break;
			case 2:
				findPayment(ioi,allNum);
				break;
			case 3:
				sortMoney(ioi,allNum);
				sumPayment(ioi,allNum);
				break;
			case 4:
				writeFile(ioi);
				break;
			case 5:
				exit(0);
				break;
			default:
				cout<<"輸入不合法,重新輸入"<<endl;
				break;
		}
	}
}

總結(jié)

到此這篇關(guān)于C/C++實(shí)現(xiàn)個(gè)人收支系統(tǒng)的示例代碼的文章就介紹到這了,更多相關(guān)c++ 個(gè)人收支系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++使用easyX庫(kù)實(shí)現(xiàn)三星環(huán)繞效果流程詳解

    C++使用easyX庫(kù)實(shí)現(xiàn)三星環(huán)繞效果流程詳解

    EasyX是針對(duì)C/C++的圖形庫(kù),可以幫助使用C/C++語(yǔ)言的程序員快速上手圖形和游戲編程。這篇文章主要介紹了C++使用easyX庫(kù)實(shí)現(xiàn)三星環(huán)繞效果,需要的可以參考一下
    2022-10-10
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單三子棋程序

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單三子棋程序

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單三子棋程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 一起來(lái)學(xué)習(xí)C語(yǔ)言的字符串轉(zhuǎn)換函數(shù)

    一起來(lái)學(xué)習(xí)C語(yǔ)言的字符串轉(zhuǎn)換函數(shù)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的字符串轉(zhuǎn)換函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C++多線程之帶返回值的線程處理函數(shù)解讀

    C++多線程之帶返回值的線程處理函數(shù)解讀

    這篇文章主要介紹了C++多線程之帶返回值的線程處理函數(shù)解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語(yǔ)言詳細(xì)分析講解內(nèi)存管理malloc realloc free calloc函數(shù)的使用

    C語(yǔ)言詳細(xì)分析講解內(nèi)存管理malloc realloc free calloc函數(shù)的使用

    C語(yǔ)言內(nèi)存管理相關(guān)的函數(shù)主要有realloc、calloc、malloc、free等,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言內(nèi)存管理realloc、calloc、malloc、free函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 定義vim配置文件vimrc用于c/c++編程

    定義vim配置文件vimrc用于c/c++編程

    vim作為L(zhǎng)inux下廣受贊譽(yù)的代碼編輯器,其獨(dú)特的純命令行操作模式可以很大程度上方便編程工作,通過自定義vim配置文件可以實(shí)現(xiàn)對(duì)vim功能的個(gè)性化設(shè)置。這篇文章主要介紹了定義vim配置文件vimrc,用于c/c++編程 ,需要的朋友可以參考下
    2018-10-10
  • C++ pair的用法案例詳解

    C++ pair的用法案例詳解

    這篇文章主要介紹了C++ pair的用法案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C++中關(guān)于多態(tài)實(shí)現(xiàn)和使用方法

    C++中關(guān)于多態(tài)實(shí)現(xiàn)和使用方法

    這篇文章主要介紹了C++中關(guān)于多態(tài)實(shí)現(xiàn)和使用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++之std::vector刪除元素的幾種方式及區(qū)別說明

    C++之std::vector刪除元素的幾種方式及區(qū)別說明

    這篇文章主要介紹了C++之std::vector刪除元素的幾種方式及區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語(yǔ)言版掃雷小游戲

    C語(yǔ)言版掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言版的掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論