家庭支出管理系统—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.详细设计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语言编写-家庭财务管理系统

c语言编写-家庭财务管理系统
s[recNumber].in=Tm.in;
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");

家庭支出管理系统—c语言程序设计

家庭支出管理系统—c语言程序设计

程序设计报告( 2015 / 2016 学年第二学期)题目:家庭支出管理系统专业微电子科学与工程组长学号姓名组员学号姓名指导教师许棣华指导单位日期2016年 6 月3日家庭支出管理系统一、课题内容和要求1、该系统要求对一个家庭某月的支出情况进行统计和分析。

通过此课题,熟练掌握数组、指针的各种操作,以及一些算法思想的应用。

2、功能要求:(1)支出信息包括:支出类型(主要可以分为饮食,服饰装扮,礼金,教育培训,电器,健身,通讯,子女培养,旅游,文化娱乐,医疗,交通,聚会,居住等小项),金额,消费地点,消费时间等。

(2)需要实现的功能:1)用户根据口令进入系统2)输入某一月份,完成该月份的支出管理3)输入并统计该月的支出情况4)显示该月支出信息表,内容应包括日期,金额等5)按支出类型进行分类统计和排序6)进行本月消费分析,即分析每项支出所占总支出的百分比,并显示分析结果7)显示按支出类型排序后的支出信息8)将排序后的内容存为文件。

(3)界面友好,输入信息符合逻辑如存款金额不为负数、不可能有非数字的字符等。

二、需求分析家庭支出管理系统的功能框架图如图1所示。

图1 功能框架图(1)功能选择函数:此函数是为了让用户根据主界面选择功能并根据提示来进行操作。

(2)输入函数:为了实现将各个支出项目的类别,支出的金额以及消费的时间,地点等存入需要的文件里,所以必须先要存在存储器里。

(3)输出函数:即通过行列表来直观对应存储文件中的项目的类别,金额,消费时间及地点。

(4)分析函数:读取本月的存储文档中的信息,对本月的消费进行分析,求出本月的消费总和,分析出每项支出所占总支出的百分比,通过他们各自的项目金额所占的百分比来直观显示那个指出比较重要。

随后与本月收入进行比较,求出收支比。

(5)类别排序函数:就是将输入的信息进行按类别排序。

(6)保存函数:将本次添加的信息进行保存到相应月份的支出信息文档中。

(7)登录界面:因为家庭支出管理系统涉及到私人财务,所以需要利用密码函数对程序进行保密。

案例四 家庭财务管理系统

案例四 家庭财务管理系统

案例四家庭财务管理系统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#程序设计-家庭账单管理系统

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);}}}。

家庭支出管理系统详细代码

家庭支出管理系统详细代码

先在D盘先建立“密码.txt(在里面写入初始六位密码)”;“支出信息。

txt”即可。

代码:#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <string.h>#include <conio.h>#include <malloc.h>typedef struct //定义结构体{char type[20];//消费类型float Getsum;//消费金额char place[20];//消费地点int time;//消费时间}family;family fam[80];int menu()//显示该系统所具备的功能{char c;do{system("cls");//清屏printf("\t\t***************************\n");printf("\t\t**********菜单系统*********\n");printf("\t\t|1.输入消费信息|\n");printf("\t\t|2.计算消费总和|\n");printf("\t\t|3.显示消费情况|\n");printf("\t\t|4.对同种类型消费进行排序并显示|\n");printf("\t\t|5.消费情况分析|\n");printf("\t\t|6.保存数据|\n");printf("\t\t|0.退出系统|\n");printf("\t\t***************************\n");printf("\t\t***************************\n");printf("\t\t\t请对应选择所需选项(0-6):");c=getchar();}while(c<'0'||c>'6');return(c-'0');}void password()//密码验证和密码修改{int m;printf("\t\t****************登陆界面****************\n");printf("\t\t****************************************\n");printf("\t\t**\t\t1.密码修改**\n");printf("\t\t**\t\t2.登陆**\n");printf("\t\t****************************************\n");printf("\t\t****************************************\n");printf("\t\t\t请输入您所要的选项(1,2):");scanf("%d",&m);getchar();switch(m){case 1://密码修改{int i,j;char a[7],b[7],c[7],d[7];FILE *fp1; FILE *fp2;fp1=fopen("D:\\密码.txt","r");if(!fp1){printf("file cannot be opened");exit(1);}for(i=0;!feof(fp1);i++) //feof判断文件是否结束{a[i]=fgetc(fp1);}fclose(fp1);printf("\t\t\t请输入原密码:");for(j=0;j<7;j++){scanf("%c",b+j);//判断数组b是否和原密码是否相等if(b[j]>='0'&&b[j]<='9'||b[j]>='a'&&b[j]<='z'||b[j]>='A'&&b[j]<='Z')putchar('*');}if(a[0]==b[0]&&a[1]==b[1]&&a[2]==b[2]&&a[3]==b[3]&&a[4]==b[4]&&a[5]==b[5]) {do{printf("\t\t\t请设置您的新密码: ");for(j=0;j<7;j++){scanf("%c",c+j);if(c[j]>='0'&&c[j]<='9'||c[j]>='a'&&c[j]<='z'||c[j]>='A'&&c[j]<='Z')putchar('*');}printf("\t\t\t请确认您的新密码: ");for(j=0;j<7;j++){scanf("%c",d+j);if(d[j]>='0'&&d[j]<='9'||d[j]>='a'&&d[j]<='z'||d[j]>='A'&&d[j]<='Z')putchar('*');}}while(!(c[0]==d[0]&&c[1]==d[1]&&c[2]==d[2]&&c[3]==d[3]&&c[4]==d[4]&&c[5]==d[5]));//利用do while语句进行判定两次密码是否成功!fp2=fopen("D:\\密码.txt","w+");if(!fp2){printf("the file cannot be opened!");exit(1);}i=0;while (i<6){fprintf(fp2,"%c",c[i]);i++;}fclose(fp2);printf("\t\t\t密码修改成功!\n");}else{printf("\t\t\t密码错误\n");exit(0);}}case 2://密码验证{char e[7],f[7];int n=0;int i,j;FILE *fp1;fp1=fopen("D:\\密码.txt","r");if(!fp1){printf("the file cannot be opened!");exit(1);}for(i=0;!feof(fp1);i++){ e[i]=fgetc(fp1); }do{printf("\t\t\t请输入六位数密码:");for(j=0;j<7;j++){scanf("%c",f+j);if(f[j]>='0'&&f[j]<='9'||f[j]>='a'&&f[j]<='z'||f[j]>='A'&&f[j]<='Z')putchar('*');}if(!(e[0]==f[0]&&e[1]==f[1]&&e[2]==f[2]&&e[3]==f[3]&&e[4]==f[4]&&e[5]==f[5])){printf("\n密码错误!请重新输入:\n");n++;}if (n>3){printf("error\n");exit(0);}}while(!(e[0]==f[0]&&e[1]==f[1]&&e[2]==f[2]&&e[3]==f[3]&&e[4]==f[4]&&e[5]==f[5]));//利用do~while语句进行判定密码是否错误!printf("\n\t\t\t欢迎使用!\n");}}}int Input(family sum[],int n)//输入消费信息{int i=0;char sign='y',x[10];while(sign!='n'&&sign!='N'){printf("\t\t\t种类:");scanf("\t\t\t%s",sum[n+i].type);printf("\t\t\t支出(大于0):");scanf("\t\t\t%f",&sum[n+i].Getsum);printf("\t\t\t地点:");scanf("\t\t\t%s",sum[n+i].place);printf("\t\t\t时间(0-31):");scanf("\t\t\t%d",&sum[n+i].time);if(sum[n+i].time<1||sum[n+i].time>31)return false;gets(x);printf("\t\t\t需要再次输入吗?(y/n)");scanf("\t\t\t%c",&sign);//判断是否需要重新输入i++;}}void Getsum(family sum[], int n) //计算消费总金额{float getsum=0;int i=0;for(i=0;i<n;i++){getsum+=sum[i].Getsum;}printf("\t\t\t%f\n",getsum);}void Showitems(family sum[],int n)//输出所输入的消费信息{int i;printf("\t\t\t--------------------------------------\n");printf("\t\t\t种类支出地点时间\n");printf("\t\t\t--------------------------------------\n");for(i=1;i<n+1;i++){printf("\t\t\t%-8s %-12f %-8s %-10d\n",sum[i-1].type,sum[i-1].Getsum,sum[i-1].place,sum[i-1].ti me);if(i>1&&i%10==0)//这边为什么会有i%10==0(保证输入多次信息的时候可以一次性显示) {printf("\t\t\t----------------\n");printf("\t\t\t");printf("\t\t\t----------------\n");}}printf("\t\t\t");system("pause");}void sort(family sum[],int n)//对消费信息进行归类和选择法排序升序排名{int i,j;family temp;FILE *fp;fp=fopen("D:\\支出信息.txt","a+");if(fp==NULL){printf("\t\t\tthe file cannot be opened!\n");exit(1);}for(i=0;i<n-1;i++)for(j=i+1;j<n;j++){if(strcmp(sum[i].type,sum[j].type)==1){temp=sum[j];sum[i]=temp;sum[j]=sum[i]; }elseif(strcmp(sum[j].type,sum[i].type)==0){if(sum[i].Getsum>sum[j].Getsum){temp=sum[j];sum[j]=sum[i];sum[i]=temp;}}}}fclose(fp);}//排序后是写入文件的写入数组解决不了void Analyseitems(family sum[],int n) //求各种消费类型的金额占总金额的百分比//在解决相同type的问题上可以利用数组去存储字符串,但系统一直崩溃。

