数据结构课程设计报告 家庭成员消费管理系统doc 2Word下载.docx
- 文档编号:17339243
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:23
- 大小:291.46KB
数据结构课程设计报告 家庭成员消费管理系统doc 2Word下载.docx
《数据结构课程设计报告 家庭成员消费管理系统doc 2Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告 家庭成员消费管理系统doc 2Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
1.主函数:
主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.
流程图:
显示一系列功能模块
N
输入n,判断n是否是0--4
Y
根据n的值调用各功能模块函数
[程序]:
intmenu()
{
printf("
======================欢迎使用======================\n"
);
\n\n****************成员消费表的管理程序*********************\n"
\n\n*************1.建立成员消费登记表(有序数据库*************************\n"
printf("
********************2.打印成员消费登记表(按消费降序排列)*************************\n"
********************3.将成员消费表按编号排序*************************\n"
********************4.按成员姓名查询记录*************************\n"
********************0.退出*************************\n"
}
voidmain()
{intn,flag;
chara;
menu();
do
{printf("
请选择你需要操作的步骤(0--4):
\n"
scanf("
%d"
&
n);
if(n>
=0&
&
n<
=4)
{flag=1;
break;
}
else
{flag=0;
您输入有误,请重新选择!
"
}while(flag==0);
while(flag==1)
{switch(n)
{case1:
◆◆◆输入成员消费信息◆◆◆\n"
creat();
printlist(hsort);
case2:
◆◆◆打印成员消费信息◆◆◆\n"
case3:
◆◆◆将成员消费表按编号排序◆◆◆\n"
hno=selesort(hsort);
case4:
◆◆◆按姓名查询成员消费信息◆◆◆\n"
search();
case0:
Good_bye();
exit(0);
default:
getchar();
是否继续进行(yorn):
%c"
a);
if(a=='
y'
)
{flag=1;
system("
cls"
/*清屏*/
menu();
/*调用菜单函数*/
请再次选择你需要操作的步骤(0--4):
else
exit(0);
}
输入模块:
[分析]:
单独看各数据信息,编号,姓名是字符型,可以采用字符型数组;
消费为浮点型;
数据信息存放在单链表中,一个结点对应一个成员,既符合习惯又方便信息管理.
如果要存放若干成员信息就用结构体数组:
typedefstructrecord
{charnum[10];
charname[8];
floatcost[6];
floattotal;
}member;
typedefstructnode
{membermem;
structnode*next;
}linklist;
输入函数程序:
linklist*hsort_creat()/*用尾插法建立带头结点按降序排列的成员消费登记表*/
{linklist*head,*r,*p,*q,*findnode(),*input_record();
\n\n\t\t请输入一组成员消费记录:
head=(structnode*)malloc(len);
/*建立成员消费表的头结点*/
head->
mem.total=999;
/*输入头结点的特殊数据*/
r=head;
/*r是指向表的尾指针*/
p=input_record();
/*在成员消费登记表中输入一个成员记录*/
while(p!
=NULL)/*在总消费建立从高到低的有序列*/
{if(r->
mem.total>
p->
mem.total)/*输入当前记录的消费大于表中记录消费*/
{r->
next=p;
r=p;
}/*将该记录插入表尾,否则*/
else{q=findnode(head,*p);
/*在消费表中查找合适的位置*/
if(q!
=NULL)/*在消费表中的合适位置插入该结点*/
{p->
next=q->
next;
q->
}}
/*在成员消费登记表中输入下一个记录*/
}return(head);
/*返回成员消费登记表的头指针*/
}/*HSORT_CREAT*/
linklist*input_record()/*成员消费表的建立函数——成员记录输入函数*/
{linklist*p;
memberx;
inti,m;
x.total=0;
p=NULL;
请输入需要创建信息的家庭成员人数(1--10):
m);
for(i=0;
i<
m;
i++)
{printf("
\n\t\t编号:
%s"
x.num);
/*输入成员的编号*/
\t\t姓名:
x.name);
/*输入成员姓名*/
for(i=1;
=NUM;
\t\t%s:
kname[i]);
scanf("
%f"
x.cost[i]);
/*输入成员的各项消费*/
x.total=x.total+x.cost[i];
}/*计算部分*/
p=(structnode*)malloc(len);
/*生成新的记录结点*/
strcpy(p->
mem.num,x.num);
/*给成员编号赋值*/
mem.name,x.name);
/*给成员姓名赋值*/
p->
mem.cost[i]=x.cost[i];
/*给成员各项消费赋值*/
mem.total=x.total;
/*给成员总消费赋值*/
next=NULL;
/*将新结点的指针域置空*/
}return(p);
/*函数返回新结点的指针*/
}/*INPUT_RECORD*/
linklist*findnode(head,x)/*在成员消费表中查找给定结点的前驱结点的位置*/
linklist*head;
memberx;
p=head;
while((p->
next!
=NULL)&
(p->
next->
x.total))
p=p->
return(p);
}/*FINDNODE*/
2.查找模块:
[需求分析]:
该模块的功能是根据输入的成员的姓名查找对应的记录,找到以后,显示相应的成员信息.
[流程图]:
YN
voidsearch()
{linklist*p,*key_search();
charx[10];
inti;
\t查询模块\n"
\n\t\t输入要查询的成员姓名:
x);
p=key_search(hsort,x);
if(p!
=NULL)
\n\n\n\t\t查询成功\n"
printf("
%d%-8s%-8s"
p->
mem.num,p->
mem.name);
for(i=1;
%-6.1f"
mem.cost[i]);
%-7.1f\n"
mem.total);
linklist*key_search(hsort,x)
linklist*hsort;
{linklist*p=hsort;
while((p!
(strcmp(p->
mem.name,x)!
=0))
if(p->
mem.name==x)
\n\t要查找的成员不存在\n"
return(NULL);
}
3.打印信息模块:
a.该模块的功能是打印显示所有成员记录信息.
voidprintlist(linklist*hsort)/*成员消费管理系统——打印成员消费登记表函数*/
intn=1,i;
\n\n\t\t\t输出成员消费表\n"
\n序号编号姓名"
%-6s"
总消费\n"
p=hsort->
%d.%-8s%-8s"
n,p->
p=p->
n=n+1;
}printf("
\n\n"
}/*PRINTLIST*/
b.排序模块:
需求分析:
该模块是对输入的信息进行排序,按总消费降序排序且打印,方便浏览和分析。
linklist*selesort(head)/*用选择法对成员消费表进行排序*/
{linklist*headno=NULL,*p,*q,*hq,*s;
intj,i;
\n\n\n\t\t输出按编号排序的成员消费表"
headno=(structnode*)malloc(len);
strcpy(headno->
mem.num,"
\0"
headno->
p=head->
{s=(structnode*)malloc(len);
strcpy(s->
mem.num);
mem.name,p->
s->
mem.cost[i]=p->
mem.cost[i];
mem.total=p->
mem.total;
q=headno;
hq=headno;
while((q!
(strcmp(q->
mem.num,s->
mem.num)<
0))
{hq=q;
q=q->
next=hq->
hq->
next=s;
printlist(headno);
return(headno);
}/*SELESORT*/
此外,程序编写过程中还会运用到一下两个小程序:
voidclear()
{gotoxy(16,5);
textbackground(15);
textcolor(0);
}/*CLEAR*/
voidGood_bye()
{clear();
\n\n\n\t\t\t程序结束,再见!
}/*Goodbye*/
源程序如下:
/*Note:
YourchoiceisCIDE*/
#defineNULL0
#defineNUM5
#definelensizeof(linklist)
#include"
stdio.h"
stdlib.h"
#include<
ctype.h>
alloc.h>
dos.h>
mem.h>
{gotoxy(16,5);
/*hsort是按总消费降序排列的成员消费表头指针*/
linklist*hno;
/*hno是按编号升序排列的成员消费表头指针*/
charkname[8][20]={"
"
"
衣"
食"
住"
行"
玩"
总消费"
};
voidcreat()/*成员消费管理系统——按总消费降序建立成员消费登记表主函数*/
linklist*hsort_creat();
按降序建立成员消费的单链表\n"
hsort=hsort_creat();
}/*CREAT*/
clear();
\n\t请输入一组成员消费记录,以编号为'
*'
结束符:
\n\t编号:
\t"
if(strcmp(x.num,"
*"
)!
=0)
\t姓名:
\t%s:
\t序号编号姓名\n"
linklist*selesort(head)/*成员消费管理系统——用选择法对成员消费表进行排序*/
linklist*p,*key_search();
printlist(p);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构课程设计报告 家庭成员消费管理系统doc 数据结构 课程设计 报告 家庭成员 消费 管理 系统 doc
