1、(8)void count(C *head);遍历统计客户数量显示。(9)double display_discount(double integer);计算客户折扣,每次显示用户信息调用一次保证客户为最新打折信息。四、详细设计(1)功能模块详细设计(2)详细设计思想本程序运用链表对客户信息进行存储,首先对结点进行定义,结点中的数据域分别定义了消费者的消费号、身份证、消费价格、积分,其中身份证和消费价格用了字符型数组进行定义,然后定义了客户消费信息链表,每添加一个客户,先分配内存,再添加消费者的信息,之后将链表中最后一个指针指向该新的消费者,删除时,需先找到该消费者前面的消费者,直接将其指针指
2、向删除消费者的下一个消费者,修改信息时,先找到该消费者,选择修改的内容,再进行修改,添加消费的价格时,先找到该消费者,根据情况对增加或减少消费价格,并根据价格计算积分,打折时,根据消费者打折的要求,进行打折。5、程序代码#include stdlib.hstring.hfstreamclass C /定义一个C类public: char name20; char ID20; double consume; double integer; C *next;void Initstack(C * &head)/*初始化链表*/ head= (C*)malloc(sizeof(C); /开辟节点空间
3、head-next=NULL;class A /定义一个A类,封装功能函数 void Getelem (C *head); void Search(C *head,char ID); void Amend(C *head,char ID); void Delete(C *head,char ID); void Showall(C *head); void count(C *head); double display_discount(double integer); void createFile(C* head);int main() A a; C *head; int choice; ch
4、ar y20; Initstack(head); do coutchoice; if(choice=1) a.Getelem(head); /添加 else if(choice=2) cout请输入您查找客户的身份证号:;y; while(strlen(y)!=18) cout a.Search(head,y); /查找 else if(choice=3) 请输入您想修改客户的身份证号: cin while(strlen(y)! a.Amend(head,y); /修改 else if(choice=4)请输入你想要删除的客户的身份证号: a.Delete(head,y); /删除 else
5、if(choice=5) a.Showall(head); /显示 else if(choice=6) a.count(head); /统计 else if(choice=7) exit(1); while(choicenext != NULL) p = p-next; fprintf(fw,用户名:%s,身份证号:%s,消费金额:%lf,积分:%lfn, p-name,p-ID,p-consume,p-integer); fclose(fw);Getelem (C *head) C *p; double y; p=(C*)malloc(sizeof(C);/*申请空的节点空间*/请输入姓名:
6、p-name;请输入身份证号(18位):ID; while(strlen(p-ID)!=18) p-请输入消费金额:consume;integer=p- y=display_discount(p- /调用函数计算折扣折扣:y head-next=p; createFile(head); Search(C *head,char ID) p=head; if(p-next=NULL)没有客户! else while(p-next!=NULL) p=p- if(strcmp(ID,p-ID)=0) /判断身份证号是否相同 姓名:身份证号:消费:积分:integer; y=display_discou
7、nt(p- Amend(C *head,char ID) /修改客户函数 double y,z; int choose,x; coutchoose; if(choose=1)请输入修改后姓名; if(choose=2)请输入修改后的身份证号: while(strlen(p- cout if(choose=3)1.覆盖以前消费、2.续加上现在费用!请选择:x; if(x=1)请输入修改后的消费: else请输入续加金额:z; p-consume+=z; y=display_discount(p- Delete(C *head,char ID) /删除客户函数 int x; head=p;ID)=
8、0) /判断身份证号是否相同 y=display_discount(p-你确认删除?1、确定。2、取消。 if(x=1) head-next=p-删除成功! else删除失败! Showall(C *head) /显示所有客户函数 count(C *head) /显示所有客户函数 int i=0; i+;现有客户数量:i 0&points 300) discount = 7; return discount;6、运行结果与测试(1)程序运行主窗口(2)添加客户(3)查找客户(4)修改客户(5)删除客户(6)显示客户(7)统计客户小学生数学习题库系统1、问题陈述(包括系统总体框图及功能描述)利用
9、栈求表达式的值,可供小学生作业,并能给出分数。建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价。此课题是研究表达式求值的问题,以帮助小学生完成测试。为了达到这个功能,实际我们要做的就是出题,和计算分数给出评价的工作。整体设计都是以这个要求为轴心进行的。为了直观和方便,现画出软件整体设计模块图。整体设计模块图可以清晰的看出软件的几大模块。整个系统的操作流程图可以看出操作的整体流程,如下图 (输入1) (输入2) (输入0)二、程序代码#includectype.htime.h#define MAXLEN 10
10、0typedef struct shiti int bianhao; char timu20;xuanti;typedef struct char op; int level;opt;typedef struct /定义操作符栈 opt stMAXLEN; int top;op_stack;typedef struct /定义值栈 double DMAXLEN;D_stack;opt peek(op_stack *s) /定义看栈顶函数 opt error=$,-2; if(s-top=0) return s-sts-top; return error;int IsEmpty(op_stack
11、 *s) /定义判断栈空的函数toptop.op;char push(op_stack *s,opt c) /定义入栈函数 s-top+; s-top=c; return c.op;opt pop(op_stack *s) /定义出栈函数 opt i; opt error= i=s- s-top.op=0top-; return i;void clear(op_stack *s) /定义初始化栈top=-1;/-define the value stack-double Dpeek(D_stack *s) /定义看栈顶函数Ds-int DIsEmpty(D_stack *s) /定义判断栈空的
12、函数 return (int)(s-top);double Dpush(D_stack *s,double c) /定义入栈函数 return c;double Dpop(D_stack *s) /定义出栈函数 double i;top= else return 0;void Dclear(D_stack *s) /定义初始化栈void createNumberFile(int n)题目个数.txt if (fw = NULL) printf(文件写入失败!n exit(0); fprintf(fw,%d,n);int readNumberFile() FILE* fr=fopen(rt if (fr = NULL)文件读取失败! char numBuf5; fgets(numBuf,5,fr); int n=atoi(numBuf); fclose(fr); return n;void createQuestionFile()试题库.txt int num; printf(请输入出题个数: scanf(,&num); fflush(stdin); createNumberFile(num);请出%d道题目放入试题库:,num); char wtBuf20; for(int i=1;=num;i+)第%d题:,i); gets(wtBuf);%d:%sn, i
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1