C语言家庭财务管理系统设计报告

C语言家庭财务管理系统设计报告

东华理工大学C语言课程设计实验报告题目:家庭账务管理姓名:曾祥华班级:1321815学号:201320181518指导老师:程志梅一案例描述1.总体描述家庭财务管理系统主要是对家庭成员的收入,支出,进行添加,删除,查询等操作,并能统计总收入和总支出。

该软件给家庭成员提供了一个管理家庭财务的平台。

2.模块描述1)菜单设计:本系统提供简单易操作的界面。

有提示,帮助用户根据需要对家庭财务管理系统进行操作。

2)添加模块:根据实际的收入或支出,添加相应的记录,条数不限。

3)查询模块:可以选择不同关键字输入,查找该条记录。

4)删除模块:若某条记录错误或者不需要则可以删除。

5)显示模块:按照添加的先后顺序依次把记录显示在屏幕上,并显示总收入和总支出以及余额。

6)退出模块:退出财务管理系统并保存文件。

二界面设计界面有相应的选择,根据自己的需要对该管理系统进行添加,查找,删除,显示功能操作。

本软件界面友好,不难操作,用户可根据自己的需要按提示进行。

三模块化设计方案1.系统主要函数及功能1)DataInit函数:功能为数据初始化将数据从硬盘传到内存。

2)add函数:功能为添加收入或支出的记录3)search函数:功能为查找联系人输入关键字,从文件中搜索相应的记录并显示出来。

4)delete_rec函数:功能为删除记录若某条记录错误或者不需要则可以删除。

5)show函数:功能为显示记录将添加的记录显示在屏幕上。

