當前位置:編程學習大全網 - 編程語言 - C語言的畢業設計,哪位高手幫下忙.以淚感激

C語言的畢業設計,哪位高手幫下忙.以淚感激

這是我的通訊錄課程設計,妳可以移花接木

妳自己改改

<br>

<br>本程序是在VC 6.0編譯環境下編輯通過,只有壹個文件,由於本人的課程設計報告已經交到老師那裏,原版遺失,所以對本程序沒有更加詳細的解釋,請有意者自己認真閱讀,內容如下:

<br>

<br> #include <stdio.h>

<br>#include <malloc.h>

<br>#include <string.h>

<br>#include <stdlib.h>

<br>#define NULL 0

<br>#define LEN sizeof(struct txlproject)

<br>int n;

<br>struct txlproject

<br>{

<br>char name[30];

<br>char work[30];

<br>char handset[30];

<br>char email[30];

<br>struct txlproject *next;

<br>};

<br>struct txlproject *shifang(struct txlproject *head); // 釋放內存函數聲明

<br>/////////////// 創建函數 /////////////////////////

<br>struct txlproject *creat(void)

<br>{

<br>struct txlproject *head,*p1,*p2;

<br>char name[20];

<br>n=0;

<br>p1=(struct txlproject *)malloc(LEN);

<br>p2=p1;

<br>printf("請輸入通訊錄的內容!\n姓名輸入為0時表示創建完畢!\n");

<br>printf("請輸入姓名:"); gets(name);

<br>if(strcmp(name,"0")!=0)

<br>{

<br> strcpy(p1->name,name);

<br> printf("請輸入職業:"); gets(p1->work);

<br> printf("請輸入手機:"); gets(p1->handset);

<br> printf("請輸入電子郵件:"); gets(p1->email);

<br> head=NULL;

<br> while(1)

<br> {

<br> n=n+1;

<br> if(n==1)

<br> head=p1;

<br> else

<br> p2->next=p1;

<br> p2=p1;

<br> printf("請輸入姓名:"); gets(name);

<br> if(strcmp(name,"0")==0)

<br> {

<br> break;

<br> }

<br> else

<br> {

<br> p1=(struct txlproject *)malloc(LEN);

<br> strcpy(p1->name,name);

<br> printf("請輸入職業:"); gets(p1->work);

<br> printf("請輸入手機:"); gets(p1->handset);

<br> printf("請輸入電子郵件:"); gets(p1->email);

<br> }

<br> }

<br> p2->next=NULL;

<br> return(head);

<br>}

<br>else

<br>{

<br> return 0;

<br>}

<br>}

<br>///////////////// 輸出函數 ///////////////////

<br>void print(struct txlproject *head)

<br>{

<br>struct txlproject *p;

<br>if(head!=NULL)

<br>{

<br> p=head;

<br> printf("本通訊錄現在***有%d人:\n",n);

<br> printf("---姓名----職業----手機----Email--\n");

<br> printf("==================================\n");

<br> do

<br> {

<br> printf("== %s",p->name); printf(" ");

<br> printf("%s",p->work); printf(" ");

<br> printf("%s",p->handset); printf(" ");

<br> printf("%s",p->email); printf(" \n");

<br> p=p->next;

<br> }while(p!=NULL);

<br> printf("==================================\n");

<br>}

<br>else

<br> printf("通訊錄為空,無法輸出!\n");

<br>}

<br>//////////////// 刪除函數 /////////////////////

<br>struct txlproject *delet(struct txlproject *head)

<br>{

<br>struct txlproject *p1,*p2;

<br>char name[30];

<br>if(head==NULL)

<br>{

<br> printf("通訊錄為空,無法刪除!\n");

<br> return(head);

<br>}

<br> printf("請輸入要刪除的名字:");

<br>gets(name);

<br>p1=head;

<br>while((strcmp(p1->name,name))!=0&&p1->next!=NULL)

<br>{

<br> p2=p1;

<br> p1=p1->next;

<br>}

<br>if(strcmp(p1->name,name)==0)

<br>{

<br> if(p1==head)

<br> {

<br> head=p1->next;

<br> }

<br> else

<br> {

<br> p2->next=p1->next;

<br> }

<br> printf("已成功刪除:%s\n",name);

<br> free(p1);

<br> n=n-1;

<br>}

<br>else

<br>{

<br> printf("%s不存在本通訊錄中!\n",name);

<br>}

<br>return(head);

<br>}

<br>//////////////////// 增加函數 /////////////////////////

