程序设计实训说明书

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();

}

}

相关文档
最新文档