最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實(shí)現(xiàn)電話簿管理系統(tǒng)

 更新時(shí)間:2019年12月18日 11:54:55   作者:城秀  
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)電話簿管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言電話簿管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

/*大二實(shí)踐周所作,
時(shí)間:2017.9,11
電話簿管理系統(tǒng)
*/
 
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define NULL 0
typedef struct lianxiren{
 char job[30];
 char number[20];
 char name[10];
 char email[30];
 struct lianxiren*next;
}lianxiren;
#define LEN sizeof(lianxiren)
lianxiren* creat_list()
{
 lianxiren *head,*p1,*p2;
 char name[10];int n=0;
 head=NULL;
 p1=(lianxiren *)malloc(LEN);
 p2=p1;
 printf("請(qǐng)輸入姓名(姓名為0時(shí)停止創(chuàng)建):");
 gets(name);
 if(strcmp(name,"0")==0)return 0;
 else {
 strcpy(p1->name,name);
 printf("請(qǐng)輸入電話號(hào)碼:");gets(p1->number);
 printf("請(qǐng)輸入工作單位:");gets(p1->job);
 printf("請(qǐng)輸入E-mail:");gets(p1->email);
 }
 while(1)
 {
 n++;
 if(n==1)
  head=p1;
 else
  p2->next=p1;
 p2=p1;
 printf("請(qǐng)輸入姓名(姓名為0時(shí)停止創(chuàng)建):");
 gets(name);
 if(strcmp(name,"0")==0)break;
 else{
  p1=(lianxiren*)malloc(LEN);
      strcpy(p1->name,name);
  printf("請(qǐng)輸入電話號(hào)碼:");gets(p1->number);
  printf("請(qǐng)輸入工作單位:");gets(p1->job);
  printf("請(qǐng)輸入E-mail:");gets(p1->email);}
 }p2->next=NULL;
 return head;
}//鏈表創(chuàng)建函數(shù)
lianxiren* shifang_list(lianxiren*head)
{
 lianxiren*p1;
 for(;head!=NULL;)
 {
 p1=head; 
 head=head->next; 
 free(p1);
 }
 return head;
}//釋放鏈表函數(shù)
void print_list(lianxiren*head)
{
 void caidan();
 int n=0;
 printf("現(xiàn)在通訊錄中有如下成員:");
  while(head!=NULL)
 {
 printf("\n名字:");puts(head->name);
 printf("\n電話號(hào)碼:");puts(head->number);
 printf("\n工作單位:");puts(head->job);
 printf("\nE-mail:");puts(head->email);
 putchar('\n');
 head=head->next;n++;
 if(n%8==0){
 printf("按回車鍵顯示下一頁");
 getchar();
 system("cls");
 caidan();
 } 
 }
 printf("總共%d個(gè)聯(lián)系人\n",n);
}//打印鏈表函數(shù)
int length(lianxiren*head) 
{ 
  int n = 0; 
  lianxiren *p; 
  p = head; 
  while(p != NULL) 
  { 
    p = p->next; 
    n++; 
  } 
  return n; 
} 
 