<br>struct txlproject *insert(struct txlproject *head)

<br>{

<br>struct txlproject *p0,*p1,*p2;

<br>char name[20];

<br>p1=head;

<br>printf("請輸入增加的內容:\n");

<br>printf("請輸入姓名:"); gets(name);

<br>if(strcmp(name,"0")==0)

<br>{

<br> printf("姓名不能為0,增加失敗!\n");

<br> return(head);

<br>}

<br>else

<br>{

<br> p0=(struct txlproject *)malloc(LEN);

<br> strcpy(p0->name,name);

<br> printf("請輸入職業:"); gets(p0->work);

<br> printf("請輸入手機:"); gets(p0->handset);

<br> printf("請輸入電子郵件:"); gets(p0->email);

<br> n=n+1;

<br> if(head==NULL)

<br> {

<br> head=p0;

<br> p0->next=NULL;

<br> return(head);

<br> }

<br> else

<br> {

<br> while(strcmp(p0->name,p1->name)>0&&(p1->next!=NULL))

<br> {

<br> p2=p1;

<br> p1=p1->next;

<br> }

<br> if(strcmp(p0->name,p1->name)<0||strcmp(p0->name,p1->name)==0)

<br> {

<br> if(head==p1)

<br> {

<br> head=p0;

<br> }

<br> else

<br> {

<br> p2->next=p0;

<br> }

<br> p0->next=p1;

<br> }

<br> else

<br> {

<br> p1->next=p0;

<br> p0->next=NULL;

<br> }

<br> return(head);

<br> }

<br>}

<br>}

<br>//////////////// 顯示函數 /////////////////////

<br>struct txlproject *xianshi(struct txlproject *head)

<br>{

<br>struct txlproject *p1,*p2;

<br>char name[30];

<br>int m;

<br>if(head==NULL)

<br>{

<br> printf("通訊錄為空,無法顯示!\n");

<br> return(head);

<br>}

<br>p1=head;

<br>m=0;

<br>printf("請輸入需要顯示人的姓名:");

<br>gets(name);

<br>while(p1!=NULL)

<br>{

<br> while((strcmp(p1->name,name))!=0&&p1->next!=NULL)

<br> {

<br> p2=p1;

<br> p1=p1->next;

<br> }

<br> if(strcmp(p1->name,name)==0)

<br> {

<br> m++;

<br> printf("%s的通訊內容如下:\n",name);

<br> printf("---姓名----職業----手機----Email--\n");

<br> printf("==================================\n");

<br> printf("== %s",p1->name);printf(" ");

<br> printf("%s",p1->work);printf(" ");

<br> printf("%s",p1->handset);printf(" ");

<br> printf("%s",p1->email);printf(" \n");

<br> printf("==================================\n");

<br> }

<br> p1=p1->next;

<br>}

<br> if(m==0)

<br>{

<br> printf("此人未在本通訊錄中!\n");

<br>}

<br>return(head);

<br>}

<br>/////////////// 修改函數 ////////////////////

<br>struct txlproject *xiugai(struct txlproject *head)

<br>{

<br>struct txlproject *p1,*p2;

<br>char num[10];

<br>char name[30];

<br>char name1[30];

<br>char work[30];

<br>char handset[30];

<br>char email[30];

<br>if(head==NULL)

<br>{

<br> printf("通訊錄為空,無法修改!\n");

<br> return(head);

<br>}

<br>printf("請輸入需要修改的姓名:");

<br>gets(name);

<br>p1=head;

<br>while((strcmp(p1->name,name))!=0&&p1->next!=NULL)

<br>{

<br> p2=p1;

<br> p1=p1->next;

<br>}

<br>if(strcmp(p1->name,name)==0)

<br>{

<br> printf("請選擇修改的內容:\n");

<br> printf("**********************\n");

<br> printf("** 1 姓名 **\n");

<br> printf("** 2 職業 **\n");

<br> printf("** 3 手機 **\n");

<br> printf("** 4 Email **\n");

<br> printf("** 5 全部修改 **\n");

<br> printf("**********************\n");

<br> printf("請輸入您的選擇:");

<br> gets(num);

<br> switch(*num)

<br> {

<br> case '1':

<br> printf("請重新輸入姓名:");

<br> gets(name1);

<br> strcpy(p1->name,name1);

<br> break;

<br> case '2':

<br> printf("請重新輸入職業:");

<br> gets(work);

<br> strcpy(p1->work,work);

<br> break;

<br> case '3':

<br> printf("請重新輸入手機:");

<br> gets(handset);

<br> strcpy(p1->handset,handset);

<br> break;

<br> case '4':

<br> printf("請重新輸入Email:");

<br> gets(email);

<br> strcpy(p1->email,email);

<br> break;

<br> case '5':

<br> printf("請重新輸入姓名:"); gets(name1); strcpy(p1->name,name1);

<br> printf("請重新輸入職業:"); gets(work); strcpy(p1->work,work);

<br> printf("請重新輸入手機:"); gets(handset); strcpy(p1->handset,handset);

<br> printf("請重新輸入Email:"); gets(email); strcpy(p1->email,email);

<br> break;

<br> default:

<br> printf("操作錯誤,此項不存在!\n");

<br> break;

<br> }

<br>}

<br>else

<br>{

<br> printf("此人未在本通訊錄中!\n");

<br>}

<br>return(head);

<br>}

