课设题目
家庭财务管理系统
课设要求
- 用户管理
- 成员管理
- 日常收入信息的录入、修改、删除
- 日常支出信息的录入、修改、删除
- 对成员的收支信息进行浏览、查询
- 按月、季、年对成员的收支情况进行统计
- 数据导入和导出
程序运行界面
核心代码
财务管理 pay.cpp
// pay.cpp : implementation file
//
#include "stdafx.h"
#include "家庭管理系统.h"
#include "pay.h"
#include"Cai.h"
#include <vector>
#include <ostream>
#include<fstream>
#include "iostream.h"
#include <string>
using namespace std;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// pay dialog
class Studentx{
public:
CString phone;
CString name;
};
vector <Studentx>stu;
int m=-1;
pay::pay(CWnd* pParent /*=NULL*/)
: CDialog(pay::IDD, pParent)
{
//{{AFX_DATA_INIT(pay)
//}}AFX_DATA_INIT
}
void pay::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(pay)
DDX_Control(pDX, IDC_COMBO3, m_flag);
DDX_Control(pDX, IDC_COMBO1, m_name);
DDX_Control(pDX, IDC_LIST1, m_pay);
//}}AFX_DATA_MAP
}
BOOL pay::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_pay.InsertColumn(0,"编号",LVCFMT_CENTER,100);
m_pay.InsertColumn(1,"名称",LVCFMT_CENTER,100);
m_pay.InsertColumn(2,"类别",LVCFMT_CENTER,100);
m_pay.InsertColumn(3,"价格",LVCFMT_CENTER,100);
m_pay.InsertColumn(4,"收入or支出",LVCFMT_CENTER,100);
m_pay.InsertColumn(5,"月份",LVCFMT_CENTER,100);
m_pay.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
showname();
ShowCai();
m_name.SetCurSel(0);
m_flag.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void pay::showname()
{
// m_list.DeleteAllItems(); // 全部清空
ifstream fin("members.txt",ios_base::in);
string a,b;
fin>>a>>b;
for(int i=0;!fin.fail();++i){
m_name.AddString(_T(a.data()));
rname=a.data();
Studentx s1;
s1.phone=a.data();
s1.name=b.data();
stu.reserve(stu.size()+1);//增加容量以防止溢出
stu.push_back(s1);
fin>>a>>b;
}
fin.close();
}
void pay::ShowCai()
{
m_pay.DeleteAllItems();
int num=ReadCai();
for(int i=0;i<num;i++)
{
m_pay.InsertItem(i,0);
m_pay.SetItemText(i,0,cai[i].id);
m_pay.SetItemText(i,1,cai[i].name);
m_pay.SetItemText(i,2,cai[i].type);
m_pay.SetItemText(i,3,cai[i].price);
m_pay.SetItemText(i,4,cai[i].flag);
m_pay.SetItemText(i,5,cai[i].time);
}
}
int pay::ReadCai()
{
CString txt_name;// 临时文件名
txt_name=rname+".txt";
MessageBox(txt_name);
FILE *file=fopen(txt_name,"r");
int a=0;
while(!feof(file))
{
fscanf(file,"%s%s%s%s%s%s",&cai[a].id,&cai[a].name,&cai[a].type,&cai[a].price,&cai[a].flag,&cai[a].time);
a++;
}
fclose(file);
a--;
return a;
}
BEGIN_MESSAGE_MAP(pay, CDialog)
//{{AFX_MSG_MAP(pay)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// pay message handlers
void pay::OnButton1()
{
// TODO: Add your control notification handler code here
CString txt_name;// 临时文件名
txt_name=rname+".txt";
CString time; //获取系统时间
CTime tm; tm=CTime::GetCurrentTime();
//time=tm.Format("%Y-%m-%d");
time=tm.Format("%m");
CString id,name,type,price,flag;// flag为输入or支出
GetDlgItem(IDC_EDIT1)->GetWindowText(id);
GetDlgItem(IDC_EDIT3)->GetWindowText(name);
GetDlgItem(IDC_EDIT2)->GetWindowText(price);
GetDlgItem(IDC_COMBO2)->GetWindowText(type);
GetDlgItem(IDC_COMBO3)->GetWindowText(flag);
if(id==""||name==""||price==""||type=="")
{
MessageBox("添加信息不能为空");
return;
}
FILE *file=fopen(txt_name,"a+");
fprintf(file,"%s %s %s %s %s %s\r\n",id,name,type,price,flag,time);
fclose(file);
MessageBox("添加成功");
ShowCai();
}
void pay::OnButton5()
{
CString txt_name;// 临时文件名
txt_name=rname+".txt";
// TODO: Add your control notification handler code here
CString id,name,type,price,flag;
GetDlgItem(IDC_EDIT1)->GetWindowText(id);
GetDlgItem(IDC_EDIT3)->GetWindowText(name);
GetDlgItem(IDC_EDIT2)->GetWindowText(price);
GetDlgItem(IDC_COMBO2)->GetWindowText(type);
GetDlgItem(IDC_COMBO3)->GetWindowText(flag);
if(id==""||name==""||price==""||type=="")
{
MessageBox("修改信息不能为空");
return;
}
int num=ReadCai();
FILE *file=fopen(txt_name,"w");
for(int i=0;i<num;i++)
{
if(strcmp(id,cai[i].id)==0)
{
strcpy(cai[i].name,name);
strcpy(cai[i].type,type);
strcpy(cai[i].price,price);
strcpy(cai[i].flag,flag);
}
fprintf(file,"%s %s %s %s %s %s\r\n",cai[i].id,cai[i].name\
,cai[i].type,cai[i].price,cai[i].flag,cai[i].time);
}
fclose(file);
MessageBox("修改成功");
ShowCai();
}
void pay::OnButton6()
{ CString txt_name;// 临时文件名
txt_name=rname+".txt";
// TODO: Add your control notification handler code here
int sel = m_pay.GetSelectionMark();
if(sel ==-1)
{
MessageBox("请先选择需要删除的菜品信息");
}
CString id= m_pay.GetItemText(sel,0);
int num=ReadCai();
FILE *file=fopen(txt_name,"w+");
for(int i=0;i<num;i++)
{
if(strcmp(id,cai[i].id)==0)
continue;
fprintf(file,"%s %s %s %s %s %s\r\n",cai[i].id,cai[i].name\
,cai[i].type,cai[i].price,cai[i].flag,cai[i].time);
}
fclose(file);
MessageBox("删除成功","提示");
ShowCai();
}
void pay::OnButton7()
{
m_pay.DeleteAllItems();
int index = m_name.GetCurSel();
CString str_name;
CString strI;
m_name.GetLBText(index,str_name);
rname=str_name;
MessageBox(rname);
ShowCai();
}
void pay::OnButton8()
{
// TODO: Add your control notification handler code here
if(MessageBox("请保存信息后退出!",NULL,MB_YESNO)==IDNO);
else CDialog::OnCancel();
}
项目源码
需要源码的小伙伴请前往
微信公众号:海轰Pro
回复: 海轰
O(∩_∩)O哈哈~