void paixu1(lianxiren*head)
{
 void caidan();
 int n=length(head);
 int i,j;
 lianxiren temp,*p;
 p=head;
 lianxiren a[100];
 for(i=1;i<=n;i++)
 {
 strcpy(a[i].name,p->name);
 strcpy(a[i].number,p->number);
 strcpy(a[i].job,p->job);
 strcpy(a[i].email,p->email);
 p=p->next;
 }
 for(i=1;i<=n-1;i++)
 {
 for(j=1;j<=n-i;j++)
 {if(strcmp(a[j].number,a[j+1].number)>0)
 {
  temp=a[j];
      a[j]=a[j+1];
  a[j+1]=temp;
 } 
 }
 }
 printf("現(xiàn)在通訊錄中有如下成員:");
 for(i=1;i<=n;i++)
 {
 printf("\n名字:");puts(a[i].name);
 printf("\n電話號(hào)碼:");puts(a[i].number);
 printf("\n工作單位:");puts(a[i].job);
 printf("\nE-mail:");puts(a[i].email);
 putchar('\n');
 if(i%8==0){
 printf("按回車鍵顯示下一頁");
 getchar();
 system("cls");
 caidan();
 } 
 }
 printf("總共%d個(gè)聯(lián)系人\n",n);
}
void paixu2(lianxiren*head)
{
 void caidan();
 int n=length(head);int i,j;
 lianxiren temp,*p;
 p=head;
 lianxiren a[100];
 for(i=1;i<=n;i++)
 {
 strcpy(a[i].name,p->name);
 strcpy(a[i].number,p->number);
 strcpy(a[i].job,p->job);
 strcpy(a[i].email,p->email);
 p=p->next;
 }
for(i=1;i<=n-1;i++)
 {
 for(j=1;j<=n-i;j++)
 {if(strcmp(a[j].name,a[j+1].name)>0)
 {
  temp=a[j];
      a[j]=a[j+1];
  a[j+1]=temp;
 } 
 }
 }
 printf("現(xiàn)在通訊錄中有如下成員:");
 for(i=1;i<=n;i++)
 {
 printf("\n名字:");puts(a[i].name);
 printf("\n電話號(hào)碼:");puts(a[i].number);
 printf("\n工作單位:");puts(a[i].job);
 printf("\nE-mail:");puts(a[i].email);
 putchar('\n');
 if(i%8==0){
 printf("按回車鍵顯示下一頁");
 getchar();
 system("cls");
 caidan();
 } 
 }
 printf("總共%d個(gè)聯(lián)系人\n",n);
}
void paixu_list(lianxiren*head)
{
 void caidan();
 if(head==NULL)
 {printf("電話簿為空,請(qǐng)重新創(chuàng)建!");
 return;
 }
 char a;
 printf("1,按電話號(hào)碼升序排序\n2,按姓名字母升序排序\n");
 printf("請(qǐng)選擇一種排序方法:");
 a=getchar();
 getchar();
 switch(a){
 case'1':paixu1(head);break;
 case'2':paixu2(head);break;
 default:printf("輸入有誤!\n");break;
 }
}
void chazhao1(lianxiren*head)
{if(head==NULL)
{
 printf("電話簿為空,請(qǐng)重新創(chuàng)建");
 return;
}
char name[10];
printf("請(qǐng)輸入名字:");gets(name);
while(strcmp(name,head->name)!=0)
{head=head->next;
if(head==NULL){printf("電話簿未有此聯(lián)系人\n");
return;}
}
printf("%s的電話號(hào)碼為:",name);
puts(head->number);
printf("\n工作單位:");puts(head->job);
printf("\nE-mail:");puts(head->email);
}//通過名字查找
void chazhao2(lianxiren*head)
{if(head==NULL)
{
 printf("電話簿為空,請(qǐng)重新創(chuàng)建");
 return;
}
char number[20];
printf("請(qǐng)輸入電話號(hào)碼:");gets(number);
while(strcmp(number,head->number)!=0)
{head=head->next;
if(head==NULL){printf("電話簿未有此聯(lián)系人\n");
return;}
}
printf("%s的主人為:",number);
puts(head->name);
printf("\n工作單位:");puts(head->job);
printf("\nE-mail:");puts(head->email);
}//通過電話號(hào)碼查找
void chazhao(lianxiren*head)
{
 int n;
 printf("  1,通過名字查找\n  2,通過電話號(hào)碼查找\n  3,退出\n請(qǐng)選擇你需要的服務(wù):");
  scanf("%d",&n);
 getchar();
 while(1)
 {
 switch(n){
 case 1:{chazhao1(head);printf("請(qǐng)選擇服務(wù)項(xiàng):");scanf("%d",&n);getchar();}break;
 case 2:{chazhao2(head);printf("請(qǐng)選擇服務(wù)項(xiàng):");scanf("%d",&n);getchar();}break;
 case 3:return;break;
 default:{printf("輸入不正確!");printf("請(qǐng)選擇服務(wù)項(xiàng):");scanf("%d",&n);getchar();}break;
 }}
}//查找聯(lián)系人
void add_list(lianxiren*head)
{
  lianxiren*p1,*p2,*h;
 char name[10];
 printf("請(qǐng)輸入名字(名字為0時(shí)停止)");
 gets(name);
 if(strcmp(name,"0")!=0)
 {
 p1=(lianxiren*)malloc(LEN);
 strcpy(p1->name,name);
 printf("請(qǐng)輸入電話號(hào)碼:");gets(p1->number);
 printf("請(qǐng)輸入工作單位:");gets(p1->job);
 printf("請(qǐng)輸入E-mail:");gets(p1->email);
 }
 else return;
 h=p1;
  while(1)
 {
 p2=p1;
 printf("請(qǐng)輸入名字(名字為0時(shí)停止)");
 gets(name);
 if(strcmp(name,"0")==0)break;
 else{
  p1=(lianxiren*)malloc(LEN);
  strcpy(p1->name,name);
  printf("請(qǐng)輸入電話號(hào)碼:");gets(p1->number);
  printf("請(qǐng)輸入工作單位:");gets(p1->job);
  printf("請(qǐng)輸入E-mail:");gets(p1->email);
  p2->next=p1;
 }
 }
  p1=head->next;
 head->next=h;
  p2->next=p1;
}//添加鏈表函數(shù)
lianxiren*xiugai_list(lianxiren*head)
{
 char a[20];
 printf("請(qǐng)輸入聯(lián)系人名字或電話:");
 gets(a);
 if(head==NULL)
 {
 printf("電話簿為空,請(qǐng)重新創(chuàng)建");
 return head;
 }
 lianxiren*p=head;
 while(strcmp(a,p->name)!=0&&strcmp(a,p->number)!=0)
 {
 p=p->next;
 if(p==NULL){printf("電話簿未有此聯(lián)系人\n");
 return head;}
 }
 printf("查找到了!");
 printf("\n名字:");puts(p->name);
 printf("\n電話號(hào)碼:");puts(p->number);
 printf("\n工作單位:");puts(p->job);
 printf("\nE-mail:");puts(p->email);
 putchar('\n');
 int n;
 while(1)
 {printf("請(qǐng)選擇操作項(xiàng)(1,名字2,電話號(hào)碼3,工作單位4,E-mail 5,退出):");
 scanf("%d",&n);
 getchar();
 switch(n)
 {
  case 1:{printf("請(qǐng)輸入名字:");gets(p->name);}break;
 case 2:{printf("請(qǐng)輸入電話號(hào)碼:");gets(p->number);}break;
 case 3:{printf("請(qǐng)輸入工作單位:");gets(p->job);}break;
 case 4:{printf("請(qǐng)輸入E-mail:");gets(p->email);}break;
  case 5:return head;break;
 default:printf("輸入錯(cuò)誤!");break;
 }
 }
}//修改鏈表函數(shù)
lianxiren*delete_list(lianxiren*head)
{
 char a[20];
 printf("請(qǐng)輸入聯(lián)系人名字或電話:");
 gets(a);
 if(head==NULL)
 {
 printf("電話簿為空,請(qǐng)重新創(chuàng)建");
 return head;
 }
 lianxiren*p=head,*p1;
 while(strcmp(a,p->name)!=0&&strcmp(a,p->number)!=0)
 {
 p1=p;
 p=p->next;
 if(p==NULL){printf("電話簿未有此聯(lián)系人\n");
 return head;}
 }
 printf("查找到了!");
 printf("\n名字:");puts(p->name);
 printf("\n電話號(hào)碼:");puts(p->number);
 printf("\n工作單位:");puts(p->job);
 printf("\nE-mail:");puts(p->email);
 putchar('\n');
 char n;
 printf("是否刪除該聯(lián)系人(Y/N)");
 n=getchar();
 switch(n)
 {
  case 'y':
 case 'Y':{if(p==head){head=p->next;free(p);}else{p1->next=p->next;free(p);}printf("成功刪除!");}break;
 case 'N':
 case 'n':printf("取消刪除!");break;
 default:printf("輸入錯(cuò)誤!");break;
 }
 return head;
}//刪除鏈表函數(shù)
void save_list(lianxiren*head)
{FILE *fp;
if((fp=fopen("dianhuabu.dat","wb"))==NULL) {
 printf("File cannot be opened\n");
 exit(0);}
if(head==NULL)
{
 printf("通訊錄為空\n");
 return;
}
lianxiren*p1=head;
while(p1!=NULL)
{
 if(fwrite(p1,LEN,1,fp)!=1){
 printf("cannot open file\n");
 return;}
 p1=p1->next;
}
printf("保存完畢!\n");
fclose(fp);
}//文件寫入函數(shù)
lianxiren*load_list(lianxiren*head)
{FILE *fp;
if((fp=fopen("dianhuabu.dat","rb"))==NULL) {
 printf("電話簿為空,請(qǐng)重新創(chuàng)建\n");
 exit(0);}
lianxiren*p1,*p2;
p1=(lianxiren*)malloc(LEN);
if(fread(p1,LEN,1,fp)==0)
{printf("電話簿為空,請(qǐng)重新創(chuàng)建");
return head;
}
head=p1;
p2=p1;
p1=(lianxiren*)malloc(LEN);
while(fread(p1,LEN,1,fp))
{
 p2->next=p1;
 p2=p1;
 p1=(lianxiren*)malloc(LEN);
}
p2->next=NULL;
free(p1);
return(head);
fclose(fp);
}//文件讀取函數(shù)
int kouling()
{
 char s[20];
 printf("請(qǐng)輸入口令:");
 int n=0;
 while(n<3)
 {scanf("%s",s);
 getchar();
 if(strcmp(s,"20160390527")==0)
 return 0;
 else{n++;
 if(n==3){
 printf("抱歉,輸入錯(cuò)誤\n");
 return 1;}
 printf("口令錯(cuò)誤,請(qǐng)重新輸入\n");
 }
 }return 1;
}//口令驗(yàn)證,密碼為:20160390527
void caidan()
{
 printf("      歡迎進(jìn)入電話簿系統(tǒng)      \n");
 printf("********************************************\n");
  printf("    1、創(chuàng)建電話簿(會(huì)將原有電話簿覆蓋)\n");
 printf("    2、查找聯(lián)系人        \n");
 printf("    3、添加聯(lián)系人        \n");
 printf("    4、修改聯(lián)系人        \n");
 printf("    5、刪除聯(lián)系人        \n");
  printf("    6、查看電話簿(排序)     \n");
 printf("    7、退出系統(tǒng)         \n");
 printf("********************************************\n");
}//菜單界面
void main()
{
 if(kouling()) return;//口令驗(yàn)證
 system("cls");
 caidan();//進(jìn)入菜單界面
 printf("     請(qǐng)選擇你所需要的服務(wù):");
 int n;scanf("%d",&n);
 getchar();
 lianxiren*head;
 while(1){
 system("cls");
    caidan();
 switch(n){
 case 1:{
  head=creat_list();
  system("cls");
  caidan();
  print_list(head);
  save_list(head);
  shifang_list(head);
  printf("********************************************\n");
  printf("\n如需要其他服務(wù),請(qǐng)重新輸入:");
  scanf("%d",&n);
  getchar();}break;//創(chuàng)建電話簿(創(chuàng)建鏈表、寫入文件,釋放鏈表)
 case 2:{
  head=load_list(head);
  chazhao(head);
  shifang_list(head);
  printf("********************************************\n");
  printf("\n如需要其他服務(wù),請(qǐng)重新輸入:");
  scanf("%d",&n);
  getchar();}break;//查找聯(lián)系人(讀入文件、查找函數(shù)、釋放鏈表)
 case 3:{
  head=load_list(head);
  add_list(head);
  system("cls");
  caidan();
  print_list(head);
  save_list(head);
  shifang_list(head);
  printf("********************************************\n");
  printf("\n如需要其他服務(wù),請(qǐng)重新輸入:");
  scanf("%d",&n);
  getchar();}break;//添加聯(lián)系人(讀入文件、添加鏈表、寫入文件、釋放鏈表)
 case 4:{
  head=load_list(head);
  head=xiugai_list(head);
  save_list(head);
  shifang_list(head);
  printf("********************************************\n");
  printf("\n如需要其他服務(wù),請(qǐng)重新輸入:");
  scanf("%d",&n);
  getchar();}break;//修改聯(lián)系人(讀入文件,修改鏈表、寫入文件、釋放鏈表)
 case 5:{
  head=load_list(head);
  head=delete_list(head);
  save_list(head);
  shifang_list(head);
  printf("********************************************\n");
  printf("\n如需要其他服務(wù),請(qǐng)重新輸入:");
  scanf("%d",&n);
  getchar();}break;//刪除聯(lián)系人(讀入文件,刪除鏈表、寫入文件、釋放鏈表)
 case 6:{
  head=load_list(head);
      paixu_list(head);
  shifang_list(head);
  printf("********************************************\n");
  printf("\n如需要其他服務(wù),請(qǐng)重新輸入:");
  scanf("%d",&n);
  getchar();}break;//查看電話簿(讀入文件,排序鏈表、釋放鏈表)
 case 7:{
  system("cls");
  return;}break;//退出
 default:{
  printf("\n輸入有誤,請(qǐng)重新輸入:");
  scanf("%d",&n);
  getchar();}break;
 }}
}