6)quit函数:功能为保存信息退出系统2.主函数调用各功能函数流程四.数据结构描述struct F_Data{int year; //年int month; //月int data; //日期float amout; //金额char name[20]; //姓名int type; //收入或支出类型开始打开文件,载入信息用户菜单界面1 添加记录2查询记录3删除记录4显示记录退出保存结束char comment[100]; //备注struct F_Data*next; //定义一个指针};该数据结构为链表,是一种动态进行存储分配的结构。

家庭管理系统课程设计c语言

家庭管理系统课程设计c语言

家庭管理系统课程设计c语言一、教学目标本课程旨在通过C语言编程,使学生掌握家庭管理系统的基本概念、设计与实现。

具体目标如下:1.知识目标:–理解家庭管理系统的需求与功能。

–掌握C语言的基本语法与数据结构。

–学习家庭管理系统的设计与分析方法。

2.技能目标:–能够使用C语言进行简单的家庭管理系统编程。

–学会使用调试工具进行程序的调试与优化。

–具备家庭管理系统项目的设计与实现能力。

3.情感态度价值观目标:–培养学生对计算机科学和家庭管理学的兴趣。

–培养学生解决问题的能力和团队合作精神。

–培养学生对家庭责任感和管理意识的提升。

二、教学内容本课程的教学内容围绕家庭管理系统的设计与实现,具体包括:1.C语言基础:–数据类型、运算符与表达式。

–控制结构:条件语句、循环语句。

–函数:定义、调用与参数传递。

2.数据结构:–数组、字符串和指针。

–链表、栈和队列。

3.家庭管理系统分析:–需求分析:了解家庭管理的需求和目标。

–系统设计:设计系统的架构和模块。

4.家庭管理系统实现:–家庭信息管理模块:成员信息录入、查询和修改。

–家庭预算管理模块:收入支出记录、统计和分析。

–家庭任务管理模块:任务分配、执行和跟踪。

三、教学方法为了提高教学效果,将采用以下教学方法:1.讲授法:用于C语言基础知识和家庭管理系统分析的讲解。

2.案例分析法:分析实际的家庭管理案例,引导学生思考和解决问题。

3.实验法:让学生动手编写代码,实现家庭管理系统的功能。

4.小组讨论法:分组进行项目开发,培养团队合作和沟通能力。

四、教学资源为了支持教学,将准备以下教学资源:1.教材:《C程序设计语言》。

2.多媒体资料:PPT课件、教学视频。

3.实验设备:计算机、调试工具。

4.在线资源:编程论坛、家庭管理系统相关文章。

五、教学评估本课程的教学评估将综合考虑学生的平时表现、作业和考试三个方面的因素,以全面、客观、公正地评价学生的学习成果。

1.平时表现:包括课堂参与度、提问与回答问题的情况等,占总评的20%。

C语言家庭财务管理系统

C语言家庭财务管理系统
do
{
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语言课程设计——家庭财务管理系统

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-free成品

家庭财务管理c-free成品

#include<stdio.h> #include<stdlib.h> #include<malloc.h>#include<string.h> #include<conio.h> #include<time.h>#define len sizeof(struct manage)struct massage{ int year; int month; int day; int type; //1表示收入,-1表示支出 char name[20]; float money; char beizhu[100]; };struct manage{ struct massage info; struct manage*next; };int n,a=0,j; //计算结点数struct manage*head=NULL; //使首结点为空 ,全局变量struct manage* load() //初始化{ struct manage *q=NULL; struct manage *p;FILE *fp; fp=fopen("data11.txt","rb"); //读取文件if(fp!=NULL){ struct massage lishi; // 将读取的资料先存放在lishi中 while(fread(&lishi, sizeof(struct massage),1,fp)==1){ p=(struct manage *)malloc(len); p->info=lishi;p->next=NULL;if(head==NULL) {head=p; q=p; }else{ q->next=p; q=p; } n++; } fclose(fp); } return(head); }void cover() //封面{ system("cls"); system("color 3b"); system("mode con cols=70 ");system("title 家庭财务管理系统");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t\t (>^ω^<) (>^ω^<) (>^ω^<) \n");printf("\n");printf("\t\t家庭财务管理系统欢迎您\n");printf("\n");printf("\t\t (>^ω^<) (>^ω^<) (>^ω^<) \n");printf(" \n");printf(" ▁▂▃▄▅▆▇▉▉☆☆☆☆☆☆▉▉▉▇▆▅▄▃▂▁\n");printf("\t\t\t收入管理\n"); printf("1:添加收入\n");printf("2:查询收入明细\n"); printf("3:删除收入\n");printf("4:修改收入\n"); printf("5:显示收入\n");printf(" ▁▂▃▄▅▆▇▉▉☆☆☆☆☆☆☆▉▉▉▇▆▅▄▃▂▁\n");printf("\t\t\t支出管理\n"); printf("6:添加支出\n");printf("7:查询支出明细\n"); printf("8:删除支出\n");printf("9:修改支出\n"); printf("10:显示支出\n");printf(" ▁▂▃▄▅▆▇▉▉☆☆☆☆☆☆☆▉▉▉▇▆▅▄▃▂▁\n");printf("\t\t\t统计\n");printf("11:统计总收入\n");printf("12:统计总支出\n");printf(" ▁▂▃▄▅▆▇▉▉☆☆☆☆☆☆☆▉▉▉▇▆▅▄▃▂▁\n");printf("0:退出\n");}struct manage *add(int type) //添加功能(用type判断为收入还是支出){ system("color 78"); struct manage *p0, *p1; char ch;p0=(struct manage*)malloc(len); printf("是否用系统时间(y or n)\n");fflush(stdin); scanf("%c",&ch); if(ch=='y'||ch=='Y'){ struct tm *local; time_t t; t=time(NULL);local=localtime(&t); p0->info.year=local->tm_year+1900;p0->info.month=local->tm_mon+1; p0->info.day=local->tm_mday;}else{printf("日期:\n"); printf("年:");scanf("%d",& p0->info.year); printf("月:");scanf("%d",&p0->info.month);printf("日:");scanf("%d",&p0->info.day); }printf("姓名:");scanf("%s",p0->);printf("金额:");scanf("%f",&p0->info.money);printf("备注:");scanf("%s",p0->info.beizhu); p0->info.type=type;if(head==NULL) /*原来的链表是空表*/{head=p0; p0->next=NULL; } /*使p0指向的结点作为头结点*/else{ for(p1=head;p1->next!=NULL; p1=p1->next); p1->next=p0;p0->next=NULL; }/*插到最后的结点之后*/ n++; return(head); }int date(int type){ struct manage*p; int nian,yue,ri;printf("请输入要查询的日期:\n"); printf("年:");scanf("%d",&nian);printf("月:");scanf("%d",&yue); printf("日:");scanf("%d",&ri);for(p=head;p!=NULL;p=p->next){if(p->info.type==type&&p->info.year==nian&&p->info.month==yue&&p->info.day==r i){ printf("日期:%d.%d.%d\n",p->info.year,p->info.month,p->info.day);printf("姓名:%s\n",p->);printf("金额:%f\n",p->info.money);printf("备注:%s\n",p->info.beizhu);printf("***********************************************************\n"); } } } void mingzi(int type){ struct manage*p; char mingz[20];printf("请输入要查询的姓名:");scanf("%s",mingz);for(p=head;p!=NULL;p=p->next){ if(p->info.type==type&&strcmp(p->,mingz)==0){ printf("日期:%d.%d.%d\n",p->info.year,p->info.month,p->info.day);printf("姓名:%s\n",p->); printf("金额:%f\n",p->info.money);printf("备注:%s\n",p->info.beizhu);printf("***********************************************************\n"); } } } int jine(int type){ struct manage*p; float mone;printf("请输入要查询的金额;");scanf("%f",&mone);for(p=head;p!=NULL;p=p->next){ if(p->info.type==type&&p->info.money==mone){ printf("日期:%d.%d.%d\n",p->info.year,p->info.month,p->info.day);printf("姓名:%s\n",p->); printf("金额:%f\n",p->info.money);printf("备注:%s\n",p->info.beizhu);printf("***********************************************************\n"); } } }void search(int type) //查询功能{ system("color 78"); int choice; printf("请输入要查询的依据:\n");printf("\t\t1.日期:\n");printf("\t\t2.姓名:\n");printf("\t\t3.金额:\n");scanf("%d",&choice); switch(choice){case 1:date(type);break;//根据日期查询case 2:mingzi(type);break;//根据姓名查询case 3:jine(type);break; //根据金额查询default:{printf("\n");printf("\n");printf("\n");printf("选择错误,请重新输入\n");printf("\n"); printf("\n");} }} int tongyue(int type){ struct manage*p; int n,y; printf("请输入要显示的年月:\n");printf("年:");scanf("%d",&n); printf("月:");scanf("%d",&y);printf("所有的记录是:\n",n); for(p=head;p!=NULL;p=p->next){ if(p->info.type==type&&p->info.year==n&&p->info.month==y){ printf("日期:%d.%d.%d\n",p->info.year,p->info.month,p->info.day);printf("姓名:%s\n",p->); printf("金额:%f\n",p->info.money);printf("备注:%s\n",p->info.beizhu); printf("☆☆☆☆☆☆☆\n");} } } int tongxingming(int type){struct manage*p; char c[20]; printf("请输入要显示的姓名:");scanf("%s",c);printf("所有的记录是:\n",n); for(p=head;p!=NULL;p=p->next){if(p->info.type==type&&strcmp(p->,c)==0){ printf("日期:%d.%d.%d\n",p->info.year,p->info.month,p->info.day);printf("姓名:%s\n",p->); printf("金额:%f\n",p->info.money);printf("备注:%s\n",p->info.beizhu); printf("☆☆☆☆☆☆☆☆☆\n");} } } int tongri(int type){struct manage*p; int n,y,r; printf("请输入要显示的年月:\n");printf("年:");scanf("%d",&n); printf("月:");scanf("%d",&y);printf("日:");scanf("%d",&r); printf("所有的记录是:\n",n);for(p=head;p!=NULL;p=p->next){if(p->info.type==type&&p->info.year==n&&p->info.month==y&&p->info.day==r) { printf("日期:%d.%d.%d\n",p->info.year,p->info.month,p->info.day);printf("姓名:%s\n",p->); printf("金额:%f\n",p->info.money);printf("备注:%s\n",p->info.beizhu); printf("☆☆☆☆☆☆☆☆☆\n");} } } struct manage *del(int type){ system("color 78"); struct manage *p1,*p2; char c[20]; int n,a=0;char mingz[20]; printf("请输入姓名:");scanf("%s",mingz);for(p1=head;p1!=NULL;p1=p1->next){if(p1->info.type==type&&strcmp(p1->,mingz)==0){ printf("第%d条信息\n",a+1);printf("日期:%d.%d.%d\n",p1->info.year,p1->info.month,p1->info.day);printf("姓名:%s\n",p1->); printf("金额:%f\n",p1->info.money);printf("备注:%s\n",p1->info.beizhu); printf("*****************\n");a++;} j=a; }if(a==0) printf("家庭财务管理内无任何信息!\n");else{ printf("要删除第几条信息\n"); scanf("%d", &n); a=0;for(p1=head;p1!=NULL;p1=p1->next){ if(p1->info.type==type&&strcmp(p1->,mingz)==0){ a++; if(a==n)break; }p2=p1; }if(p1== head) {head=p1->next; printf("删除成功\n");}//删除头结点else {p2-> next = p1->next; printf("删除成功\n"); } //删除一个结点 }} void show1(int type){ float all=0; struct manage *p; int nian;printf("请输入要查询的日期:\n"); printf("年:");scanf("%d",&nian);printf("所有的记录是:\n"); for(p=head;p!=NULL;p=p->next){ if(p->info.type==type&&p->info.year==nian){printf("日期:%d.%d.%d\n",p->info.year,p->info.month,p->info.day);printf("姓名:%s\n",p->); printf("金额:%f\n",p->info.money);printf("备注:%s\n",p->info.beizhu); printf("☆☆☆☆☆☆☆☆☆\n");all=all+(p->info.money)*(p->info.type); } }printf("所有收支统计为:%f\n",all);}void show2(int type){ float all=0; struct manage *p; int nian,yue;printf("请输入要查询的日期:\n"); printf("年:");scanf("%d",&nian);printf("月:");scanf("%d",&yue); printf("所有的记录是:\n");for(p=head;p!=NULL;p=p->next){ if(p->info.type==type&&p->info.year==nian&&p->info.month==yue) {printf("日期:%d.%d.%d\n",p->info.year,p->info.month,p->info.day);printf("姓名:%s\n",p->); printf("金额:%f\n",p->info.money);printf("备注:%s\n",p->info.beizhu); printf("☆☆☆☆☆☆☆☆☆\n");all=all+(p->info.money)*(p->info.type); } }printf("所有收支统计为:%f\n",all); }void show3(int type){ float all=0; struct manage *p; int nian,yue,ri;printf("请输入要查询的日期:\n"); printf("年:");scanf("%d",&nian);printf("月:");scanf("%d",&yue); printf("日:");scanf("%d",&ri);printf("所有的记录是:\n"); for(p=head;p!=NULL;p=p->next) { if(p->info.type==type&&p->info.year==nian&&p->info.month==yue&&p->info.day== ri){ printf("日期:%d.%d.%d\n",p->info.year,p->info.month,p->info.day);printf("姓名:%s\n",p->); printf("金额:%f\n",p->info.money);printf("备注:%s\n",p->info.beizhu); printf("☆☆☆☆☆☆☆☆☆\n");all=all+(p->info.money)*(p->info.type); } }printf("所有收支统计为:%f\n",all); }void show4(int type){ float all=0; struct manage *p; char c[20];printf("请输入要显示的姓名:\n"); printf("姓名:");scanf("%s",c);printf("所有的记录是:\n");for(p=head;p!=NULL;p=p->next){ if(p->info.type==type&&strcmp(p->,c)==0){ printf("日期:%d.%d.%d\n",p->info.year,p->info.month,p->info.day);printf("姓名:%s\n",p->); printf("金额:%f\n",p->info.money);printf("备注:%s\n",p->info.beizhu); printf("☆☆☆☆☆☆☆\n");all=all+(p->info.money)*(p->info.type); }}printf("所有收支统计为:%f\n",all); }void show5(int type){ float all=0; struct manage *p; printf("所有的记录是:\n");for(p=head;p!=NULL;p=p->next){ if(p->info.type==type) {printf("日期:%d.%d.%d\n",p->info.year,p->info.month,p->info.day);printf("姓名:%s\n",p->); printf("金额:%f\n",p->info.money);printf("备注:%s\n",p->info.beizhu); printf("☆☆☆☆☆☆☆\n");all=all+(p->info.money)*(p->info.type); } }printf("所有收支统计为:%f\n",all); }void show(int type){ system("color 78"); int choice; printf("请输入要显示的依据:\n");printf("\t\t1.年:\n"); printf("\t\t2.年月:\n"); printf("\t\t3.年月日:\n");printf("\t\t4.姓名:\n");printf("\t\t5.全部:\n");scanf("%d",&choice);switch(choice) {case 1:show1(type);break;//按照收支年计算金额case 2:show2(type);break;//按照收支月计算金额case 3:show3(type);break; //按照收支日计算金额case 4:show4(type);break; //按照姓名计算金额case 5:show5(type);break; //统计所有收支金额default: {printf("\n");printf("\n");printf("\n");printf(" 选择错误,请重新输入\n");printf("\n");printf("\n");printf("\n");} }}void showall(int type){ system("color 78");int choice;printf(" ▁▂▃▄▅▆▇▉▉☆☆☆☆☆▉▉▉▇▆▅▄▃▂▁\n");printf("请输入要显示的依据:\n"); printf("\t\t1.按同月统计:\n");printf("\t\t2.按姓名统计:\n"); printf("\t\t3.按同日统计:\n");printf("\t\t4.全部显示统计:\n"); scanf("%d",&choice);switch(choice){case 1:tongyue(type);break;//显示同月case 2:tongxingming(type);break;//显示同名case 3:tongri(type);break; //显示同日case 4:show5(type);break; //显示全部default: {printf("\n");printf("\n");printf("\n");printf(" 选择错误,请重新输入\n");printf("\n"); printf("\n");printf("\n"); } } }void save(struct manage*p){ FILE *fp=fopen("data11.txt","wb" );while(p!=NULL){fwrite(&(p->info),sizeof(struct massage),1,fp); p=p->next; } fclose(fp); }int main (){ struct manage *infor; char min[20]; float jine; head=load();int select; char ch; cover();while(1){ cover(); printf(" 请输入你的选择<0~10>:");scanf("%d",&select);switch(select){ case 1:{ do{ add(1); fflush(stdin);//清空输入缓冲区,通常是为了确保不影响后面的数据读取printf("是否继续输入(y or n)\n"); ch=getchar(); }while(ch=='y'||ch=='Y'); };save(head);break;//添加收入数据case 2:{do{search(1);fflush(stdin);printf("是否继续输入(y or n)\n");ch=getchar();}while(ch=='y'||ch=='Y'); };break;//查询收入明细case 3:{ do{del(1); fflush(stdin); printf("是否继续输入(y or n)\n");ch=getchar();}while(ch=='y'||ch=='Y'); };save(head);break; //删除收入数据case 4:{ do{ printf("请输入要修改的数据\n");del(1); if(j==0) break; else{printf("请输入修改后的数据\n");add(1); }fflush(stdin); printf("是否继续输入(y or n)\n");ch=getchar();}while(ch=='y'||ch=='Y'); };save(head);break;//修改收入数据case 5:showall(1);break; //显示收入case 6:{ do{ add(-1); fflush(stdin); printf("是否继续输入(y or n)\n");ch=getchar();}while(ch=='y'||ch=='Y'); }; save(head); break; //添加支出数据 case 7:{ do{search(-1); fflush(stdin); printf("是否继续输入(y or n)\n");ch=getchar();}while(ch=='y'||ch=='Y'); };break;////查询支出明细case 8:{ do{del(-1); fflush(stdin); printf("是否继续输入(y or n)\n");ch=getchar();}while(ch=='y'||ch=='Y'); }; save(head);break;//删除收入数据case 9:{ do{ printf("请输入要修改的数据\n");del(-1); if(j==0) break;else{printf("请输入修改后的数据\n");add(-1); }fflush(stdin);printf("是否继续输入(y or n)\n");ch=getchar();}while(ch=='y'||ch=='Y'); };save(head);break;//修改收入数据case 10:showall(-1);break; //显示支出case 11:show(1);break; //统计总收入case 12:show(-1);break; //统计总支出case 0: exit(0);break;default: {printf("\n");printf("\n");printf("\n");printf(" 选择错误,请重新输入\n");printf("\n");printf("\n");printf("\n"); } }printf("\n\t按回车键继续……");getch();}return 0; }。

C语言家庭财务管理系统代码

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语言 家庭收支课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言的基本语法和结构,特别是数据类型、变量、运算符、控制结构等。

2. 学生能运用C语言编写程序,实现家庭收支的基本管理功能,如收入和支出的输入、存储、查询及统计。

3. 学生能够理解并运用文件操作,实现数据的持久化存储。

技能目标:1. 学生通过课程实践,培养编程思维和问题解决能力,能将实际问题抽象为程序设计问题。

2. 学生能运用所学知识,设计并实现一个具有基本功能的家庭收支管理系统。

3. 学生通过小组合作,提高团队协作能力和项目管理的初步能力。

情感态度价值观目标:1. 学生培养对计算机编程的兴趣,增强学习信息技术的积极性。

2. 学生通过编程解决实际问题,体会编程对生活的影响,认识到科技改变生活的实际意义。

3. 学生在小组合作中学会相互尊重、沟通与协作,培养责任感和集体荣誉感。

本课程针对高中年级学生设计,他们已经具有一定的逻辑思维能力,对计算机编程有初步的认识和兴趣。

课程性质为实践性较强的信息技术课程,旨在通过具体的家庭收支管理系统设计,使学生在实践中掌握C语言编程技能,同时注重培养学生的情感态度和价值观,使他们在学习过程中形成积极的学习态度和正确的价值观。

通过本课程的学习,学生不仅能够掌握C语言编程的基础知识,还能够体验编程带来的成就感,激发对信息技术领域的探索欲望。

二、教学内容本课程教学内容主要包括以下几部分:1. C语言基础知识回顾:- 数据类型、变量、常量- 运算符、表达式、赋值语句- 控制结构(顺序、分支、循环)2. 函数与模块化编程:- 函数的定义、声明与调用- 作用域规则- 模块化编程思想3. 家庭收支管理系统设计:- 需求分析- 系统设计(功能模块划分、数据结构设计)- 编码实现(收入、支出管理,数据存储与查询)4. 文件操作:- 文件打开、关闭、读写操作- 文件存储格式设计- 数据的持久化存储5. 项目实践与团队协作:- 小组分工与协作- 项目进度管理- 项目测试与优化教学内容将按照以下进度安排:1-2课时:C语言基础知识回顾3-4课时:函数与模块化编程5-8课时:家庭收支管理系统设计9-10课时:文件操作11-12课时:项目实践与团队协作教学内容与教材相关章节紧密关联,确保学生在掌握基础知识的同时,能够将所学应用于实际项目,提高编程实践能力和团队协作能力。

C语言-个人收入支出系统

C语言-个人收入支出系统

#include"stdio.h"#include"windows.h"#include"stdlib.h"#include"conio.h"#include"iostream.h"#define pe "%2d%8d%6d%9d%10d%11d%8d%7d%8d\n" struct Checkbook{int mon;int income;int food;int house;int education;int wat_ele;int treat;int save;int out;Checkbook *next;};int count=0;int flag=0;Checkbook *Head,*Total;void init_Head(){Head=new Checkbook;Head=NULL;}void init_Total(){Total=new Checkbook;Total->income=0;Total->food=0;Total->house=0;Total->education=0;Total->wat_ele=0;Total->treat=0;Total->save=0;Total->out=0;}void TOTAL(Checkbook *h){Checkbook *p=h;while(p!=NULL){p->out=p->food+p->house+p->education+p->wat_ele+p->treat;Total->income=Total->income+p->income;Total->food=Total->food+p->food;Total->house=Total->house+p->house;Total->education=Total->education+p->education;Total->wat_ele=Total->wat_ele+p->wat_ele;Total->treat=Total->treat+p->treat;Total->save=Total->save+p->save;Total->out=Total->out+p->out;p=p->next;}}int insert(){Checkbook *p,*q;int i; int ch;while(1){system("cls");for(i=0;i<15;i++)printf(" *");printf("记录每月收支情况");for(i=0;i<15;i++)printf(" *");p=new Checkbook;printf("\n\n请输入:\n\n");printf("月份收入食品消费房租子女教育费用水电费医疗费储蓄\n");cin>>p->mon>>p->income>>p->food>>p->house>>p->education>>p->wat_ele>>p->treat>>p->s ave;count++;if(flag==0){if(count==1)Head=p;elseq->next=p;q=p;}if(flag==1){q=Head;while(q->next!=NULL)q=q->next;q->next=p;q=p;}q->next=NULL;printf("\n\n\n\n\n\n\t\t\t\1 继续请按1, 返回请按0 ! ");scanf("%d",&ch);getchar();if(ch==0){flag=1;init_Total();TOTAL(Head);return 0;}}}Display(Checkbook *p){Checkbook *q=p;int i;system("cls");for(i=0;i<15;i++)printf(" *");printf("每月收支状况");for(i=0;i<15;i++)printf(" *");printf("\n\n月份收入食品消费房租子女教育费用水电费医疗费储蓄支出\n\n");while(q!=NULL){printf(pe,q->mon,q->income,q->food,q->house,q->education,q->wat_ele,q->treat,q->save,q->out);q=q->next;}printf("\n合计:%5d%6d%9d%10d%11d%8d%7d%8d",Total->income,Total->food,Total->house,Total->educa tion,Total->wat_ele,Total->treat,Total->save,Total->out);printf("\n\n\n\n\n\t\t\t\1 请按0返回!");getchar();getchar();return 1;}Checkbook *q[12];selectsort_1(Checkbook *q[],int n){int i,j,min;Checkbook *t;for(i=0;i<n;i++){min=i;for(j=i+1;j<n;j++)if(q[j]->out<q[min]->out)min=j;if(min!=i){t=q[i];q[i]=q[min];q[min]=t;}}return 1;}SORT_out(Checkbook *h){Checkbook *p=h;int i=0,j;system("cls");printf("\t\t\t\t开支递增排列\n");for(j=0;j<=39;j++)printf(" *");while(p!=NULL){q[i]=p;i++;p=p->next;}selectsort_1(q,i);printf("\n\n月份收入食品消费房租子女教育费用水电费医疗费储蓄支出\n\n");for(j=0;j<i;j++)printf(pe,q[j]->mon,q[j]->income,q[j]->food,q[j]->house,q[j]->education,q[j]->wat_ele,q[j]->treat, q[j]->save,q[j]->out);printf("\n\n\n\n\n\t\1 请按0返回!");getchar();return 1;}selectsort_2(Checkbook *s[],int n){int i,j,min;Checkbook *t;for(i=0;i<n-1;i++){min=i;for(j=i+1;j<n;j++)if(s[j]->income<s[min]->income)min=j;if(min!=i){t=s[i];s[i]=s[min];s[min]=t;}}return 1;}SORT_income(Checkbook *h){Checkbook *p=h,*q[12];int i=0,j;system("cls");printf("\t\t\t\t收入递增排列\n");for(j=0;j<=39;j++)printf(" *");while(p!=NULL){q[i]=p;i++;p=p->next;}selectsort_2(q,i);printf("\n\n月份收入支出\n\n");for(j=0;j<i;j++)printf("%2d%9d%9d\n",q[j]->mon,q[j]->income,q[j]->out); printf("\n\n\n\n\t\1 请按0返回!");getchar();getchar();}Checkbook *Find(int m){Checkbook *p=Head;while(p!=NULL){if(p->mon==m) break;p=p->next;}return p;}CONSULT(){Checkbook *C;int i,c,p;do{system("cls");for(i=0;i<13;i++)printf(" \1"); printf(" 查询某月收支情况");for(i=0;i<13;i++)printf(" \1");printf("\n\n \1 请输入要查询的月份:");scanf("%d",&c);C=Find(c);if(C!=NULL){printf("\n\n月份收入食品消费房租子女教育费用水电费医疗费储蓄支出\n\n");printf(pe,C->mon,C->income,C->food,C->house,C->education,C->wat_ele,C->treat,C->save,C-> out);}elseprintf("\n\n\1 对不起,找不到你要查询的月份!"); //如果返回的结点点为空则显示提示printf("\n\n\n\n\n\t\t\t\1 继续查询请按1 ,返回请0 !");scanf("%d",&p); getchar();if(p==0)return 1;}while(p==1);return 1;}DELETE_Data(){Checkbook *p,*q,*s;int i,c,d;do{system("cls");for(i=0;i<13;i++)printf(" \1");printf(" 删除某月收支数据");for(i=0;i<13;i++)printf(" \1");printf("\n\n \1 请输入要删除的月份:");scanf("%d",&c);q=Find(c);if(q!=NULL){p=Head;while(p!=NULL&&p!=q){s=p;p=p->next;}if(q==Head)Head=Head->next;elseif(p->next==NULL) s->next=NULL;else s->next=p->next;printf("\n\n\n\t\t%d月份的数据已删除成功!",c);}elseprintf("\n\n\1 对不起,找不到你要删除的月份!");printf("\n\n\n\n\n\t\t\1 继续删除请按1,返回请按0!");scanf("%d",&d); getchar();if(d==0){init_Total();TOTAL(Head);return 1;}}while(d==1);return 1;}Modify_Data(){Checkbook *p,*q,*s;int i,c,d;do{system("cls");for(i=0;i<13;i++) printf(" \1"); printf(" 修改某月收支数据");for(i=0;i<13;i++) printf(" \1");printf("\n\n \1 请输入要修改的月份:");scanf("%d",&c);q=Find(c);if(q!=NULL){p=Head;while(p!=NULL&&p!=q){s=p;p=p->next;}if(q==Head){printf("收入食品消费房租子女教育费用水电费医疗费储蓄\n");cin>>p->income>>p->food>>p->house>>p->education>>p->wat_ele>>p->treat>>p->save;}elseif(p->next==NULL){printf("收入食品消费房租子女教育费用水电费医疗费储蓄\n");cin>>p->income>>p->food>>p->house>>p->education>>p->wat_ele>>p->treat>>p->save;}else{printf("收入食品消费房租子女教育费用水电费医疗费储蓄\n");cin>>p->income>>p->food>>p->house>>p->education>>p->wat_ele>>p->treat>>p->save;}printf("\n\n\n\t\t%d月份的数据已修改成功!",c);}elseprintf("\n\n\1 对不起,找不到你要修改的月份!");printf("\n\n\n\n\n\t\t\1 继续修改请按1,返回请按0!");scanf("%d",&d);getchar();if(d==0){init_Total();TOTAL(Head);return 1;}}while(d==1);return 1;}SA VE(){system("cls");printf("\n\n\n\n\n\n\n\n\t\t\t\t数据已经保存好!");printf("\n\n\t\t\t\t\1 (请按任意键返回!)");getchar();getchar();return 1;}void MENUE_WINDOW(){int i, choice;for(;;){system("cls");for(i=0;i<13;i++)printf(" *");printf(" 个人帐簿管理系统");for(i=0;i<14;i++)printf(" *");printf("\n\n");for(i=0;i<40;i++)printf(" \1");printf("\n\n\t\t\t\t1 输入某月收支\n\n\t\t\t\t2 每月的收支状况\n\n\t\t\t\t3 开支递增排列\n\n\t\t\t\t4 收入递增排列");printf("\n\n\t\t\t\t5 查询某月收支\n\n\t\t\t\t6 删除某月收支\n\n\t\t\t\t7 保存数据\n\n\t\t\t\t8修改数据\n\n\t\t\t\t9 退出");printf("\n\n\t\1 \1 请选择1-9 : ");scanf("%d",&choice);switch(choice){case 1: insert(); break;case 2: Display(Head); break;case 3: SORT_out(Head); break;case 4: SORT_income(Head); break;case 5: CONSULT(); break;case 6: DELETE_Data(); break;case 7: SA VE(); break;case 8: Modify_Data(); break;case 9: exit(0); break;default: printf("\n\n\t\t\t选择错误,请重选!");getchar();getchar();}}}void START_WINDOW(){printf("\n\t\t\t \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 ");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1 \1 \1 \1 \1");printf("\n\t\t\t \1 \1 \1 \1 \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1 \1 \1 \1 \1");printf("\n\t\t\t \1 \1 \1 \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1");printf("\n\t\t\t \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 \1 ");printf("\n\n\t\t\t欢迎使用该帐簿管理程序!!");printf("\n\n\t\t\t\t(请按Enter进入程序)");}void main(){printf("dddddddd");char choice;init_Head();init_Total();do{system("cls");START_WINDOW();scanf("%c",&choice);if(choice=='\n')MENUE_WINDOW(); }while(choice!='\n');}。

C语言课程设计——家庭财务管理系统

C语言课程设计——家庭财务管理系统

FILE *fp;
int i;
if((fp=fopen("peoplelist4。txt”,"r"))!=NULL)

fscanf(fp,”%d\n",&n);
for(i=0;i〈n;i++)
fscanf(fp,"%s%s%s\n",peo[i]。username,peo[i].code,peo[i]。flag);

fprintf(fp,”%d\n",n);
for(i=0;i<n;i++)
fprintf(fp,"%s %s %s\n”,peo[i]。username,peo[i].code,peo[i].flag);

fclose(fp);
fp=fopen("thinglist4。txt”,"w");

fprintf(fp,”%d\n”,m);
for(i=0;i〈m;i++)
fprintf(fp,"%s %d %d %d %d\n",thi[i]。name,thi[i].year,thi[i].month,thi[i].income,thi[i].output);

fclose(fp);
return 0;
}
int carry() //将数据从文件中读出
fprintf(fp,”%s %d %d %d %d\n”,thi[i]。name,thi[i].year,thi[i].month,thi[i].income,thi[i].output);
fclose(fp);
printf(”\n······\n删除成功。\n”);

程序设计——家庭支出管理系统

程序设计——家庭支出管理系统

程序设计报告( 2010 / 2011 学年 第 一 学期)题 目: 家庭支出管理系统专 业 生物医学工程 学 生 姓 名 韩文勋 班 级 学 号 B11090425 指 导 教 师 胡素军 指 导 单 位 计算机软件教学中心 日 期 2012.11.01评分细则评分项 优秀 良好 中等 差 遵守机房规章制度 上机时的表现 学习态度 程序准备情况 程序设计能力 团队合作精神 课题功能实现情况 算法设计合理性 用户界面设计报告书写认真程度 内容详实程度 文字表达熟练程度 回答问题准确度简短评语教师签名:年 月 日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格 家庭支出管理系统一、 课题内容和要求1、该系统要求对一个家庭某月的支出情况进行统计和分析。

通过此课题,熟练掌握数组、指针的各种操作,以及一些算法思想的使用。

2、功能要求: (1)支出信息包括:支出类型(主要可以分为饮食,服饰装扮,礼金,教育培训,电器,健身,通讯,子女培养,旅游,文化娱乐,医疗,交通,聚会,居住等小项),金额,消费地点,消费时间等。

(2)需要实现的功能1) 用户根据口令进入系统按消费支出情计算消主函数退出输入消消费分按消费保存数输入月2) 输入某一月份,完成该月份的支出管理 3) 输入并统计该月的支出情况4) 显示该月支出信息表,内容应包括日期,金额等 5) 按支出类型进行分类统计和排序6) 进行本月消费分析,即分析每项支出所占总支出的百分比,并显示分析结果 7) 显示按支出类型排序后的支出信息 8) 将排序后的内容存为文件。