<br>/////////////// 排序函數 /////////////////////

<br>struct txlproject *paixu(struct txlproject *head)

<br>{

<br>struct txlproject *p1,*p2;

<br>int i,j;

<br>struct txlproject1

<br>{

<br> char name[30];

<br> char work[30];

<br> char handset[30];

<br> char email[30];

<br>};

<br>struct txlproject1 px[200];

<br>struct txlproject1 temp;

<br>if(head==NULL)

<br>{

<br> printf("通訊錄為空,無法排序!\n");

<br> return(head);

<br>}

<br>p1=head;

<br>for(i=0;i<n,p1!=NULL;i++)

<br>{

<br> strcpy(px[i].name,p1->name);

<br> strcpy(px[i].work,p1->work);

<br> strcpy(px[i].handset,p1->handset);

<br> strcpy(px[i].email,p1->email);

<br> p2=p1;

<br> p1=p1->next;

<br>}

<br> head=shifang(head);

<br>for(j=0;j<n-1;j++)

<br>{

<br> for(i=j+1;i<n;i++)

<br> {

<br> if(strcmp(px[i].name,px[j].name)<0)

<br> {

<br> temp=px[i];

<br> px[i]=px[j];

<br> px[j]=temp;

<br> }

<br> }

<br>}

<br>p1=(struct txlproject *)malloc(LEN);

<br>p2=p1;

<br>strcpy(p1->name,px[0].name);

<br>strcpy(p1->work,px[0].work);

<br>strcpy(p1->handset,px[0].handset);

<br>strcpy(p1->email,px[0].email);

<br>head=p1;

<br>for(i=1;i<n;i++)

<br>{

<br> p1=(struct txlproject *)malloc(LEN);

<br> strcpy(p1->name,px[i].name);

<br> strcpy(p1->work,px[i].work);

<br> strcpy(p1->handset,px[i].handset);

<br> strcpy(p1->email,px[i].email);

<br> p2->next=p1;

<br> p2=p1;

<br>}

<br>p2->next=NULL;

<br>printf("按姓名排序後為:\n");

<br>print(head);

<br>return(head);

<br>}

<br>///////////// 分類查找函數 /////////////////////

<br>struct txlproject *chazhao(struct txlproject *head)

