C语言程序设计---家庭财务管理系统
C语言课程设计——家庭财务管理系统
课程设计报告课程设计题目:家庭财务管理系统学生姓名:专业: 信息工程班级:指导教师:2018年1月8日1.需求分析根据家庭账务管理的需要,建立一个“家庭账务管理系统”,以方便对家庭日常收入及支出进行记录和管理。
该系统要求:①家庭月收入管理②家庭月支出管理③统计家庭总收入/总支出④系统提供收入/支出的添加、删除和修改功能。
2. 总体设计根据以上分析,本家庭账务管理系统主要包括:①从键盘键入家庭月收入、月支出数据;②查询月收入、月支出明细;③删除收入、支出数据;④修改收入、支出数据;⑤统计总收入/总支出;⑥退出系统。
除main()函数之外,系统还定义了以下函数来实现各部分内容:①add_income():添加收入数据函数。
②add_payout():添加支出数据函数。
③search_data():查找数据函数。
④initialize():初始化函数,读取文本数据。
⑤show_info():显示数据函数。
⑥count_total():统计函数,统计总收入、总支出。
⑦update_data():修改信息函数。
⑧delete_data():删除数据函数。
⑨quit():退出函数。
程序结构功能图如下:3.详细设计3.1收入管理3.2支出管理4.测试结果4.1 程序运行主菜单4.2 添加收入测试4.3 查询收入明细测试4.4 删除收入测试4.5 修改收入测试4.6 添加支出测试4.7 查询支出明细测试4.8 删除支出测试4.9 修改支出测试4.10 统计总收入/支出测试4.11 退出系统测试5.软件操作使用说明书本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示),然后按照主界面菜单指引操作即可。
6.总结编写程序之前要有一个整体的思路,不能写到哪里算哪里。
这样很容易遗漏,连续性也不好。
通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的理解。
希望在以后的课程设计中对于知识的运用能够更加的熟练。
c语言编写-家庭财务管理系统
strcpy(s[recNumber].intime,Tm.intime);
s[recNumber].out=Tm.out;
strcpy(s[recNumber].outtime,Tm.outtime);
if (fp==NULL) /*判断是否打开成功*/
{
printf("\n打开文件%s失败!按任意键结束!\n",Da);
exit(0);
}
while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) /*从文件中读取数据,是否读取成功*/
fp=fopen(Da,"ab+");
if (fp==NULL) /*判断文件是否成功打开*/
{
printf("\n 打开文件 %s 失败!按任意键结束!\n",Da);
exit(0);
}
while(fread(&ch,sizeof(money),1,fp)!=(int)NULL) /*从文件中读取数据并判断是否成功*/
scanf("%f",&Tm.in);
printf("输入收入时间:");
scanf("%s",Tm.intime);
printf("输入成员支出:");
scanf("%f",&Tm.out);
printf("输入支出时间:");
{ printf("###############################################\n");
案例四 家庭财务管理系统
案例四家庭财务管理系统4.1需求分析家庭财务系统主要对家庭的各项财务收支管理进行在计算机上的信息存储和处理,从而简化用户的工作量。
在需求分析过程中,概括描述了本软件能够为用户提供哪些服务、系统功能的整体框架,以及相应的业务流程。
4.1.1 系统概述家庭财务管理系统给家庭成员提供了一个管理平台,家庭成员可以对其成员编号、姓名以及收入、支出构成进行增加、删除、修改等管理操作。
同时,该系统还提供了家庭成员管理功能,根据家庭成员的分类,其拥有的权限也不同,系统可以判断登录家庭成员的用户名和密码,从而判断其是否可以使用该系统。
系统亦可登录家庭成员的权限信息,从而判断该家庭成员能够使用该系统的哪些特定功能,不同级别的家庭成员之间不能够越权使用系统功能。
家庭成员分家长和普通成员两类。
4.1.2 系统运行环境一、硬件环境●处理器:Intel Pentium 166 MX或更高●内存:32MB●硬盘空间:1GB●显卡:SVGA显示适配器二、软件环境●操作系统:Windows 98/ME/2000/XP4.1.3 功能需求描述家庭财务管理系统软件是为用户对家庭成员的收支构成及信息进行辅助管理的应用软件,功能需求描述如下。
1.用户登录:系统获取的家庭成员用户名和密码判断该家庭成员能否成功登录系统,并且当用户登录后根据权限判断该家庭成员是家长还是普通成员,可以使用哪些对应功能。
普通用户只能管理财务信息,而家长还可以管理用户信息。
2.给家庭成员提供功能选择界面:不同级别的家庭成员对应不同的功能选择界面。
功能选择界面包括输入功能选项、调用相应程序两大需求。
3.创建收支信息文件:用户根据提示输入家庭成员序号、姓名、各项财务信息,如收入、支出、合计。
可一次性输入多条家庭成员的收支信息。
并将家庭成员收支信息存储在系统磁盘文件中,以便进行管理、查找和备份。
4.增加家庭成员收支信息:可在原有收支信息文件的基础上增加新的家庭成员财务信息,并保存至磁盘,5.删除家庭成员收支信息:提示用户输入要删除的家庭成员序号,如果在文件中有该家庭成员的收支信息,则将该序号对应的信息在文件中删除。
C#程序设计-家庭账单管理系统
C#程序设计作业——家庭账本管理系统系别计算机与通信工程学院专业计算机科学有技术班级4110415姓名张振一、程序说明课题为:家庭账单系统;使用工具:visual studio 2013 系统用户名:zhangzhen 密码:12345经上网查找资料,最终确定该系统应有以下几个功能:1)登陆,注册功能2)成员管理功能,包括修改资料,添加成员等3)最核心的消费记录管理功能,包括添加纪录,查看今天记录,本周记录等程序有四个主要的界面:1)登陆、注册界面2)用户管理界面主要功能包括修改资料、添加成员等,当然从此界面可以查看消费记录,退出系统等3)消费记录界面主要功能包括添加纪录、查看各个时间段消费记录的功能,当然可以进入成员管理界面和退出系统4)消费记录管理界面主要是添加消费记录的功能。
二、核心代码1)成员管理界面using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace home{public partial class Form2 : Form{public int count, pagecount, pagesize, page;data dataconn = new data();public Form2(){InitializeComponent();string cname = ame;bel1.Text = "用户:"+cname + " - 天天好心情哦!~";page = 1;pagesize = 12;getpagecount();DataSet ds = dataconn.getlist("select top " + pagesize + " username,password,cname,birthday,id from cuser order by id asc");this.dataGridView1.DataSource = ds.Tables[0].DefaultView;this.dataGridView1.Columns[0].HeaderText = "用户名";this.dataGridView1.Columns[1].HeaderText = "密码";this.dataGridView1.Columns[2].HeaderText = "姓名";this.dataGridView1.Columns[3].HeaderText = "生日";this.dataGridView1.Columns[4].Visible = false;DataGridViewButtonColumn btn1 = new DataGridViewButtonColumn();btn1.HeaderText = "";btn1.Text = "修改"; = "edit";btn1.Width = 60;eColumnTextForButtonValue = true;this.dataGridView1.Columns.Add(btn1);DataGridViewButtonColumn btn = new DataGridViewButtonColumn();btn.HeaderText = "";btn.Text = "删除"; = "del";btn.Width = 60;eColumnTextForButtonValue = true;this.dataGridView1.Columns.Add(btn);this.dataGridView1.RowPostPaint += new DataGridViewRowPostPaintEventHandler(DrawRowIndex);this.dataGridView1.CellFormatting += newDataGridViewCellFormattingEventHandler(dataGridView1_CellFormatting);this.button1.Enabled = false;this.button2.Enabled = false;if (pagecount > page){this.button1.Enabled = true;}}private void button1_Click(object sender, EventArgs e){kk(1);}public void getpagecount(){DataSet dw = dataconn.getlist("select * from cuser");count = dw.Tables[0].Rows.Count;if (count % pagesize == 0){pagecount = count / pagesize;}else{pagecount = count / pagesize + 1;}bel2.Text = "共"+pagecount.ToString()+" 页当前第"+page.ToString()+" 页";}public void kk(int ss){if (ss == 0){page -= 1;}else{page += 1;}getpagecount();string sql = "";if (page <= 1){page = 1;sql = "select top " + pagesize + "username,password,cname,birthday,id from cuser order by id asc";this.button2.Enabled = false;if (pagecount > page){this.button1.Enabled = true;}}else if (page >= pagecount){sql = "select top " + pagesize + "username,password,cname,birthday,id from cuser where id > (select max(id) from (select top " + pagesize * (page - 1) + " id from cuser order by id asc) as tem)";if (pagecount > 1){this.button2.Enabled = true;}this.button1.Enabled = false;}else{sql = "select top " + pagesize + "username,password,cname,birthday,id from cuser where id > (select max(id) from (select top " + pagesize * (page - 1) + " id from cuser order by id asc) as tem)";this.button2.Enabled = true;this.button1.Enabled = true;}DataSet ds = dataconn.getlist(sql);this.dataGridView1.DataSource = ds.Tables[0].DefaultView;}private void button2_Click(object sender, EventArgs e){kk(0);}private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e){if (dataGridView1.Columns[e.ColumnIndex].Name == "del"){int id =Convert.ToInt16(dataGridView1.Rows[e.RowIndex].Cells[6].Value);if (id == 1){MessageBox.Show("怎么能够删除创始人呢!","友情提示");return;}else{dataconn.update("delete from cuser where id = " + id);MessageBox.Show("成功删除一个成员!", "友情提示");page = 2;getpagecount();kk(0);}}if (dataGridView1.Columns[e.ColumnIndex].Name == "edit"){user userfrm = newuser(this.dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString(),this.dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString(),this.dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString(),this.dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString(),this.dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString(),this);userfrm.ShowDialog();}}private void Form2_FormClosing(object sender, FormClosingEventArgs e){Application.Exit();}private void button3_Click(object sender, EventArgs e){user userfrm = new user("0", "", "", "",DateTime.Now.Date.ToString(), this);userfrm.ShowDialog();}private void button4_Click(object sender, EventArgs e){Form3 frm3 = new Form3();frm3.Show();this.Hide();}private void button5_Click(object sender, EventArgs e){int uid = Form1.uid;SqlDataReader dr = dataconn.read("select * from cuser where id = " + uid);while (dr.Read()){user userfrm = new user(uid.ToString(),dr["username"].ToString(), dr["password"].ToString(), dr["cname"].ToString(),dr["birthday"].ToString(), this);userfrm.ShowDialog();}dr.Close();}private void button6_Click(object sender, EventArgs e){Application.Exit();}private void DrawRowIndex(object sender, DataGridViewRowPostPaintEventArgs e){Rectangle rectangle = new Rectangle(e.RowBounds.Location.X,e.RowBounds.Location.Y,this.dataGridView1.RowHeadersWidth - 4,e.RowBounds.Height);TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),this.dataGridView1.RowHeadersDefaultCellStyle.Font,rectangle,this.dataGridView1.RowHeadersDefaultCellStyle.ForeColor,TextFormatFlags.VerticalCenter | TextFormatFlags.Right);}private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e){if (e.ColumnIndex == 3){if (e.Value != null && e.Value.ToString().Length > 0){e.Value = new string('$', e.Value.ToString().Length);}}}}}2)消费记录管理界面using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Drawing.Imaging;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using System.Collections;namespace home{public partial class Form3 : Form{data dataconn = new data();public int pagesize, count, pagecount, page;public string key = "";public string jlsql = "";public string psql = "";public Form3(){InitializeComponent();pagesize = 22;page = 1;getpagecount();DataSet ds = dataconn.getlist("select top " + pagesize + " * from cords order by id desc");this.dataGridView1.DataSource = ds.Tables[0].DefaultView;this.dataGridView1.Columns[0].Visible = false;this.dataGridView1.Columns[1].HeaderText = "产品名称";this.dataGridView1.Columns[2].HeaderText = "类型";this.dataGridView1.Columns[3].HeaderText = "单价";this.dataGridView1.Columns[4].HeaderText = "费用";this.dataGridView1.Columns[5].HeaderText = "日期";this.dataGridView1.Columns[6].HeaderText = "星期";this.dataGridView1.Columns[7].HeaderText = "消费者";this.dataGridView1.Columns[8].HeaderText = "备注";DataGridViewButtonColumn btn1 = new DataGridViewButtonColumn();btn1.HeaderText = "";btn1.Text = "修改"; = "edit";btn1.Width = 60;eColumnTextForButtonValue = true;this.dataGridView1.Columns.Add(btn1);DataGridViewButtonColumn btn = new DataGridViewButtonColumn();btn.HeaderText = "";btn.Text = "删除"; = "del";btn.SortMode = DataGridViewColumnSortMode.NotSortable;btn.Width = 60;eColumnTextForButtonValue = true;this.dataGridView1.Columns.Add(btn);this.dataGridView1.RowPostPaint += new DataGridViewRowPostPaintEventHandler(DrawRowIndex);this.button1.Enabled = false;this.button2.Enabled = false;if (pagecount > page){this.button1.Enabled = true;}getcords();SqlDataReader dr1 = dataconn.read("select * from ptype");ArrayList list = new ArrayList();list.Add(new DictionaryEntry("所有类型", ""));if (dr1.HasRows){while (dr1.Read()){list.Add(new DictionaryEntry(dr1["ptype"].ToString(), dr1["ptype"].ToString()));}this.ptype.DataSource = list;this.ptype.DisplayMember = "key";this.ptype.ValueMember = "value";}dr1.Close();}public void kk(int ss){if (ss == 0){page -= 1;}else{page += 1;}getpagecount();string keysql = "";keysql = " and product like '%" + key + "%' ";string sql="";if (page <= 1){page = 1;sql = "select top " + pagesize + " * from cords where id is not null " + keysql + jlsql + psql + " order by ctime desc";this.button2.Enabled = false;if (pagecount > page){this.button1.Enabled = true;}}else if (page >= pagecount){sql = "select top " + pagesize + " * from cords where ctime < (select min(ctime) from (select top " + (page - 1) * pagesize + " ctime from cords order by ctime desc) as temp) order by ctime desc";if (pagecount > 1){this.button2.Enabled = true;}this.button1.Enabled = false;}else{sql = "select top " + pagesize + " * from cords where ctime < (select min(ctime) from (select top " + (page - 1) * pagesize + " ctime from cords order by ctime desc) as temp) order by ctime desc";this.button2.Enabled = true;this.button1.Enabled = true;}DataSet ds = dataconn.getlist(sql);this.dataGridView1.DataSource = ds.Tables[0].DefaultView;getcords();SqlDataReader dr1 = dataconn.read("select * from ptype");ArrayList list = new ArrayList();list.Add(new DictionaryEntry("所有类型",""));if (dr1.HasRows){while (dr1.Read()){list.Add(new DictionaryEntry(dr1["ptype"].ToString(), dr1["ptype"].ToString()));}this.ptype.DataSource = list;this.ptype.DisplayMember = "key";this.ptype.ValueMember = "value";}dr1.Close();}public void getpagecount(){DataSet dw = dataconn.getlist("select * from cords");count = dw.Tables[0].Rows.Count;if (count % pagesize == 0){pagecount = count / pagesize;}else{pagecount = count / pagesize + 1;}bel2.Text = "共" + pagecount.ToString() + " 页当前第" + page.ToString() + " 页";}private void button2_Click(object sender, EventArgs e){kk(0);}private void button1_Click(object sender, EventArgs e){kk(1);}private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e){if (dataGridView1.Columns[e.ColumnIndex].Name == "del"){int id =Convert.ToInt16(dataGridView1.Rows[e.RowIndex].Cells[2].Value);dataconn.update("delete from cords where id = " + id);MessageBox.Show("成功删除一个消费记录!","友情提示");page = 2;getpagecount();kk(0);}if (dataGridView1.Columns[e.ColumnIndex].Name == "edit"){cords cordsfrm = newcords(int.Parse(dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString()), this);cordsfrm.ShowDialog();}}private void button3_Click(object sender, EventArgs e){cords cordsfrm = new cords(0, this);cordsfrm.ShowDialog();}private void button4_Click(object sender, EventArgs e){Form2 frm2 = new Form2();frm2.Show();this.Hide();}private void button6_Click(object sender, EventArgs e){Application.Exit();}private void button5_Click(object sender, EventArgs e){key = this.textBox1.Text;if (ptype.Text != "所有类型"){psql = " and ptype='" + this.ptype.Text + "' ";}else{psql = "";}kk(0);}private void button7_Click(object sender, EventArgs e){key = "";jlsql = "";psql = "";kk(0);}public void getcords(){double cords = 0;for (int i = 0; i < this.dataGridView1.Rows.Count; i++){cords +=Convert.ToDouble(this.dataGridView1.Rows[i].Cells["spend"].Value);}bel4.Text = "消费金额总计:" + cords.ToString();}private void button8_Click(object sender, EventArgs e){jlsql = " and datediff(Month,ctime,getdate())=0 ";key = "";psql = "";kk(0);}private void button9_Click(object sender, EventArgs e){jlsql = " and datediff(week,ctime,getdate())=0 ";key = "";psql = "";kk(0);}private void button10_Click(object sender, EventArgs e){jlsql = " and datediff(qq,ctime,getdate())=0 ";key = "";psql = "";kk(0);}private void button11_Click(object sender, EventArgs e){jlsql = " and datediff(Day,ctime,getdate())=0 ";key = "";psql = "";kk(0);}private void DrawRowIndex(object sender, DataGridViewRowPostPaintEventArgs e){Rectangle rectangle = new Rectangle(e.RowBounds.Location.X,e.RowBounds.Location.Y,this.dataGridView1.RowHeadersWidth - 4,e.RowBounds.Height);TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),this.dataGridView1.RowHeadersDefaultCellStyle.Font,rectangle,this.dataGridView1.RowHeadersDefaultCellStyle.ForeColor,TextFormatFlags.VerticalCenter | TextFormatFlags.Right);}}}。
家庭财务管理系统
《C语言程序设计》题目家庭财务管理系统一、内容1、总体描述家庭财务管理系统主要是对家庭成员的收入、支出,进行添加、删除、查询等操作,并统计总收入、总支出。
为家庭成员提供管理家庭财务的平台。
2、模块描述1)菜单设计:提供简单明了的操作界面。
帮助用户对管理系统进行操作。
2)添加模块:根据实际收入或支出,提案及相应的记录,条数不限。
3)查询模块:可以选择不同的关键字输入,查找需要的记录。
4)删除模块:删除错误或无用的记录。
5)显示模块:按照添加的先后顺序显示记录,并显示总收入总支出及余额。
6)推出模块:退出该管理系统。
并保存文件。
二、上机环境操作系统:windows xp开发工具:VC6.0三、函数调用关系图四、各函数功能说明1.main() 主函数2.void look(void) 查看函数3.void save(void) 保存函数4.void search_name(void) 按姓名查看函数5.void search_data(void) 按日期查看函数6.void del(void) 删除函数7.void openl(void) 打开函数8.void type(void) 输入函数9.void see(void) 打开并查看函数10.Struct family 定义财务信息的结构类型五、算法描述或流程图通过以下主函数(操作界面),输入相应的提示进入相应的函数,进行相应的操作。
void main() /*主函数即用户的操作界面*/ {int b,flag=0; /*声明局部变量*/while(1)/*循环输出以下信息*/{printf("\n\t\t\t欢迎来到家庭财务管理系统!\n");printf("\t\t\t1.键入财务信息\n\n");printf("\t\t\t2.查看财务信息\n\n");printf("\t\t\t3.按姓名查看财务信息\n\n"); printf("\t\t\t4.按日期查看财务信息\n\n"); printf("\t\t\t5.删除财务信息\n\n");printf("\t\t\t6.保存财务信息\n\n");printf("\t\t\t7.打开文件\n\n");printf("\t\t\t0.退出程序\n\n");printf("\t\t\t请输入你的选择:");scanf("%d",&b);switch(b){case 1:type();break; /*调用键入财务信息函数*/case 2:look();break; /*调用查看函数*/case 3:search_name();break; /*调用姓名查看函数*/case 4:search_data();break; /*调用日期查看函数*/case 5:del();break;/*调用删除函数*/case 6:save();break;/*调用保存函数*/case 7:see();break;/*调用打开文件函数*/ case 0:flag=1;break;/*退出SWITCH语句*/ default :printf("错误!");}if(flag) break; /*如果选择0就退出循环*/}}六、程序运行效果图1、控制页面2、输入界面3、结果查询七、总结本次对家庭财务管理系统的编写,遇到了许多困难。
C语言家庭财务管理系统
{
n=scanf("%s %s %f",J[i].rq,J[i].zy,&J[i].xf);
if(J[i]Biblioteka xf==0)break;/*收入和支出为0则退出*/
if(n==3)i++;
}
while(n==3);
N=i; /*修改家庭财务信息记录数*/
}
void SaveJ(char file[])/*保存家庭财务信息关系*/
{
int n,i=0;
FILE *fp=fopen("JTCWGLXT.txt","r");
char s[80];fgets(s,80,fp);
do
{
n=fscanf(fp,"%s %s %f %f",J[i].rq,J[i].zy,&J[i].xf,&J[i].ye);
if(n==4)i++;/*若读到4个数据则i加1*/
}
while(n==4);
fclose(fp);
return i;
}
void DispJ()/*显示家庭财务信息*/
{
int i;
printf("%s %8s %8.2f%8.2f\n",J[0].rq,J[0].zy,J[0].xf,J[0].ye);
for(i=1;i<N;i++)
printf("%s %8s %8.2f%8.2f\n",J[i].rq,J[i].zy,J[i].xf,J[i-1].ye+J[i].xf);
fprintf( fp,"%s %8s %8.2f%8.2f\n",J[i].rq,J[i].zy,J[i].xf,J[i-1].ye+J[i].xf);
C语言课程设计——家庭财务管理系统
课程设计报告课程设计题目:家庭财务管理系统学生姓名:专业:信息工程1.供收入/2.②③④⑤⑥除①②③④initialize():初始化函数,读取文本数据。
⑤show_info():显示数据函数。
⑥count_total():统计函数,统计总收入、总支出。
⑦update_data():修改信息函数。
⑧delete_data():删除数据函数。
⑨quit():退出函数。
程序结构功能图如下:3.详细设计3.1收入管理3.2支出管理4.测试结果4.1程序运行主菜单4.2添加收入测试4.3查询收入明细测试4.4删除收入测试4.5修改收入测试4.6添加支出测试4.7查询支出明细测试4.8删除支出测试4.104.115.软件操作使用说明书本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示),然后按照主界面菜单指引操作即可。
6.总结编写程序之前要有一个整体的思路,不能写到哪里算哪里。
这样很容易遗漏,连续性也不好。
通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的理解。
希望在以后的课程设计中对于知识的运用能够更加的熟练。
代码:#include<stdio.h>//{//{//{struct_fi_data*next;}fi_data;fi_data*head;//财务数据的头结点voidmenu();//菜单函数voidadd_income();voidsearch_income();voiddelete_income();voidupdate_income();voidadd_payout();voiddelete_payout();voidupdate_payout();voidcount_total();voidquit();//voidsearch_data(fi_typetype);voiddelete_data(fi_typetype);voidupdate_data(fi_typetype);//voidinitialize();voidsave_to_file();{printf("\t\t*******************************************\n"); printf("\t\t统计:");printf("9.统计总收入/总支出\n");printf("\t\t*******************************************\n");printf("\t\t退出:0.退出系统\n");printf("\t\t*******************************************\n\n\n"); }voidmain(){initialize();while(selected>=0&&selected<=9){system("cls");menu();printf("\t\t>请选择要进行的操作(0-9):");if(scanf("%d",&selected)!=1||selected<0||selected>9){printf("\t\t>输入有误!请选择(0-9)之间的数字!按任意键重试"); getchar();}else{{}}}}{head=p;elseget_last()->next=p;}voidadd_payout()//添加支出{fi_data*p=(fi_data*)malloc(sizeof(fi_data));p->next=NULL;input_info(&(p->info));if(head==NULL)head=p;elseget_last()->next=p;}//输入函数voidinput_info(fi_info*info){printf("\t\t>请输入年月(YYYY/M)");scanf("%d/%d",&(info->year),&(info->month));printf("\t\t>请输入家庭成员姓名(最大长度为%d):",MAXNAME-1);}//{{{}else{p=head;while(p!=NULL){if((p->info.year==year)&&(p->info.month==month)&&(p->info.type==type)) {show_info(p);system("PAUSE");count++;}p=p->next;if(count==0){printf("\t\t>没有找到数据\n");}printf("\t\t>继续查找其他数据?(yorn)"); input=getchar();if(input=='y'||input=='Y')continue;elsebreak;}}}//{{return;}{head=p;else{last=get_last();last->next=p;}count++;fseek(fp,count*sizeof(fi_info),SEEK_SET); p=(fi_data*)malloc(sizeof(fi_data)); memset(p,0,sizeof(fi_data));p->next=NULL;}p=NULL;fclose(fp);}//显示信息函数voidshow_info(fi_data*p){inti=0;printf("|\t\t|\t\t|\t\t|\t\t|\t\t|\t\t|\n");printf("|NO.\t|年/月\t\t|类型\t\t|姓名\t\t|金额\t\t|备注\t\t|\n"); printf("|%5d\t|%4d/%02d\t|%4s\t|%10s\t|%10.2f|%20s|\n",i+1,p->info.year,p->info.month,p->info.type==income?"收入":"支出",}//{{{}else{}}printf("\t\t>按任意键返回主菜单");getchar();getchar();}//保存到文件voidsave_to_file(){FILE*fp=fopen("data.txt","wb");fi_data*p=head;fwrite(&(p->info),sizeof(fi_info),1,fp); fseek(fp,0,SEEK_END);p=p->next;}fclose(fp);}//修改信息函数voidupdate_data(fi_typetype){intyear=0;intmonth=0;inti=0;{}else{p=head;{{}p=p->next;}if(count==0)printf("\t\t>没有找到数据\n");printf("\t\t>继续查找其他数据?(yorn)"); input=getchar();if(input=='y'||input=='Y')continue;else}}voiddelete_data(fi_typetype)//删除数据函数{intyear=0;intmonth=0;fi_data*p=NULL;fi_data*pre=NULL;intcount=0;charinput='';inti=0;{}else{p=head;{{else}p=p->next;}if(count==0)printf("\t\t>没有找到数据\n");printf("\t\t>继续查找其他数据?(yorn)"); input=getchar();if(input=='y'||input=='Y')continue;else}}}voidclear_data()//清空链表数据{fi_data*p=NULL;while(head!=NULL){if(head->next!=NULL){p=head;p=NULL;}else{}}}{}{{if(previous->next==p)break;previous=previous->next;}returnprevious;}voidsearch_payout(){search_data(payout);}voiddelete_payout() {delete_data(payout); }voidupdate_payout() {update_data(payout); }voidsearch_income() {search_data(income); }{}{}。
C语言课程设计——家庭财务管理系统
课程安排报告之阳早格格创做课程安排题目:家庭财务管制系统教死姓名:博业:疑息工程班级:指挥西席:2018年 1月 8日1.需要分解根据家庭账务管制的需要,建坐一个“家庭账务管制系统”,以便当对付家庭凡是支进及开销举止记录战管制.该系统央供:①家庭月支进管制②家庭月开销管制③统计家庭总支进/总开销④系统提供支进/开销的增加、简略战建改功能.2. 总体安排根据以上分解,原家庭账务管制系统主要包罗:①从键盘键进家庭月支进、月开销数据;②查询月支进、月开销明细;③简略支进、开销数据;④建改支进、开销数据;⑤统计总支进/总开销;⑥退出系统.除main()函数除中,系统还定义了以下函数去真止各部分真质:①add_income():增加支进数据函数.②add_payout():增加开销数据函数.③search_data():查找数据函数.④initialize():初初化函数,读与文原数据.⑤show_info():隐现数据函数.⑥count_total():统计函数,统计总支进、总开销.⑦update_data():建改疑息函数.⑧delete_data():简略数据函数.⑨quit():退出函数.步调结构功能图如下:3.仔细安排4.尝试截止4.1 步调运止主菜单4.2 增加支进尝试4.3 查询支进明细尝试4.4 简略支进尝试4.5 建改支进尝试4.6 增加开销尝试4.7 查询开销明细尝试4.8 简略开销尝试4.9 建改开销尝试4.10 统计总支进/开销尝试4.11 退出系统尝试5.硬件支配使用证明书籍原系统采与下令止对付话办法举止支配,运止后出现主界里(如下图所示),而后依照主界里菜单指引支配即可.编写步调之前要有一个完全的思路,不克不迭写到哪里算哪里.那样很简单遗漏,连绝性也短佳.通过原次的课程安排让尔对付于数组、文献的存搁、循环结构等知识有了越发深进的明白.期视正在以去的课程安排中对付于知识的使用不妨越发的流利.代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define MAXNAME 11 //家庭成员姓名的最大少度#define MAXDETAIL 21 //注最大少度//自定义罗列典型fi_type,用去表示支进与开销typedef enum _fi_type{income=1,//支进payout =-1 //开销} fi_type;// 家庭财务疑息结构体typedef struct _fi_info{int year;int month;fi_type type;char name[9];float money;char detail[11];}fi_info;// 保存财务数据结构的结构体typedef struct _fi_data{fi_info info;struct _fi_data* next;} fi_data;fi_data *head;//财务数据的头结面 void menu();//菜单函数void add_income();void search_income();void delete_income();void update_income();void add_payout();void search_payout();void delete_payout();void update_payout();void count_total();void quit();//void search_data(fi_type type); void delete_data(fi_type type);void update_data(fi_type type); //void initialize();void save_to_file();void clear_data();fi_data *get_last();fi_data *get_previous(fi_data *p); void input_info(fi_info *info);void show_info(fi_data *p);void menu(){printf("\n");printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t\t 家庭财务管制系统\n");printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t*******************************************\ n");printf("\t\t支进管制:");printf("1.增加支进");printf(" 2.查询支进明细\n");printf("\t\t\t 3.简略支进");printf(" 4.建改支进\n");printf("\t\t*******************************************\ n");printf("\t\t开销管制:");printf("5.增加开销");printf(" 6.查询开销明细\n");printf("\t\t\t 7.简略开销");printf(" 8.建改开销\n");printf("\t\t*******************************************\ n");printf("\t\t统计:");printf("9.统计总支进/总开销\n");printf("\t\t*******************************************\ n");printf("\t\t退出:0.退出系统\n");printf("\t\t*******************************************\ n\n\n");}void main(){int selected=0;initialize();while(selected>=0&&selected<=9){system("cls");menu();printf("\t\t>请采用要举止的支配(0-9):");if(scanf("%d",&selected)!=1||selected<0||selected>9){printf("\t\t>输进有误!请采用(0-9)之间的数字!按任性键沉试");getchar();}else{switch(selected){case 0:exit(0);clear_data();break;case 1:add_income();save_to_file();break;case 2:search_income();break;case 3:delete_income();save_to_file();break;case 4:update_income();save_to_file();break;case 5:add_payout();save_to_file();break;case 6:search_payout();break;case 7:delete_payout();save_to_file();break;case 8:update_payout();save_to_file();break;case 9:count_total();break;}}}void add_income()//增加支进{fi_data *p=(fi_data *)malloc(sizeof(fi_data)); p->next=NULL;input_info(&(p->info));p->info.type=income;if(head==NULL)head=p;elseget_last()->next=p;}void add_payout()//增加开销{fi_data *p=(fi_data *)malloc(sizeof(fi_data)); p->next=NULL;input_info(&(p->info));p->info.type=payout;if(head==NULL)head=p;elseget_last()->next=p;//输进函数void input_info(fi_info *info){printf("\t\t>请输进年月(YYYY/M)");scanf("%d/%d",&(info->year),&(info->month)); printf("\t\t>请输进家庭成员姓名(最大少度为%d):",MAXNAME-1);scanf("%s",info->name);printf("\t\t>输进金额:");scanf("%f",&(info->money));printf("\t\t>请输进备注(最大少度为%d):",20); scanf("%s",info->detail);}//查找数据函数void search_data(fi_type type){int year=0;int month=0;fi_data *p=NULL;int count=0;char input=' ';while(1){printf("\t\t>请输进要查询的年月(YYYY/M)");if(scanf("%d/%d",&year,&month)!=2){printf("\t\t>输进有误\n");}else{p=head;count=0;while(p!=NULL){if((p->info.year==year)&&(p->info.month==month)&&(p->info.type==type)){show_info(p);system("PAUSE");count++;}p=p->next;}if(count==0){printf("\t\t>不找到数据\n");}printf("\t\t>继承查找其余数据?(y or n)"); input=getchar();if(input=='y'||input=='Y')continue;elsebreak;}}}//初初化函数,读与文原数据void initialize(){FILE * fp=NULL;fi_data *p=NULL;fi_data *last=NULL;int count=0;fp=fopen("data.txt","rb");if(fp==NULL)fp=fopen("data.txt","w");fclose(fp);return;}p=(fi_data*)malloc(sizeof(fi_data));memset(p,0,sizeof(fi_data));p->next=NULL;while(fread(&(p->info),sizeof(fi_info),1,fp)==1) {if(head==NULL)head=p;else{last=get_last();last->next=p;}count++;fseek(fp,count*sizeof(fi_info),SEEK_SET);p=(fi_data *)malloc(sizeof(fi_data));memset(p,0,sizeof(fi_data));p->next=NULL;free(p);p=NULL;fclose(fp);}//隐现疑息函数void show_info(fi_data *p){int i=0;printf("|\t\t|\t\t|\t\t|\t\t|\t\t|\t\t|\n");printf("|NO.\t |年/月\t\t|典型\t\t|姓名\t\t|金额\t\t|备注\t\t|\n"); printf("|%5d\t|%4d/%02d\t|%4s\t|%10s\t|%10.2f|%20s|\n",i+1, p->info.year,p->info.month,p->info.type==income?"支进":"开销",p->,p->info.money,p->info.detail);printf("|\t\t|\t\t|\t\t|\t\t|\t\t|\t\t|\n");}//统计总支进、总开销void count_total(){float total_income=0.0;float total_payout=0.0;fi_data *p=head;while(p!=NULL){if(p->info.type==income){total_income+=p->info.money;}else{total_payout+=p->info.money;}p=p->next;}printf("\t\t+\t\t+\t\t+\n");printf("\t\t|合计支进\t|合计开销\t|结余\t|\n");printf("\t\t%12.2f|%12.2f|%12.2f|\n",total_income,total_payout,t otal_income-total_payout);printf("\t\t+\t\t+\t\t+\n");printf("\t\t>按任性键返回主菜单");getchar();getchar();}//保存到文献void save_to_file(){FILE *fp=fopen("data.txt","wb" );fi_data *p=head;while(p!=NULL){fwrite(&(p->info),sizeof(fi_info),1,fp); fseek(fp,0,SEEK_END);p=p->next;}fclose(fp);}//建改疑息函数void update_data(fi_type type){ int year=0;int month=0;fi_data *p=NULL;fi_data *pre=NULL;char input;int count=0;int i=0;while(1){ printf("\t\t>请输进要查询的年月(YYYY/M)");if(scanf("%d/%d",&year,&month)!=2){printf("\t\t>输进有误\n");}else{p=head;count=0;while(p!=NULL){if((p->info.year==year)&&(p->info.month==month)&&(p->info.type==type)){count++;show_info(p);input_info(&(p->info));printf("\t\t建改乐成\n");p=get_previous(p);}p=p->next;}if(count==0)printf("\t\t>不找到数据\n");printf("\t\t>继承查找其余数据?(y or n)"); input=getchar();if(input=='y'||input=='Y')continue;elsebreak;}}}void delete_data(fi_type type)//简略数据函数 {int year=0;int month=0;fi_data *p=NULL;fi_data *pre=NULL;int count=0;char input=' ';int i=0;{ printf("\t\t>请输进要查询的年月(YYYY/M)");if(scanf("%d/%d",&year,&month)!=2){printf("\t\t>输进有误\n");}else{p=head;count=0;while(p!=NULL){if((p->info.year==year)&&(p->info.month==month)&&(p->info.type==type)){count++;show_info(p);pre=get_previous(p);if(pre==NULL)head=head->next;elsepre->next=p->next;printf("\t\t>简略乐成\n");}p=p->next;}if(count==0)printf("\t\t>不找到数据\n");printf("\t\t>继承查找其余数据?(y or n)"); input=getchar();if(input=='y'||input=='Y')continue;elsebreak;}}}void clear_data()//浑空链表数据{fi_data *p=NULL;while(head!=NULL){if(head->next!=NULL){p=head;head=head->next;free(p);p=NULL;}else{free(head);head=NULL;}}}fi_data *get_last(){fi_data * p=head;if(p==NULL)return p;while((p!=NULL)&&(p->next!=NULL)) p=p->next;return p;}fi_data *get_previous(fi_data *p) {fi_data *previous=head;while(previous!=NULL){if(previous->next==p)break;previous=previous->next;}return previous;}void search_payout(){search_data(payout);}void delete_payout(){delete_data(payout);}void update_payout(){update_data(payout);}void search_income() {search_data(income); }void delete_income() {delete_data(income); }void update_income() {update_data(income); }。
家庭财务管理系统C
目录一、需求分析 (1)二、程序的主要功能 (2)三、程序运行平台 (3)四、系统总框架图 (4)五、程序类的说明 (5)六、模块分析 (6)七、比较有特色的函数 (7)八、存在的不足与对策 (8)一、需求分析家庭财务收支管理是一个家庭日常生活中不可缺少一部分,也是财务管理的重要组成部分。
它的内容对于财务管理者来说都至关重要,设计一个程序对财务收支进行管理是必不可少的。
二、程序的主要功能1、用户管理:对账单的用户进行登记。
2、消费明细:对用户账单明细进行记录。
3、个人账单查询:对用户的账单进行查询。
4、账单总计:对整个系统所存账单进行总计。
5、显示所有用户账单:把所有账单进行显示。
三、程序运行平台Dev c++四、系统总框架图五、程序类的说明class inter_f //定义一个界面类{public:inter_f(){}; //构造~inter_f(){}; //析构void display(); //声明显示用户信息界面函数/////////////////// void check(user* p); //声明用户登记函数void seek(user* p); //声明用户查询函数void show(user* p); //声明显示用户信息函数void add(user* p); //声明用户新增函数void cancel(user* p); //声明用户注销函数void exit(); //声明用户退出函数void limit(user& ru); //声明用户操作界面函数void display2(); //消费明细界面函数///////////////////////void water_cost(user* p); //水费函数void elec_cost(user* p); //电费函数void comm_cost(user* p); //通信费函数void shop_cost(user* p); //购物费函数void gas_cost(user* p); //煤气费函数void pin_cost(user* p); //零用函数void exit2(); //声明退出消费明细函数void limit2(user& ru); //声明消费明细操作界面函数void display1(); //声明显示总信息界面//////////////////////void personal_bill(user* p); //声明个人账单函数void amount_bill(user* p); //账单总计函数void show1(user* p); //声明显示所有用户账务函数void exit1(); //声明财务退出函数void limit1(user& ru); ////总界面函数};六、模块分析1、用户管理:对账单的用户进行登记。
C语言家庭财务管理系统代码
#include <stdio.h>#include <stdlib.h>#include <string.h>struct Data{char name[20];char riqi[8];float money;char beizhu[50];};struct list{struct Data info;struct list *next;};struct list *Inhead=NULL;struct list *Intail=NULL;struct list *zhichuhead=NULL;struct list *zhichutail=NULL;struct list *temp=NULL;void chaxun_income();void chaxun_zhichu();void xiugai_income();void xiugai_zhichu();void Save_income(){FILE *fp;fp=fopen("D:\家庭财务管理.txt","w");struct list *p = Inhead;while(p != NULL){fwrite(&p->info, sizeof(struct Data), 1, fp);p = p->next;}fclose(fp);}void Save_zhichu(){FILE *fp;fp=fopen("D:\家庭财务管理支出.txt","w");struct list *p = zhichuhead;while(p != NULL){fwrite(&p->info, sizeof(struct Data), 1, fp);p = p->next;}fclose(fp);}void Open(){FILE *fp;fp=fopen("D:\家庭财务管理.txt","r");if(fp!=NULL){struct Data linshi;while(fread(&linshi, sizeof(struct Data), 1, fp) == 1){temp=(struct list*)malloc(sizeof(struct list));temp->info=linshi;temp->next=NULL;if(Inhead == NULL){Inhead = temp;Intail = temp;}else{Intail->next = temp;Intail = temp;}}fclose(fp);}}void Menu(){ system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1:收入操作\n");printf(" 2:支出操作\n");printf(" 3:统计操作\n");printf(" 0:退出\n");}void Openzhichu(){FILE *fp;fp=fopen("D:\家庭财务管理支出.txt","r");if(fp!=NULL){struct Data linshi;while(fread(&linshi, sizeof(struct Data), 1, fp) == 1){temp=(struct list*)malloc(sizeof(struct list));temp->info=linshi;temp->next=NULL;if(zhichuhead == NULL){zhichuhead = temp;zhichutail = temp;}else{zhichutail->next = temp;zhichutail = temp;}}fclose(fp);}}void mingzi (){char chazhao[20];printf("请输入查询的名字");gets(chazhao);struct list *p = Inhead;while(p != NULL){if(strcmp(p->,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void mingzi_zhichu (){char chazhao[20];printf("请输入查询的名字");gets(chazhao);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void mingzi_xiugai_income(){char xiugai[20];printf("请输入修改的名字");fflush(stdin);gets(xiugai);struct list *p = Inhead;while(p != NULL){if(strcmp(p->,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void mingzi_xiugai_zhichu(){char xiugai[20];printf("请输入修改的名字");fflush(stdin);gets(xiugai);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void riqi(){char chazhao[20];printf("请输入查询的日期");gets(chazhao);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.riqi,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void riqi_zhichu(){char chazhao[20];printf("请输入查询的日期");gets(chazhao);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.riqi,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void riqi_xiugai_income(){char xiugai[20];printf("请输入修改的日期");fflush(stdin);gets(xiugai);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.riqi,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void riqi_xiugai_zhichu(){char xiugai[20];printf("请输入修改的日期");fflush(stdin);gets(xiugai);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.riqi,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void money (){float chazhao;printf("请输入查询的money");scanf("%f",&chazhao);fflush(stdin);struct list *p = Inhead;while(p != NULL){if(p->info.money==chazhao){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void money_zhichu (){float chazhao;printf("请输入查询的money");scanf("%f",&chazhao);fflush(stdin);struct list *p = zhichuhead;while(p != NULL){if(p->info.money==chazhao){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void money_xiugai_income(){float xiugai;printf("请输入修改的money");scanf("%f",&xiugai);fflush(stdin);struct list *p = Inhead;while(p != NULL){if(p->info.money==xiugai){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void money_xiugai_zhichu(){float xiugai;printf("请输入修改的money");scanf("%f",&xiugai);fflush(stdin);struct list *p = zhichuhead;while(p != NULL){if(p->info.money==xiugai){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void beizhu(){char chazhao[20];printf("请输入查询的备注");gets(chazhao);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.beizhu,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void beizhu_zhichu(){char chazhao[20];printf("请输入查询的备注");gets(chazhao);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.beizhu,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void beizhu_xiugai_income(){char xiugai[20];printf("请输入修改的备注");fflush(stdin);gets(xiugai);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.beizhu,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void beizhu_xiugai_zhichu(){char xiugai[20];printf("请输入修改的备注");fflush(stdin);gets(xiugai);fflush(stdin);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.beizhu,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void Income_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.添加收入\n");printf(" 2.删除收入\n");printf(" 3.查询收入\n");printf(" 4.显示收入\n");printf(" 5.修改收入\n");printf(" 0.返回上一级\n");}void zhichu_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.添加支出\n");printf(" 2.删除支出\n");printf(" 3.查询支出\n");printf(" 4.显示支出\n");printf(" 5.修改支出\n");printf(" 0.返回上一级\n");}void chaxun_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.按名字查询\n");printf(" 2.按日期查询\n");printf(" 3.按money询\n");printf(" 4.按备注查询\n");printf(" 0.返回上一级\n"); }void xiugai_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.按名字修改\n");printf(" 2.按日期修改\n");printf(" 3.按money修改\n");printf(" 4.按备注修改\n");printf(" 0.返回上一级\n");}void Add_income(){char panduan;do{temp=(struct list*)malloc(sizeof(struct list));printf("姓名");gets(temp->);fflush(stdin);printf("日期(XX年XX月XX日)");gets(temp->info.riqi);fflush(stdin);printf("收入");scanf("%f",&temp->info.money);fflush(stdin);printf("备注");gets(temp->info.beizhu);fflush(stdin);printf("\n");//------自己添加temp->next=NULL;if(Inhead == NULL){Inhead = temp;Intail = temp;}else{Intail->next = temp;Intail = temp;}Save_income();//后面可以添加“继续添加功能”printf("是否(Y/N)继续添加信息\n");panduan=getchar();fflush(stdin);}while(panduan=='Y'||panduan=='y');system("PAUSE");}void Add_zhichu(){char panduan;do{temp=(struct list*)malloc(sizeof(struct list));printf("姓名");gets(temp->);fflush(stdin);printf("日期(XX年XX月XX日)");gets(temp->info.riqi);fflush(stdin);printf("支出");scanf("%f",&temp->info.money);fflush(stdin);printf("备注");gets(temp->info.beizhu);fflush(stdin);printf("\n");//------自己添加temp->next=NULL;if(zhichuhead == NULL){zhichuhead = temp;zhichutail = temp;}else{zhichutail->next = temp;zhichutail = temp;}Save_zhichu();//后面可以添加“继续添加功能”printf("是否(Y/N)继续添加信息\n");panduan=getchar();fflush(stdin);}while(panduan=='Y'||panduan=='y');system("PAUSE");}void Del_income(){char shanchu[20];struct list *p=NULL;struct list *m =NULL;struct list *n =NULL;p=Inhead;printf("请输入删除姓名");gets(shanchu);if(strcmp(Inhead->,shanchu)==0){while(Inhead!=NULL && strcmp(Inhead->,shanchu)==0) {char ch;printf("找到一个数据名字为%s,确认删除Y/N?",shanchu);ch=getchar();fflush(stdin);if(ch=='y'||ch=='Y') Inhead=Inhead->next;else break;}}else{if(strcmp(Intail->,shanchu)==0){do{ m=p;p=p->next;}while(p!=Intail);m->next=NULL;}//删除尾巴else{do{m=p;p=p->next;n=p->next;}while(strcmp(p->,shanchu)!=0&&n->next!=NULL);if(strcmp(p->,shanchu)==0)m->next=n;}}//删除除头节点之外的节点,自己课后完成Save_income();if(Inhead!=NULL){char panduan;printf("是否继续删除(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){Del_income();}}}void Del_zhichu(){char shanchu[20];struct list *p=NULL;struct list *m =NULL;struct list *n =NULL;p=zhichuhead;printf("请输入删除姓名");gets(shanchu);if(strcmp(zhichuhead->,shanchu)==0){while(zhichuhead!=NULL && strcmp(zhichuhead->,shanchu)==0) {char ch;printf("找到一个数据名字为%s,确认删除Y/N?",shanchu);ch=getchar();fflush(stdin);if(ch=='y'||ch=='Y') zhichuhead=zhichuhead->next;else break;}}else{if(strcmp(zhichutail->,shanchu)==0){do{ m=p;p=p->next;}while(p!=zhichutail);m->next=NULL;}//删除尾巴else{do{m=p;p=p->next;n=p->next;}while(strcmp(p->,shanchu)!=0&&n->next!=NULL);if(strcmp(p->,shanchu)==0)m->next=n;}}Save_zhichu();//删除除头节点之外的节点,自己课后完成if(zhichuhead!=NULL){char panduan;printf("是否继续删除(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){Del_zhichu();}}}void xiugai_income(){xiugai_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi_xiugai_income();break;case 2: riqi_xiugai_income();break;case 3: money_xiugai_income();break;case 4: beizhu_xiugai_income();break;default: printf("输入错误");break;}}void xiugai_zhichu(){xiugai_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi_xiugai_zhichu();break;case 2: riqi_xiugai_zhichu();break;case 3: money_xiugai_zhichu();break;case 4: beizhu_xiugai_zhichu();break;default: printf("输入错误");break;}}void chaxun_income(){chaxun_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi();break;case 2: riqi();break;case 3: money();break;case 4: beizhu();break;default: printf("输入错误");break;}}void chaxun_zhichu(){chaxun_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi_zhichu();break;case 2: riqi_zhichu();break;case 3: money_zhichu();break;case 4: beizhu_zhichu();break;default: printf("输入错误");break;}}void Sho_income(){struct list *p = Inhead;while(p != NULL){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);p = p->next;}system("PAUSE");}void Sho_zhichu(){struct list *p = zhichuhead;while(p != NULL){fflush(stdin);printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("支出:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);p = p->next;}system("PAUSE");}void Income(){int choice;while(1){Income_menu();printf("请输入选择");scanf("%d",&choice);fflush(stdin);if(choice==0){break;}elseswitch(choice){case 1: Add_income(); Save_income();break;case 2: Del_income(); Save_income();break;case 3: chaxun_income(); Save_income();break;case 4: Sho_income(); Save_income();break;case 5: xiugai_income(); Save_income();break;}}}void zhichu(){int choice;while(1){zhichu_menu();printf("请输入选择");scanf("%d",&choice);fflush(stdin);if(choice==0){break;}elseswitch(choice){case 1: Add_zhichu(); Save_zhichu();break;case 2: Del_zhichu(); Save_zhichu();break;case 3: chaxun_zhichu(); Save_zhichu();break;case 4: Sho_zhichu(); Save_zhichu();break;case 5: xiugai_zhichu(); Save_zhichu();break;}}}void tongji_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.总收入\n");printf(" 2.总支出\n");printf(" 3.总资金\n");printf(" 0.返回上一级\n");}void zongshouru(){float shouru=0;struct list *linshi;linshi=Inhead;if(linshi!=NULL){do{shouru=linshi->info.money+shouru;linshi=linshi->next;}while(linshi!=NULL);printf("%.4f",shouru);system("PAUSE");}}void zongzhichu(){float zhichu=0;struct list *linshi;linshi=zhichuhead;if(linshi!=NULL){do{zhichu=linshi->info.money+zhichu;linshi=linshi->next;}while(linshi!=NULL);printf("%.4f",zhichu);system("PAUSE");}}void zongzijin(){float zhichu=0;float zongzijin;struct list *linshi;linshi=zhichuhead;if(linshi!=NULL){do{zhichu=linshi->info.money+zhichu;linshi=linshi->next;}while(linshi!=NULL);}float shouru=0;linshi=Inhead;if(linshi!=NULL){do{shouru=linshi->info.money+shouru;linshi=linshi->next;}while(linshi!=NULL);printf("%.4f",shouru-zhichu);system("PAUSE");}}void Tongji(){while(1){tongji_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);if(choice==0){break;}switch(choice){case 1: zongshouru();break;case 2: zongzhichu();break;case 3: zongzijin();break;default: printf("输入错误");break;}}}void Quit(){char panduan;printf("确认退出(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){exit(0);}}int main(){Open();Openzhichu();system("color 72");while(1){Menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: Income();break;case 2: zhichu();break;case 3: Tongji();break;case 0: Quit();break;default: printf("输入错误");break;}}return 0;}。
C语言课程设计——家庭财务管理系统
C语言课程设计——家庭财务管理系统#include<tdio.h>#include<tring.h>#include<tdlib.h>#include<conio.h>#definema某ize2000//定义家庭成员最大人数#definema某infor20000//定义收支信息的最大容量tructpeople//家庭成员登录信息结构{charuername[200];//用户名(也是姓名)charcode[200];//密码charflag[200];//标志0为普通成员,1为家长}peo[ma某ize];tructthing//成员收支信息结构{charname[30];//姓名intyear;//年份intmonth;//月份intoutput;//支出}thi[ma某infor];intn=0,m=0;//全局变量n为文件中家庭成员实际容量m为文件中收支信息实际容量inthold()//将数据写进文件中{FILE某fp;inti;fp=fopen("peoplelit4.t某t","w");{fprintf(fp,"%d\n",n);for(i=0;i<n;i++)fprintf(fp,"%%%\n",peo[i].uername,peo[i].code,peo[i].flag);} fcloe(fp);fp=fopen("thinglit4.t某t","w");{fprintf(fp,"%d\n",m);for(i=0;i<m;i++)}fcloe(fp);return0;}intcarry()//将数据从文件中读出{FILE某fp;inti;if((fp=fopen("peoplelit4.t某t","r"))!=NULL){fcanf(fp,"%d\n",&n);for(i=0;i<n;i++)fcanf(fp,"%%%\n",peo[i].uername,peo[i].code,peo[i].flag);} fcloe(fp);if((fp=fopen("thinglit4.t某t","r"))!=NULL){fcanf(fp,"%d\n",&m);for(i=0;i<m;i++)}fcloe(fp);return0;}intmater()//初始化家长{carry();if(n==0){trcpy(peo[n].uername,"小明"); trcpy(peo[n].code,"2022");trcpy(peo[n].flag,"1");n++;}hold();return0;}intadd_people()//增加新的家庭成员{intj=1,i,q=100,m=3;carry();printf("\n【添加新成员】\n\n"); printf("\n请输入新成员姓名:");canf("%",peo[n].uername);for(i=0;i<n;i++){if(trcmp(peo[i].uername,peo[n].uername)==0){j=0;break;}}if(j==0)printf("\n该成员已存在。
C语言课程设计——家庭财务管理系统
课程设计报告课程设计题目:家庭财务管理系统学生姓名:专业: 信息工程班级:指导教师:2018年1月8日1.需求分析根据家庭账务管理的需要,建立一个“家庭账务管理系统”,以方便对家庭日常收入及支出进行记录和管理。
该系统要求:①家庭月收入管理②家庭月支出管理③统计家庭总收入/总支出④系统提供收入/支出的添加、删除和修改功能。
2. 总体设计根据以上分析,本家庭账务管理系统主要包括:①从键盘键入家庭月收入、月支出数据;②查询月收入、月支出明细;③删除收入、支出数据;④修改收入、支出数据;⑤统计总收入/总支出;⑥退出系统。
除main()函数之外,系统还定义了以下函数来实现各部分内容:①add_income():添加收入数据函数。
②add_payout():添加支出数据函数。
③search_data():查找数据函数。
④initialize():初始化函数,读取文本数据。
⑤show_info():显示数据函数。
⑥count_total():统计函数,统计总收入、总支出。
⑦update_data():修改信息函数。
⑧delete_data():删除数据函数。
⑨quit():退出函数。
程序结构功能图如下:3.详细设计3.1收入管理3.2支出管理4.测试结果4.1 程序运行主菜单4.2 添加收入测试4.3 查询收入明细测试4.4 删除收入测试4.5 修改收入测试4.6 添加支出测试4.7 查询支出明细测试4.8 删除支出测试4.9 修改支出测试4.10 统计总收入/支出测试4.11 退出系统测试5.软件操作使用说明书本系统采用命令行对话方式进行操作,运行后出现主界面(如下图所示),然后按照主界面菜单指引操作即可。
6.总结编写程序之前要有一个整体的思路,不能写到哪里算哪里。
这样很容易遗漏,连续性也不好。
通过本次的课程设计让我对于数组、文件的存放、循环结构等知识有了更加透彻的理解。
希望在以后的课程设计中对于知识的运用能够更加的熟练。
家庭财务管理系统C
目录一、需求分析 (1)二、程序的主要功能 (2)三、程序运行平台 (3)四、系统总框架图 (4)五、程序类的说明 (5)六、模块分析 (6)七、比较有特色的函数 (7)八、存在的不足与对策 (8)一、需求分析家庭财务收支管理是一个家庭日常生活中不可缺少一部分,也是财务管理的重要组成部分。
它的内容对于财务管理者来说都至关重要,设计一个程序对财务收支进行管理是必不可少的。
二、程序的主要功能1、用户管理:对账单的用户进行登记。
2、消费明细:对用户账单明细进行记录。
3、个人账单查询:对用户的账单进行查询。
4、账单总计:对整个系统所存账单进行总计。
5、显示所有用户账单:把所有账单进行显示。
三、程序运行平台Dev c++四、系统总框架图五、程序类的说明class inter_f //定义一个界面类{public:inter_f(){}; //构造~inter_f(){}; //析构void display(); //声明显示用户信息界面函数/////////////////// void check(user* p); //声明用户登记函数void seek(user* p); //声明用户查询函数void show(user* p); //声明显示用户信息函数void add(user* p); //声明用户新增函数void cancel(user* p); //声明用户注销函数void exit(); //声明用户退出函数void limit(user& ru); //声明用户操作界面函数void display2(); //消费明细界面函数///////////////////////void water_cost(user* p); //水费函数void elec_cost(user* p); //电费函数void comm_cost(user* p); //通信费函数void shop_cost(user* p); //购物费函数void gas_cost(user* p); //煤气费函数void pin_cost(user* p); //零用函数void exit2(); //声明退出消费明细函数void limit2(user& ru); //声明消费明细操作界面函数void display1(); //声明显示总信息界面//////////////////////void personal_bill(user* p); //声明个人账单函数void amount_bill(user* p); //账单总计函数void show1(user* p); //声明显示所有用户账务函数void exit1(); //声明财务退出函数void limit1(user& ru); ////总界面函数};六、模块分析1、用户管理:对账单的用户进行登记。
C语言家庭财务管理系统代码
#include <stdio.h>#include <stdlib.h>#include <string.h>struct Data{char name[20];char riqi[8];float money;char beizhu[50];};struct list{struct Data info;struct list *next;};struct list *Inhead=NULL;struct list *Intail=NULL;struct list *zhichuhead=NULL;struct list *zhichutail=NULL;struct list *temp=NULL;void chaxun_income();void chaxun_zhichu();void xiugai_income();void xiugai_zhichu();void Save_income(){FILE *fp;fp=fopen("D:\家庭财务管理.txt","w");struct list *p = Inhead;while(p != NULL){fwrite(&p->info, sizeof(struct Data), 1, fp);p = p->next;}fclose(fp);}void Save_zhichu(){FILE *fp;fp=fopen("D:\家庭财务管理支出.txt","w");struct list *p = zhichuhead;while(p != NULL){fwrite(&p->info, sizeof(struct Data), 1, fp);p = p->next;}fclose(fp);}void Open(){FILE *fp;fp=fopen("D:\家庭财务管理.txt","r");if(fp!=NULL){struct Data linshi;while(fread(&linshi, sizeof(struct Data), 1, fp) == 1){temp=(struct list*)malloc(sizeof(struct list));temp->info=linshi;temp->next=NULL;if(Inhead == NULL){Inhead = temp;Intail = temp;}else{Intail->next = temp;Intail = temp;}}fclose(fp);}}void Menu(){ system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1:收入操作\n");printf(" 2:支出操作\n");printf(" 3:统计操作\n");printf(" 0:退出\n");}void Openzhichu(){FILE *fp;fp=fopen("D:\家庭财务管理支出.txt","r");if(fp!=NULL){struct Data linshi;while(fread(&linshi, sizeof(struct Data), 1, fp) == 1){temp=(struct list*)malloc(sizeof(struct list));temp->info=linshi;temp->next=NULL;if(zhichuhead == NULL){zhichuhead = temp;zhichutail = temp;}else{zhichutail->next = temp;zhichutail = temp;}}fclose(fp);}}void mingzi (){char chazhao[20];printf("请输入查询的名字");gets(chazhao);struct list *p = Inhead;while(p != NULL){if(strcmp(p->,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void mingzi_zhichu (){char chazhao[20];printf("请输入查询的名字");gets(chazhao);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void mingzi_xiugai_income(){char xiugai[20];printf("请输入修改的名字");fflush(stdin);gets(xiugai);struct list *p = Inhead;while(p != NULL){if(strcmp(p->,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void mingzi_xiugai_zhichu(){char xiugai[20];printf("请输入修改的名字");fflush(stdin);gets(xiugai);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void riqi(){char chazhao[20];printf("请输入查询的日期");gets(chazhao);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.riqi,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void riqi_zhichu(){char chazhao[20];printf("请输入查询的日期");gets(chazhao);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.riqi,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void riqi_xiugai_income(){char xiugai[20];printf("请输入修改的日期");fflush(stdin);gets(xiugai);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.riqi,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void riqi_xiugai_zhichu(){char xiugai[20];printf("请输入修改的日期");fflush(stdin);gets(xiugai);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.riqi,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void money (){float chazhao;printf("请输入查询的money");scanf("%f",&chazhao);fflush(stdin);struct list *p = Inhead;while(p != NULL){if(p->info.money==chazhao){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void money_zhichu (){float chazhao;printf("请输入查询的money");scanf("%f",&chazhao);fflush(stdin);struct list *p = zhichuhead;while(p != NULL){if(p->info.money==chazhao){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void money_xiugai_income(){float xiugai;printf("请输入修改的money");scanf("%f",&xiugai);fflush(stdin);struct list *p = Inhead;while(p != NULL){if(p->info.money==xiugai){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void money_xiugai_zhichu(){float xiugai;printf("请输入修改的money");scanf("%f",&xiugai);fflush(stdin);struct list *p = zhichuhead;while(p != NULL){if(p->info.money==xiugai){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void beizhu(){char chazhao[20];printf("请输入查询的备注");gets(chazhao);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.beizhu,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(Inhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_income();}}}void beizhu_zhichu(){char chazhao[20];printf("请输入查询的备注");gets(chazhao);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.beizhu,chazhao)==0){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);system("PAUSE");}p = p->next;}if(zhichuhead!=NULL){char panduan;printf("是否继续查询(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){chaxun_zhichu();}}}void beizhu_xiugai_income(){char xiugai[20];printf("请输入修改的备注");fflush(stdin);gets(xiugai);struct list *p = Inhead;while(p != NULL){if(strcmp(p->info.beizhu,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_income();if(Inhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_income();}}}void beizhu_xiugai_zhichu(){char xiugai[20];printf("请输入修改的备注");fflush(stdin);gets(xiugai);fflush(stdin);struct list *p = zhichuhead;while(p != NULL){if(strcmp(p->info.beizhu,xiugai)==0){fflush(stdin);printf("姓名:");gets(p->);fflush(stdin);printf("日期:");gets(p->info.riqi);fflush(stdin);printf("支出: ");scanf("%f",&p->info.money);fflush(stdin);printf("备注:");gets(p->info.beizhu);fflush(stdin);//------}p = p->next;}Save_zhichu();if(zhichuhead!=NULL){char panduan;printf("是否继续修改(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){xiugai_zhichu();}}}void Income_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.添加收入\n");printf(" 2.删除收入\n");printf(" 3.查询收入\n");printf(" 4.显示收入\n");printf(" 5.修改收入\n");printf(" 0.返回上一级\n");}void zhichu_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.添加支出\n");printf(" 2.删除支出\n");printf(" 3.查询支出\n");printf(" 4.显示支出\n");printf(" 5.修改支出\n");printf(" 0.返回上一级\n");}void chaxun_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.按名字查询\n");printf(" 2.按日期查询\n");printf(" 3.按money询\n");printf(" 4.按备注查询\n");printf(" 0.返回上一级\n"); }void xiugai_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.按名字修改\n");printf(" 2.按日期修改\n");printf(" 3.按money修改\n");printf(" 4.按备注修改\n");printf(" 0.返回上一级\n");}void Add_income(){char panduan;do{temp=(struct list*)malloc(sizeof(struct list));printf("姓名");gets(temp->);fflush(stdin);printf("日期(XX年XX月XX日)");gets(temp->info.riqi);fflush(stdin);printf("收入");scanf("%f",&temp->info.money);fflush(stdin);printf("备注");gets(temp->info.beizhu);fflush(stdin);printf("\n");//------自己添加temp->next=NULL;if(Inhead == NULL){Inhead = temp;Intail = temp;}else{Intail->next = temp;Intail = temp;}Save_income();//后面可以添加“继续添加功能”printf("是否(Y/N)继续添加信息\n");panduan=getchar();fflush(stdin);}while(panduan=='Y'||panduan=='y');system("PAUSE");}void Add_zhichu(){char panduan;do{temp=(struct list*)malloc(sizeof(struct list));printf("姓名");gets(temp->);fflush(stdin);printf("日期(XX年XX月XX日)");gets(temp->info.riqi);fflush(stdin);printf("支出");scanf("%f",&temp->info.money);fflush(stdin);printf("备注");gets(temp->info.beizhu);fflush(stdin);printf("\n");//------自己添加temp->next=NULL;if(zhichuhead == NULL){zhichuhead = temp;zhichutail = temp;}else{zhichutail->next = temp;zhichutail = temp;}Save_zhichu();//后面可以添加“继续添加功能”printf("是否(Y/N)继续添加信息\n");panduan=getchar();fflush(stdin);}while(panduan=='Y'||panduan=='y');system("PAUSE");}void Del_income(){char shanchu[20];struct list *p=NULL;struct list *m =NULL;struct list *n =NULL;p=Inhead;printf("请输入删除姓名");gets(shanchu);if(strcmp(Inhead->,shanchu)==0){while(Inhead!=NULL && strcmp(Inhead->,shanchu)==0) {char ch;printf("找到一个数据名字为%s,确认删除Y/N?",shanchu);ch=getchar();fflush(stdin);if(ch=='y'||ch=='Y') Inhead=Inhead->next;else break;}}else{if(strcmp(Intail->,shanchu)==0){do{ m=p;p=p->next;}while(p!=Intail);m->next=NULL;}//删除尾巴else{do{m=p;p=p->next;n=p->next;}while(strcmp(p->,shanchu)!=0&&n->next!=NULL);if(strcmp(p->,shanchu)==0)m->next=n;}}//删除除头节点之外的节点,自己课后完成Save_income();if(Inhead!=NULL){char panduan;printf("是否继续删除(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){Del_income();}}}void Del_zhichu(){char shanchu[20];struct list *p=NULL;struct list *m =NULL;struct list *n =NULL;p=zhichuhead;printf("请输入删除姓名");gets(shanchu);if(strcmp(zhichuhead->,shanchu)==0){while(zhichuhead!=NULL && strcmp(zhichuhead->,shanchu)==0) {char ch;printf("找到一个数据名字为%s,确认删除Y/N?",shanchu);ch=getchar();fflush(stdin);if(ch=='y'||ch=='Y') zhichuhead=zhichuhead->next;else break;}}else{if(strcmp(zhichutail->,shanchu)==0){do{ m=p;p=p->next;}while(p!=zhichutail);m->next=NULL;}//删除尾巴else{do{m=p;p=p->next;n=p->next;}while(strcmp(p->,shanchu)!=0&&n->next!=NULL);if(strcmp(p->,shanchu)==0)m->next=n;}}Save_zhichu();//删除除头节点之外的节点,自己课后完成if(zhichuhead!=NULL){char panduan;printf("是否继续删除(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){Del_zhichu();}}}void xiugai_income(){xiugai_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi_xiugai_income();break;case 2: riqi_xiugai_income();break;case 3: money_xiugai_income();break;case 4: beizhu_xiugai_income();break;default: printf("输入错误");break;}}void xiugai_zhichu(){xiugai_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi_xiugai_zhichu();break;case 2: riqi_xiugai_zhichu();break;case 3: money_xiugai_zhichu();break;case 4: beizhu_xiugai_zhichu();break;default: printf("输入错误");break;}}void chaxun_income(){chaxun_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi();break;case 2: riqi();break;case 3: money();break;case 4: beizhu();break;default: printf("输入错误");break;}}void chaxun_zhichu(){chaxun_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: mingzi_zhichu();break;case 2: riqi_zhichu();break;case 3: money_zhichu();break;case 4: beizhu_zhichu();break;default: printf("输入错误");break;}}void Sho_income(){struct list *p = Inhead;while(p != NULL){printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("收入:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);p = p->next;}system("PAUSE");}void Sho_zhichu(){struct list *p = zhichuhead;while(p != NULL){fflush(stdin);printf("姓名:");puts(p->);printf("日期:");puts(p->info.riqi);printf("支出:");printf("%.4f\n",p->info.money);printf("备注:");puts(p->info.beizhu);p = p->next;}system("PAUSE");}void Income(){int choice;while(1){Income_menu();printf("请输入选择");scanf("%d",&choice);fflush(stdin);if(choice==0){break;}elseswitch(choice){case 1: Add_income(); Save_income();break;case 2: Del_income(); Save_income();break;case 3: chaxun_income(); Save_income();break;case 4: Sho_income(); Save_income();break;case 5: xiugai_income(); Save_income();break;}}}void zhichu(){int choice;while(1){zhichu_menu();printf("请输入选择");scanf("%d",&choice);fflush(stdin);if(choice==0){break;}elseswitch(choice){case 1: Add_zhichu(); Save_zhichu();break;case 2: Del_zhichu(); Save_zhichu();break;case 3: chaxun_zhichu(); Save_zhichu();break;case 4: Sho_zhichu(); Save_zhichu();break;case 5: xiugai_zhichu(); Save_zhichu();break;}}}void tongji_menu(){system("cls");printf("\n");printf("\n");printf("\n");printf("\n");printf("******************\n");printf("欢迎使用家庭财务管理系统\n");printf("******************\n");printf(" \n");printf(" 1.总收入\n");printf(" 2.总支出\n");printf(" 3.总资金\n");printf(" 0.返回上一级\n");}void zongshouru(){float shouru=0;struct list *linshi;linshi=Inhead;if(linshi!=NULL){do{shouru=linshi->info.money+shouru;linshi=linshi->next;}while(linshi!=NULL);printf("%.4f",shouru);system("PAUSE");}}void zongzhichu(){float zhichu=0;struct list *linshi;linshi=zhichuhead;if(linshi!=NULL){do{zhichu=linshi->info.money+zhichu;linshi=linshi->next;}while(linshi!=NULL);printf("%.4f",zhichu);system("PAUSE");}}void zongzijin(){float zhichu=0;float zongzijin;struct list *linshi;linshi=zhichuhead;if(linshi!=NULL){do{zhichu=linshi->info.money+zhichu;linshi=linshi->next;}while(linshi!=NULL);}float shouru=0;linshi=Inhead;if(linshi!=NULL){do{shouru=linshi->info.money+shouru;linshi=linshi->next;}while(linshi!=NULL);printf("%.4f",shouru-zhichu);system("PAUSE");}}void Tongji(){while(1){tongji_menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);if(choice==0){break;}switch(choice){case 1: zongshouru();break;case 2: zongzhichu();break;case 3: zongzijin();break;default: printf("输入错误");break;}}}void Quit(){char panduan;printf("确认退出(Y/N)");panduan=getchar();fflush(stdin);if(panduan=='Y'||panduan=='y'){exit(0);}}int main(){Open();Openzhichu();system("color 72");while(1){Menu();int choice;printf(" 请输入你的选择:");scanf("%d",&choice);fflush(stdin);switch(choice){case 1: Income();break;case 2: zhichu();break;case 3: Tongji();break;case 0: Quit();break;default: printf("输入错误");break;}}return 0;}。
C语言程序设计---家庭财务管理系统
C语言程序设计—家庭财务管理系统摘要本报告介绍了一个运用C语言知识和Microsoft Visual c++ 6.0创建的用于家庭各成员财务情况管理的家庭财务管理系统.在该系统中创建了包含编辑,增加,删除,修改,查找,浏览的功能总列表,创建序号链接各功能列表,输入家庭成员收入信息情况,增加信息,删除信息,修改信息,创建姓名查找便于用户查找个人财务情况,创建合计排序浏览用户可从总体上浏览全家庭财务信息情况.关键词:C语言,Visual c++ 6.0, 家庭财务管理系统小组情况本系统是通过小组全体成员的共同努力,经过分工合作完成的,具体分工如下:1。
合作的工作需求分析、概念结构设计、逻辑结构设计和报告的草稿通过小组讨论完成。
2。
分工在家庭财务管理系统的总体方案确定之后,小组成员开始分工,独立完成不同的模块及工作。
其中●:负责家庭财务管理系统主函数、总程序的编译连接、报告的撰写排版工作。
●:负责家庭财务管理系统各主要函数及总程序的编译连接。
●:负责家庭财务管理系统增加函数的编译、报告的撰写工作.●:负责家庭财务管理系统删除函数的编译、报告的撰写工作.●:负责家庭财务管理系统创建函数的编译工作.目录1 绪论 (1)2方案设计分析 (2)2.2.函数设计 (2)2。
3。
各函数代码设计及N-S图 (2)3系统运行情况 (5)3.1出现的问题 (5)3。
2相关的解决方法 (5)3。
3目前的运行情况 (5)3。
4系统操作说明 (5)总结 (7)致谢 (8)参考文献 (9)1 绪论家庭财务管理对于每一个家庭来说有着重要的意义,随着科技的发达,财务的管理由原先的手写账本发展到现今的电脑系统输入并统计,不仅大大减少了时间与精力,也是财务管理更系统化,便捷化,清晰化,减少金钱上的缺失。
家庭财务系统主要对家庭的各项财务收支管理进行在计算机上的信息存储和处理,从而简化用户的工作量本报告设计的家庭财务管理系统主要是负责给家庭成员提供了一个在Windows操作系统上运行的管理平台,家庭财务管理者可以对其成员编号、姓名以及收入、支出构成进行增加、删除、修改,查找等管理操作,还可以对全家庭财务合计排序浏览.C语言是国内外广泛使用的一种计算机语言,学会使用C语言进行程序设计是计算机工作者的一项基本功。
C语言课程设计——家庭财务管理系统
课程设计陈述之袁州冬雪创作课程设计题目:家庭财务管理系统学生姓名:专业:信息工程班级:指导教员:2018年 1月 8日1.需求分析根据家庭账务管理的需要,建立一个“家庭账务管理系统”,以方便对家庭日常收入及支出停止记录和管理.该系统要求:①家庭月收入管理②家庭月支出管理③统计家庭总收入/总支出④系统提供收入/支出的添加、删除和修改功能.2. 总体设计根据以上分析,本家庭账务管理系统主要包含:①从键盘键入家庭月收入、月支出数据;②查询月收入、月支出明细;③删除收入、支出数据;④修改收入、支出数据;⑤统计总收入/总支出;⑥退出系统.除main()函数之外,系统还定义了以下函数来实现各部分内容:①add_income():添加收入数据函数.②add_payout():添加支出数据函数.③search_data():查找数据函数.④initialize():初始化函数,读取文本数据.⑤show_info():显示数据函数.⑥count_total():统计函数,统计总收入、总支出.⑦update_data():修改信息函数.⑧delete_data():删除数据函数.⑨quit():退出函数.程序布局功能图如下:3.详细设计4.测试成果4.1 程序运行主菜单4.2 添加收入测试4.3 查询收入明细测试4.4 删除收入测试4.5 修改收入测试4.6 添加支出测试4.7 查询支出明细测试4.8 删除支出测试4.9 修改支出测试4.10 统计总收入/支出测试4.11 退出系统测试5.软件操纵使用说明书本系统采取饬令行对话方式停止操纵,运行后出现主界面(如下图所示),然后依照主界面菜单指引操纵即可.编写程序之前要有一个整体的思路,不克不及写到哪里算哪里.这样很容易遗漏,持续性也欠好.通过本次的课程设计让我对于数组、文件的存放、循环布局等知识有了更加透彻的懂得.希望在以后的课程设计中对于知识的运用可以更加的熟练.代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define MAXNAME 11 //家庭成员姓名的最大长度#define MAXDETAIL 21 //注最大长度//自定义列举类型fi_type,用来暗示收入与支出typedef enum _fi_type{income=1,//收入payout =-1 //支出} fi_type;// 家庭财务信息布局体typedef struct _fi_info{int year;int month;fi_type type;char name[9];float money;char detail[11];}fi_info;// 存储财务数据布局的布局体typedef struct _fi_data{fi_info info;struct _fi_data* next;} fi_data;fi_data *head;//财务数据的头结点 void menu();//菜单函数void add_income();void search_income();void delete_income();void update_income();void add_payout();void search_payout();void delete_payout();void update_payout();void count_total();void quit();//void search_data(fi_type type);void delete_data(fi_type type);void update_data(fi_type type);//void initialize();void save_to_file();void clear_data();fi_data *get_last();fi_data *get_previous(fi_data *p); void input_info(fi_info *info);void show_info(fi_data *p);void menu(){printf("\n");printf("\t\t~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t\t 家庭财务管理系统\n");printf("\t\t~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t*************************************** ****\n");printf("\t\t收入管理:");printf("1.添加收入");printf(" 2.查询收入明细\n");printf("\t\t\t 3.删除收入");printf(" 4.修改收入\n");printf("\t\t*************************************** ****\n");printf("\t\t支出管理:");printf("5.添加支出");printf(" 6.查询支出明细\n");printf("\t\t\t 7.删除支出");printf(" 8.修改支出\n");printf("\t\t*************************************** ****\n");printf("\t\t统计:");printf("9.统计总收入/总支出\n");printf("\t\t*************************************** ****\n");printf("\t\t退出:0.退出系统\n");printf("\t\t*************************************** ****\n\n\n");}void main(){int selected=0;initialize();while(selected>=0&&selected<=9){system("cls");menu();printf("\t\t>请选择要停止的操纵(0-9):");if(scanf("%d",&selected)!=1||selected<0||selected>9) {printf("\t\t>输入有误!请选择(0-9)之间的数字!按任意键重试");getchar();}else{switch(selected){case 0:exit(0);clear_data();break;case 1:add_income();save_to_file();break; case 2:search_income();break;case3:delete_income();save_to_file();break;case4:update_income();save_to_file();break;case 5:add_payout();save_to_file();break;case 6:search_payout();break;case7:delete_payout();save_to_file();break;case8:update_payout();save_to_file();break;case 9:count_total();break;}}}}void add_income()//添加收入{fi_data *p=(fi_data *)malloc(sizeof(fi_data)); p->next=NULL;input_info(&(p->info));p->info.type=income;if(head==NULL)head=p;elseget_last()->next=p;}void add_payout()//添加支出{fi_data *p=(fi_data *)malloc(sizeof(fi_data)); p->next=NULL;input_info(&(p->info));p->info.type=payout;if(head==NULL)head=p;elseget_last()->next=p;}//输入函数void input_info(fi_info *info){printf("\t\t>请输入年代(YYYY/M)");scanf("%d/%d",&(info->year),&(info->month));printf("\t\t>请输入家庭成员姓名(最大长度为%d):",MAXNAME-1);scanf("%s",info->name);printf("\t\t>输入金额:");scanf("%f",&(info->money));printf("\t\t>请输入备注(最大长度为%d):",20);scanf("%s",info->detail);}//查找数据函数void search_data(fi_type type){int year=0;int month=0;fi_data *p=NULL;int count=0;char input=' ';while(1){printf("\t\t>请输入要查询的年代(YYYY/M)"); if(scanf("%d/%d",&year,&month)!=2){printf("\t\t>输入有误\n");}else{p=head;count=0;while(p!=NULL){if((p->info.year==year)&&(p->info.month==month)&&(p->info.type==type)){show_info(p);system("PAUSE");count++;}p=p->next;}if(count==0){printf("\t\t>没有找到数据\n");}printf("\t\t>继续查找其他数据?(y or n)"); input=getchar();if(input=='y'||input=='Y')continue;elsebreak;}}}//初始化函数,读取文本数据void initialize(){FILE * fp=NULL;fi_data *p=NULL;fi_data *last=NULL;int count=0;fp=fopen("data.txt","rb");if(fp==NULL){fp=fopen("data.txt","w");fclose(fp);return;}p=(fi_data*)malloc(sizeof(fi_data));memset(p,0,sizeof(fi_data));p->next=NULL;while(fread(&(p->info),sizeof(fi_info),1,fp)==1) {if(head==NULL)head=p;else{last=get_last();last->next=p;}count++;fseek(fp,count*sizeof(fi_info),SEEK_SET);p=(fi_data *)malloc(sizeof(fi_data));memset(p,0,sizeof(fi_data));p->next=NULL;}free(p);p=NULL;fclose(fp);}//显示信息函数void show_info(fi_data *p){int i=0;printf("|\t\t|\t\t|\t\t|\t\t|\t\t|\t\t|\n");printf("|NO.\t |年/月\t\t|类型\t\t|姓名\t\t|金额\t\t|备注\t\t|\n");printf("|%5d\t|%4d/%02d\t|%4s\t|%10s\t|%10.2f|%20s| \n",i+1,p->info.year,p->info.month,p->info.type==income?"收入":"支出",p->,p->info.money,p->info.detail);printf("|\t\t|\t\t|\t\t|\t\t|\t\t|\t\t|\n");}//统计总收入、总支出void count_total(){float total_income=0.0;float total_payout=0.0;fi_data *p=head;while(p!=NULL){if(p->info.type==income){total_income+=p->info.money;}else{total_payout+=p->info.money;}p=p->next;}printf("\t\t+\t\t+\t\t+\n");printf("\t\t|合计收入\t|合计支出\t|节余\t|\n");printf("\t\t%12.2f|%12.2f|%12.2f|\n",total_income,t otal_payout,total_income-total_payout);printf("\t\t+\t\t+\t\t+\n");printf("\t\t>按任意键返回主菜单");getchar();getchar();}//保管到文件void save_to_file(){FILE *fp=fopen("data.txt","wb" );fi_data *p=head;while(p!=NULL){fwrite(&(p->info),sizeof(fi_info),1,fp);fseek(fp,0,SEEK_END);p=p->next;}fclose(fp);}//修改信息函数void update_data(fi_type type){ int year=0;int month=0;fi_data *p=NULL;fi_data *pre=NULL;char input;int count=0;int i=0;while(1){ printf("\t\t>请输入要查询的年代(YYYY/M)"); if(scanf("%d/%d",&year,&month)!=2){printf("\t\t>输入有误\n");}else{p=head;count=0;while(p!=NULL){if((p->info.year==year)&&(p->info.month==month)&&(p->info.type==type)){count++;show_info(p);input_info(&(p->info));printf("\t\t修改成功\n");p=get_previous(p);}p=p->next;}if(count==0)printf("\t\t>没有找到数据\n");printf("\t\t>继续查找其他数据?(y or n)"); input=getchar();if(input=='y'||input=='Y')continue;elsebreak;}}}void delete_data(fi_type type)//删除数据函数 {int year=0;int month=0;fi_data *p=NULL;fi_data *pre=NULL;int count=0;char input=' ';int i=0;while(1){ printf("\t\t>请输入要查询的年代(YYYY/M)"); if(scanf("%d/%d",&year,&month)!=2){printf("\t\t>输入有误\n");}else{p=head;count=0;while(p!=NULL){if((p->info.year==year)&&(p->info.month==month)&&(p->info.type==type)){count++;show_info(p);pre=get_previous(p);if(pre==NULL)head=head->next;elsepre->next=p->next;free(p);printf("\t\t>删除成功\n");}p=p->next;}if(count==0)printf("\t\t>没有找到数据\n");printf("\t\t>继续查找其他数据?(y or n)"); input=getchar();if(input=='y'||input=='Y')continue;elsebreak;}}}void clear_data()//清空链表数据 {fi_data *p=NULL;while(head!=NULL){if(head->next!=NULL){p=head;head=head->next;free(p);p=NULL;}else{free(head);head=NULL;}}fi_data *get_last() {fi_data * p=head;if(p==NULL)return p;while((p!=NULL)&&(p->next!=NULL))p=p->next;return p;}fi_data *get_previous(fi_data *p){fi_data *previous=head;while(previous!=NULL){if(previous->next==p)break;previous=previous->next;}return previous;void search_payout() {search_data(payout); }void delete_payout() {delete_data(payout); }void update_payout() {update_data(payout); }void search_income() {search_data(income); }void delete_income() {delete_data(income); }void update_income()update_data(income); }。
C语言课程设计-家庭财务管理系统
HUNAN UNIVERSITY 程序设计训练报告课程名称家庭财务管理系统学生姓名学生学号专业班级指导老师起止时间湖南大学课程训练设计报告家庭财务管理系统摘要本报告介绍了一个运用C语言知识和Microsoft Visual c++ 创建的用于家庭各成员财务情况管理的家庭财务管理系统。
在该系统中创建了包含增加,删除,修改,查找,浏览的功能总列表,包含了输入家庭成员收入信息情况,增加信息,删除信息,修改信息,创建姓名查找和编号查询便于用户查找个人财务情况,创建合计排序浏览用户可从总体上浏览全家庭财务信息情况。
目录1 绪论 (1)2 问题定义 (2)3 可行性分析 (2)4 系统需求 (4)5 方案设计分析 (5)6 系统运行情况 (14)7 系统维护 (15)8 致谢 (15)1 绪论家庭财务管理对于每一个家庭来说有着重要的意义,随着科技的发达,财务的管理由原先的手写账本发展到现今的电脑系统输入并统计,不仅大大减少了时间与精力,也是财务管理更系统化,便捷化,清晰化,减少金钱上的缺失。
家庭财务系统主要对家庭的各项财务收支管理进行在计算机上的信息存储和处理,从而简化用户的工作量本报告设计的家庭财务管理系统主要是负责给家庭成员提供了一个在Windows操作系统上运行的管理平台,家庭财务管理者可以对其成员编号、姓名以及收入、支出构成进行增加、删除、修改,查找等管理操作,还可以对全家庭财务合计排序浏览。
C语言是国内外广泛使用的一种计算机语言,学会使用C语言进行程序设计是计算机工作者的一项基本功。
对于我们大学生来说,学习这样一门“C程序设计教程”更是必要的。
本课程设计“家庭财务管理系统”就是通过学习《C程序设计》采用Visual C++作为编译环境,是程序编译和运行的。
本系统的总体思想基于结构化的程序设计。
应用高级语言程序设计中的基本控制结构,如循环和选择,着重实现管理系统的增、删、改、查等典型的管理功能。
程序设计是一门实践性很强的课程,既要掌握概念,又要动手编译,还要上机调试运行,通过这一次的课程设计我们从实践中更进一步的学习和了解C语言,当然由于个人的技术水平有限,在这途中遇到很多问题,程序也未能做到很完美,望见谅!2问题定义家庭财务管理系统的问题定义阶段必须回答的关键问题是:“要解决的问题是什么”不知道问题是什么就试图解决这个问题,显然是盲目的,只会白白浪费时间和金钱,最终得出的结果可能是毫无意义的。
C语言财务管理系统(源代码)
#include"stdio.h"#include"stdlib.h"#define MAX_NAME 11#define MAX_DETAIL 21 #define MENU_COUNT 9 #define DATA_FILE "fa.dat" typedef wnum_fi_type{income=1,payout=-1}fi_type;typedef struct_fi_info{int year;int month;fi_type type;char name[MAX_NAME]; float money;char detail[MAX_DETAIL]; }fi_info;typedef struct_fi_data{fi_info info;struct_fi_data *next;}fi_data;void add_income();void search_income();void delete_income();void update_income();void add_payout();void search_payout();void delete_payout();void update_payout();void count_total();void quit();void search_data(fi_type type);void delete_data(fi_type type);void update_data(fi_type type);void initialize();void save_to_file();void clear_data();fi_data *get_last();fi_data *get_previous(fi_data *p);void input_info(fi_info *info);void show_info(fi_data *p[],int count);fi_data *head;char menu[]="===============================================\n" "| 家庭财务管理系统|\n""+---------------------------------------------+\n" "| 收入管理|\n""| 1 添加收入|\n""| 2 查询收入明细|\n""| 3 删除收入|\n""| 4 修改收入|\n""| 支出管理|\n""| 5 添加支出|\n""| 6 查询支出明细|\n""| 7 删除支出|\n""| 8 修改支出|\n""| 统计|\n""| 9 统计总收入总支出|\n""----------------------------------------------+\n" "| 0 退出系统|\n""==============================================+\n"; void(*menu_fun[])()={quit,add_income,search_income,delete_income,update_income,add_payout,search_payout,delete_payout,update_payout,count_total};int main(){int selected=0;initialize();while(selected>=0 && selected<=MENU_COUNT){system("cls");printf(menu);printf(">请选择要进行的操作(%d - %d):",0,MENU_COUNT);if(scanf("%d",&selected)!=1||selected<0||selected>MENU_COUNT){printf(">输入错误!请选择[ %d - %d]之间的数字!按任意键重试...",0,MENU_COUNT); fflush(stdin);getchar();}else{menu_fun[selected]();}selected=0;}}void add_income(){fi_data *p=(fi_data *)malloc(sizeof(fi_data));memset(p,0,sizeof(fi_data));p->next=NULL;input_info(&(p->info));if(head==NULL){head=p;}else{get_last(head)->next=p;}}void search_income(){search_data(income);}void delete_income(){delete_data(income);}void update_income(){update_data(income);}void add_payout(){fi_data *p=(fi_data*)malloc(sizeof(fi_data)); memset(p,0,sizeof(fi_data));input_info(&(p->info));if(head==NULL){head=p;}else{get_last(head)->next=p; }}void search_payout() {search_data(payout); }void delete_payout() {delete_data(payout); }void update_payout() {update_data(payout); }void count_total(){float total_income=0.0; float total_payout=0.0; fi_data *p=head;while(p!=NULL){if(p->info.type==income){total_income+=p->info.money;}else{total_payout+=p->info.money;}p=p->next;}printf("+---------+---------+---------+\n");printf("| 合计收入| 合计支出| 结余|\n");printf("+---------+---------+---------+\n");printf("|%12.2f|%12.2f|%12.2f|\n", total_income, total_payout,total_income - total_payout); printf("+---------+---------+---------+\n");printf(">按任意键继续返回主菜单...");fflush(stdin);getchar();}void search_data(fi_type type){int year=0;int month=0;fi_data *p=NULL;fi_data *result[9]={NULL};char input=' ';while(1){printf(">请输入要查询的年月(例如:2009/1)");if(scanf("%d/%d",&year,&month)!=2){printf(">输入错误。