(3)界面友好,输入信息符合逻辑如存款金额不为负数、不可能有非数字的字符等。

二、需求分析这个程序利用输入,输出,排序和百分比等功能对家庭的各项支出管理进行操作,以次来方便操作管理。

1, 菜单函数,此函数是为了让用户根据菜单选择功能并根据提示来进行操作。

2,密码函数,因为家庭支出管理系统涉及到私人财务,所以需要利用密码函数对程序进行保密。

C语言程序设计---家庭财务管理系统

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语言课程设计报告——家庭财务管理系统

C语言课程设计报告——家庭财务管理系统

课程设计报告课程设计题目:家庭财务管理系统学生XX:专业:信息工程班级:指导教师:2021年1月8日1.需求分析根据家庭账务管理的需要,建立一个“家庭账务管理系统〞,以方便对家庭日常收入及支出进展记录和管理。

该系统要求:①家庭月收入管理②家庭月支出管理③统计家庭总收入/总支出④系统提供收入/支出的添加、删除和修改功能。

2. 总体设计根据以上分析,本家庭账务管理系统主要包括:①从键盘键入家庭月收入、月支出数据;②查询月收入、月支出明细;③删除收入、支出数据;④修改收入、支出数据;⑤统计总收入/总支出;⑥退出系统。

