c语言--电话本.doc_第1页
c语言--电话本.doc_第2页
c语言--电话本.doc_第3页
c语言--电话本.doc_第4页
c语言--电话本.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言电话本代码部分/*-宏定义-*/#include#include#include#include/*-函数声明-*/void print(int);/*显示信息个数和页数*/void SHOW(int,int );/*显示记录*/void Init();/*初始化图形模式*/void Drawwin(int,int,int,int,int);/*画图*/void Load();/*初始化数据*/void Pwd();/*输入登陆密码*/void Key();/*关键算法*/void Draw();/*画图*/void Win(int x,int y,int l,int w);/*画3D*/void HELP();/*帮助函数*/void EDIT();/*编辑函数*/void DELETE();/*删除函数*/int ADD();/*添加函数*/void SORT();/*排序函数*/void SEARCH();/*检索函数*/void Loadfile();/*初始化文件*/void Savesm() ;/*记录总数*/void Quick( );/*冒泡排序*/int PAGEUP(int page,int);/*上翻页函数*/int PAGEDw(int page,int );/*下翻页函数*/#define Move printf(nnnnnnnnn) /*换行*/#define ON 1 /*定义开关*/#define OFF 0/*-定义热键-*/#define ESC 27#define F2 60#define A 97#define S 115#define O 111#define H 104#define E 101#define D 100#define Pageup 73#define Pagedw 81#define ALL 100 /*文件个数*/char *red=A,D,E,S,o,H; /*热键显示*/char *f=Add,Delete,Edit,Search,Sort,Help; /*显示菜单*/char *Hel=ESC:QUIT, /*Help内容*/ A : ADD, D : DELETE, E : EDIT, S : SEARCH, O : SORT, H : HELP, PAGEDOWN: , PAGEUP: , Fuction sort: , ESC: restore ;typedef struct Tel /*建立数组*/ char name15; char telnum15; char Email20; char workpl30;Message;int sum1,pg=1; /*文件个数*/void *buffer,*buff; /*记录画面指针*/Message msgALL,msgtemALL; /*msg为记录文件数组,msgtem为暂时记录排序数组*/*-主函数-*/main() Pwd(); /*读入并检验密码*/ Init(); /*初始文件和界面*/ Key(); /*核心*/*-初始化图形模式-*/void Init() int driver=DETECT,gmode,gcode; int i; initgraph(&driver,&gmode,); gcode=graphresult(); if(gcode!=grOk) printf(nGraphics System Error:%sn,grapherrormsg(gcode); getch(); exit(0); Drawwin(100,100,439,250,ON); /*画图*/ Drawwin(120,120,399,210,OFF); Drawwin(350,150,150,150,ON); setcolor(DARKGRAY); settextstyle(0,0,8); outtextxy(145,179,TBS); setcolor(RED); outtextxy(140,173,TBS); setcolor(LIGHTBLUE); settextstyle(0,0,2); outtextxy(145,310,Telephone Book System); setcolor(RED); settextstyle(0,0,1); outtextxy(260,245,Version 1.0); setcolor(BLUE); settextstyle(0,0,1); outtextxy(360,175,MingriSoft); /*outtextxy(380,190,03 Computer 2);*/ outtextxy(387,205,2011-04-26); outtextxy(380,220,CaoFeifei); Load(); /*初始化数据*/ while(!kbhit(); /*按键退出*/ closegraph(); /*关闭图形模式*/*-3D界面-*/void Drawwin(int x,int y,int l,int w,int sta) setfillstyle(1,LIGHTGRAY); bar(x+1,y+1,x+l-1,y+w-1); setcolor(sta=ON)?WHITE:DARKGRAY); moveto(x,y+w); lineto(x,y); lineto(x+l,y); setcolor(sta=OFF)?WHITE:DARKGRAY); moveto(x,y+w); lineto(x+l,y+w); lineto(x+l,y);/*-文件读入-*/void Load() int i,tem=0; FILE* fp; setcolor(RED); outtextxy(365,265,Load.); setfillstyle(1,GREEN); bar(351,280,498,290); if(fp=fopen(sum.dat,rb)=NULL) /*打开sum0文件,无,建立*/ fp=fopen(sum.dat,wb); sum0=0; fwrite(&sum,sizeof(sum0),1,fp); fp=fopen(sum.dat,rb); fread(&sum0,sizeof(sum),1,fp); fclose(fp); if(fp=fopen(TBS.dat,rb)=NULL) /*打开TBS文件,无,建立*/ fp=fopen(TBS.dat,wb); fp=fopen(TBS.dat,rb); for(i=0;i147;i+) setfillstyle(1,LIGHTGREEN); bar(351,280,351+i,290); delay(1000+tem*100); if(temsum0) fread(&msgtem,sizeof(msg),1,fp); /*初始化数据*/ tem+; fclose(fp); setfillstyle(1,LIGHTGRAY); bar(351,260,498,290); settextstyle(0,0,1); setcolor(RED); outtextxy(375,260,Press any key!); while(!kbhit();/*-输入密码-*/void Pwd() char *passwrd,*Right=12345; char temp9; int i=0; Move; /*换行*/ printf( Thank you for using this system!nn); passwrd=getpass( Input a password (Not show):); strcpy(temp,passwrd); while(1) Move; if(strcmp(temp,Right)!=0) i+; clrscr(); Move; passwrd=getpass( Dont worry!Input again:); strcpy(temp,passwrd); else clrscr(); break; clrscr(); if(i=3) Move; printf( Sorry!You have enter three times password!n); printf( Press any key!); getch(); exit(0); /*-核心算法-*/void Key() char Key; /*记录按键*/ int page=1,i; FILE *fp; Draw(); /*画图*/ buffer=(void *)malloc(2*80*23); gettext(1,1,80,23,buffer); /*记录画面*/ buff=(void *)malloc(2*80*2); gettext(1,23,80,23,buff); if(sum0%19=0&sum0!=0) /*计算总页数*/ pg=sum0/19; /*刚好满页*/ else pg=sum0/19+1; /*不够一页,当一页*/ SHOW(page,ON); /*显示信息,ON为msg,OFF为排序用的*/ while(1) /*进入循环*/ SHOW(page,ON); print(page); while(!kbhit(); /*获取按键*/ Key=getch(); switch(Key) case A:page=ADD();break; case D:DELETE();break; case S:SEARCH();break; case O:SORT();break; case E:EDIT();break; case H:HELP();break; case Pageup:page=PAGEUP(page,ON);break; case Pagedw:page=PAGEDw(page,ON);break; case ESC: fp=fopen(TBS.dat,wb); for(i=0;isum0;i+) fwrite(&msgi,sizeof(Message),1,fp); fclose(fp); free(buffer); free(buff); clrscr(); exit(0); break; /*-文本模式下的画面-*/void Draw() int x,y,i,l; textmode(C80);/*文本模式80列彩色的*/ textbackground(BLACK);/*文本的背景颜色*/ window(1,1,80,23);/*画矩形*/ textbackground(WHITE); window(1,24,80,24); clrscr(); for(i=0;i6;i+) x=wherex(); y=wherey(); textcolor(BLACK); cprintf(%s,fi); l=strlen(fi); gotoxy(x,y); textcolor(RED); if(i=4) gotoxy(x+1,y); cprintf(%s,redi); else cprintf(%s,redi); x=x+l+8; gotoxy(x,y); textbackground(BLACK); window(1,1,80,23); Win(1,1,78,21); textcolor(YELLOW); gotoxy(7,2); cprintf(Name); gotoxy(22,2); cprintf(Telphone); gotoxy(43,2); cprintf(QQ); gotoxy(60,2); cprintf(Workplace); textcolor(WHITE);/*-文本模式下的作图-*/void Win(int x,int y,int l,int w) int i,j; gotoxy(x,y); putch(213); for(j=0;j2;j+) for(i=0;i15;i+) putch(205); putch(209); for(i=0;i20;i+) putch(205); putch(209); for(i=0;i25;i+) putch(205); putch(184); for(i=0;i20;i+) gotoxy(x,y+1+i); putch(179); gotoxy(17,y+1+i); putch(179); gotoxy(33,y+1+i); putch(179); gotoxy(54,y+1+i); putch(179); gotoxy(x+l+1,y+1+i); putch(179); gotoxy(x,y+w); putch(192); for(j=0;j2;j+) for(i=0;i15;i+) putch(196); putch(193); for(i=0;i20;i+) putch(196); putch(193); for(i=0;i25;i+) putch(196); putch(217); textcolor(WHITE);/*-显示帮助信息-*/void HELP() void *buf; int i; buf=(void *)malloc(2*80*24); gettext(1,1,80,23,buf); puttext(1,1,80,23,buffer); textcolor(YELLOW); textbackground(BLUE); for(i=0;i11;i+) gotoxy(27,7+i); cprintf(%s,Heli); while(!kbhit(); textbackground(BLACK); puttext(1,1,80,23,buf); textcolor(WHITE); free(buf);/*-修改函数-*/void EDIT() char name20; Message t1; FILE* fp=fopen(TBS.dat,wb); int i,find=0,num=0; gotoxy(1,23); delline(); cprintf(Name:); /*读取要编辑的名字*/ cscanf(%s,&name); /*比较文件*/ for(i=0;isum0;i+) if(strcmp(name,)=0) /*找到 find1*/ find=1; /*num记录位置*/ num=i; puttext(1,23,80,23,buff); if(find!=1) gotoxy(1,23); delline(); cprintf(Not found); while(!kbhit() ); else gotoxy(1,23); /*重新输入*/ cprintf(New name:); cscanf(%s,); delline(); cprintf(Telphone number:); cscanf(%s,t0.telnum); delline(); cprintf(QQ:); cscanf(%s,t0.Email); delline(); cprintf(Work place:); cscanf(%s,t0.workpl); delline(); strcpy(,); /*复制*/ strcpy(msgnum.telnum,t0.telnum); strcpy(msgnum.workpl,t0.workpl); strcpy(msgnum.Email,t0.Email); for(i=0;isum0;i+) /*写入文件*/ fwrite(&msgi,sizeof(Message),1,fp); fclose(fp); cprintf(success!); while(!kbhit(); SHOW(1,ON); /*-删除函数-*/void DELETE() FILE *fp; char name20; int i,num=0,find=0; gotoxy(1,23); delline(); cprintf(Name:); cscanf(%s,&name); /*读取要删除的名字*/ for(i=0;i0) sum0-; else for(i=num;isum0;i+) /*写入文件*/ strcpy(,msgi+1.name); strcpy(msgi.telnum,msgi+1.telnum); strcpy(msgi.workpl,msgi+1.workpl); strcpy(msgi.Email,msgi+1.Email); sum0-; fp=fopen(TBS.dat,wb); for(i=0;isum0;i+) fwrite(&msgi,sizeof(Message),1,fp); fclose(fp); Savesm(); SHOW(1,ON);/*-添加函数-*/int ADD() FILE* fp; int i; Message t1; puttext(1,23,80,23,buff); gotoxy(1,23); /*读取信息*/ cprintf(New name:); cscanf(%s,); delline(); cprintf(Telphone number:); cscanf(%s,t0.telnum); delline(); cprintf(QQ:); cscanf(%s,t0.Email); delline(); cprintf(Work place:); cscanf(%s,t0.workpl); delline(); sum0+; strcpy(,); strcpy(msgsum0-1.Email,t0.Email); strcpy(msgsum0-1.workpl,t0.workpl); strcpy(msgsum0-1.telnum,t0.telnum); fp=fopen(TBS.dat,wb); for(i=0;isum0;i+) fwrite(&msgi,sizeof(Message),1,fp); fclose(fp); Savesm(); cprintf(Success!); while(!kbhit(); puttext(1,1,80,23,buffer); if(sum0%19=0&sum0!=0) pg=sum0/19; else pg=sum0/19+1; return pg;/*-排序函数-*/void SORT() int Key,i,p=1; FILE *fp=fopen(TBS.dat,rb); for(i=0;isum0;i+) fread(&msgtemi,sizeof(Message),1,fp); /*更新信息,写入msgtem*/ fclose(fp); Quick(); /*排序*/ while(1) SHOW(p,OFF); print(p); while(!kbhit(); Key=getch(); switch(Key) case Pageup:p=PAGEUP(p,OFF);break; case Pagedw:p=PAGEDw(p,OFF);break; case ESC:goto AA; AA:;/*-搜索函数-*/void SEARCH() char name20; int i,find=0,num=0; FILE* fp=fopen(TBS.dat,rb); for(i=0;isum0;i+) fread(&msgi,sizeof(Message),1,fp); fclose(fp); fp=fopen(sum.dat,rb); fread(&sum0,sizeof(Message),1,fp); fclose(fp); gotoxy(1,23); delline(); cprintf(Name or Telphone:); cscanf(%s,&name); for(i=0;isum0;i+) if(strcmp(name,)=0|strcmp(name,msgi.telnum)=0) find=1; num=i; break; if(find!=1) gotoxy(1,23); delline(); cprintf(Not found); while(!kbhit() ); else gotoxy(1,23); delline(); cprintf(Result:); cprintf( %s,); cprintf( %s,msgnum.telnum); cprintf( %s,msgnum.Email); cprintf( %s,msgnum.workpl); while(!kbhit(); /*-显示电话本信息-*/void SHOW(int page,int sta) int i,pages=0,n,n1,j=0; FILE* fp=fopen(TBS.dat,rb); for(i=0;isum0;i+) fread(&msgi,sizeof(Message),1,fp); fclose(fp); n=sum0%19; /*该页行数*/ pages=sum0/19+1; /*页数*/ puttext(1,1,80,23,buffer); textcolor(WHITE); if(n=0&sum0!=0) n=19; pages-; if(pg=1) i=0; n1=n; else if(pagepg) i=(page-1)*19; n1=(page-1)*19+19; else if(page=pg) i=(page-1)*19; n1=(page-1)*19+n; if(sta=ON) /*ON为文件内容,off为排序后的内容*/ if(sum0!=0) for(;in1;i+) gotoxy(2,3+j); cprintf(%s,); gotoxy(18,3+j); cprintf(%s,msgi.telnum); gotoxy(34,3+j); cprintf(%s,msgi.Email); gotoxy(55,3+j); cprintf(%s,msgi.workpl); j+; else if(sum0!=0) for(;in1;i+) gotoxy(2,3+j); cprintf(%s,); gotoxy(18,3+j); cprintf(%s,msgtemi.telnum); gotoxy(34,3+j); cprintf(%s,msgtemi.Email); gotoxy(55,3+j); cprintf(%s,msgtemi.workpl); j+; /*显示信息*/void print(int apg) if(sum0%19=0&sum0!=0) pg=sum0/19; else pg=sum0/19+1; gotoxy(1,23); cprintf(Total:%d Page :%d/%d ,sum0,apg,pg);/*-记录sum-*/void Savesm() FILE* fp; fp=fopen(sum.dat,wb); fwrite(&sum0,sizeof(sum),1,fp); fclose(fp);/*-冒泡排序-*/void Quick() int i,j; char name20; Message tem1; for(j=0;jsum0-1;j+) for(i=0;i0) strcpy(,); strcpy(tem0.telnum,msgtemi.telnum); strcpy(tem0.Email,msgtemi.Email); strcpy(tem0.workpl,msgtemi.workpl); strcpy(,msgtemi+1.name); strcpy(msgtemi.telnum,msgtemi+1.telnum); strcpy(msgtemi.Email,msgtemi+1.Email); strcpy(msgtemi.workpl,msgtemi+1.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论