<br>{

<br> struct txlproject *p1,*p2;

<br>char num[10];

<br>int m;

<br>char name[30];

<br>char work[30];

<br>char handset[30];

<br>char email[30];

<br>if(head==NULL)

<br>{

<br> printf("通訊錄為空,無法分類查找!\n");

<br> return(head);

<br>}

<br>p1=head;

<br>printf("請選擇您需要分類查找的類別:\n");

<br>printf("********************\n");

<br>printf("** 1 姓名 **\n");

<br>printf("** 2 職業 **\n");

<br>printf("** 3 手機 **\n");

<br>printf("** 4 Email **\n");

<br>printf("********************\n");

<br>printf("請輸入您的選擇:");

<br>m=0;

<br>gets(num);

<br> switch(*num)

<br>{

<br>case '1':

<br> printf("請輸入需要查找的姓名:");

<br> gets(name);

<br> while(p1!=NULL)

<br> {

<br> while(strcmp(p1->name,name)!=0&&p1->next!=NULL)

<br> {

<br> p2=p1;

<br> p1=p1->next;

<br> }

<br> if(strcmp(p1->name,name)==0)

<br> {

<br> m++;

<br> printf("妳查找的內容是:\n");

<br> printf("+++++++++++++++++++++++++++++++++++\n");

<br> printf("++ %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email);

<br> printf("+++++++++++++++++++++++++++++++++++\n");

<br> }

<br> p1=p1->next;

<br> }

<br> if(m==0)

<br> {

<br> printf("此人未在本通訊錄中!\n");

<br> }

<br> break;

<br>case '2':

<br> printf("請輸入需要查找的職業:");

<br> gets(work);

<br> while(p1!=NULL)

<br> {

<br> while((strcmp(p1->work,work))!=0&&p1->next!=NULL)

<br> {

<br> p2=p1;

<br> p1=p1->next;

<br> }

<br> if(strcmp(p1->work,work)==0)

<br> {

<br> m++;

<br> printf("妳查找的內容是:\n");

<br> printf("+++++++++++++++++++++++++++++++++++\n");

<br> printf("++ %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email);

<br> printf("+++++++++++++++++++++++++++++++++++\n");

<br> }

<br> p1=p1->next;

<br> }

<br> if(m==0)

<br> {

<br> printf("此職業未在本通訊錄中!\n");

<br> }

<br> break;

<br>case '3':

<br> printf("請輸入需要查找的手機號:");

<br> gets(handset);

<br> while(p1!=NULL)

<br> {

<br> while((strcmp(p1->handset,handset))!=0&&p1->next!=NULL)

<br> {

<br> p2=p1;

<br> p1=p1->next;

<br> }

<br> if(strcmp(p1->handset,handset)==0)

<br> {

<br> m++;

<br> printf("妳查找的內容是:\n");

<br> printf("+++++++++++++++++++++++++++++++++++\n");

<br> printf("++ %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email);

<br> printf("+++++++++++++++++++++++++++++++++++\n");

<br> }

<br> p1=p1->next;

<br> }

<br> if(m==0)

<br> {

<br> printf("此手機號未在本通訊錄中!\n");

<br> }

<br> break;

<br>case '4':

<br> printf("請輸入需要查找的Email:");

<br> gets(email);

<br> while(p1!=NULL)

<br> {

<br> while((strcmp(p1->email,email))!=0&&p1->next!=NULL)

<br> {

<br> p2=p1;

<br> p1=p1->next;

<br> }

<br> if(strcmp(p1->email,email)==0)

<br> {

<br> m++;

<br> printf("妳查找的內容是:\n");

<br> printf("+++++++++++++++++++++++++++++++++++\n");

<br> printf("++ %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email);

<br> printf("+++++++++++++++++++++++++++++++++++\n");

<br> }

<br> p1=p1->next;

<br> }

<br> if(m==0)

<br> {

<br> printf("此Email未在本通訊錄中!\n");

<br> }

<br> break;

<br>default:

<br> printf("操作錯誤,此項不存在!\n");

<br> break;

<br>}

<br>return(head);

<br>}

<br>///////////// 釋放內存函數 /////////////////

<br>struct txlproject *shifang(struct txlproject *head)

<br>{

<br>struct txlproject *p1;

<br>while(head!=NULL)

<br>{

<br> p1=head;

<br> head=head->next;

<br> free(p1);

<br>}

<br>return(head);

<br>}

<br>///////////// 文件寫入函數 ////////////////////

<br>void save(struct txlproject *head)

<br>{

<br>FILE *fp;

<br>struct txlproject *p1;

<br>char tong[30];

<br>if(head==NULL)

<br>{

<br> printf("通訊錄為空,無法存儲!\n");

<br> return;

<br>}

<br>printf("請輸入保存後的文件名:");

<br>gets(tong);

<br>fp=fopen("(tong).txt","w");

<br>if(fp==NULL)

<br>{

<br> printf("cannot open file\n");

<br> return;

<br>}

<br>p1=head;

<br>fprintf(fp,"姓名 職業 手機 Email\n");

<br>for(;p1!=NULL;)

<br>{

<br> fprintf(fp,"%s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email);

<br> p1=p1->next;

<br>}

<br>printf("保存完畢!\n");

<br>fclose(fp);

<br>}

<br>//////////////// 文件讀出函數 ////////////////////

<br>struct txlproject *load(struct txlproject *head)

<br>{

<br>FILE *fp;

<br>char tong[30];

<br>struct txlproject *p1,*p2;

<br>printf("請輸入要輸出的文件名:");

<br>gets(tong);

<br>fp=fopen("(tong).txt","r");

<br>if(fp==NULL)

<br>{

<br> printf("此通訊錄名不存在,無法輸出!\n");

<br> return(head);

<br>}

<br>else

<br>{

<br> head=shifang(head);

<br>}

<br>p1=(struct txlproject *)malloc(LEN);

<br>fscanf(fp,"%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email);

<br>if(feof(fp)!=0)

<br>{

<br> printf("文件為空,無法打開!\n");

<br> return(head);

<br>}

<br>else

<br>{

<br> rewind(fp);

<br> p2=p1;

<br> head=p1;

<br> n=0;

<br> while(feof(fp)==0)

<br> {

<br> fscanf(fp,"%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email);

<br> if(feof(fp)!=0)

<br> break;

<br> p2->next=p1;

<br> p2=p1;

<br> p1=(struct txlproject *)malloc(LEN);

<br> n=n+1;

<br> }

<br> p2->next=NULL;

<br> p1=head;

<br> head=head->next;

<br> n=n-1;

<br> free(p1);

<br> print(head);

<br> printf("打開完畢!\n");

<br> return(head);

<br>}

<br>fclose(fp);

<br>}

<br>///////////// 綜合操作函數 //////////////////////

<br>struct txlproject *zonghe(struct txlproject *head)

<br>{

<br>char num[10];

<br>while(1)

<br>{

<br> printf("*********************\n");

<br> printf("*** 1 分類查找 ****\n");

<br> printf("*** 2 單個顯示 ****\n");

<br> printf("*** 3 增加 ****\n");

<br> printf("*** 4 刪除 ****\n");

<br> printf("*** 5 修改 ****\n");

<br> printf("*** 6 退出 ****\n");

<br> printf("*********************\n");

<br> printf("請輸入您選擇的操作:");

<br> gets(num);

<br> switch(*num)

<br> {

<br> case '1':

<br> {

<br> head=chazhao(head); //分類查找

<br> print(head);

<br> }

<br> break;

<br> case '2':

<br> {

<br> head=xianshi(head); //顯示

<br> }

<br> break;

<br> case '3':

<br> {

<br> head=insert(head); //增加

<br> print(head);

<br> }

<br> break;

<br> case '4':

<br> {

<br> head=delet(head); //刪除

<br> print(head);

<br> }

<br> break;

<br> case '5':

<br> {

<br> head=xiugai(head); //修改

<br> print(head);

<br> }

<br> break;

<br> case '6':

<br> break;

<br> default:

<br> printf("操作錯誤,此項不存在!\n");

<br> break;

<br> }

<br> if(strcmp(num,"6")==0)

<br> break;

<br>}

<br>return(head);

<br>}

<br>//////////////// 主函數 ///////////////////////

<br>void main()

<br>{

<br>struct txlproject *head;

<br>head=NULL;

<br>char num[10];

<br>printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n");

<br>printf("*=* 程序說明 *=*\n");

<br>printf("*=* 請及時保存創建完畢的通訊錄內容! *=*\n");

<br>printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n");

<br>while(1)

<br>{

<br> printf("************************\n");

<br> printf("*** 1 創建通訊錄 ****\n");

<br> printf("*** 2 按名字排序 ****\n");

<br> printf("*** 3 綜合操作 ****\n");

<br> printf("*** 4 保存 ****\n");

<br> printf("*** 5 打開 ****\n");

<br> printf("*** 6 退出 ****\n");

<br> printf("************************\n");

<br> printf("請輸入您選擇的操作:");

<br> gets(num);

<br> switch(*num)

<br> {

<br> case '1':

<br> {

<br> if(head==NULL)

<br> {

<br> head=creat(); //創建

<br> print(head);

<br> }

<br> else

<br> {

<br> head=shifang(head);

<br> head=creat(); //重新創建

<br> print(head);

<br> }

<br> }

<br> break;

<br> case '2':

<br> {

<br> head=paixu(head); //排序

<br> }

<br> break;

<br> case '3':

<br> {

<br> head=zonghe(head); //綜合操作

<br> }

<br> break;

<br> case '4':

<br> {

<br> save(head); //文件保存

<br> print(head);

<br> }

<br> break;

<br> case '5':

<br> {

<br> head=load(head); //文件輸出

<br> }

<br> break;

<br> case '6':

<br> head=shifang(head);

<br> break;

<br> default:

<br> printf("操作錯誤,此項不存在!\n");

<br> break;

<br> }

<br> if(strcmp(num,"6")==0)

<br> break;

<br>}

<br>}

<br>

<br>妳自己改改

  • 上一篇:C語言編程中生成隨機數的初級教程
  • 下一篇:qq平臺上cs出現”應用程序錯誤”貌似是網絡設置問題
  • copyright 2024編程學習大全網