个人记账管理.docx
《个人记账管理.docx》由会员分享,可在线阅读,更多相关《个人记账管理.docx(39页珍藏版)》请在冰点文库上搜索。
个人记账管理
沈阳工程学院
信息学院
C语言程序设计实践
课程设计
设计题目:
个人记帐管理
系别物联网工程班级
学生姓名
学号2016319119
指导教师职称副教授/讲师
起止日期:
2016年12月16日起——至2017年01月06日止
沈阳工程学院信息学院
C语言程序设计实践课程设计成绩评定表
系(部):
班级:
学生姓名:
指导教师评审意见
评价内容
具体要求
权重
评分
加权分
调研
论证
能独立查阅文献,收集资料;能制定课程设计方案和日程安排。
0.1
5
4
3
2
工作能力
态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,
0.2
5
4
3
2
工作量
按期圆满完成规定的设计任务,工作量饱满,难度适宜。
0.2
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.5
5
4
3
2
指导教师评审成绩
(加权分合计乘以8)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
评价内容
具体要求
权重
评分
加权分
查阅
文献
查阅文献有一定广泛性;有综合归纳资料的能力
0.2
5
4
3
2
工作量
工作量饱满,难度适中。
0.5
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.3
5
4
3
2
评阅教师评审成绩
(加权分合计乘以4)
分
加权分合计
评阅教师签名:
年月日
答辩小组评审意见
评价内容
具体要求
权重
评分
加权分
学生汇报
汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。
0.5
5
4
3
2
答辩
思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。
0.5
5
4
3
2
答辩小组评审成绩
(加权分合计乘以8)
分
加权分合计
答辩小组教师签名:
年月日
课程设计总评成绩
分
沈阳工程学院信息学院
C语言程序设计实践课程设计成绩评定表
系(部):
班级:
学生姓名:
指导教师评审意见
评价内容
具体要求
权重
评分
加权分
调研
论证
能独立查阅文献,收集资料;能制定课程设计方案和日程安排。
0.1
5
4
3
2
工作能力
态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,
0.2
5
4
3
2
工作量
按期圆满完成规定的设计任务,工作量饱满,难度适宜。
0.2
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.5
5
4
3
2
指导教师评审成绩
(加权分合计乘以8)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
评价内容
具体要求
权重
评分
加权分
查阅
文献
查阅文献有一定广泛性;有综合归纳资料的能力
0.2
5
4
3
2
工作量
工作量饱满,难度适中。
0.5
5
4
3
2
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.3
5
4
3
2
评阅教师评审成绩
(加权分合计乘以4)
分
加权分合计
评阅教师签名:
年月日
答辩小组评审意见
评价内容
具体要求
权重
评分
加权分
学生汇报
汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。
0.5
5
4
3
2
答辩
思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。
0.5
5
4
3
2
答辩小组评审成绩
(加权分合计乘以8)
分
加权分合计
答辩小组教师签名:
年月日
课程设计总评成绩
分
沈阳工程学院信息学院
《C语言程序设计实践》
课程设计任务书
课程设计题目:
个人记帐管理
系别物联网工程班级物联网161
学生姓名
学号2
指导教师职称副教授、讲师
课程设计进行地点:
实训楼F六楼机房
任务下达时间:
2016年12月14日
起止日期:
2016年12月16日起——至2017年01月06日止
系主任2016年12月09日批准
一、课程设计的原始资料及依据
查阅有关资料,进一步理解面向对象程序设计的思想,并编写一个简单的应用程序系统。
通过本设计可以加深理解使用结构化程序设计思想开发一个系统的方法,提高分析问题、解决问题和实际动手的能力。
二、课程设计主要内容及要求
设计内容:
1.记账信息:
月份、食品消费、房租费用、子女教育费、用水电费用、医疗费用、储蓄费用、收入费用。
2.功能:
分别可添加、修改、查询、排序、删除。
3.保存。
设计要求:
1.要求利用结构化的方法完成系统的设计;
2.要求在设计的过程中建立清晰度层次结构;
3.设计功能满足要求、易于操作的友好界面;
4.界面中需有菜单;
5.在系统的设计中,至少要建立5个以上独立函数;
6.要求操作简单,用户界面友好。
7.运行程序,检查结果是否和理论值一致。
8.在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。
三、对课程设计说明书撰写内容、格式、字数的要求
1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:
设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计说明书手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计说明书装订顺序为:
封面、任务书、成绩评定表、目录、正文、参考文献。
四、设计完成后应提交成果的种类、数量、质量等方面的要求
1.完成“任务书”中指定的功能,运行结果正确。
2.课程设计说明书。
五、时间进度安排
顺序
阶段日期
计划完成内容
备注
1
第1天
进行设计准备,阅读资料,分析设计任务书,明确设计要求、内容和步骤
2
第2天
需求分析
3
第3天
概要设计
4
第4-5天
详细设计
5
第5—8天
编码、调试
6
第9-10天
程序答辩,撰写课程设计报告
六、主要参考资料(文献)
[1]谭浩强.《C程序设计》(第三版).北京:
清华大学出版社.2006
[2]陈天洲.《C语言高级程序设计》.北京:
人民邮电出版社.2002
[3]杨旭.《C语言程序设计案例教程》.北京:
人民邮电出版社.2005
[4]郭翠英.《程序设计案例经典》.中国水利电力出版社.2004
[5]谭浩强.《程序设计基础》.北京:
清华大学出版社.2004
[6]张翔.《C语言函数大全》电子工业出版社.2005
[7]王为青.《C语言高级编程及实例剖析》.北京:
人民邮电出版社.2008.02
[8]徐慧.《C语言实例解析精粹》.北京:
人民邮电出版社.2006.04
[9]姚大鹏栾好利张翼英等编著.《C语言程序设计教程习题与上机实训指导》.中国水利水电出版社.2005
课程设计任务分工
组长姓名
张峻铭
题目
个人记帐管理
项目组成员
个人任务描述
自我评定
录入功能的设计和储存功能设计和排序功能的设计以及删除功能的设计
优秀
主页面的设计和查询功能的设计和修改功能设计以及制作world文档
良好
第1章绪论
程序设计过程有如解决一个实际问题,从解决实际问题的角度,我们可以这样来看:
首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、指针、链表、命令、函数,然后确定处理过程--算法。
可得最后结果
这次我们组要解决的实际问题是个人账簿管理系统的设计我们将严格按照程序设计的过程来完成这一个课题的设计
第2章系统功能分析
2.1功能
个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消
费,房租,子女教育费用,水电费,医疗费,储蓄等。
进入系统后可以输入和
修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的
月份查询每月的收支情况。
2.2系统功能需求
1.文件操作功能:
自动加载和保存数据文件。
2.数据输入功能:
可以按提示录入各项数据。
3.数据修改功能:
可以按提示修改各项数据。
4.查询功能:
可按月份、食品消费进行特定查询,及显示全部数据。
5.排序功能:
完成对每月开支的排序。
6.删除功能:
可以按提示删除一些数据。
7.转码功能:
我们对文件用的是dat的形式,设计转码功能,将它转为txt形式。
第3章总体设计
3.1系统设计
按系统分析的功能要求将系统划分为以下几个主要功能模块:
结构图:
3.2分块设计
1)菜单
voidmenu(void)
{intitem;
intmon;
Yyy*a;
a=(Yyy*)malloc(sizeof(Yyy));
do{
printf("…………个人帐簿管理系统设计…………\n");
printf("1.录入数据\n");
printf("2.查看数据\n");
printf("3.修改数据\n");
printf("4.查询数据\n");
printf("5.排序数据\n");
printf("6.删除数据\n");
printf("0.退出系统\n");
printf("请输入要进行的操作:
");
scanf("%d",&item);
}while(item>6||item<-1);}
2)录入功能设计
voidinput(Yyy*newI)
{
printf("\n依次输入数据:
\n(本月月份食品消费房租费用子女费用水电费用医疗费用储蓄费用收入费用)\n");
scanf("%d%d%d%d%d%d%d%d",&newI->month,&newI->spxf,&newI->fzfy,&newI->znjy,&newI->sdfy,&newI->ylfy,&newI->cxfy,&newI->srfy);
fflush(stdin);}
3)存储功能设计
voidwriteyyy(Yyy*newI)
{
FILE*fp;
fp=fopen(FilePath1,"ab+");
if(fp==NULL)
{
printf("无法创建文件:
%s",FilePath1);
exit(0);
}
fwrite(newI,sizeof(Yyy),1,fp);
fclose(fp);
printf("数据录入成功!
\n");
}
4)查看功能设计
voidchangeFormat(void)//暂时只能操作一行文件有待改进
{
FILE*fp1,*fp2;
Yyy*a;
a=(Yyy*)malloc(sizeof(Yyy));
fp1=fopen(FilePath1,"rb+");
if(fp1==NULL)
{
printf("无法找到文件:
%s\n",FilePath1);
return;//返回主函数
}
fp2=fopen(FilePath2,"wt+");
if(fp2==NULL)
{
printf("无法创建文件:
%s\n",FilePath2);
return;//返回主函数
}
fputs("\n……………………………………个人帐簿管理系统……………………………………\n",fp2);
fputs("记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n",fp2);
fputs("-----------------------------------------------------------------------\n",fp2);
printf("\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");
printf("-----------------------------------------------------------------------\n");
rewind(fp1);
fread(a,sizeof(Yyy),1,fp1);
while(!
feof(fp1))
{
printf("%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->spxf,a->fzfy,a
->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy);
fprintf(fp2,"%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy);
fread(a,sizeof(Yyy),1,fp1);
}
fputs("-----------------------------------------------------------------------\n",fp2);
fputs("关闭本程序继续原程序!
\n",fp2);
fclose(fp1);
fclose(fp2);
system(FilePath2);//调用打开转换的文本文件
remove(FilePath2);//删除文本文件文件
}
5)修改功能设计
voidmodify(Yyy*a,intmon)
{FILE*fp1,*fp2;
Yyy*b;
b=(Yyy*)malloc(sizeof(Yyy));
fp1=fopen(FilePath1,"rt");
fp2=fopen("temp.dat","wt+");
rewind(fp1);
fread(b,sizeof(Yyy),1,fp1);
while(!
feof(fp1))
{if(b->month==mon)
{fwrite(a,sizeof(Yyy),1,fp2);}
else
{fwrite(b,sizeof(Yyy),1,fp2);}
fread(b,sizeof(Yyy),1,fp1);
}
fclose(fp1);
fclose(fp2);
remove(FilePath1);//删除源文件
rename("temp.dat",FilePath1);//重命名中间文件
printf("修改数据成功!
\n");
changeFormat();
}
6)查询功能设计
Statussearch(Yyy*a)
{FILE*fp1;
intmon;
intisfound=0;
printf("请正确输入要查询的月份:
");
scanf("%d",&mon);
fflush(stdin);
fp1=fopen(FilePath1,"rb+");
if(fp1==NULL)
{printf("无法找到文件:
%s\n",FilePath1);
return0;//返回主函数
}
rewind(fp1);
fread(a,sizeof(Yyy),1,fp1);
while(!
feof(fp1))
{
if(a->month==mon)
{isfound=1;
break;}
else
{isfound=0;}
fread(a,sizeof(Yyy),1,fp1);
}
fclose(fp1);
if(isfound)
return1;
else
returnNotFound;
}
7)排序功能设计
voidpaixu(Yyy*a)
{
inti=0,j=0,flag=0,t;
pTypepx[8]={{0,0}};
charstr[8][10]={"记录月份","食品消费","房租费用","子女费用","水电费用","医疗费用","储蓄费用","本月收入"};
for(;i<8;i++)
px[i].no=i;
px[0].data=a->month;
px[1].data=a->spxf;
px[2].data=a->fzfy;
px[3].data=a->znjy;
px[4].data=a->sdfy;
px[5].data=a->ylfy;
px[6].data=a->cxfy;
px[7].data=a->srfy;
for(i=1;i<8;i++)
for(j=0;j<8-i;j++)
if(px[j].data>px[j+1].data)
{
t=px[j].data;
px[j].data=px[j+1].data;
px[j+1].data=t;
t=px[j].no;
px[j].no=px[j+1].no;
px[j+1].no=t;
}printf("\n");
for(i=0;i<8;i++)
{printf("%s",str[px[i].no]);
}
printf("\n-----------------------------------------------------------------------\n");
for(i=0;i<8;i++)
{
printf("%8d",px[i].data);
}
printf("\n");
}
8)删除功能设计
voiddelRecord(intmon)
{FILE*fp1,*fp2;
Yyy*b;
b=(Yyy*)malloc(sizeof(Yyy));
fp1=fopen(FilePath1,"rt");
fp2=fopen("temp.dat","wt+");
rewind(fp1);
fread(b,sizeof(Yyy),1,fp1);
while(!
feof(fp1))
{if(b->month!
=mon)
fwrite(b,sizeof(Yyy),1,fp2);
fread(b,sizeof(Yyy),1,fp1);
}
fclose(fp1);
fclose(fp2);
remove(FilePath1);//删除源文件
rename("temp.dat",FilePath1);//重命名中间文件
printf("删除数据成功!
\n");
}
第4章调试结果和设计分析
4.1主页面
4.2录入数据
4.3查看数据
4.4修改数据
4.5查询数据
4.6排序系统
4.7删除系统
结论
在这次的课程设计,我发现了自己还有很多的不足,在这方面还有很多的不会。
还需要更加深入的学习。
通过此次的课程设计,在大一C语言学习的基础上,我较为深入的掌握了数据结构与算法的设计方法,具备了一定独立分析和设计能力和初步掌握软件开发过程的问题分析,系统设计,程序编码,测试等基本方法和技能。
致谢
感谢队友的帮助,在我一些不懂的地方给予了我及时的帮助。
感谢老师的教导,正在有些方面自己和同组人还有很多的不会,不过经过老师的辅导还是成功编写了出来。
参考文献
程序
#include
#include
#include
#include
//文件保存路径
#defineFilePath1"Myyyy.dat"
#defineFilePath2"Myyyy.txt"
//查询用声明
#defineStatusint
#defineOK1
#defineError0
#defineNotFound2
typedefstruct{
intmonth;//月份
intspxf;//食品消费
intfzfy;//房租费用
intznjy;//子女教育费用
intsdfy;//水电费用
intylfy;//医疗费用
intcxfy;//储蓄费用
intsrfy;//收入费用
}Yyy;
t