财务管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include "stdlib.h"
#include
#include"windows.h"
#define LEN sizeof(struct zhuce)
#define LEN2 sizeof(struct caiwu)
int checkdate(int a,int b,int c);
int twodate(int a1,int b1,int c1,int a2,int b2,int c2);
void zhaohui(struct zhuce*head);
void shuoming(void);
void denglu(struct zhuce * head);
void print2(struct zhuce *head);
void print3(struct zhuce *p);
void zhu1(struct zhuce * head);
void zhu2(struct zhuce * head);
struct zhuce *creat(struct zhuce *head);
int gaiming(struct zhuce*p1);
int gaishen(struct zhuce*p1);
int gaimi(struct zhuce*p1);
int gaishou(struct caiwu*p1);
int gaichu(struct caiwu*p1);
struct zhuce* tongji(struct zhuce*head);
void print1(struct zhuce *head);
void shouzhip(struct zhuce*head);
void shourup(struct zhuce*head);
struct zhuce *del1(struct zhuce*head);
struct zhuce *del2(struct zhuce*head);
struct zhuce *shuru(struct zhuce *head);
struct caiwu *shuru1(struct zhuce *head);
struct zhuce *insert1(struct zhuce *head,struct zhuce *p1);
struct caiwu *insert2(struct caiwu *head,struct caiwu *p1);
struct zhuce *sort(struct zhuce*head);
struct zhuce *sort2(struct zhuce*head);
struct zhuce *paixu(struct zhuce*head);
struct zhuce*yonghu(struct zhuce*head);
struct zhuce *cai(struct zhuce*head);
int xiugai2(struct zhuce*p1);
struct zhuce*xiugai3(struct zhuce*head);
void zhichup(struct zhuce*head);
void write(struct zhuce *head);
void tuichu(struct zhuche*head);
struct zhuce
{ char name[10];
char mima[10];
char wenti[10];
char daan[10];
char sf;
float tong;
int num;
int tiao;
struct caiwu *head2;
struct zhuce*next;
}zc;
struct caiwu
{int nian;
int yue;
int ri;
int num;
float in;
float out;
struct caiwu*next2;
}cc;
main()
{ FILE*fp;
int i=0,a=0,j=0,k[100]={0};
char ch='a';
struct zhuce*p1,*p2,*head;
struct caiwu*head3,*p3,*p4;
if((fp=fopen("zhuce.txt","r"))==0)
{printf("\t\t数据读取出错");exit(0);}
p1=p2=(struct zhuce * )malloc(LEN);
while(!feof(fp))
{ fread(p1,LEN,1,fp);
if(p1->sf!='1'&&p1->sf!='2') break;
i++;
if(i==1) head=p2=p1;
else p2->next=p1;
p2=p1;
p4=p3=(struct caiwu * )malloc(LEN2);
p1->head2=p3;
for(j=0;j
{ fread(p3,LEN2,1,fp);
k[i]++;
if(k[1]==1) head3=p4=p3;
else p4->next2=p3;
p4=p3;
p3=p3->next2;
p3=(struct caiwu * )malloc(LEN2);
}
p4->next2=NULL;
p1=p1->next;
p1=(struct zhuce * )malloc(LEN);
}
p2->next=NULL;
fclose(fp);
if(i==0) {head=NULL;printf("\t\t本次为初始注册,用户必须为家长!\n");head=creat(head);}
if(head==NULL) printf("1");
while(ch!='4')
{system("cls");
printf("\n\t\t致富的秘密是存钱后再花剩下的钱,而不是存你花剩下的钱。\n");
printf("\n\t\t *╭╮ ╭╮ ╭╮");
printf("\n\t\t ││ ││ │└╮");
printf("\n\t\t ╭┴┴—┴Ⅲ╮~└—╯");
pr
intf("\n\t\t │ ﹋ ﹋ │ ╭—————————╮");
printf("\n\t\t │ ∩ ∩ │ ╭╮│欢迎使用本财务系统│");
printf("\n\t\t │ ▽ │O╰╯╰—————————╯");
printf("\n\t\t ╰—m∞m—╯");
printf("\n\t\t 1.用户登陆\n");
printf("\t\t 2.找回密码\n");
printf("\t\t 3.使用说明\n");
printf("\t\t 4.退出系统\n");
printf("\t\t 请输入指令数:");
scanf("%c",&ch);
fflush(stdin);
while(ch>'4'||ch<'1')
{printf("\n\t\t输入错误,请重新输入");scanf("%c",&ch);fflush(stdin);}
switch(ch)
{case '1':system("cls");denglu(head);break;
case '2':system("cls");zhaohui(head);break;
case '3':system("cls");shuoming();break;
case '4':system("cls");tuichu(head);break;
}
}
}
struct zhuce *creat(struct zhuce *head)
{ struct zhuce * p1 , * p2;
int m=0,i=0,j=0,k=0;
char a[10]={'\0'},b[10]={'\0'},c[10]={'\0'},ch;
p1=(struct zhuce * )malloc(LEN);
printf("\t\t\t╭☆╮╭★╮╭☆╮╭★╮\n");
printf("\t\t\t║用║║户║║注║║册║\n");
printf("\t\t\t╰★╯╰☆╯╰★╯╰☆╯\n");
printf("\n\t\t请输入用户名:");
scanf("%s",&p1->name);
p2=head;
if(head!=NULL)
while(p2!=NULL)
{ if(strcmp(p2->name,p1->name)==0) {printf("\n\t\t该用户名已被注册");m=1;break;}
p2=p2->next;
}
if(m==1) {printf("\n\t\t请重新输入用户名:");scanf("%s",&p1->name);return(head);}
printf("\t\t请输入密码:");
i=0;j=0;
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{b[i]=ch;printf("*");i++;j++;}
else if(j>0){b[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
printf("\n\t\t请再次输入密码确认:");
fflush(stdin);
i=0;j=0;
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{c[i]=ch;printf("*");i++;j++;}
else if(j>0){c[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
if(strcmp(b,c)!=0)
while(strcmp(b,c)!=0)
{printf("\n\t\t密码输入有误,请再次输入");
i=0;j=0;
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{c[i]=ch;printf("*");i++;j++;}
else if(j>0){c[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
}
strcpy(p1->mima,b);
printf("\n\t\t请输入身份(家长为1,其他成员为2):");
scanf("%c",&p1->sf);
fflush(stdin);
while(p1->sf!='1'&&p1->sf!='2')
{ printf("\n\t\t输入有误,请按提示输入");
scanf("%c",&p1->sf);
fflush(stdin);
}
printf("\t\t请输入密码找回问题:");
scanf("%s",&p1->wenti);
fflush(stdin);
printf("\t\t请输入问题答案:");
scanf("%s",&p1->daan);
fflush(stdin);
if(head!=NULL) head=sort2(head);
p2=head;
if(head==NULL)
p1->num=1;
else
{while(p2!=NULL)
{ p1->num=p2->num;p2=p2->next;}
p1->num++;}
fflush(stdin);
p1->tiao=0;
p1->next=NULL;
p1->tong=0;
p1->head2=shuru1(p1);
if(head==NULL)
head=p1;
else head=insert1(head,p1);
printf("\n\t\t注册成功");
Sleep(1000);
system("cls");
return(head);
}
struct zhuce *shuru(struct zhuce *head)
{ struct zhuce *p1;
struct caiwu *p2,*p3;
char a[10]={'\0'},ch;
float h;
int j=0,k=0,l=0,m=0,p=1;
p1=head;
printf("\n\t\t╭☆╮╭★╮╭☆╮╭★╮╭☆╮╭★╮");
printf("\n\t\t║财║║务║║信║║息║║输║║入║");
printf("\n\t\t╰★╯╰☆╯╰★╯╰☆╯╰★╯╰☆╯");
printf("\n\t\t请输入需要登记财务信息的用户名:");
scanf("%s",&a);
fflush(stdin);
while(p1!=NULL)
{if(strcmp(a,p1->name)==0) {m=1;break;}
p1=p1->next;}
if(m==0) {printf("\t\t该用户名还没注册");Sleep(1000);}
p2=(struct caiwu * )malloc(LEN2);
printf("\n\t\t请输入财务项目(支出为1,收入为2):");
scanf("%c",&ch);
fflush(stdin);
if(ch!='1'&&ch!='2')
while(1)
{ printf("\n\t\t输入有误,请按提示输入");
scanf("%c",&ch);fflush(stdin);
if(ch=='1'||ch=='2') break;
}
printf("\n\t\t请输入金额:");
scanf("%f",&h);
fflush(stdin);
if(ch=='1') {p2->out=h;p2->in=0;}
if(ch=='2') {p2->in=h;p2->out=0;}
printf("\n\t\t请输入财务变动日期(x年-x月-x日):");
scanf("%d-%d-%d",&j,&k,&l);
fflush(stdin);
while(!checkdate(j,k,l))
{
scanf("%d-%d-%d",&j,&k,&l);
}
p2->nian=j;
p2->yue=k;
p2->ri=l;
p2->next2=NULL;
p1->tiao++;
head=sort(head);
p1->head2=insert2(p1->head2,p2);
p3=p1->head2;
while(p3!=NULL)
{p3->num=p;p++;
p3=p3->next2;}
printf("\n\t\t输入成功!");
Sleep(1000);
system("cls");
return(head);
}
struct caiwu *shuru1(struct zhuce *p1)
{
struct caiwu *p2;
char a[10]={'\0'},ch;
float h;
int j=0,k=0,l=0,m=0;
p2=(struct caiwu * )malloc(LEN2);
printf("\n\t\t以下为财务信息录入");
printf("\n\t\t请输入财务项目(支出为1,收入为2):");
scanf("%c",&ch);
fflush(stdin);
if(ch!='1'&&ch!='2')
while(1)
{ printf("\n\t\t输入有误,请重新输入");
scanf("%c",&ch);
fflush(stdin);
if(ch=='1'||ch=='2') break;
}
printf("\n\t\t请输入金额:");
scanf("%f",&h);
fflush(stdin);
if(ch=='1') {p2->out=h;p2->in=0;}
if(ch=='2') {p2->in=h;p2->out=0;}
printf("\n\t\t请输入财务变动日期(x年-x月-x日):");
scanf("%d-%d-%d",&j,&k,&l);
fflush(stdin);
while(!checkdate(j,k,l))
{
scanf("%d-%d-%d",&j,&k,&l);
}
p2->nian=j;
p2->yue=k;
p2->ri=l;
p2->num=1;
p2->next2=NULL;
p1->tiao++;
p1->head2=p2;
return(p1->head2);
}
void denglu(struct zhuce * head)
{ struct zhuce *p1;
char a[10]={'\0'},b[10]={'\0'},ch;
int k=3,i=0,j=0;
p1=head
;
while(k!=0)
{printf("\t\t\t╭☆╮╭★╮╭☆╮╭★╮\n");
printf("\t\t\t║用║║户║║登║║录║\n");
printf("\t\t\t╰★╯╰☆╯╰★╯╰☆╯\n");
printf("\t\t请输入用户名:");
scanf("%s",&a);
fflush(stdin);
while(p1!=NULL)
{if(strcmp(a,p1->name)==0) break;
p1=p1->next;}
if(p1==NULL) {printf("该用户名还没注册");Sleep(1000);return;}
printf("\t\t请输入密码:");
i=0;j=0;
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{b[i]=ch;printf("*");i++;j++;}
else if(j>0){b[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
fflush(stdin);
if(strcmp(p1->mima,b)!=0)
while(k!=0) {printf("\n\t\t输入有误,请重新输入(还有%d次机会)\n",k);
i=0;j=0;
printf("\t\t请再次输入密码:");
i=0;j=0;fflush(stdin);
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{b[i]=ch;printf("*");i++;j++;}
else if(j>0){b[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
if(strcmp(p1->mima,b)==0) break;
k--;
}
if(k==0) {printf("\t\t你密码输入次数太多,系统自动返回");Sleep(1000);system("cls");return;}
system("cls");
printf("\n\t\t\t登陆中");
Sleep(1000);
system("cls");
if(p1->sf=='1') {zhu1(head);}
if(p1->sf=='2') {zhu2(head);}
}
}
void zhu1(struct zhuce * head)
{
char ch='p';
while(ch!='0')
{ system("cls");
printf("\n\t\t ☆ °οο0▊____☆ ╭—╮ ");
printf("\n\t\t. .★/\《﹨《﹨《☆《\.☆ │家│ ");
printf("\n\t\t☆. / \《﹨《﹨《★《\° │长│");
printf("\n\t\t ☆ │ ║﹌﹌﹌﹌﹌﹌﹌│.▲ │界│ ");
printf("\n\t\t★ │ ║ 田 ╭┬╮田│◢█◣ │面│ ");
printf("\n\t\t @ │ ║ │││ ◢███◣╰—╯ ");
printf("\n\t\t ║╓╥╥╥☆. ● ●. ╥★╥▊╥╥╥╖ ");
printf("\n\t\t╔╩╬╬╬╬. _/█\_/█\_╔╩╬╬╬╬╬╬ ");
printf("\n\t\t1.用户信息管理");
printf("\n\t\t2.财务信息管理");
printf("\n\t\t3.查询个人财务信息");
printf("\n\t\t4.统计界面");
printf("\n\t\t5.数据保存");
printf("\n\t\t6.系统使用说明");
printf("\n\t\t0.退出系统");
printf("\n\t\t请输入指令数:");
scanf("%c",&ch);
fflush(stdin);
while(ch>'9'||ch<'0')
{printf("\n\t\t输入错误,请重新输入");scanf("%c",&ch);fflush(stdin);}
switch(ch)
{case '1':system("cls");head=yonghu(head);break;
case '2':system("cls");head=cai(head);break;
case '3':system("cls");print1(head);break;
case '4':system("cls");tongji(head);break;
case '5':system("cls");wr
ite(head);break;
case '6':system("cls");shuoming();break;
case '0':system("cls");tuichu(head);break;
}
}
}
void zhu2(struct zhuce * head)
{
char ch;
while(ch!='4')
{ system("cls");
printf("\n\t\t 爱. 爱 ╭—╮");
printf("\n\t\t 爱..爱 爱.爱 │家│");
printf("\n\t\t 爱..爱 爱..爱 │庭│");
printf("\n\t\t 爱..爱..爱.爱.爱 │成│");
printf("\n\t\t 爱......... 爱 │员│");
printf("\n\t\t 爱.............爱 │界│");
printf("\n\t\t 爱...............爱 │面│");
printf("\n\t\t 爱.................爱╰—╯");
printf("\n\t\t爱...................爱 ");
printf("\n\t\t爱...................爱 ");
printf("\n\t\t爱.....∩.......∩.....爱 ");
printf("\n\t\t爱. ..................爱 ");
printf("\n\t\t爱. ...◎....U....◎....爱 ");
printf("\n\t\t 爱.................爱 ");
printf("\n\t\t 爱爱.............爱爱");
printf("\n\n\t\t1.查询个人财务信息");
printf("\n\t\t2.统计界面");
printf("\n\t\t3.系统使用说明");
printf("\n\t\t4.退出系统");
printf("\n\t\t请输入指令数:");
scanf("%c",&ch);
fflush(stdin);
while(ch>'4'||ch<'1')
{printf("\n\t\t输入错误,请重新输入"); scanf("%c",&ch);fflush(stdin);}
switch(ch)
{case '1':system("cls");print1(head);break;
case '2':system("cls");tongji(head);break;
case '3':system("cls");shuoming();break;
case '4':system("cls");tuichu(head);break;
}
}
}
struct zhuce*tongji(struct zhuce*head)
{ char ch='p';
while(ch!='7')
{ system("cls");
printf("\t\t\t╭☆╮╭★╮╭☆╮╭★╮\n");
printf("\t\t\t║统║║计║║界║║面║\n");
printf("\t\t\t╰★╯╰☆╯╰★╯╰☆╯\n");
printf("\n\t\t1.查询全家详细财务信息");
printf("\n\t\t2.家庭全年收支统计");
printf("\n\t\t3.家庭成员收入排行榜");
printf("\n\t\t4.家庭成员支出排行榜");
printf("\n\t\t5.返回主界面");
printf("\n\t\t6.退出系统");
printf("\n\t\t请输入指令数:");
scanf("%c",&ch);
fflush(stdin);
while(ch>'6'||ch<'1')
{printf("\n\t\t输入错误,请重新输入");scanf("%c",&ch);fflush(stdin);}
switch(ch)
{case '1':system("cls");head=sort(head);print2(head);break;
case '2':system("cls");head=sort2(head);shouzhip(head);break;
case
'3':system("cls");shourup(head);break;
case '4':system("cls");zhichup(head);break;
case '5':system("cls");return(head);break;
case '6':system("cls");tuichu(head);break;
}
}
return(head);
}
int twodate(int a1,int b1,int c1,int a2,int b2,int c2)
{ if((a1>a2)||
((a1==a2)&&(b1>b2))||
((a1==a2)&&(b1==b2)&&(c1>c2)))
return 1;
else if(a1==a2&&b1==b2&&c1==c2) return 0;
else return 2;
}
int checkdate(int a,int b,int c)
{ int date[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(a >= 0 && a <=3000)
{
if(b > 0 && b < 13)
{
if( ((a % 4 == 0 && a % 100 != 0)||(a % 400 == 0)) && (c == 29) ) return 1;
if( c > 0 && c <= date[b-1]) return 1;
}
}
printf("\n\t\t\t\t输入日期错误!\n\t\t\t\t请重新输入!");
return 0;
}
void write(struct zhuce *head)
{ struct zhuce *p1;
struct caiwu *p2;
FILE*fp;
sort(head);
p1=head;
fp=fopen("zhuce.txt","w");
while(p1!=NULL)
{ fwrite(p1,LEN,1,fp);
p2=p1->head2;
while(p2!=NULL)
{ fwrite(p2,LEN2,1,fp);
p2=p2->next2;}
p1=p1->next;
}
printf("\n\t\t╭☆╮╭★╮╭☆╮╭★╮╭☆╮╭★╮");
printf("\n\t\t║数║║据║║保║║存║║成║║功║");
printf("\n\t\t╰★╯╰☆╯╰★╯╰☆╯╰★╯╰☆╯");
fclose(fp);
Sleep(1000);
}
struct zhuce *del1(struct zhuce*head)
{
struct zhuce *p1, *p2;
struct caiwu *p3;
char a[10]={'\0'},ch;
int m=0,p=1;
printf("\n\t\t\t╭☆╮╭★╮╭☆╮╭★╮");
printf("\n\t\t\t║用║║户║║删║║除║");
printf("\n\t\t\t╰★╯╰☆╯╰★╯╰☆╯");
if(head==NULL) {printf("\t\t链表为空");Sleep(1000);return(head);}
p1=head;
printf("\n\t\t请输入要删除的用户名:");
scanf("%s",&a);
fflush(stdin);
while(p1!=NULL)
{if((strcmp(a,p1->name))==0) {m=1;break;}
p2=p1;p1=p1->next;}
if(m==0)
{ printf("\n\t\t该用户名还没注册");return(head);}
p3=p1->head2;
while(p3!=NULL)
{ printf("\n序号:%d",p3->num);
printf("\t收入:%.2f",p3->in);
printf("\t支出:%.2f",p3->out);
printf("\t日期:%d-%d-%d\n",p3->nian,p3->yue,p3->ri);
p3=p3->next2;
}
printf("\n\t\t是否真的要删除该用户?");
printf("\n\t\t是请按1,否请按其他键");
fflush(stdin);
scanf("%c",&ch);
fflush(stdin);
if(ch=='1')
{if(p1==head) head=p1->next;
else p2->next=p1->next;
p1=head;
while(p1!=NULL)
{p1->num=p;p++;
p1=p1->next;}
printf("\n\t\t删除成功");
Sleep(1000);
}
else printf("\n\t\t您已取消删除该用户");
return(head);
}
struct zhuce *del2(struct zhuce*head)
{
struct zhuce *p1, *p2;
struct caiwu *p3, *p4;
char a[10]={'\0'},ch;
int m=0,k=0,p=1;
printf("\n\t\t╭☆╮╭★╮╭☆╮╭★╮╭☆╮╭★╮");
printf("\n\t\t║财║║
务║║信║║息║║删║║除║");
printf("\n\t\t╰★╯╰☆╯╰★╯╰☆╯╰★╯╰☆╯");
if(head==NULL) {printf("\t\t链表为空");return(head);}
p1=head;
printf("\n\t\t请输入要删除信息的用户名:");
scanf("%s",&a);
fflush(stdin);
while(p1!=NULL)
{if((strcmp(a,p1->name))==0) {m=1;break;}
p1=p1->next;}
if(m==0)
{ printf("\n\t\t该用户名还没注册");Sleep(1000);return(head);}
p3=p1->head2;
printf("\n\t\t以下为%s的财务信息",p1->name);
while(p3!=NULL)
{ printf("\n序号:%d",p3->num);
printf("\t收入:%.2f",p3->in);
printf("\t支出:%.2f",p3->out);
printf("\t日期:%d-%d-%d\n",p3->nian,p3->yue,p3->ri);
p3=p3->next2;
}
m=0;
printf("\n\t\t请输入需要删除的信息的序号:");
scanf("%d",&k);fflush(stdin);
p3=p1->head2;
m=0;
while(p3!=NULL)
{ if(k==p3->num) {m=1;break;}
p4=p3;p3=p3->next2;}
if(m==0) {printf("\n\t\t无该序号的财务信息,系统自动返回");Sleep(1000);return(head);}
printf("\n\t\t是否真的要删除该财务信息?");
printf("\n\t\t是请按1,否请按其他键");
fflush(stdin);
scanf("%c",&ch);
fflush(stdin);
if(ch=='1')
{if(p3==p1->head2) p1->head2=p1->head2->next2;
else p4->next2=p3->next2;
printf("\n\t\t删除成功");
Sleep(1000);
p3=p1->head2;
while(p3!=NULL)
{p3->num=p;p++;
p3=p3->next2;}
}
else {printf("\n\t\t您已取消删除该用户信息");Sleep(1000);}
return(head);
}
struct zhuce *insert1(struct zhuce *head,struct zhuce *p1)
{struct zhuce *p0,*p,*p2;
p=head;
p0=p1;
if(head==NULL)
{head=p0;p0->next=NULL;}
else
{while((p0->num>p->num)&&(p->next!=NULL))
{ p2=p;
p=p->next;}
if(p0->num<=p->num)
{ if(head==p) head=p0;
else p2->next=p0;
p0->next=p;
}
else
{p->next=p0;p0->next=NULL;}
}
return(head);
}
struct caiwu *insert2(struct caiwu *head,struct caiwu *p1)
{struct caiwu *p0,*p,*p2;
p=head;
p0=p1;
if(head==NULL)
{head=p0;p0->next2=NULL;}
else
{while(twodate(p->nian,p->yue,p->ri,p0->nian,p0->yue,p0->ri)==1&&(p->next2!=NULL))
{ p2=p;
p=p->next2;}
if(twodate(p->nian,p->yue,p->ri,p0->nian,p0->yue,p0->ri)!=1)
{ if(head==p) head=p0;
else p2->next2=p0;
p0->next2=p;
}
else
{p->next2=p0;p0->next2=NULL;}
}
return(head);
}
void print1(struct zhuce *head)
{ struct zhuce *p1;
struct caiwu *p3;
char a[10]={'\0'},ch='\0';
int m=0;
p1=head;
printf("\n\t\t╭☆╮╭★╮╭☆╮╭★╮╭☆╮╭★╮");
printf("\n\t\t║个║║人║║财║║务║║查║║询║");
printf("\n\t\t╰★╯╰☆╯╰★╯╰☆╯╰★╯╰☆╯");
printf("\n\t\t请输入要查询财务信息的用户名:");
scanf("%s",&a);
fflush(stdin);
while(p1!=NULL)
{if(strcmp(a,p1->name)==0) break;
p1=p1->next;}
if(p1==NULL) {printf("该用户名还没注册");Sleep(
1000);system("cls");return;}
p3=p1->head2;
printf("\n\t\t以下为%s的财务信息",p1->name);
while(p3!=NULL)
{
printf("\n 序号:%d",p3->num);
printf("\t收入:%.2f",p3->in);
printf("\t支出:%.2f",p3->out);
printf("\t日期:%d-%d-%d\n",p3->nian,p3->yue,p3->ri);
p3=p3->next2;
}
printf("\n\t\t按任意键返回");
ch=getch();fflush(stdin);
return;
}
void print2(struct zhuce *head)
{ struct zhuce *p1;
struct caiwu *p3;
char ch='\0';
head=sort(head);
printf("\n\t\t╭☆╮╭★╮╭☆╮╭★╮╭☆╮╭★╮");
printf("\n\t\t║家║║庭║║财║║务║║列║║表║");
printf("\n\t\t╰★╯╰☆╯╰★╯╰☆╯╰★╯╰☆╯");
p1=head;
while(p1!=NULL)
{printf("\n 姓名:%s\t",p1->name);
if(p1->sf=='1') printf("身份:家长\t");
if(p1->sf=='2') printf("身份:其他成员\t");
printf("家庭成员编号:%d\n",p1->num);
p3=p1->head2;
printf("\n\t\t以下为%s的财务信息",p1->name);
while(p3!=NULL)
{ printf("\n 序号:%d",p3->num);
printf("\t收入:%.2f",p3->in);
printf("\t支出:%.2f",p3->out);
printf("\t日期:%d-%d-%d\n",p3->nian,p3->yue,p3->ri);
p3=p3->next2;
}
p1=p1->next;
}
printf("\n\t\t按任意键返回");
ch=getch();fflush(stdin);
return;
}
void print3(struct zhuce *p)
{ struct caiwu*p3;
char ch='\0';
printf("\n\t\t以下为%s的财务信息",p->name);
p3=p->head2;
while(p3!=NULL)
{ printf("\n序号:%d",p3->num);
printf("\t收入:%.2f",p3->in);
printf("\t支出:%.2f",p3->out);
printf("\t日期:%d-%d-%d\n",p3->nian,p3->yue,p3->ri);
p3=p3->next2;
}
printf("\n\t\t按任意键返回");
ch=getch();fflush(stdin);
return;
}
void zhaohui(struct zhuce*head)
{ struct zhuce *p1;
char a[10]={'\0'},b[10]={'\0'},ch='\0';
int m=0,k=2;
p1=head;
printf("\n\t\t\t╭☆╮╭★╮╭☆╮╭★╮");
printf("\n\t\t\t║找║║回║║密║║码║");
printf("\n\t\t\t╰★╯╰☆╯╰★╯╰☆╯");
printf("\n\t\t请输入需要找回密码的用户名:");
scanf("%s",&a);
fflush(stdin);
while(p1!=NULL)
{ if(strcmp(p1->name,a)==0) {m=1;break;}
p1=p1->next;
}
if(m==0) {printf("\n\t\t该用户名还没注册");Sleep(500);return;}
printf("\n\t\t密码找回问题:%s",p1->wenti);
printf("\n\t\t请输入答案:");
scanf("%s",&b);
fflush(stdin);
if(strcmp(b,p1->daan)!=0)
while(k!=0)
{printf("\t\t输入有误,请重新输入(还有%d次机会)\n",k);
printf("\t\t请再次输入答案:");
scanf("%s",&b);fflush(stdin);
if(strcmp(p1->daan,b)==0) break;
k--;fflush(stdin);
}
if(k==0) {printf("\n\t\t输入次数过多,系统自动退出\n");Sleep(1000);exit(0);}
if(k!=0) {printf("\t\t密码为%s",p1->mima);
printf("\n\t\t按任意键返回");ch=getch();}
return;
}
void tuichu(struct zhuche*head)
{ struct zhuce *p1
;
struct caiwu *p2;
FILE*fp;
sort(head);
p1=head;
fp=fopen("zhuce.txt","w");
while(p1!=NULL)
{ fwrite(p1,LEN,1,fp);
p2=p1->head2;
while(p2!=NULL)
{ fwrite(p2,LEN2,1,fp);
p2=p2->next2;}
p1=p1->next;
}
fclose(fp);
system("cls");
printf("\n\t\t诺亚并不是已经在下大雨的时候,才开始建造方舟的。 \n");
printf("\n\t\t ——巴菲特 ");
printf("\n\t\t╭╮☆╭╧╮╭╧╮╭╧╮╭╧╮╭╧╮╭╧╮╭╧╮╭╮☆ ");
printf("\n\t\t╰幸╮║感║║谢║║使║║用║║本║║系║║统║╰快╮ ");
printf("\n\t\t☆╰福╘∞╛╘∞╛╘∞╛╘∞╛╘∞╛╘∞╛╘∞╛☆╰乐 \n");
exit(0);
}
struct zhuce*yonghu(struct zhuce*head)
{ struct zhuce*p1;
struct caiwu*p2;
char a[10]={'\0'},ch='\0',ck='\0';
int m=0,j=0,k=0,l=0,n=2;
while(ck!='4')
{sort(head);
p1=head;
system("cls");
printf("\n\t\t\t╭☆╮╭★╮╭☆╮╭★╮╭☆╮╭★╮");
printf("\n\t\t\t║用║║户║║信║║息║║管║║理║");
printf("\n\t\t\t╰★╯╰☆╯╰★╯╰☆╯╰★╯╰☆╯");
printf("\n\t\t请输入要修改信息的用户名");
printf("\n\t\t1.注册用户");
printf("\n\t\t2.删除用户");
printf("\n\t\t3.修改用户名");
printf("\n\t\t4.返回主页");
printf("\n\t\t请输入指令数");
scanf("%c",&ck);
while(ck>'4'||ck<'1')
{printf("\n\t\t输入错误,请重新输入"); scanf("%c",&ck);fflush(stdin);}
switch(ck)
{
case '1':system("cls");head=creat(head);break;
case '2':system("cls");head=del1(head);break;
case '3':system("cls");head=xiugai3(head);break;
case '4':system("cls");return(head);break;
}
}
}
struct zhuce *cai(struct zhuce*head)
{ struct zhuce *p1;
struct caiwu *p2;
char a[10]={'\0'},ch='\0',ck='\0';
int m=0,j=0,k=0,l=0,n=2;
while(ck!='4')
{sort(head);
p1=head;
system("cls");
printf("\n\t\t\t╭☆╮╭★╮╭☆╮╭★╮╭☆╮╭★╮");
printf("\n\t\t\t║财║║务║║信║║息║║管║║理║");
printf("\n\t\t\t╰★╯╰☆╯╰★╯╰☆╯╰★╯╰☆╯");
printf("\n\t\t1.输入财务信息");
printf("\n\t\t2.删除个人财务信息");
printf("\n\t\t3.修改财务信息");
printf("\n\t\t4.返回主页");
printf("\n\t\t请输入指令数");
scanf("%c",&ck);
while(ck>'4'||ck<'1')
{printf("\n\t\t输入错误,请重新输入"); scanf("%c",&ck);fflush(stdin);}
switch(ck)
{
case '1':system("cls");shuru(head);break;
case '2':system("cls");head=del2(head);break;
case '3':system("cls");n=xiugai2(p1);break;
case '4':system("cls");return(head);break;
}
if(n==1) printf("\n\t\t修改成功");
}
}
int xiugai2(struct zhuce*head)
{ struct zhuce*p1;
struct caiwu*p2;
char a[10]={'\0'},ch='\0',ck='\0';
int m=0,j=0,k=0,l=0,n=2;
printf("\n\t\t请输入要修改信息的用户名");
scanf("%s",&a);fflush(stdin);
p1=head;
while(p1!=NULL)
{ if(strcmp(a,p1->name)==0) {m=1;break;}
p1=p1->next;
}
if(m==0) {printf("\n\t\t该用户名还没注册");Sleep(1000);return 0;}
n=0;
p2=p1->head2;
printf("\n\t\t以下为%s的财务信息",p1->name);
while(p2!=NULL)
{ printf("\n序号:%d",p2->num);
printf("\t收入:%.2f",p2->in);
printf("\t支出:%.2f",p2->out);
printf("\t日期:%d-%d-%d\n",p2->nian,p2->yue,p2->ri);
p2=p2->next2;
}
printf("\n\t\t请输入需要修改的信息的序号:");
scanf("%d",&k);fflush(stdin);
p2=p1->head2;
m=0;
while(p2!=NULL)
{ if(k==p2->num) {m=1;break;}
p2=p2->next2;}
if(m==0) {printf("\n\t\t无该序号的财务信息,系统自动返回");Sleep(1000);system("cls");return 0;}
printf("\n\t\t1.修改收入");
printf("\n\t\t2.修改支出");
printf("\n\t\t请输入指令数:");
scanf("%c",&ck);fflush(stdin);
n=0;
while(ck>'2'||ck<'1')
{printf("\n\t\t输入错误,请重新输入"); scanf("%c",&ck);fflush(stdin);}
switch(ck)
{case '1':system("cls");n=gaishou(p2);break;
case '2':system("cls");n=gaichu(p2);break;
}
system("cls");
return 1;
}
struct zhuce*xiugai3(struct zhuce*head)
{ struct zhuce*p1;
int n=2,m=0;
char ck='\0',a[10]={'\0'};
printf("\n\t\t请输入要修改信息的用户名");
scanf("%s",&a);fflush(stdin);
while(p1!=NULL)
{ if(strcmp(a,p1->name)==0) {m=1;break;}
p1=p1->next;
}
if(m==0) {printf("\n\t\t该用户名还没注册");Sleep(1000);return(head);}
printf("\n\t\t1.修改用户名");
printf("\n\t\t2.修改家庭身份");
printf("\n\t\t3.修改密码");
printf("\n\t\t请输入指令数");
scanf("%c",&ck);
while(ck>'3'||ck<'1')
{printf("\n\t\t输入错误,请重新输入"); scanf("%c",&ck);fflush(stdin);}
switch(ck)
{case '1':system("cls");n=gaiming(p1);break;
case '2':system("cls");n=gaishen(p1);break;
case '3':system("cls");n=gaimi(p1);break;
}
if(n==1) printf("\n\t\t修改成功!");
Sleep(1000);
system("cls");
return(head);
}
int gaiming(struct zhuce*p1)
{ char a[10]={'\0'},b[10]={"\0"},ch='\0';
int i=0,j=0,k=2;
printf("\t\t请输入密码:");
i=0;j=0;
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{b[i]=ch;printf("*");i++;j++;}
else if(j>0){b[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
fflush(stdin);
if(strcmp(p1->mima,b)!=0)
while(k!=0) {printf("\n\t\t输入有误,请重新输入(还有%d次机会)\n",k);
i=0;j=0;fflush(stdin);
printf("\t\t请再次输入密码:");
i=0;j=0;
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{b[i]=ch;printf("*");i++;j++;}
else if(j>0){b[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
if(strcmp(p1->mima,b)==0) break;
k--;
}
if(k==0) {printf("\n\t\t你密码输入次数太多,系统自动返回");Sleep(1000);system("cls");return 0;}
printf("\n\t\t请输入修改后的用户名:");
scanf("%s",&p1->name);fflush(stdin);
return 1;
}
int gaishen(struct zhuce*p1)
{ char a[10]={'\0'},b[10]={"\0"},ch='\0';
int i=0,j=0,k=2;
printf("\t\t请输入密码:");
i=0;j=0;
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{b[i]=ch;printf("*");i++;j++;}
else if(j>0){b[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
fflush(stdin);
if(strcmp(p1->mima,b)!=0)
while(k!=0) {printf("\t\t输入有误,请重新输入(还有%d次机会)\n",k);
i=0;j=0;
printf("\t\t请再次输入密码:");
i=0;j=0;fflush(stdin);
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{b[i]=ch;printf("*");i++;j++;}
else if(j>0){b[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
if(strcmp(p1->mima,b)==0) break;
k--;
}
if(k==0) {printf("\t\t你密码输入次数太多,系统自动返回");Sleep(1000);system("cls");return 0;}
printf("\n\t\t请输入修改后的身份(家长为1,其他成员为2):");
scanf("%c",&p1->sf);fflush(stdin);
while(p1->sf!='1'&&p1->sf!='2')
{ printf("\n\t\t输入有误,请按提示输入");
scanf("%c",&p1->sf);fflush(stdin);
}
return 1;
}
int gaimi(struct zhuce*p1)
{ char a[10]={'\0'},b[10]={'\0'},c[10]={'\0'},ch='\0';
int i=0,j=0,k=2;
printf("\t\t\t╭☆╮╭★╮╭☆╮╭★╮\n");
printf("\t\t\t║修║║改║║密║║码║\n");
printf("\t\t\t╰★╯╰☆╯╰★╯╰☆╯\n");
printf("\t\t请输入密码:");
i=0;j=0;fflush(stdin);
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{b[i]=ch;printf("*");i++;j++;}
else if(j>0){b[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
fflush(stdin);
if(strcmp(p1->mima,b)!=0)
while(k!=0) {printf("\n\t\t输入有误,请重新输入(还有%d次机会)\n",k);
i=0;j=0;
printf("\t\t请再次输入密码:");
i=0;j=0;fflush(stdin);
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{b[i]=ch;printf("*");i++;j++;}
else if(j>0){b[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
if(strcmp(p1->mima,b)==0) break;
k--;
}
if(k==0) {printf("\t\t你密码输入次数太多,系统自动返回");Sleep(1000);system("cls");return 0;}
printf("\n\t\t请输入修改后的密码:");
i=0;j=0;fflush(stdin);
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{
b[i]=ch;printf("*");i++;j++;}
else if(j>0){b[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
fflush(stdin);
printf("\n\t\t请再次输入密码确认:");
i=0;j=0;fflush(stdin);
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{c[i]=ch;printf("*");i++;j++;}
else if(j>0){c[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
fflush(stdin);
if(strcmp(c,b)!=0)
while(k!=0) {printf("\n\t\t输入有误,请重新输入(还有%d次机会)\n",k);
printf("\t\t请再次输入密码:");
i=0;j=0;fflush(stdin);
while((ch=getch())!='\r'||j==0)
{if(ch!='\b')
{c[i]=ch;printf("*");i++;j++;}
else if(j>0){c[i]='\0';i--;j--;putchar('\b');putchar(' ');putchar('\b');}
}
if(strcmp(c,b)==0) break;
k--;
}
if(k==0) {printf("\t\t你密码输入次数太多,系统自动返回");Sleep(1000);system("cls");return 0;}
strcpy(p1->mima,b);
return 1;
}
struct zhuce*sort(struct zhuce*head)
{ struct caiwu*p1,*p2,*head3;
head3=head->head2;
p1=p2=head->head2->next2;
head3->next2=NULL;
while(p1!=NULL)
{ p2=p1;
p1=p1->next2;
head3=insert2(head3,p2);
}
return(head);
}
struct zhuce*sort2(struct zhuce*head)
{ struct zhuce*p1,*p2;
p2=p1=head->next;
head->next=NULL;
while(p1!=NULL)
{ p2=p1;
p1=p1->next;
head=insert1(head,p2);
}
return(head);
}
int gaishou(struct caiwu*p1)
{ struct caiwu*p;
printf("\t\t\t╭☆╮╭★╮╭☆╮╭★╮\n");
printf("\t\t\t║修║║改║║收║║入║\n");
printf("\t\t\t╰★╯╰☆╯╰★╯╰☆╯\n");
printf("\n\t\t请输入修改后的收入金额:");
scanf("%f",&p1->in);
while(p1->in<0)
{ printf("\n\t\t输入有误请重新输入:");
scanf("%f",&p1->in);fflush(stdin);
}
return 1;
}
int gaichu(struct caiwu*p1)
{ struct caiwu*p;
printf("\t\t\t╭☆╮╭★╮╭☆╮╭★╮\n");
printf("\t\t\t║修║║改║║支║║出║\n");
printf("\t\t\t╰★╯╰☆╯╰★╯╰☆╯\n");
printf("\n\t\t请输入修改后的支出金额:");
scanf("%f",&p1->out);fflush(stdin);
while(p1->out<0)
{ printf("\n\t\t输入有误请重新输入:");
scanf("%f",&p1->out);fflush(stdin);
}
return 1;
}
void shouzhip(struct zhuce*head)
{ struct zhuce*p1,*p2;
struct caiwu*p3,*p4;
int h=0,f=0,i=0,m=0;
float a[13]={0},b[13]={0},c[13]={0},j=0,k=0,l=0;
char ch='\0';
printf("\n\t\t╭☆╮╭★╮╭☆╮╭★╮╭☆╮╭★╮╭★╮");
printf("\n\t\t║收║║支║║年║║度║║统║║计║║表║");
printf("\n\t\t╰★╯╰☆╯╰★╯╰☆╯╰★╯╰☆╯╰☆╯");
printf("\n\t\t请输入统计的年份:");
scanf("%d",&h);
p1=head;
while(p1!=NULL)
{ p3=p1->head2;
while(p3!=NULL)
{if(p3-
>nian==h) {m=1;break;}
p3=p3->next2;
}
if(m==1) break;
p1=p1->next;
}
if(m==0) {printf("\n\t\t无该年信息,系统自动返回");Sleep(1000);return;}
p1=head;
while(i<14) {a[i]=0;b[i]=0;c[i]=0;i++;}
while(p1!=NULL)
{ p3=p1->head2;
while(p3!=NULL)
{if(p3->nian==h)
{a[p3->yue]=a[p3->yue]+p3->in-p3->out;
b[p3->yue]=b[p3->yue]+p3->in;
c[p3->yue]=c[p3->yue]+p3->out;}
p3=p3->next2;
}
p1=p1->next;
}
for(i=1;i<=12;i++)
if(a[i]!=0||b[i]!=0)
{printf("\n\t\t以下为%d月的收支情况",i);
printf("\n\t 总收入:%.2f",b[i]);
printf("\t总支出:%.2f",c[i]);
printf("\t余额:%.2f",a[i]);
}
for(i=1;i<=12;i++)
{ j=j+b[i];k=k+c[i];l=l+a[i];}
printf("\n\t\t以下为%d年收支总情况:",h);
printf("\n\t 总收入:%.2f",j);
printf("\t总支出:%.2f",k);
printf("\t余额:%.2f",l);
printf("\n\n\t\t按任意键返回");
ch=getch();fflush(stdin);
return;
}
void shourup(struct zhuce*head)
{ struct zhuce*p1,*p2,*head2;
struct caiwu*p3,*p4;
int h=0,i=1,j=0,m=0;
char ch='\0';
printf("\n\t\t╭☆╮╭★╮╭☆╮╭★╮╭☆╮╭★╮╭★╮");
printf("\n\t\t║收║║入║║年║║度║║排║║行║║榜║");
printf("\n\t\t╰★╯╰☆╯╰★╯╰☆╯╰★╯╰☆╯╰☆╯");
printf("\n\t\t请输入要排行的年份:");
scanf("%d",&h);
p1=head;
while(p1!=NULL)
{ p3=p1->head2;
while(p3!=NULL)
{if(p3->nian==h) {m=1;break;}
p3=p3->next2;
}
if(m==1) break;
p1=p1->next;
}
if(m==0) {printf("\n\t\t无该年信息,系统自动返回");Sleep(1000);return;}
p1=head;
while(p1!=NULL)
{ p1->tong=0;p1=p1->next;}
p1=head;
while(p1!=NULL)
{ p3=p1->head2;
while(p3!=NULL)
{ if(p3->nian==h)
p1->tong=p1->tong+p3->in;
p3=p3->next2;
}
p1=p1->next;
}
head2=paixu(head);
p1=head2;
while(p1!=NULL)
{ printf("\n\t 名次:%d",i);
i++;
printf("\t姓名%s",p1->name);
printf("\t年收入:%.2f",p1->tong);
p1=p1->next;
}
printf("\n\n\t\t按任意键返回");
ch=getch();fflush(stdin);
return;
}
void zhichup(struct zhuce*head)
{ struct zhuce*p1,*p2,*head2;
struct caiwu*p3,*p4;
int h=0,i=1,j=0,m=0;
char ch='\0';
printf("\n\t\t╭☆╮╭★╮╭☆╮╭★╮╭☆╮╭★╮╭★╮");
printf("\n\t\t║支║║出║║年║║度║║排║║行║║榜║");
printf("\n\t\t╰★╯╰☆╯╰★╯╰☆╯╰★╯╰☆╯╰☆╯");
printf("\n\t\t请输入要排行的年份:");
scanf("%d",&h);
p1=head;
while(p1!=NULL)
{ p3=p1->head2;
while(p3!=NULL)
{if(p3->nian==h) {m=1;break;}
p3=p3->next2;
}
if(m==1) break;
p1=p1->next;
}
if(m==0) {printf("\n\t\t无该年信息,系统自动返回");Sleep(1000);return;}
p1=head;
while(p1!=NULL)
{ p1->tong=0;p1=p1->next;}
p1=head;
w
hile(p1!=NULL)
{ p3=p1->head2;
while(p3!=NULL)
{ if(p3->nian==h)
p1->tong=p1->tong+p3->out;
p3=p3->next2;
}
p1=p1->next;
}
head2=paixu(head);
p1=head2;
while(p1!=NULL)
{ printf("\n\t 名次:%d",i);
i++;
printf("\t姓名%s",p1->name);
printf("\t年支出:%.2f",p1->tong);
p1=p1->next;
}
printf("\n\n\t\t按任意键返回");
ch=getch();fflush(stdin);
return;
}
struct zhuce*paixu(struct zhuce*head)
{ struct zhuce*p0,*p1,*p2,*p3,*head2;
p0=p1=head2=head;
p0=p0->next;
p1->next=NULL;
while(p0!=NULL)
{ p1=p0;
p0=p0->next;
p1->next=NULL;
p2=head2;
while((p1->tong
{ p3=p2;p2=p2->next;}
if(p1->tong>=p2->tong)
{ if(head2==p2)
head2=p1;
else p3->next=p1;
p1->next=p2;
}
else p2->next=p1;
}
return(head2);
}
void shuoming(void)
{ char ch='\0';
printf("\n\t\t ._________________.");
printf("\n\t\t | _______________ |");
printf("\n\t\t | I I |");
printf("\n\t\t | I 使 用 I |");
printf("\n\t\t | I I |");
printf("\n\t\t | I 说 明 I |");
printf("\n\t\t | I_____________I |");
printf("\n\t\t !_________________!");
printf("\n\t\t ._[_______]_. ");
printf("\n\t\t.___|___________|___.");
printf("\n\t\t|::: ____ |");
printf("\n\t\t| ~~~~ [CD-ROM] | ");
printf("\n\t\t!___________________! ");
printf("\n\t\t5.系统中的所有操作请按提示进行。");
printf("\n\t\t1.本系统用户有家长与其他成员两种身份。");
printf("\n\t\t2.第一位注册用户必须为家长。");
printf("\n\t\t3.只有家长才能注册新用户、财务信息的输入与信息修改。");
printf("\n\t\t4.使用本系统前必须在程序旁先建一个zhuce.txt。");
printf("\n\t\t6.财务信息的输入、修改与删除功能在财务信息管理项中。");
printf("\n\t\t7.注册新用户、修改用户信息与删除用户功能在用户信息管理项中。");
printf("\n\n\n\t\t系统制作人:池国森");
printf("\n\t\t所属单位:09计算机科学与技术2班");
printf("\n\n\n\t\t按任意键返回");
scanf("%c",&ch);
return;
}