程序设计实训说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中北大学
程序设计实训
说明书
学院、系:软件学院
专业:软件工程
学生姓名:王一平学号:1314010333 设计题目:会员卡计费系统
起迄日期: 2014年11月21日~2015年1月17日指导教师:尹四清
2015 年 1月 10 日
一、选题要求
(1)新会员登记。(将会员个人信息及此会员的会员卡信息进行录入。)
(2)会员信息修改。
(3)会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。
此时可以进行续费,续费后,提示成功,并显示更新后的信息。)
(4)会员消费结算。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息,结算本次费用。提示成功,并显示更新后的信息。)累计消费满1000元,及自动升级为VIP会员。之后每次消费给予9折优惠。
(5)会员退卡。(收回会员卡,并将余额退还,删除该会员信息。)
(6)用菜单进行管理
(7)统计功能。
能够按每个会员的缴费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。
能够按累计消费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。
二、程序设计方法及主要函数介绍
设计方法:结构化程序设计。
主要函数介绍:
void creat_member(mem *pNew);
从键盘接受会员的信息。
void newMember();
添加一个新的会员。
void modify_m();
通过调用search_id函数,搜索到要修改的会员,然后选择需要修改的项目。
void add();
通过调用search_id函数,搜索到要续费的会员,进行会员续费操作。
void consume();
通过调用search_id函数,搜索到要结算的会员,输入消费金额,如果累计消费大于1000元,本次消费9折优惠,否则正常计费。
void delete_m();
通过调用search_id函数,搜索到要删除的会员,并显示本会员余额,并退费。
void statistics();
调用sort_c和sort_m函数,统计会员信息。
mem* search_id(mem *p);
通过id搜索会员信息,返回搜索到的指针。
mem* sort_c(mem *);
通过累计消费金额进行排序
mem* sort_m(mem *);
通过剩余金额进行排序
三、程序源代码(包括注释)
/*引入头文件*/
#include
#include
#include
#include
/*自定义符号常量*/
#define MAX 10
#define MENU_MAIN_COUNT 7 //主菜单的选项个数
/*自定义数据类型*/
typedef struct member{ //定义member,采用链式存储结构
char name[MAX]; //姓名
char id[MAX]; //卡号
char sex[2]; //性别
int age; //年龄
float money; //存款
char tel[12]; //电话
struct member *next; //指向下一个会员信息
float cost; //消费金额
}mem;
/*声明函数*/
void menu();
void save(mem *p);
/*输入信息操作*/
void creat_member(mem *pNew){ //创建一个新的会员char s;
printf("卡号:"); scanf("%s",pNew->id);
printf("请输入姓名: "); scanf("%s",pNew->name);
a:
printf("请输入性别(f--女m--男): "); getchar();
s = getchar();
if(s=='f'||s=='m'){
if (s == 'f' || s == 'F') strcpy(pNew->sex,"女");
if (s == 'M' || s == 'm') strcpy(pNew->sex,"男");
}
else{
printf(">输入错误,请重新输入...\n");
goto a;
}
printf("请输入年龄: "); scanf("%d",&(pNew->age));
printf("请输入缴费金额: "); scanf("%f",&(pNew->money));
printf("请输入电话: "); scanf("%s",pNew->tel);
pNew->cost=0;
printf("\n创建完毕!\n");
}
mem *head=NULL; //头指针为NULL
mem* get_last(mem *p){ //获取最后一个节点
if(p->next == NULL){
return p;
}
else{
get_last(p->next);
}
}
void newMember(){ //添加会员信息
char con='N';
mem *pLast= NULL;
mem *pNew=(mem *)malloc(sizeof(mem));
pNew->next=NULL;
creat_member(pNew);
if(head == NULL){
head = pNew;
}
else{
pLast = get_last(head);
pLast->next = pNew;
}
printf("继续输入会员信息?(Y 继续,N 返回菜单)");
getchar();
con = getchar();
if (con == 'n' || con == 'N'){
save(pNew);
menu();
}
else{
save(pNew);
newMember();
}
}