除main()函数之外,系统还定义了以下函数来实现各局部内容:①add_ine〔〕:添加收入数据函数。

②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.总结编写程序之前要有一个整体的思路,不能写到哪里算哪里。

这样很容易遗漏,连续性也不好。

通过本次的课程设计让我对于数组、文件的存放、循环构造等知识有了更加透彻的理解。

希望在以后的课程设计中对于知识的运用能够更加的熟练。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

..程序设计报告(2015 / 2016 学年第二学期)题目:家庭支出管理系统专业微电子科学与工程组长学号姓名组员学号姓名指导教师棣华指导单位日期2016年 6 月3日家庭支出管理系统一、课题容和要求1、该系统要求对一个家庭某月的支出情况进行统计和分析。

通过此课题,熟练掌握数组、指针的各种操作,以及一些算法思想的应用。

2、功能要求:(1)支出信息包括:支出类型(主要可以分为饮食,服饰装扮,礼金,教育培训,电器,健身,通讯,子女培养,旅游,文化娱乐,医疗,交通,聚会,居住等小项),金额,消费地点,消费时间等。

(2)需要实现的功能:1)用户根据口令进入系统2)输入某一月份,完成该月份的支出管理3)输入并统计该月的支出情况4)显示该月支出信息表,容应包括日期,金额等5)按支出类型进行分类统计和排序6)进行本月消费分析,即分析每项支出所占总支出的百分比,并显示分析结果7)显示按支出类型排序后的支出信息8)将排序后的容存为文件。

