|

楼主 |
发表于 2016-5-18 17:19:13
|
显示全部楼层
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- #define M 1000
- typedef struct //构建节点类模板
- {
- Node T *next;//可省指针
- char name[30];
- T data;
- long int number;
- };
- typedef struct T
- struct SavingList
- {
- Node<T>*head;
- };
- typedef struct T //建立已有储户数据
- Node<T>*CreatSavingList()
- {
- head=malloc(Node<T>);//初值
- int k=1;//分配动态空间
- Node<T>*p,*q;
- head->next=NULL;//赋初值
- long int number,Number;
- int data;
- char name[30];
- printf("请输入账户号(八位整数):");
- scanf(%8d",&number);
- Number=number;
- printf("请输入姓名:");
- scanf("%s",&name);
- printf("请输入账户余额:");
- scanf("%d",&data);
- while(number/1e7>=1&&number/1e7<=10)
- {
- p=malloc(Node<T>);
- q=malloc(Node<T>);
- p->number=number;//节点初值
- p->name=name;
- p->data=data;
- p->next=head->next;//将p插入链中
- head->next=p;
- printf("是否继续输入信息 按1继续输入 按0退出\n");
- scanf("%d",&k);
- if(k==0)
- break;
- printf("请输入账户号(八位整数):");
- scanf("%d",&number);
- q=head->next;
- while(q)//账号的重复判断
- {
- if(q->number==number)
- {
- printf("账号已存在!\n");
- break;
- }
- else
- q=q->next;
- }
- if(!q)
- {
- printf("请输入姓名:");
- scanf("%s",&name);
- printf("请输入账户余额:");
- scanf("%d",&data);
- }
- }
- return head;
- }
- typedef struct T //查找账户
- void SearchAccount(long int x)
- {
- if(x/1e7<1||x/1e7>10)
- {
- printf("您输入的账户不存在\n");
- return;
- }
- Node<long>*p;
- p=head;
- while(p!=NULL&&p->number!=x)
- {
- p=p->next;//向下移位 继续查找
- }
- if(p==NULL)
- {
- printf("您输入的账户未找到\n");
- }
- else
- {
- printf("账户名: %s \n",p->name);
- printf("账户号码: %d \n",p->number);
- printf("账户余额: %d\n",p->data);
- }
- }
- typedef struct T //销户
- Node<T>*DeleteAccount(long int x)
- {
- Node<T>*p,*q;//节点类型
- p=head;
- while(p!=NULL&&p->number!=x)
- {
- q=p;
- p=p->next;
- }
- if(p==NULL)
- {
- printf("您输入的账户不存在\n");
- }
- else
- {
- q->next=p->next;//将q删掉
- }
- return head;
- }
- typedef struct T>//开户
- Node<T>*InsertAccount(long int x)
- {
- Node<T>*p,*q;
- q=new Node<T>;
- char w[10];// 名字
- int i;
- p=head;
- q->number=x;
- q->next=p->next;
- p->next=q;//插入q(新的账号)
- printf("请输入姓名:");
- scanf("%s",&w);
- printf("请输入余额:");
- scanf("%d",&i);
- q->name=w;
- q->data=i;
- printf("您的新账户的信息是:\n");
- printf("账户名: %s\n",q->name);
- printf("账户号码: %d\n",q->number);
- printf("账户名: %d 元\n",q->data);
- return head;
- }
- typedef struct T//存款记录
- void Record(long int x,int y)
- {
- Node<T>*p;
- p=head;
- while(p!=NULL&&p->number!=x)//循环查找P的相同正确值 节点下移
- {
- p=p->next;
- }
- if(p==NULL)
- printf("你输入的账户不存在\n");
- else
- {
- p->data=p->data+y;
- if(p->data<0)
- printf("余额不足 请充值:\n";
- else
- {
- printf("目前您的账户信息:\n");
- printf("账户名(八位):%s\n",p->name);
- printf("账户号码:%d\n",p->number);
- printf("账户余额:%d元\n",p->data);
- }
- }
- }
- int Menu()
- {
- int n;
- printf(".....................Menu......................\n");
- printf("\t1、查询账户 2、开户\n\n\n");
- printf("\t3、支出存储记录 4、销户\n\n\n");
- printf("\t5、退出\n");
- printf("...............................................\n");
- do
- {
- printf("请输入你的选择(1-5):\n\n");
- scanf("%d",&n;
- }
- while(n<1||n>5);
- return n;
- }
- int main()
- {
- SavingList<long>T;
- Node<long>*head;
- head=T.CreatSavingList();
- long int x;
- int y,n,a,b;
- for(;;)
- {
- switch(Menu())
- {
- case 1:
- {
- printf("请输入您要查询的账户:");
- scanf("%ld",&x);
- T.SearchAccount(x);
- printf("是否需要继续进行操作?是请输入1,放弃请输入0:");
- scanf("%d",&y);
- if(y==1)
- {
- printf(".........................................\n\n\n");
- printf("\t1、支出存入 2、销户\n\n");
- printf(".........................................\n\n\n");
- do
- {
- printf("请输入你选择的操作:");
- scanf("%d",&n);
- }
- while(n!=1&&n!=2);
- if(n==1)
- {
- printf("请输入你存取的钱数:");
- printf("存入的钱数在前加“+”,取出的钱数在前加“-”\n");
- scanf("%d",&a);
- T.Record(x,a);
- }
- if(n==2)
- {
- printf("销户请输入 1,不进行操作输入 0 !");
-
- scanf("%d",&b);
- if(b==1)
- T.DeleteAccount(x);
- }
- }
- }
- break;
- case 2:
- {
- long int c;
- Node<long>*q;
- q=head->next;
- printf("请输入您的账号(八位):");
- scanf("%s",&c);
- while(q)
- {
- if(q->number==c)
- {
- printf("账号已存在:\n");
- break;
- }
- else
- q=q->next;
- }
- if(!q)
- {
- while(c/1e7<1||c/1e7>10)
- {
- printf("输入的位数不正确:");
- scanf("%s",&c);
- }
- T.InsertAccount(c);
- }
- }
- break;
- case 3:
- {
- long int r;
- int t,l;
- printf("请输入执行操作的账号:");
- scanf("ld",&r);
- printf("请输入你存取的钱数:");
- printf("存入钱数在前加“+”,取出钱数在前加“-”\n");
- scanf("%d",&t);
- T.Record(r,t);
- printf("继续操作请输入 1,退出输入0:\n");
- scanf("%d",&l);
- while(l==1)
- {
- printf("请输入执行操作的账号:");
- scanf("%ld",&r);
- printf("请输入你存取的钱数:");
- printf("存入钱数在前加“+”,取出钱数在前加“-”\n");
- scanf("%d",&t);
- T.Record(r,t);
- printf("继续操作请输入 1,退出输入0:\n");
- scanf("%d",&l);
- }
- }
- break;
- case 4:
- {
- long int k;
- int m;
- printf("请输入你想要销掉的账户(请选择以上已有的):");
- scanf("%ld",&k);
- while(k/1e7<1||k/1e7>9)
- {
- printf("输入的位数不正确:");
- scanf("%ld",&k);
- }
- T.DeleteAccount(k);
- printf("继续操作请输入1,退出输入0\n");
- scanf("%d",&m);
- while(m==1)
- {
- printf("请输入你想要销掉的账户(请选择以上已有的):");
- scanf("%ld",&k);
- while(k/1e7<1||k/1e7>9)
- {
- printf("输入的位数不正确,请你确认后再操作!:");
- scanf("%ld",&k);
- }
- T.DeleteAccount(k);
- printf("继续操作请输入1,退出输入0\n");
- scanf("%d",&m);
- }
- }
- break;
- case 5:
- exit(0);
- }
- }
- return 0;
- }
复制代码 |
|