您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言网吧计费系统(小项目)
系统是基于c语言写的小程序,以应付毕业项目或期末考试用。由于用到fopen读写文件操作,编译前必须在当前文件下建立用户信息.txt和充值卡.txt两个文件,否则会报错。效果图#includestdio.h#includewindows.h#includestring.h#includestdlib.h#includetime.h//定义链表typedefstruct{charname[20];charmima[20];intstate;intjine;}user;typedefstructlnod{userdata;structlnod*next;}lnod,*linklist;//充值卡定义链表typedefstruct{charname[30];intjine;}kami;typedefstructkk{kamidata;structkk*next;}kk,*kamil;//创建链表voidcreatelist_l(linklist*l){*l=(linklist)malloc(sizeof(lnod));(*l)-next=NULL;}//插入用户信息(尾插法)intlistinset_l(linklist*l,userdata){linklistp=*l,q;if(NULL==p)return-1;while(NULL!=p){q=p;p=p-next;}p=(linklist)malloc(sizeof(lnod));p-data=data;p-next=q-next;q-next=p;return0;}//载入文件到链表voidfilelist_l(linklist*l){inti;FILE*fp1;useruser0;fp1=fopen(用户信息.txt,rb);for(i=0;i50;i++){if(1!=fread(&user0,sizeof(user),1,fp1)){break;}listinset_l(l,user0);}fclose(fp1);}//查找制定用户是否存在intlocateelem_l(linklistl,charname[]){linklistp;p=l-next;while(p!=NULL){if(!(strcmp(p-data.name,name))){break;}p=p-next;}if(p==NULL){return-1;}elsereturn0;}//查找指定用户和密码intlocateelem_l2(linklistl,charname[],charmm[]){linklistp;inta,b;p=l-next;while(p!=NULL){a=strcmp(p-data.name,name);b=strcmp(p-data.mima,mm);if(a==0&&b==0){//p-data.state=1;break;}p=p-next;}if(p==NULL){return-1;}elsereturn0;}//登陆后state=1;voidgaistate_l(linklist*l,charname[]){linklistp;intb;p=(*l)-next;while(p!=NULL){b=strcmp(p-data.name,name);if(b==0){p-data.state=1;break;}else{p=p-next;}}}//下线state=0voidxiaxian_l(linklist*l,charname[]){linklistp;intb;p=(*l)-next;while(p!=NULL){b=strcmp(p-data.name,name);if(b==0){p-data.state=0;break;}else{p=p-next;}}}//修改金额voidgaijine_l(linklist*l,charname[],intj){linklistp;intb;p=(*l)-next;while(p!=NULL){b=strcmp(p-data.name,name);if(b==0){p-data.jine=p-data.jine+j;printf(您当前余额为%d元,p-data.jine);break;}else{p=p-next;}}}//修改密码voidgaimm_l(linklist*l,charname[],chargmm[]){linklistp;intb;p=(*l)-next;while(p!=NULL){b=strcmp(p-data.name,name);if(b==0){strcpy(p-data.mima,gmm);break;}else{p=p-next;}}}//下线扣费voidkoufei_l(linklist*l,charname[],intj){linklistp;intb;p=(*l)-next;while(p!=NULL){b=strcmp(p-data.name,name);if(b==0){p-data.jine=p-data.jine-j;break;}else{p=p-next;}}}//写文件voiduserfile(useruser0){FILE*fp0;if((fp0=fopen(用户信息.txt,ab))==NULL){printf(cannotopenfile\n);return;}if(fwrite(&user0,sizeof(user),1,fp0)!=1)printf(filewriteerror\n);fclose(fp0);}//更新文件voidupdate_file(linklistl){FILE*fp;linklistp;p=l-next;if((fp=fopen(用户信息.txt,wb))==NULL){printf(无法打开文件\n);return;}while(p!=NULL){if(p-data.state==1){p-data.state=0;userfile(p-data);p-data.state=1;}else{userfile(p-data);}p=p-next;}}//查询所有用户voidchaxun_l(linklistl){linklistp;p=l-next;while(p!=NULL){printf(用户名:%-10s密码:%-10s余额%-10d是否在线(1/0):%d\n,p-data.name,p-data.mima,p-data.jine,p-data.state);p=p-next;}}//充值卡创建链表voidcreatelist_k(kamil*l){*l=(kamil)malloc(sizeof(kk));(*l)-next=NULL;}//充值卡查找制定用户是否存在intlocateelem_k(kamilkl,charname[]){kamilp;p=kl-next;while(p!=NULL){if(!(strcmp(p-data.name,name))){break;}p=p-next;}if(p==NULL){return-1;}elsereturn0;}//充值卡插入用户信息(尾插法)intlistinset_k(kamil*l,kamidata){kamilp=*l,q;if(NULL==p)return-1;while(NULL!=p){q=p;p=p-next;}p=(kamil)malloc(sizeof(kk));p-data=data;p-next=q-next;q-next=p;return0;}//充值卡载入文件到链表voidfilelist_k(kamil*l){inti;FILE*fp1;kamikami0;fp1=fopen(充值卡.txt,rb);for(i=0;i50;i++){if(1!=fread(&kami0,sizeof(kami),1,fp1)){break;}listinset_k(l,kami0);}fclose(fp1);}//充值卡修改金额voidgaijine_k(kamil*l,charname[],intj){kamilp;intb;p=(*l)-next;while(p!=NULL){b=strcmp(p-data.name,name);if(b==0){p-data.jine=p-data.jine+j;printf(您当前余额为%d元,p-data.jine);break;}else{p=p-next;}}}//充值卡写文件voidkamifile(kamikami0){FILE*fp0;if((fp0=fopen(充值卡.txt,ab))==NULL){printf(cannotopenfile\n);return;}if(fwrite(&kami0,sizeof(kami),1,fp0)!=1)printf(filewriteerror\n);fclose(fp0);}//充值卡更新文件voidupdate_file_k(kamill){FILE*fp;kamilp;p=l-next;if((fp=fopen(充值卡.txt,wb))==NULL){printf(无法打开文件\n);return;}while(p!=NULL){kamifile(p-data);p=p-next;}}//删除充值卡voiddelete_k(kamil*L,charname[]){kamilp,q;inti;p=(*L)-next;q=*L;while(p!=NULL){i=strcmp(p-data.name,name);if(i==0){q-next=p-next;free(p);break;}else{q=p;p=p-next;}}}//主函数voidmain(){linklistl;intb;//选择点intz;//判断z是否等于0intj;//金额charyhm[20];charmm[20],mm1[20];chargmm[20],gmm1[20];//改密码usern;clock_tstart,finish;floatjf;charnk[15],nk0[15];//之下是卡密inti;//intkjine;kamilsk;kamilkl;intiy=10,jy=0,ky;//小游戏intay,by,zhi;chargly[20]=admin;//管理员密码srand((unsigned)time(NULL));createlist_l(&l);filelist_l(&l);createlist_k(&kl);filelist_k(&kl);while(1){system(colorf9);system(cls);printf(╭═══════欢═迎═光═临══════╮\n);printf(╰╮╭----------------╮╭╯\n);printf(▲╯║~~1、注册~~║╰▲\n);printf(◇★║~~2、用户登陆~~║★◇\n);printf(◇★║~~3、管理员登陆~~║★◇\n);printf(★◇║~~4、退出~~║◇★\n);printf(▼╮║~~本网吧壕专享一秒钟一元~~║╭▼\n);printf(╭╯╰----------------╯╰╮\n);printf(╰═══════祝═你═快═乐══════╯\n);scanf(%d,&b);switch(b){case1:{while(1)//注册界面{system(cls);printf(请输入账号:\n);scanf(%s,yhm);z=locateelem_l(l,yhm);if(z==0){printf(该用户名已存在,任意键返回);fflush(stdin);getchar();break;}else{
本文标题:C语言网吧计费系统(小项目)
链接地址:https://www.777doc.com/doc-2909155 .html