1、个人消费管理系统课程设计1长治学院课程设计报告课程名称:数据结构课程设计设计题目: 个人帐簿管理系统 系 别: 计算机系 专 业: 计算机科学与技术 组 别: 第22组 学生姓名: 王冬冬 学 号: 09407224 起止日期: 2011年 6月29日2011年7月6日 指导教师: 马 强 1 需求分析21.1课程设计题目21.2课程设计任务及要求21.3课程设计思想21.4软硬件运行环境及开发工具22.概要设计22.1课题设计的流程32.2主要的数据结构、所用方法及原理33.详细设计33.1计算机程序框图33.2自编的程序44调试分析及操作说明 15 4.1系统调试分析 15 4.2操作使用
2、说明 165.课程设计总结与体会 196.致谢 197.参考文献 20 1需求分析随着社会经济的发展,大学生已经成为这个社会上一个很重要的团体,而他们的消费情况也越来越多的被更多的人关注,大学生自己也应当管理好自己的消费内容,让自己的消费更加合理化,提高自己生活的质量。在这种情况下,就需要一个软件对大学生每月的消费情况作一个较为详细的统计,该系统可以实现由计算机代替人工执行吸血复杂而且较为繁琐的操作,从而使大学生们能够更为便捷地管理自己的消费,也为其他的一些调查研究提供了方便。1.1课程设计题目个人消费管理系统1.2课程设计任务及要求个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食
3、品消费,房租,子女教育费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2)完成最低要求:建立一个文件,包括某人5个月的收支情况,能对文件中的信息进行扩充(追加),修改和删除;3)进一步要求: 完成对每月的开支排序,以及完成系统查询功能。有兴趣的同学可以自己扩充系统功能。1.3课程设计思想根据课程设计任务及要求,将课程设计划分成若干部分,根据每部分的要求,分别完成要求编写程序。1.4软硬件运行环境及开发工具软件的运行环境:windowsx
4、p。所用的开发工具是VC6+。2.概要设计2.1课题设计的流程(各功能模块)本系统主要是对大学生消费情况的管理,包括了有关数据的录入、查看、修改、查询、排序删除等功能。整个系统分为以下几个模块。(1)、主界面模块 本模块提供大学生消费系统的主菜单界面,供用户选择与执行各项管理工作。(2)、录入模块本模块用于录入用户的具体某一月份的各项消费记录,例如食品消费,房租,子女教育费用,水电费,医疗费等。排除不符合的月份,如0=month=12。并排除已存在的月份。(3)、查看模块本模块用于用户查看自己已经录入的各项信息,包括用户每个月份的各项消费情况。(4)、修改模块本模块用于用户对自己已经录入的信息
5、进行修改,修改具体某一月份的信息。(5)、查询模块本模块用于用户查询到自己已经录入的信息中某一月份的各项记录(6)、排序模块 本模块用于对用户已经输入的某一月份的各项记录按数值进行升序排列。(7)、删除模块 本模块用于用户对自己已经录入的数据进行删除。2.2主要的数据结构、所用方法及原理。主要的数据结构:结构体的运用以及对结构体的操作。通过对子程序的调用。完成课程设计的方法及原理的说明:根据题目的要求对课程设计做了各个模块的划分,按照各模块功的不同做不同的处理,最后通过对各个模块的调用达到完成课程设计的方法。3.详细设计3.1计算机程序框图 图1 程序模块图3.2自编的程序#include #
6、include #define FilePath1 Myinfor.dat#define FilePath2 Myinfor.txt#define Status int#define OK 1#define Error 0#define NotFound 2typedef struct Infor int month; int spxf; int fz; int znjy; int sdf; int ylf; int cx; int byzhf; Infor,*Infor1;typedef struct pType int no; int data; pType;void menu(void)
7、;void input1(Infor *newI,int mon);void input(Infor *newI);void writeinfor(Infor *newI);void changeFormat(void );Status search(Infor *a,int mon);void paixu(Infor *a);void modify(Infor *a,int mon);void delRecord(int mon);void xuanze(int item);void xiugai(int m);int panduan(Infor *a,int mon);void main(
8、) while(1) menu(); void menu(void)/*菜单*/ int item; printf(n我的大学生活消费管理系统nn); printf(tt1.录 入 数 据.n); printf(tt2.查 看 数 据.n); printf(tt3.修 改 数 据.n); printf(tt4.查 询 数 据.n); printf(tt5.排 序 数 据.n); printf(tt6.删 除 数 据.n); printf(tt0.退 出 系 统.n); printf(请输入要进行的操作: ); scanf(%d,&item); if(item6 | item-1) printf
9、(请重新输入要进行的操作: ); menu(); else xuanze( item); int panduan(Infor *a,int mon) int item; FILE *fp; fp=fopen(FilePath1,ab+); if(fp=NULL) printf(无法创建文件:%s,FilePath1); exit(0); if(monmonth; if (item!=OK) printf(n没有符合条件的记录!n); else printf(n 记录月份 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 本月总花费 n);printf(- n);printf(%7d %8d
10、%8d %8d %8d %8d %8d %8dn,a-month,a-spxf,a-fz,a-znjy,a-sdf,a-ylf,a-cx,a-byzhf); input(a); modify(a,mon); break; case 4: printf(请输入要查找的月份:n); scanf(%d,&mon); item=search(a,mon); if (item!=OK) printf(n没有符合条件的记录!n); else printf(n记录月份 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 本月总花费 n);printf(- n);printf(%7d %8d %8d %8d
11、%8d %8d %8d %8dn,a-month,a-spxf,a-fz,a-znjy,a-sdf,a-ylf,a-cx,a-byzhf); break; case 5: printf(请输入要查找的月份:n); scanf(%d,&mon); item=search(a,mon); if (item!=OK) printf(n没有符合条件的记录!n); else paixu(a); break; case 6: printf(请输入要查找的月份:n); scanf(%d,&mon); item=search(a,mon); mon=a-month; if (item!=OK) printf(
12、n没有符合条件的记录!n); else printf(- n);printf(%7d %8d %8d %8d %8d %8d %8d %8dn,a-month,a-spxf,a-fz,a-znjy,a-sdf,a-ylf,a-cx,a-byzhf); delRecord(mon); break; free(a);void input1(Infor *newI,int mon) printf(n请依次输入数据说明:中间以空格符隔开:n( 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 )n);scanf(%d%d%d%d%d%d,&newI-spxf,&newI-fz,&newI-znjy,
13、&newI-sdf,&newI-ylf,&newI-cx); newI-month=mon;newI-byzhf=newI-spxf+newI-fz+newI-znjy+newI-sdf+newI-ylf+newI-cx; fflush(stdin);void input(Infor *newI) printf(n请依次输入数据说明:中间以空格符隔开:n( 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 )n);scanf(%d%d%d%d%d%d,&newI-month,&newI-spxf,&newI-fz,&newI-znjy,&newI-sdf,&newI-ylf,&newI-cx
14、); newI-byzhf=newI-spxf+newI-fz+newI-znjy+newI-sdf+newI-ylf; fflush(stdin);void writeinfor(Infor *newI) FILE *fp; fp=fopen(FilePath1,ab+); if(fp=NULL) printf(无法创建文件:%s,FilePath1); exit(0); fwrite(newI,sizeof(Infor),1,fp); fclose(fp); printf(数据录入成功!n);void changeFormat(void) FILE *fp1,*fp2; Infor *a;
15、 a=(Infor *)malloc(sizeof(Infor); fp1=fopen(FilePath1,rb+); if(fp1=NULL) printf(无法找到文件:%sn,FilePath1); return ; fp2=fopen(FilePath2,wt+); if(fp2=NULL) printf(无法创建文件:%sn,FilePath2); return ; /fputs( n!#¥%&*(&¥#?我的大学生活消费管理系统!#¥%&*(&¥#!nn,fp2); fputs(记录月份 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 本月总花费 n,fp2);fputs(-
16、n,fp2);printf(n记录月份 食品消费 房租 子女教育费用 水电费 医疗费 储蓄 本月总花费 n);printf(- n); rewind(fp1); fread(a,sizeof(Infor),1,fp1); while(!feof(fp1)printf(%7d %8d %8d %8d %8d %8d %8d %8dn,a-month,a-spxf,a-fz,a-znjy,a-sdf,a-ylf,a-cx,a-byzhf);fprintf(fp2,%7d %8d %8d %8d %8d %8d %8d %8dn,a-month,a-spxf,a-fz,a-znjy,a-sdf,a-
17、ylf,a-cx,a-byzhf); fread(a,sizeof(Infor),1,fp1);fputs(- n,fp2); fputs(关闭本程序继续原程序!n,fp2); fclose(fp1); fclose(fp2); system(FilePath2); remove(FilePath2);Status search(Infor *a,int mon) FILE *fp1; int isfound=0; /printf(请正确输入要查询的月份:); /scanf(%d,&mon); fflush(stdin); fp1=fopen(FilePath1,rb+); if(fp1=NU
18、LL) printf(无法找到文件:%sn,FilePath1); return Error; rewind(fp1); fread(a,sizeof(Infor),1,fp1); while(!feof(fp1) if(a-month=mon) isfound=1; Break; else isfound=0; fread(a,sizeof(Infor),1,fp1); fclose(fp1); if(isfound) return OK; else return NotFound; void paixu(Infor *a) int i=0,j=0,flag=0,t; pType px8=0
19、,0; char str814=记录月份,食品消费, 房租, 子女教育费用, 水电费, 医疗费, 储蓄, 本月总花费; for(;imonth; px1.data=a-spxf; px2.data=a-fz; px3.data=a-znjy; px4.data=a-sdf; px5.data=a-ylf; px6.data=a-cx; px7.data=a-byzhf; for(i=1;i8;i+) flag=0; for(j=0;jpxj+1.data) t=pxj.data; pxj.data=pxj+1.data; pxj+1.data=t; t=pxj.no; pxj.no=pxj+1
20、.no; pxj+1.no=t; flag=1; if(flag=0) break; printf(n); for(i=0;i8;i+) printf( %s,strpxi.no);printf(n- n); for(i=0;imonth=mon) fwrite(a,sizeof(Infor),1,fp2); else fwrite(b,sizeof(Infor),1,fp2); fread(b,sizeof(Infor),1,fp1); fclose(fp1); fclose(fp2);remove(FilePath1); rename(temp.dat,FilePath1); printf(修改数据成功!n ); changeFormat();void delRecord(int mon) FILE *fp1,*fp2; Infor *b; b=(Infor *)malloc(sizeof(Infor); fp1=fopen(FilePath1,rt); fp2=fopen(temp.dat,wt+);rewind(fp1); fread(b,sizeof(Infor),1,fp1); while (!feof(fp1) if(b-month!=mon) fwrite(b,sizeof(Infor),1,fp2); fread(b,sizeof(Infor),1,fp
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1