(3)界面友好,输入信息符合逻辑如存款金额不为负数、不可能有非数字的字符等。

二、需求分析家庭支出管理系统的功能框架图如图1所示。

图1 功能框架图(1)功能选择函数:此函数是为了让用户根据主界面选择功能并根据提示来进行操作。

(2)输入函数:为了实现将各个支出项目的类别,支出的金额以及消费的时间,地点等存入需要的文件里,所以必须先要存在存储器里。

(3)输出函数:即通过行列表来直观对应存储文件中的项目的类别,金额,消费时间及地点。

(4)分析函数:读取本月的存储文档中的信息,对本月的消费进行分析,求出本月的消费总和,分析出每项支出所占总支出的百分比,通过他们各自的项目金额所占的百分比来直观显示那个指出比较重要。

随后与本月收入进行比较,求出收支比。

(5)类别排序函数:就是将输入的信息进行按类别排序。

(6)保存函数:将本次添加的信息进行保存到相应月份的支出信息文档中。

(7)登录界面:因为家庭支出管理系统涉及到私人财务,所以需要利用密码函数对程序进行保密。

因此只有在输入正确的口令后才能进入该系统。

同时添加了一个随机验证码的验证过程。

(全文中的(1)、(2)、(3)等格式必须统一为中文括号或者英文括号。

)(中文字体:宋体,英文字体:Times New Roman,小四号,不加粗,两端对齐,1.5倍行距,首行缩进2字符,段前段后距为0)三、概要设计1 主要结构体(二级标题格式:宋体,小四号,不加粗,两端对齐,不缩进,下同)typedef struct// 定义结构体{char type[20];// 消费类型float Getsum;// 消费金额char place[20];// 消费地点int time;// 消费时间}family;family fam[80];2 主要函数流程图(1) 登录界面:包括密码函数,采用数组赋值并与预设值逐字比较的法进行密码验证。