更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開發(fā)》。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 對(duì)C語言中指針的理解與其基礎(chǔ)使用實(shí)例

    對(duì)C語言中指針的理解與其基礎(chǔ)使用實(shí)例

    這篇文章主要介紹了對(duì)C語言中指針的理解與其基礎(chǔ)使用實(shí)例,文中援引了知乎熱門問題"為什么說指針是 C 語言的精髓?"中的精彩回答,需要的朋友可以參考下
    2016-03-03
  • C語言實(shí)現(xiàn)計(jì)算器的兩種方法

    C語言實(shí)現(xiàn)計(jì)算器的兩種方法

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)計(jì)算器的兩種方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • c++連接mysql5.6的出錯(cuò)問題總結(jié)

    c++連接mysql5.6的出錯(cuò)問題總結(jié)

    下面小編就為大家?guī)硪黄猚++連接mysql5.6的出錯(cuò)問題總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-12-12
  • C語言零基礎(chǔ)入門(2)

    C語言零基礎(chǔ)入門(2)

    這篇文章主要為大家詳細(xì)介紹了C語言零基礎(chǔ)入門的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++寬字符與普通字符的轉(zhuǎn)換實(shí)例詳解

    C++寬字符與普通字符的轉(zhuǎn)換實(shí)例詳解

    這篇文章主要介紹了C++寬字符與普通字符的轉(zhuǎn)換實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C語言實(shí)現(xiàn)輸出1000以內(nèi)的所有完全數(shù)

    C語言實(shí)現(xiàn)輸出1000以內(nèi)的所有完全數(shù)

    這篇文章主要介紹了C語言實(shí)現(xiàn)輸出1000以內(nèi)的所有完全數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 詳解C語言gets()函數(shù)與它的替代者fgets()函數(shù)

    詳解C語言gets()函數(shù)與它的替代者fgets()函數(shù)

    這篇文章主要介紹了詳解C語言gets()函數(shù)與它的替代者fgets()函數(shù)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • C++ STL關(guān)聯(lián)式容器自定義排序規(guī)則的2種方法

    C++ STL關(guān)聯(lián)式容器自定義排序規(guī)則的2種方法

    這篇文章主要介紹了C++ STL關(guān)聯(lián)式容器自定義排序規(guī)則的2種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C++中register關(guān)鍵字舉例詳解

    C++中register關(guān)鍵字舉例詳解

    register用來聲明變量,然后聲明出來的變量是直接放在cpu的寄存器當(dāng)中,而非就是通過內(nèi)存尋址訪問,這樣效率更高,下面這篇文章主要給大家介紹了關(guān)于C++中register關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 詳解C/C++中const限定符總結(jié)

    詳解C/C++中const限定符總結(jié)

    const是一種限定符,被const所限定的變量其值不可以被改變。。這篇文章主要介紹了C/C++中const限定符總結(jié),通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

景谷| 胶南市| 寿宁县| 东方市| 农安县| 上林县| 普兰县| 疏附县| 桐庐县| 昭苏县| 阜城县| 唐海县| 上栗县| 留坝县| 峨边| 万全县| 土默特左旗| 安宁市| 玉田县| 新津县| 加查县| 鹤岗市| 涞水县| 宜君县| 桓台县| 治多县| 武宣县| 井冈山市| 安溪县| 甘德县| 云安县| 贵港市| 新沂市| 东城区| 敦煌市| 永修县| 搜索| 乡城县| 隆尧县| 建阳市| 韩城市|