为什么不能编译?求帮助!
题目是请设计一个图书大厦的会员卡管理程序。会员卡信息包括:卡号、持卡人名称、联系电话、办卡日期(含年、月、日)、办卡金额、消费次数、消费日期、累积消费金额、折扣等。
该程序应该具有下列基本功能:
(1) 录入全部持卡人的基本信息,卡号按顺序生成,办卡金额满1000元享受9折、满2000元享受8折、满5000元享受6折、满10000元享受5折;
(2) 显示全部会员的信息;
(3) 添加一个会员的信息;
(4) 给定卡号,修改此卡号的会员信息,要求有修改确认;
(5) 给定会员姓名,删除此会员的信息,要求有删除确认;
(6) 给定卡号,显示此卡的基本信息;
(7) 给定卡号,查询累积消费金额;
(8) 给定会员姓名,显示该会员的所有消费信息;
(9) 给定一个日期(含年、月、日),显示该日的消费人数和消费总金额;
(10) 提供一些排序、统计各类信息的功能。
【题目要求】
(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;
(2) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。
【输入要求】
应用程序运行后,在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后(若需要,还可显示子菜单),根据应用程序的提示信息,从键盘输入相应的信息。要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
【输出要求】
(1) 应用程序运行后,要在屏幕上显示一个菜单;
(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
(3)输出的结果要清晰美观,以表格形式上下对齐。
【提示】
使用结构类型和一维数组,用来保存软件信息。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#define NUM 10 //最大容纳数据的消费者数量
typedef struct node_card
{
unsigned long m_Money;//办卡金额
unsigned long m_Counter;//消费次数
unsigned long m_FeeMonSum;//累计消费金额
struct tm *m_Time;//(有效值为年/月/日)
unsigned int m_ID; //卡号
char *m_Name; //持卡人名称
char *m_Ph;//联系电话
short m_Discount; //折扣
}Card;
Card customers[NUM];
unsigned int Counter; //计数器
void get_customer_msg(void);
void auto_deal(unsigned int coun);
void print_customers_msg(void);
int wmain(void)
{
get_customer_msg();
print_customers_msg();
return 0;
}
/*
*录取客户信息
*/
void get_customer_msg(void)
{
unsigned int sum;
printf("输入持卡人数: "); scanf("%u", &sum);
while (0 != sum--)
{
printf("输入持卡人姓名: ");
customers[Counter].m_Name = (char*) malloc (20*sizeof(char));
scanf("%s", customers[Counter].m_Name);
printf("输入持卡人联系电话: ");
customers[Counter].m_Ph = (char*) malloc (20*sizeof(char));
scanf("%s", customers[Counter].m_Ph);
printf("输入办卡金额: ");
scanf("%u", &customers[Counter].m_Money);
auto_deal(Counter);
customers[Counter].m_ID = Counter+1;
++Counter;
}
}
void auto_deal(unsigned int coun)
{
time_t t;
if (customers[coun].m_Money >= 10000)
{
customers[coun].m_Discount = 5;
}
else if (customers[coun].m_Money >= 5000)
{
customers[coun].m_Discount = 6;
}
else if (customers[coun].m_Money >= 2000)
{
customers[coun].m_Discount = 8;
}
else if (customers[coun].m_Money >= 1000)
{
customers[coun].m_Discount = 9;
}
else
{
customers[coun].m_Discount = 10;
}
customers[coun].m_Counter = 0;
customers[coun].m_FeeMonSum = 0;
customers[coun].m_Time = (struct tm*) malloc (sizeof(struct tm));
t = time(NULL);
customers[coun].m_Time = localtime(&t);
}
/*
*打印客户的全部信息
*/
void print_customers_msg(void)
{
unsigned int index = 0;
while (Counter != index)
{
printf("卡号: %d\n", customers[index].m_ID);
printf("持卡人: %s\n", customers[index].m_Name);
printf("电话: %s\n", customers[index].m_Ph);
printf("注册日期: %d %d %d\n", customers[index].m_Time->tm_year+1900,
customers[index].m_Time->tm_mon, customers[index].m_Time->tm_mday);
printf("办卡金额: %u\n", customers[index].m_Money);
printf("累计消费: %u\n", customers[index].m_FeeMonSum);
printf("消费次数: %u\n", customers[index].m_Counter);
printf("消费折扣: %u\n", customers[index].m_Discount);
++index;
}
}