个人帐簿管理系统设计数据结构.docx
《个人帐簿管理系统设计数据结构.docx》由会员分享,可在线阅读,更多相关《个人帐簿管理系统设计数据结构.docx(26页珍藏版)》请在冰豆网上搜索。
个人帐簿管理系统设计数据结构
计算机学院信管专业
数据结构课程设计
题目:
个人帐簿管理系统设计
班级:
姓名:
学号:
同组人XX:
起迄日期
课程设计地点:
指导
评阅意见:
成绩评定:
评阅人:
日期:
完成日期:
20XX12月
第一章前言……………………………………………………2
第二章系统功能分析…………………………………………2
1.功能…………………………………………………………2
2.要求…………………………………………………………2
3.系统功能需求………………………………………………2
第三章总体设计………………………………………………3
1.系统设计…………………………………………………………3
2.分块设计…………………………………………………………3
第四章调试结果和测试分析…………………………………9
1.主界面……………………………………………………………10
2.录入数据……………………………………………………………10
3.查看数据……………………………………………………………11
4.修改数据……………………………………………………………11
5.查询数据……………………………………………………………11
6.排序数据……………………………………………………………12
7.删除数据……………………………………………………………12
第五章总结〔心得体会〕………………………………………12
第六章参考文献………………………………………………13
第七章致谢……………………………………………………14
第八章附录……………………………………………………14
第一章前言:
程序设计过程有如解决一个实际问题,从解决实际问题的角度,我们可以这样来看:
首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、指针、链表、命令、函数,然后确定处理过程--算法。
可得最后结果
这次我们组要解决的实际问题是个人账簿管理系统的设计,我们将严格按照程序设计的过程来完成这一个课题的设计
第二章系统功能分析
1.功能:
个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。
进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。
2.要求:
1〕界面友好,函数功能要划分好
2〕总体设计应画一流程图
3〕程序要加必要的注释
4〕要提供程序测试方案
5>程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
3.系统功能需求分析
1.文件操作功能:
自动加载和保存数据文件。
2.数据输入功能:
可以按提示录入各项数据。
3.数据修改功能:
可以按提示修改各项数据。
4.查询功能:
可按月份、食品消费进行特定查询,及显示全部数据。
5.排序功能:
完成对每月开支的排序。
6.删除功能:
可以按提示删除一些数据。
7.转码功能:
我们对文件用的是dat的形式,设计转码功能,将它转为txt形式。
第三章总体设计
1.系统分析
按系统分析的功能要求将系统划分为以下几个主要功能模块:
结构图
2.分块设计
1〕主界面设计
voidmenu
{
intitem;
intmon;
Infor*a;
a=malloc>;
do{
printf<"…………个人帐簿管理系统设计…………\n">;
printf<"1.录入数据\n">;
printf<"2.查看数据\n">;
printf<"3.修改数据\n">;
printf<"4.查询数据\n">;
printf<"5.排序数据\n">;
printf<"6.删除数据\n">;
printf<"7.退出系统\n">;
printf<"请输入要进行的操作:
">;
scanf<"%d",&item>;
}while- 6||item<-1>;
2〕录入功能设计
voidinput
{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;}
3〕修改功能设计
voidmodify
{
FILE*fp1,*fp2;
Infor*b;
b=malloc>;
fp1=fopen;
fp2=fopen<"temp.dat","wt+">;
rewind;
fread,1,fp1>;
while
feof>
{
ifmonth==mon>
{
fwrite,1,fp2>;
}
else
{
fwrite,1,fp2>;
}
fread,1,fp1>;
}
fclose;
fclose;
remove;//删除源文件
rename<"temp.dat",FilePath1>;//重命名中间文件
printf<"修改数据成功!
\n">;
changeFormat<>;
}
4〕查询功能设计
Statussearch
{
FILE*fp1;
intmon;
intisfound=0;
printf<"请正确输入要查询的月份:
">;
scanf<"%d",&mon>;
fflush;
fp1=fopen;
if
{
printf<"无法找到文件:
%s\n",FilePath1>;
returnError;//返回主函数
}
rewind;
fread,1,fp1>;
while
feof>
{
ifmonth==mon>
{
isfound=1;
break;
}
else
{
isfound=0;
}
fread,1,fp1>;
}
fclose;
if
returnOK;
else
returnNotFound;
}
5〕删除功能设计
voiddelRecord
{
FILE*fp1,*fp2;
Infor*b;
b=malloc>;
fp1=fopen;
fp2=fopen<"temp.dat","wt+">;
rewind;
fread,1,fp1>;
while
feof>
{
ifmonth!
=mon>
fwrite,1,fp2>;
fread,1,fp1>;
}
fclose;
fclose;
remove;//删除源文件
rename<"temp.dat",FilePath1>;//重命名中间文件
printf<"删除数据成功!
\n">;
changeFormat<>;
}
6〕排序功能设计
voidpaixu
{
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
{
flag=0;
for
ifpx[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;
flag=1;
}
ifbreak;
}
printf<"\n">;
for
{
printf<"%s",str[px[i].no]>;
}
printf<"\n-----------------------------------------------------------------------\n">;
for
{
printf<"%8d",px[i].data>;
}
printf<"\n">;
}
第四章调试结果与测试分析
1.主界面
2.录入数据
3.查看数据
4.修改数据
5.查询数据
6.排序数据
7.删除数据
第五章总结〔心得体会〕
在这次的课程设计,我发现了自己还有很多的不足,在数据结构操作方面还有很多的不会。
还需要更加深入的学习。
通过此次的课程设计,在大一C语言学习的基础上,我较为深入的掌握了数据结构与算法的设计方法,具备了一定的独立分析和设计能力和初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
第六章参考文献
1.严蔚敏吴伟民《数据结构》〔C语言版〕清华大学2007
2.催俊凯。
计算机软件基础。
机械工业。
2007.7
3.唐发根。
数据结构教程〔第二版〕。
航空航天大学。
2005.5
4.谭浩强。
C程序设计〔第三版〕。
清华大学。
2005
5.王宏生,宋继红。
数据结构。
:
国防工业,2006.1
6.李建学,李光元,吴春芳。
数据结构课程设计案例精编〔用C/C++描述〕。
:
清华大学。
2007.2
第七章致谢
感谢队友的帮助,在我一些不懂的地方给予了我及时的帮助
感谢席老师的辅导,在有些方面自己和同组人还有好多的不会,不过经过老师的辅导还是成功编写了出来
第八章附录
源程序:
#include
#include
#include
#include
//文件保存路径
#defineFilePath1"Myinfor.dat"
#defineFilePath2"Myinfor.txt"
//查询用声明
#defineStatusint
#defineOK1
#defineError0
#defineNotFound2
typedefstruct{
intmonth;//月份
intspxf;//食品消费
intfzfy;//房租费用
intznjy;//子女教育费用
intsdfy;//水电费用
intylfy;//医疗费用
intcxfy;//储蓄费用
intsrfy;//收入费用
}Infor;
typedefstruct{//查询用自定义数据类型
intno;
intdata;
}pType;
voidmenu;//菜单
voidinput;//接收键盘输入
voidwriteinfor;//向文件内写入内容
voidchangeFormat;//将dat格式文件转换为txt文件
Statussearch;//查询函数[返回查询的结果及查询的状态]
voidpaixu;//对查询据结果排序
voidmodify;//修改数据
voiddelRecord;//删除数据
voidmain<>
{
while<1>
{
menu<>;
}
}
voidmenu
{
intitem;
intmon;
Infor*a;
a=malloc>;
do{
printf<"…………个人帐簿管理系统设计…………\n">;
printf<"1.录入数据\n">;
printf<"2.查看数据\n">;
printf<"3.修改数据\n">;
printf<"4.查询数据\n">;
printf<"5.排序数据\n">;
printf<"6.删除数据\n">;
printf<"7.退出系统\n">;
printf<"请输入要进行的操作:
">;
scanf<"%d",&item>;
}while- 6||item<-1>;
switch
{//退出程序
case0:
getchar<>;
getchar<>;
exit<1>;
break;
//录入数据
case1:
input;
writeinfor;
break;
//查看数据
case2:
changeFormat<>;
break;
//修改数据
case3:
item=search;
mon=a->month;
if=OK>printf<"\n没有符合条件的记录!
\n">;
else
{
printf<"\n录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n">;
printf<"-----------------------------------------------------------------------\n">;
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>;
input;
modify;
}
break;
//查询数据
case4:
item=search;
if=OK>printf<"\n没有符合条件的记录!
\n">;
else{
printf<"\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n">;
printf<"-----------------------------------------------------------------------\n">;
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>;
}
break;
//排序数据
case5:
item=search;
if=OK>printf<"\n没有符合条件的记录!
\n">;
else
paixu;
break;
//删除数据
case6:
item=search;
mon=a->month;
if=OK>printf<"\n没有符合条件的记录!
\n">;
else
{
printf<"\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n">;
printf<"-----------------------------------------------------------------------\n">;
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>;
delRecord;
}
break;
}
free;//释放内存空间
}
voidinput
{
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;
}
voidwriteinfor
{
FILE*fp;
fp=fopen;
if
{
printf<"无法创建文件:
%s",FilePath1>;
exit<0>;
}
fwrite,1,fp>;
fclose;
printf<"数据录入成功!
\n">;
}
voidchangeFormat//暂时只能操作一行文件有待改进
{
FILE*fp1,*fp2;
Infor*a;
a=malloc>;
fp1=fopen;
if
{
printf<"无法找到文件:
%s\n",FilePath1>;
return;//返回主函数
}
fp2=fopen;
if
{
printf<"无法创建文件:
%s\n",FilePath2>;
return;//返回主函数
}
fputs<"\n……………………………………个人帐簿管理系统……………………………………\n",fp2>;
fputs<"记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n",fp2>;
fputs<"-----------------------------------------------------------------------\n",fp2>;
printf<"\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n">;
printf<"-----------------------------------------------------------------------\n">;
rewind;
fread,1,fp1>;
while
feof>
{
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>;
fprintfmonth,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy>;
fread,1,fp1>;
}
fputs<"-----------------------------------------------------------------------\n",fp2>;
fputs<"关闭本程序继续原程序!
\n",fp2>;
fclose;
fclose;
system;//调用打开转换的文本文件
remove;//删除文本文件文件
}
Statussearch
{
FILE*fp1;
intmon;
intisfound=0;
printf<"请正确输入要查询的月份:
">;
scanf<"%d",&mon>;
fflush;
fp1=fopen;
if
{
printf<"无法找到文件:
%s\n",FilePath1>;