以及验证码函数,验证码采用srand(time(NULL))与p[0]=rand()%1000产生一个0-1000的随机数作为验证码。

如图1所示是否正确密码验证菜单界面N=0;N=N+1N>5?是是图1(2)主函数:包括菜单显示函数以及功能选择函数,菜单显示函数在屏幕上输出选择界面,功能选择函数利用选择结构进入不同的功能函数模块,模块如下列所示。

在十二个月份存储文件齐全的情况下,各功能可随意使用,无使用上的顺序要求。

如图二所示;开始菜单选择区功能选择功能执行结束是否返回是否开始定义一个字符数组输入信息对“种类”赋值对“支出”赋值对“地点”赋值对“时间”赋值是否返回结束否是图2 图3(3)功能模块一信息添加函数:利用输入函数将支出信息赋值给fam,然后利用类别整理函数进行类别整理,最后利用选择结构选择某一月份,打开该月份的信息存储文档,进行信息的写入,最后关闭文件。

如图3,图4所示。

开始选择月份进入该月份相应的语句块打开该月相应存储文件打开成功逐条写入数组元素信息关闭文件结束输出“打开失败”是否开始选择月份进入该月份所在文件打开文件成功读取第一条信息指针是否指向文件末尾退出循环结束输出打印读取信息读取下一条信息是是否否图4 图5(4)功能模块二信息显示函数:利用选择结构打开某一月份的信息存储文档,然后读取其中的信息并逐行显示在屏幕上然后关闭文件。

如图5,图6所示。

开始定义一个整型数组,i=0,J=0i<n-1J=i+1,i=i+1J<nJ=J+1前元素type=后元素type将元素GetSum 大的值置前前元素type>后元素type交换前后元素type 的值i<n-1在屏幕上输出完成排序后的数组结束前元素type<后元素type否是是是是否否否图6(5)功能模块三信息分析函数:利用选择结构打开某一月份的存储文件,读取该月信息,求消费总和并求出各项支出占总支出比,随后可以输入本月的收入以求出本月的收支比。

如图7所示。

开始选择月份进入该月份相应语句打开该月份信息存储数据打开成功读取存储信息逐项对消费金额求和到达文件尾关闭文件打开文件打开文件成功读取信息并赋值给数组统计信息总数到达文件尾逐项输出项目金额占总额比例打印消费金额关闭文件输入总收入求出收支比例并输出在屏幕上结束输出“file error ”输出“file error ”是否是是否否否图7(6)功能模块四退出函数:关闭程序。

四、源程序代码#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <string.h>#include <malloc.h>#include <windows.h>#include <time.h>typedef struct//定义结构体{char type[20];//消费类型float Getsum;//消费金额char place[20];//消费地点int time;//消费时间}family;family fam[80];int menu_select() //显示该系统所具备的功能{int c;do{system("cls");//清屏printf("\t\t欢迎来到家庭支出管理系统(勤俭节约,避免破产,肃脸.jpg)\n");printf("\t\t** ** ** ** ** **极端简朴的菜单系统*** ** ** **\n");printf("\t\t|1.输入消费信息|\n");printf("\t\t|2.显示消费情况|\n");printf("\t\t|3.消费情况分析|\n");printf("\t\t|4.退出系统|\n");printf("\t\t** ** ** ** ** ** ** ** ** ** ** ***\n");printf("\t\t** ** ** ** ** ** ** ** ** ** ** ***\n");printf("\t\t\t请对应选择所需选项(1-4):");scanf("%d",&c);}while(c<1||c>8);return c;}void password() //密码登录部分{char d[6];char m[6];m[0]='1',m[1]='2',m[2]='3',m[3]='4',m[4]='5',m[5]='6'; //数组比较printf("请输入六位数密码:"); //输入密码for (int n=0;;){printf("请输入密码:\n");for(int i=0;i<6;i++){d[i]=getch();if(d[i]>='0'||d[i]<='9'||d[i]>='a'||d[i]<='z'||d[i]>='A'||d[i]<='Z')}if(d[0]==m[0]&&d[1]==m[1]&&d[2]==m[2]&&d[3]==m[3]&&d[4]==m[4]&&d[5]==m[5]) {printf("\n\t\t\t密码正确!请进行验证!\n");break;}if(d[0]!=m[0]||d[1]!=m[1]||d[2]!=m[2]||d[3]!=m[3]||d[4]!=m[4]||d[5]!=m[5]) //当密码错误时如下printf("\n密码错误!请重新输入:");if (n>3){printf("系统即将关闭,88!\n");system("pause");exit (0);}n++;}}void verification_code() //验证码部分{int p[1]={0};int q[1]={0};for(int k=0;;){srand(time(NULL));printf("验证码为:\n");p[0]=rand()%1000; //产生0-1000的随机数printf("%d",p[0]);printf("请输入验证码:");scanf("%d",&q[0]);“if(q[0]!=p[0])printf("验证码错误,请重新输入。

