家庭支出管理系统—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%。

  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++)。

相关文档
最新文档