个人帐簿管理系统设计数据结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机学院信管专业
数据结构课程设计
题目:个人帐簿管理系统设计_____________________ 班级:__________________________
姓名:—学号:_____________________ 同组人姓名:_____________________ 起迄日期________________________
课程设计地点:____________________ 指导教师: _________________
完成日期:2013年12月
目录
第一章前言 (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)主界面设计
void menu( void)
{
int item;
int mon;
Infor *a;
a=(I nfor *)malloc(sizeof(l nfor));
do{
prin tf(" ............ 个人帐簿管理系统设计 .......... \n");
printf("1. 录入数据\n");
printf("2. 查看数据\n");
printf("3. 修改数据\n");
printf("4. 查询数据\n");
printf("5. 排序数据\n");
printf("6. 删除数据\n");
printf("7. 退出系统\n");
printf(" 请输入要进行的操作:");
sea nf("%d",&item);
}while(item>6 || item<-1);
2) 录入功能设计
void in put(I nfor *n ewI)
{ printf("\n 依次输入数据:\n(本月月份食品消费房租费用子女费用
水电费用医疗费用储蓄费用收入费用)\n");
sca nf("%d%d%d%d%d%d%d%d",&n ewl->mo nth,&n ewl->spxf,&n ewl->fzfy,&n ewI- >znjy,&n ewI->sdfy,&n ewI->y lfy,&n ewI->cxfy,&n ewI->srfy);
fflush(std in); }
3) 修改功能设计
void modify(I nfor *a,i nt mon)
{
FILE *fp1,*fp2;
Infor *b;
b=(I nfor *)malloc(sizeof(I nfor));
\ fp1= fope n(FilePath1,"rt");
fp2=fope n( "","wt+");
rewin d(fp1);
fread(b,sizeof( In for),1,fp1);
while (!feof(fp1))
{
if(b-> mon th==mon)
{
fwrite(a,sizeof(I nfor),1,fp2);
}
else
{
fwrite(b,sizeof(l nfor),1,fp2);
}
fread(b,sizeof( In for),1,fp1);
}
fclose(fpl);
fclose(fp2);
remove(FilePath1);o=i;
px[0].data=a-> mon th;
px[1].data=a->spxf;
px[2].data=a->fzfy;
px[3].data=a->z njy;
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++)
{
flag=0;
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;
flag=1;
}
if(flag==O) break;
/ }
prin tf("\n");
for(i=0;i<8;i++)
{
printf(" %s",str[px[i]. no]);
}
printf("\n -------------------------------------------------------- ------------ \n");
for(i=0;i<8;i++)
{
\ prin tf("%8d ",px[i].data);
}
prin tf("\n");
}
第四章调试结果与测试分析1.主界面
2.录入数据
3.查看数据
食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入
3
200 2S0 2B0
2 B0 200 200 200 1
5S0
260
8B6
2M9 3S 1S0B 308B
4•修改数据
旻査询的月份:
1
消费
馬租费舄子女费用水电费坤医疗费坤储菁费用本月收入
38
1000 3UB0/n
品消费房租费用子女费用水电费用医疗费用储蓄费用收入费用)
记录月份食品消费房租费用子女费用水电费坤医疗费用储蓄费用本月收入
数数数数数数霁
入看改询t ^
s AS
& 600 200 G00 300 40 2009 50丽
陽改数据成功丨
200
200 200 20Q 2G&
600
3Q0
40 2000
5S00
5B0
200
800
2B0
5. 查询数据
6. 排序数据
7. 删除数据
第五章总结(心得体会)
在这次的课程设计,我发现了自己还有很多的不足,在数据结构操作方面还
有很多的不会。
还需要更加深入的学习。
通过此次的课程设计,在大一C语言学习的基础上,我较为深入的掌握了数据结构与算法的设计方法,具备了一定的独立分析和设计能力和初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
第六章参考文献
1.严蔚敏吴伟民《数据结构》(C语言版)清华大学出版社2007
2•催俊凯。
计算机软件基础。
机械工业出版社。
3. 唐发根。
数据结构教程(第二版)。
北京航空航天大学出版社
4. 谭浩强。
C程序设计(第三版)。
清华大学出版社。
2005
5. 王宏生,宋继红。
数据结构。
北京:国防工业出版社,
6. 李建学,李光元,吴春芳。
数据结构课程设计案例精编(用京:
C/C++苗述)。
北清华大学出版社。
第七章致谢
感谢队友的帮助,在我一些不懂的地方给予了我及时的帮助
感谢席老师的辅导,在有些方面自己和同组人还有好多的不会,
不过经过老师的辅导还是成功编写了出来
第八章附录
源程序:#include <>
#in elude <>
#in elude <>
#in elude <>
入数据\n");
printf("2. 查看数据\n");
printf("3. 修改数据\n");
printf("4. 查询数据\n");
printf("5. 排序数据\n");
printf("6. 删除数据\n");
printf("7. 退出系统\n");
printf(" 请输入要进行的操作:");
sea nf("%d",&item);
}while(item>6 || item<-1);
switeh(item)
{ o=i;
px[O].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++)
{
flag=O;
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;
flag=1;
}
if(flag==0) break;
}
prin tf("\n");
for(i=0;i<8;i++)
{
printf(" %s",str[px[i]. no]);
printf("\n ---------------------------------------------------------- ----------- \n");
for(i=0;i<8;i++)
{
prin tf("%8d ",px[i].data);
}
prin tf("\n");
}
void modify(l nfor *a,i nt mon)
{
FILE *fp1,*fp2;
Infor *b;
b=(I nfor *)malloc(sizeof(l nfor));
fp仁fope n(FilePath1,"rt");
fp2=fope n( "","wt+");
rewi nd(fp1);
fread(b,sizeof( In for),1,fp1);
while (!feof(fp1))
{
if(b-> mon th==mon)
{
fwrite(a,sizeof(I nfor),1,fp2);
}
else
{
fwrite(b,sizeof(l nfor),1,fp2);
}
fread(b,sizeof( In for),1,fp1);
}
fclose(fpl);
fclose(fp2);
remove(FilePathl);// 删除源文件
ren ame("",FilePath1);〃重命名中间文件prin tf(" 修改数据成功!\n");
cha ngeFormat();
}
void delRecord(i nt mon)
{
FILE *fp1,*fp2;
Infor *b;
b=(I nfor *)malloc(sizeof(I nfor));
fp仁fope n(FilePath1,"rt");
fp2=fope n( "","wt+");
rewi nd(fp1);
fread(b,sizeof( In for),1,fp1);
while (!feof(fp1))
{
if(b-> mon th!=m on)
}
fclose(fpl);
fclose(fp2);
remove(FilePathl);// 删除源文件
ren ame("",FilePath1);〃重命名中间文件printf(" 删除数据成功!\n");
cha ngeFormat();
}。