");else{printf("\n欢迎使用!\n");system("pause");break;}if(k>3){printf("系统即将关闭,88!\n");system("pause");exit (0);k++;}}int Inputitems(family sum[],int n)//输入消费信息{int i=0;char sign='y',x[10];while(sign!='n'&&sign!='N'){printf("\t\t\t种类:");scanf("\t\t\t%s",sum[n+i].type);printf("\t\t\t支出(大于0):");scanf("\t\t\t%f",&sum[n+i].Getsum);printf("\t\t\t地点:");scanf("\t\t\t%s",sum[n+i].place);printf("\t\t\t时间(0-31):");scanf("\t\t\t%d",&sum[n+i].time);if(sum[n+i].time<1||sum[n+i].time>31)return false;gets(x);printf("\t\t\t需要再次输入吗?(y/n)");scanf("\t\t\t%c",&sign);i++;}return(n+i);}void Showitems(family sum[],int n)//输出某月份的消费信息{int i=0,month;FILE *fp;printf("请选择月份;");scanf("%d",&month);printf("\t\t\t--------------------------------------\n");printf("\t\t\t种类支出地点时间\n");printf("\t\t\t--------------------------------------\n");switch(month){case 1:fp=fopen("D:\\一月支出信息.txt","r");if(fp==0){printf("file error\n");fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;case 2:fp=fopen("D:\\二月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;case 3:fp=fopen("D:\\三月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;case 4:fp=fopen("D:\\四月支出信息.txt","r");if(fp==0){printf("file error\n");fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;case 5:fp=fopen("D:\\五月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;case 6:fp=fopen("D:\\六月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;case 7:fp=fopen("D:\\七月支出信息.txt","r");if(fp==0){printf("file error\n");fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;case 8:fp=fopen("D:\\八月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;case 9:fp=fopen("D:\\九月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;case 10:fp=fopen("D:\\十月支出信息.txt","r");if(fp==0){printf("file error\n");fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;case 11:fp=fopen("D:\\十一月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;case 12:fp=fopen("D:\\十二月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);break;}printf("\t\t\t");system("pause");}{int i,j;family temp;for(i=0;i<n-1;i++){for(j=i+1;j<n;j++){if(strcmp(sum[i].type,sum[j].type)==1){temp=sum[j];sum[j]=sum[i];sum[i]=temp;}elseif(strcmp(sum[j].type,sum[i].type)==0){if(sum[i].Getsum>sum[j].Getsum){temp=sum[j];sum[j]=sum[i];sum[i]=temp;}}}for(i=1;i<n+1;i++){if(sum[i-1].Getsum!=0){printf("\t\t\t%-8s %-12f %-8s %-10d\n",sum[i-1].type,sum[i-1].Getsum,sum[i-1].place,sum[i-1]. time);}if(i>1&&i%10==0){printf("\t\t\t----------------\n");printf("\t\t\t");system("pause");printf("\t\t\t----------------\n");}}printf("\t\t\t");system("pause");}}void Analyseitems(family sum[],int n) //求各种消费类型的金额占总金额的百分比并求收支比例{float total=0,a=0,income;int i=0,j=0,month;FILE *fp;printf("请选择月份;");scanf("%d",&month);switch(month){case 1:fp=fopen("D:\\一月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\一月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i=i+1;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t项目%-8s占总比%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);break;case 2:fp=fopen("D:\\二月支出信息.txt","r");if(fp==0)printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\二月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i++;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);break;case 3:fp=fopen("D:\\三月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\三月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i++;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);break;case 4:fp=fopen("D:\\四月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\四月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i++;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);break;case 5:fp=fopen("D:\\五月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\五月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i++;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);break;case 6:fp=fopen("D:\\六月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\六月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i++;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);break;case 7:fp=fopen("D:\\七月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\七月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i++;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);break;case 8:fp=fopen("D:\\八月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\八月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i++;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);break;case 9:fp=fopen("D:\\九月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\九月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i++;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);break;case 10:fp=fopen("D:\\十月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\十月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i++;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);break;case 11:fp=fopen("D:\\十一月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\十一月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i++;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);case 12:fp=fopen("D:\\十二月支出信息.txt","r");if(fp==0){printf("file error\n");exit(1);}fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);while(!feof(fp)){printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);total+=sum[i].Getsum;fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);}fclose(fp);fp=fopen("D:\\十二月支出信息.txt","r");while(!feof(fp)){fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);i++;n=i;};for(i=0;i<n-1;i++){printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);}printf("消费总额为%f",total);fclose(fp);printf("请输入本月收入:");scanf("\t\t\t%f",&income);printf("\t\t\t本月收支比为%-10f\n",total/income);break;}}void save(family sum[],int n) //保存消费信息{int i,month;FILE *fp;printf("请输入当前信息所属月份:");scanf("%d",&month);switch(month){fp=fopen("D:\\一月支出信息.txt","a+");if(fp==NULL){printf("\t\t\tthe file cannot be opened!\n");exit(1);}fseek(fp,-1,SEEK_END);for(i=0;i<n;i++)fprintf(fp,"%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fclose(fp);printf("\t\t\t保存成功!\n");break;case 2:fp=fopen("D:\\二月支出信息.txt","a+");if(fp==NULL){printf("\t\t\tthe file cannot be opened!\n");exit(1);}fseek(fp,-1,SEEK_END);for(i=0;i<n;i++)fprintf(fp,"%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fclose(fp);printf("\t\t\t保存成功!\n");break;case 3:fp=fopen("D:\\三月支出信息.txt","a+");if(fp==NULL){printf("\t\t\tthe file cannot be opened!\n");exit(1);}fseek(fp,-1,SEEK_END);for(i=0;i<n;i++)fprintf(fp,"%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fclose(fp);printf("\t\t\t保存成功!\n");break;case 4:fp=fopen("D:\\四月支出信息.txt","a+");if(fp==NULL)printf("\t\t\tthe file cannot be opened!\n");exit(1);}fseek(fp,-1,SEEK_END);for(i=0;i<n;i++)fprintf(fp,"%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fclose(fp);printf("\t\t\t保存成功!\n");break;case 5:fp=fopen("D:\\五月支出信息.txt","a+");if(fp==NULL){printf("\t\t\tthe file cannot be opened!\n");exit(1);}fseek(fp,-1,SEEK_END);for(i=0;i<n;i++)fprintf(fp,"%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fclose(fp);printf("\t\t\t保存成功!\n");break;case 6:fp=fopen("D:\\六月支出信息.txt","a+");if(fp==NULL){printf("\t\t\tthe file cannot be opened!\n");exit(1);}fseek(fp,-1,SEEK_END);for(i=0;i<n;i++)fprintf(fp,"%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fclose(fp);printf("\t\t\t保存成功!\n");break;case 7:fp=fopen("D:\\七月支出信息.txt","a+");if(fp==NULL){printf("\t\t\tthe file cannot be opened!\n");exit(1);}fseek(fp,-1,SEEK_END);for(i=0;i<n;i++)fprintf(fp,"%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fclose(fp);printf("\t\t\t保存成功!\n");break;case 8:fp=fopen("D:\\八月支出信息.txt","a+");if(fp==NULL){printf("\t\t\tthe file cannot be opened!\n");exit(1);}fseek(fp,-1,SEEK_END);for(i=0;i<n;i++)fprintf(fp,"%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fclose(fp);printf("\t\t\t保存成功!\n");break;case 9:fp=fopen("D:\\九月支出信息.txt","a+");if(fp==NULL){printf("\t\t\tthe file cannot be opened!\n");exit(1);}fseek(fp,-1,SEEK_END);for(i=0;i<n;i++)fprintf(fp,"%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time);fclose(fp);printf("\t\t\t保存成功!\n");break;case 10:fp=fopen("D:\\十月支出信息.txt","a+");if(fp==NULL){printf("\t\t\tthe file cannot be opened!\n");exit(1);}fseek(fp,-1,SEEK_END);for(i=0;i<n;i++)。

相关文档
最新文档