亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cpp1.cpp

?? 這是一個通信錄管理系統
?? CPP
字號:
//通訊錄系統管理源程序

#include"stdio.h"
#include"stdlib.h" 
#include"string.h"
#include"conio.h"
#include"ctype.h"  

//字符操作函數
#define M 50  //最大人數

typedef struct
{
 char name[20];  //姓名
 char units[30];  //單位
 char tele[10];  //電話
}ADDRESS;

//以下是函數原型
int input(ADDRESS t[]);   //輸入記錄
void list(ADDRESS t[],int n);   //顯示記錄
void search(ADDRESS t[],int n);   //按姓名查找顯示記錄
int deleted(ADDRESS t[],int n);    //刪除記錄
int add(ADDRESS t[],int n);      //插入記錄
void save(ADDRESS t[],int n);   //記錄保存為文件
int load(ADDRESS t[]);     //從文件中讀記錄
void display(ADDRESS t[]);     //按序號查找顯示記錄
void sort(ADDRESS t[],int n);    //按姓名排序
void qseek(ADDRESS t[],int n);    //快速查找記錄
void copy();                    //文件復制
void print(ADDRESS temp);       //顯示單條記錄
int find(ADDRESS t[],int n,char *s);     //查找函數
int menu_select();           //主菜單函數
//主函數開始
void main()
{
 ADDRESS adr[M];
 int length;
 system("cls");
 for(;;)
 {
	 switch(menu_select())
	 {
	     case 0:length=input(adr);break;     //輸入記錄
      case 1:list(adr,length);break;      //顯示全部記錄
      case 2:search(adr,length);break;    //查找記錄
      case 3:length=deleted(adr,length);break;     //刪除記錄
      case 4:length=add(adr,length);break;       //插入記錄
      case 5:save(adr,length);break;           //保存文件
      case 6:length=load(adr);break;          //讀文件
      case 7:display(adr);break;              //按序列號顯示記錄
      case 8:sort(adr,length);break;          //按姓名排序
      case 9:qseek(adr,length);break;         //快速查找記錄
      case 10:copy();break;                 //復制文件
      case 11:exit(0);break;          //如果返回值11則程序結束
	 }
 }
}
//菜單函數,函數返回值為整數,代表所選的菜單項
menu_select()
{
  char s[80];
  int c;
  printf("press any key enter menu......\n");//提示按任意鍵繼續
  getch();//讀入任意字符
  system("cls"); //清屏

  printf("*******************************************\n");
  printf("     您好!歡迎使用通訊錄管理服務系統!!!    \n");
  printf("******************MENU*********************\n\n");
  printf("     0.Enter record\n");
  printf("     1.List the file\n");
  printf("     2.Search record on name\n");
  printf("     3.Delete a record\n");
  printf("     4.add record\n");
  printf("     5.Save the file\n");
  printf("     6.Load the file\n");
  printf("     7.display record on order\n");
  printf("     8.sort to make new file\n");
  printf("     9.Quick seek record\n");
  printf("     10.copy the file to new\n");
  printf("     11.Quit\n");
  printf("*****************************************\n");
  do
  { printf("\n Enter you choice(0-11):");//提示輸入選項
	 scanf("%s",s);//輸入選擇項
	 c=atoi(s);//將輸入的字符串比較轉化為整型數
  }while(c<0||c>11);//選擇項不在0-11之間重輸
  return c;//返回選擇項,主程序根據該數調用相應的函數
}
//***輸入記錄,形參為結構體數組,函數值返回類型為整型,表示記錄長度
int input(ADDRESS t[])
{
	int i, n;
	system("cls");//清屏
	system("cls");
	printf("\nplease input num \n");//提示信息
	scanf("%d",&n);//;輸入記錄數
	printf("please input record \n");//提示輸入記錄
	printf("name        unit           telephone\n");
	printf("------------------------------------\n");
	for(i=0;i<n;i++)
	{
		scanf("%s%s%s",t[i].name,t[i].units,t[i].tele);
		printf("----------------------------------\n");
	}
	return n;//返回記錄數
}
//顯示記錄,參數為記錄數組和記錄條數
void list(ADDRESS t[],int n)
{
  int i;
	system("cls");
	printf("\n\n*****************ADDRESS***************\n");
	printf("name            unit             telephone\n");
	printf("-------------------------------------------\n");
	for(i=0;i<n;i++)
	printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);
    if((i+1)%10==0)    //判斷輸出是否達到10條記錄
 	{
		printf("Press any key continue...\n");   //提示信息
		getch();      //按任意鍵繼續
	}
	printf("********************end************************\n");
}
//查找記錄
void search(ADDRESS t[],int n)
{
	char s[20];//保存待查找的姓名字符串
	int i;//保存查找到結點的序號
	system("cls");//清屏
	printf("please search name\n");
	scanf("%s",s);//輸入待查找姓名
	i=find(t,n,s);//調用find函數,得到一個整數
	if(i>n-1)//如果整數i值大于n-1,說明沒有找到
		printf("not found\n");
	else
		print(t[i]);//找到,調用顯示函數顯示記錄
}
//顯示指定的一條記錄
void print(ADDRESS temp)
{
	system("cls");
	printf("\n\n**********************************\n");
	printf("name        unit                 telephone\n");
	printf("----------------------------------------\n");
	printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);
	printf("******************end******************\n");
}
//查找函數,參數為記錄數組、記錄條數以及姓名s
int find(ADDRESS t[],int n,char *s)
{
	int i;
    for(i=0;i<n;i++)//從第一條記錄開始,直到最后一條
	{
	    if(strcmp(s,t[i].name)==0)//記錄中的姓名和待比較的姓名是否相等
		return i;//相等,則返回該記錄的下標號,程序提前結束
	}
 return i;//返回i值


}
//刪除函數,參數為記錄數組和記錄條數
int deleted(ADDRESS t[],int n)
{
	char s[20];//要刪除記錄的姓名
    int ch=0;
    int i,j;
    printf("please deleted name\n");//提示信息
    scanf("%s",s);//輸入姓名
    
	i=find(t,n,s);//調用find函數
    if(i>n-1)//如果i>n-1超過了數組的長度
       printf("no found not deleted\n");//顯示沒有找到要刪除的記錄
    else
	{
	   print(t[i]);//調用輸出函數顯示該條記錄信息
	   printf("Are you sure delete it(1/0)\n");//確認是否要刪除
	   scanf("%d",&ch);//輸入一個整數0或1
	   if(ch==1)//如果確認刪除整數為1
	   {
		 for(j=i+1;j<n;j++)//刪除該記錄,實際后續記錄前移
		 {
			strcpy(t[j-1].name,t[j].name);
			strcpy(t[j-1].units,t[j].units);
			strcpy(t[j-1].tele,t[j].tele);
		 }
		n--;//記錄數減1
	   }
	}
    return n;//返回記錄數
}
//插入記錄函數,參數為結構體數組和記錄數
int add(ADDRESS t[],int n)//插入函數,參數為結構體數組和記錄數
{
	ADDRESS temp;//插入記錄信息
	int i,j ;
	char s[20];//確定插入在哪個記錄之前
	printf("plsease input record\n");
	printf("*****************************************\n");
	printf("name        unit           telephone     \n");
    printf("-----------------------------------------\n");
	scanf("%s%s%s",temp.name,temp.units,temp.tele);
	printf("-----------------------------------------\n");
	printf("please input locate name  \n");
	scanf("%s",s);//輸入插入位置的姓名
	i=find(t,n,s);//調用find,確定插入位置
	for(j=n-1;j>=i;j--)//從最后一個結點開始向后移動一條
    {
		strcpy(t[j+1].name,t[j].name);
		strcpy(t[j+1].units,t[j].units);
		strcpy(t[j+1].tele,t[j].tele);
	}
	   strcpy(t[i].name,temp.name);//將新插入記錄拷貝到第i個位置
	   strcpy(t[i].units,temp.units);
	   strcpy(t[i].tele,temp.tele);
	   n++;//記錄數加1
	   return n;//返回記錄數
}
//保存函數,參數為結構體數組和記錄數
void save(ADDRESS t[],int n)
{
	int i;
	FILE*fp;//指向文件的指針
	if((fp=fopen("record.txt","wb"))==NULL)
	{
		printf("can not open file\n");//不能打開文件
		exit(1);//退出
	}
	printf("\nSaving file\n");//輸出提示信息
	fprintf(fp,"%d",n);//將記錄數寫入文件
	fprintf(fp,"\r\n");//將換行符號寫入文件
	for(i=0;i<n;i++)
	{
     fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);//格式寫入記錄
	 fprintf(fp,"\r\n");//將換行符號寫入文件
	}
	fclose(fp);//關閉文件
	printf("***save success***********\n");//顯示保存成功
}
//讀入函數,參數為結構體數組
int load(ADDRESS t[])
{
    int i,n; 
	FILE*fp;//指向文件的指針
	if((fp=fopen("record.txt","rb"))==NULL)//打開文件
	{
		printf("can not open file\n");//不能打開
		exit(1);
	}
	fscanf(fp,"%d",&n);//讀入記錄數
	for(i=0;i<n;i++)
	fscanf(fp,"%20s%30s%10s",t[i].name,t[i].units,t[i].tele);//按格式讀入記錄
    fclose(fp);//關閉文件
	printf("You have success read data from file!!!\n");//顯示保存成功
	return n;//返回記錄數
}
//按序號顯示記錄函數
void display(ADDRESS t[])
{
	int id,n;
	FILE*fp;//指向文件的指針
    if((fp=fopen("record.txt","rb"))==NULL)
	{
		printf("can not open file\n");
		exit(1);
	}
	printf("Enter order number...\n");//顯示信息
	scanf("%d",&id);//輸入序號
	fscanf(fp,"%d",&n);//從文件讀入記錄數
	if(id>=0&&id<n)//判斷序號是否在記錄范圍內
	{
		fseek(fp,(id-1)*sizeof(ADDRESS),1);//移動文件指針到該記錄位置
		print(t[id]);// 調用輸出函數顯示該記錄
		printf("\r\n");
	}
	else
		printf("no %d number record!!!\n",id);//如果序號不合理顯示的信息
	    fclose(fp);
}
//排序函數,參數為結構體數組和記錄數
void sort(ADDRESS t[],int n)
{
	int i,j,flag;
	ADDRESS temp;//臨時變量做交換數據用
    for(i=0;i<n;i++)
	{
		flag=0;//設標志,判斷是否發生過交換
		for(j=0;j<n-1;j++)
		if(strcmp(t[j].name,t[j+1].name)>0)//比較大小
		{
			flag=1;
			strcpy(temp.name,t[j].name);//交換記錄
	    strcpy(temp.units,t[j].units);
		strcpy(temp.tele,t[j].tele);
	    strcpy(t[j].name,t[j+1].name);
	    strcpy(t[j].units,t[j+1].units);
	    strcpy(t[j].tele,t[j+1].tele);
	    strcpy(t[j+1].name,temp.name);
			strcpy(t[j+1].units,temp.units);
	    strcpy(t[j+1].tele,temp.tele);
		}
		if(flag==0)break;//如果標志為0,說明沒有發生過交換,循環結束
	}
	printf("sort sucess!!!\n");//顯示排序成功
}
//快速查找,參數為結構體數組和記錄數
void qseek(ADDRESS t[],int n)
{
	char s[20];
	int l,r,m;
	printf("\nPlease sort before qseek!\n");//提示確認在查找之前,記錄是否已排序
    printf("\nPlease enter name for qseek\n");//提示輸入
    scanf("%s",s);//輸入待查找的姓名
    l=0;r=n-1;//設置左邊界與右邊界的初值
	while(l<=r)//當左邊界<=右邊界時
	{
		m=(l+r)/2;//計算中間位置
		if(strcmp(t[m].name,s)==0)//與中間結點的姓名字段進行比較,判斷是否相等
		{
			print(t[m]);//如果相等,則調用printf函數顯示記錄信息
			return;//返回
		}

     if(strcmp(t[m].name,s)<0)//如果中間結點小

	   l=m+1;//修改左邊界
	else
			r=m-1;//否則,中間結點大,修改右邊界
	}
	if(l>r)//如果左邊界大于右邊界時
		 printf("not found\n");//顯示沒找到
}
//復制文件
void copy()
{
	char outfile[20];//目標文件名
	int i,n;
	ADDRESS temp[M];//定義臨時變量
	FILE *sfp,*tfp;//定義指向文件的指針
	system("cls");
	if((sfp=fopen("record.txt","rb"))==NULL)//打開記錄文件
	{
		printf("can not open file\n");//顯示不能打開文件信息
		exit(1);
	}
	printf("Enter outfile name,for example c:\\f1\\te.txt:\n");//提示信息
	scanf("%s",outfile);//輸入目標文件名
	if((tfp=fopen(outfile,"wb"))==NULL)//打開目標文件
	{
		printf("can not open file\n");//顯示不能打開文件信息
		exit(1);
	}
	fscanf(sfp,"%d",&n);//讀出文件記錄數
	fprintf(tfp,"%d",n);//寫入目標文件數
	fprintf(tfp,"\r\n");//寫入換行符
	for(i=0;i<n;i++)
	{
		fscanf(sfp,"%20s%30s%10s\n",temp[i].name,
     temp[i].units,temp[i].tele);//讀入記錄
		fprintf(tfp,"%-20s%-30s%-10s\n",temp[i].name,
     temp[i].units,temp[i].tele);//寫入記錄
		fprintf(tfp,"\r\n");//寫入換行符
	}
	fclose(sfp);//關閉源文件
	fclose(tfp);//關閉目標文件
	printf("You have success copy file!!!\n");//顯示復制
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲一区二区在线| 国产精品白丝jk黑袜喷水| 色综合久久88色综合天天免费| 26uuu精品一区二区三区四区在线| 天天色综合天天| 欧美一区二视频| 黄色小说综合网站| 久久久综合视频| 99国产精品视频免费观看| 亚洲午夜激情网站| 日韩色在线观看| 粉嫩欧美一区二区三区高清影视 | 国产精品一二三四五| 欧美激情一区在线| 91麻豆6部合集magnet| 三级不卡在线观看| 久久精品亚洲国产奇米99| 日本精品裸体写真集在线观看| 视频一区中文字幕国产| 久久久无码精品亚洲日韩按摩| 成人高清视频在线| 五月天精品一区二区三区| 久久久一区二区三区| 91国产成人在线| 国产一区二区成人久久免费影院 | 亚洲综合免费观看高清完整版| 欧美男生操女生| 国产成人av影院| 性做久久久久久免费观看 | www.欧美亚洲| 三级欧美在线一区| 一区在线中文字幕| 欧美电视剧在线观看完整版| jlzzjlzz国产精品久久| 久久电影网电视剧免费观看| 亚洲人成精品久久久久久| 日韩欧美国产不卡| 91官网在线免费观看| 国产91丝袜在线播放九色| 美腿丝袜亚洲三区| 亚洲制服丝袜av| 国产精品久久久久影院亚瑟| 日韩亚洲国产中文字幕欧美| 在线亚洲高清视频| 成人晚上爱看视频| 六月丁香婷婷久久| 日本三级韩国三级欧美三级| 亚洲色图一区二区| 欧美极品另类videosde| 精品国产乱码久久久久久蜜臀| 欧美性淫爽ww久久久久无| 成人av资源在线| 激情文学综合插| 免费成人在线观看| 亚洲成av人**亚洲成av**| 18成人在线视频| 日本一二三四高清不卡| 久久综合九色综合久久久精品综合| 欧美探花视频资源| 日本韩国一区二区三区| 色综合婷婷久久| 丁香婷婷综合五月| 国产激情精品久久久第一区二区 | 国产老妇另类xxxxx| 久久99精品网久久| 奇米777欧美一区二区| 亚洲v中文字幕| 一区二区三区丝袜| 亚洲猫色日本管| 亚洲特级片在线| 自拍偷拍国产亚洲| 亚洲欧美影音先锋| 亚洲欧洲av在线| 亚洲天堂av老司机| 夜夜亚洲天天久久| 一区二区三区小说| 亚洲一区中文在线| 亚洲成av人**亚洲成av**| 天天做天天摸天天爽国产一区| 午夜精品久久久久久久久| 日本网站在线观看一区二区三区| 日韩精品高清不卡| 久久99国产精品麻豆| 国产在线一区观看| 国产激情精品久久久第一区二区 | 欧洲av一区二区嗯嗯嗯啊| 在线免费观看视频一区| 欧美日韩一级视频| 欧美videossexotv100| 久久日一线二线三线suv| 国产午夜亚洲精品不卡| 亚洲欧洲成人av每日更新| 亚洲午夜三级在线| 日本女人一区二区三区| 国产一区二区三区精品视频| 国产成人午夜精品5599| 北条麻妃国产九九精品视频| 欧美性一区二区| 日韩欧美一区在线| 欧美高清在线一区二区| 亚洲免费观看高清完整版在线| 午夜久久久影院| 国产乱码精品一区二区三区av | 久久网这里都是精品| 国产精品对白交换视频| 亚洲一区二区精品视频| 欧美aaa在线| 成人午夜短视频| 欧美乱妇20p| 国产欧美日韩视频在线观看| 亚洲精品日韩综合观看成人91| 调教+趴+乳夹+国产+精品| 国产成人日日夜夜| 精品1区2区3区| 国产欧美日本一区视频| 亚洲www啪成人一区二区麻豆| 国产一区二区主播在线| 91黄色小视频| 国产视频一区在线观看| 亚洲电影中文字幕在线观看| 国产精品66部| 欧美精选午夜久久久乱码6080| 国产网红主播福利一区二区| 亚洲一级电影视频| 丁香六月综合激情| 日韩一区二区三区在线| 亚洲欧美韩国综合色| 国产一区二区三区在线观看免费视频 | 99久久精品国产一区| 蜜桃在线一区二区三区| 蜜桃传媒麻豆第一区在线观看| 国产精品一级在线| 欧美高清激情brazzers| 国产无人区一区二区三区| 日韩成人av影视| 在线观看91精品国产入口| 久久久亚洲精华液精华液精华液 | 香蕉成人啪国产精品视频综合网| 国产综合久久久久久久久久久久| 欧美三级在线看| 国产精品女主播在线观看| 美女视频免费一区| 欧美在线不卡视频| 成人免费在线观看入口| 国产99久久久国产精品潘金 | 免费在线观看一区二区三区| 91国产精品成人| 国产精品国产a| 国产成人av电影在线观看| 日韩欧美一区二区三区在线| 亚洲午夜久久久| 欧美伊人精品成人久久综合97| 国产精品久久一卡二卡| 国产精品羞羞答答xxdd| 久久综合久色欧美综合狠狠| 精品一区二区三区在线播放| 91精品国产品国语在线不卡| 亚洲午夜免费电影| 欧美日韩一级二级| 亚洲一区视频在线| 欧洲av在线精品| 亚洲国产精品一区二区www| 欧美视频在线一区二区三区 | 午夜影院在线观看欧美| 在线免费观看不卡av| 怡红院av一区二区三区| 欧美综合色免费| 亚洲综合免费观看高清在线观看| 色av一区二区| 午夜伦理一区二区| 日韩欧美一区中文| 国内精品免费**视频| 国产亚洲欧美日韩在线一区| 懂色av一区二区夜夜嗨| 亚洲色欲色欲www在线观看| 色综合天天天天做夜夜夜夜做| 亚洲欧美一区二区不卡| 日本韩国一区二区三区| 五月婷婷久久综合| www精品美女久久久tv| 国产高清一区日本| 亚洲六月丁香色婷婷综合久久 | 欧美一区二区三区色| 日本不卡一二三| 久久这里只有精品首页| 成人黄色大片在线观看| 国产精品电影院| 欧美日产国产精品| 久久国产精品露脸对白| 欧美韩国一区二区| 在线中文字幕不卡| 日本午夜一区二区| 欧美激情综合网| 欧美视频精品在线| 精品一区免费av| 中文字幕中文字幕一区二区| 欧美色图第一页| 国产一区二区成人久久免费影院 | 成人一区在线看| 亚洲综合无码一区二区|