最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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è)簡單的個(gè)人收支管理系統(tǒng),至少包括如下功能:

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

1)為了簡化用戶的輸入,類別編碼由字母和數(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 購買臺(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;/*日期,收入/支出 金額 收入來源/支出目的*/


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語言如何輸出中文

    C語言如何輸出中文

    這篇文章主要介紹了C語言如何輸出中文問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • C語言用函數(shù)指針實(shí)現(xiàn)一個(gè)特別的計(jì)算器

    C語言用函數(shù)指針實(shí)現(xiàn)一個(gè)特別的計(jì)算器

    函數(shù)指針是一個(gè)指針變量,它可以存儲(chǔ)函數(shù)的地址,然后使用函數(shù)指針,下面這篇文章主要給大家介紹了關(guān)于C語言用函數(shù)指針實(shí)現(xiàn)計(jì)算器的方法,需要的朋友可以參考下
    2022-07-07
  • C++學(xué)習(xí)之初始化列表詳解

    C++學(xué)習(xí)之初始化列表詳解

    這篇文章主要為大家詳細(xì)介紹了C++中初始化列表的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定的幫助,需要的小伙伴可以了解一下
    2023-03-03
  • Qt使用TabWidget實(shí)現(xiàn)多窗體功能

    Qt使用TabWidget實(shí)現(xiàn)多窗體功能

    Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,本章將重點(diǎn)介紹TabWidget標(biāo)簽組件的常用方法及靈活運(yùn)用,需要的朋友可以參考下
    2023-12-12
  • VS2022添加代碼模板的實(shí)現(xiàn)步驟(圖文)

    VS2022添加代碼模板的實(shí)現(xiàn)步驟(圖文)

    使用代碼模板即可實(shí)現(xiàn)像內(nèi)置函數(shù)那樣,只需寫幾個(gè)字母,便能提示自動(dòng)補(bǔ)全,本文主要介紹了VS2022添加代碼模板的實(shí)現(xiàn)步驟,感興趣的可以了解一下
    2024-06-06
  • C語言for循環(huán)嵌套for循環(huán)在實(shí)踐題目中應(yīng)用詳解

    C語言for循環(huán)嵌套for循環(huán)在實(shí)踐題目中應(yīng)用詳解

    初學(xué)C語言,常常遇到for循環(huán)中嵌套個(gè)for循環(huán),初學(xué)者對(duì)于這種形式總是一知半解,這次我就整理了常見的for循環(huán)嵌套for循環(huán)的題目,我們一起爭取一舉拿下這類題。學(xué)廢他們,以后再見到就不怕啦!每天都要學(xué)一點(diǎn)呀。加油,奮斗的我們
    2022-05-05
  • C語言版掃雷游戲

    C語言版掃雷游戲

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

    C/C++ProtoBuf使用小結(jié)

    ProtoBuf全稱:protocol buffers,直譯過來是:“協(xié)議緩沖區(qū)”,是一種與語言無關(guān)、與平臺(tái)無關(guān)的可擴(kuò)展機(jī)制,用于序列化結(jié)構(gòu)化數(shù)據(jù),這篇文章主要介紹了C/C++ProtoBuf使用,需要的朋友可以參考下
    2024-01-01
  • 詳解C++作用域與生命周期

    詳解C++作用域與生命周期

    這篇文章主要介紹了C++作用域與生命周期的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C語言數(shù)組全面詳細(xì)講解

    C語言數(shù)組全面詳細(xì)講解

    數(shù)組是一組有序的數(shù)據(jù)的集合,數(shù)組中元素類型相同,由數(shù)組名和下標(biāo)唯一地確定,數(shù)組中數(shù)據(jù)不僅數(shù)據(jù)類型相同,而且在計(jì)算機(jī)內(nèi)存里連續(xù)存放,地址編號(hào)最低的存儲(chǔ)單元存放數(shù)組的起始元素,地址編號(hào)最高的存儲(chǔ)單元存放數(shù)組的最后一個(gè)元素
    2022-05-05

最新評(píng)論

宁都县| 开鲁县| 湟中县| 南康市| 会理县| 中西区| 高邮市| 德清县| 濮阳市| 赞皇县| 和政县| 吕梁市| 金山区| 饶河县| 博客| 南汇区| 南和县| 五家渠市| 贡山| 淅川县| 遵义县| 海盐县| 叶城县| 德化县| 清涧县| 淄博市| 志丹县| 长葛市| 龙陵县| 佛教| 余干县| 甘孜县| 乌恰县| 额尔古纳市| 思南县| 报价| 郎溪县| 洛南县| 海淀区| 三河市| 舟山市|