當前位置:編程學習大全網 - 源碼下載 - 學生通訊信息包括:序號、姓名、班級、手機號、E-mail號、宿舍號等

學生通訊信息包括:序號、姓名、班級、手機號、E-mail號、宿舍號等

說明:保存程序源代碼時,必須以.C為後綴名.

詳細的程序代碼如下:(給出了詳細的解釋,本程序在VC6.0或TC2.0都編譯通過)

#include<stdio.h>

#include<conio.h>

#include<malloc.h>

#include<string.h>

#include<process.h>

typedef struct student

{

char sequenceNumber[10];/*序號*/

char name[20];/*姓名*/

char classNumber[20];/*班級*/

char telephone[20];/*手機號*/

char E_mail[20];/*Email*/

char dormitoryNumber[10];/*宿舍號*/

struct student *next;

}student;

student *headLink;/*鏈表表頭指針*/

/*以下是函數聲明*/

void DesplayMenu(void);

void CreateHeadLink(void);

student *MallocNode(void);

void GetInformation(student *t);

void OutputInformation(void);

void classNumberBytelephone(void);

void DesplayInfoBysequenceNumber(void);

void DesplayOneNode(student *t);

void InsertOneNode(student *t);

void DeleteNodeBysequenceNumber(void);

void DesplayInfoByName(void);

int choose;/*用於接受用戶的選擇*/

/*主函數*/

void main()

{

CreateHeadLink();

DesplayMenu();

}

/************************************

函數功能:顯示菜單,根據用戶的輸入

完成相應的功能

************************************/

void DesplayMenu(void)

{

student *p;

printf("\n-------請選擇相應功能-------------\n\n");

printf("| 1 顯示所有學生信息 |\n");

printf("| 2 按學生序號高到低排序 |\n");

printf("| 3 根據學生序號查詢學生的信息 |\n");

printf("| 4 根據學生姓名查詢學生的信息 |\n");

printf("| 5 增加壹個學生 |\n");

printf("| 6 刪除某壹學生 |\n");

printf("| 7 退出 |\n\n");

scanf("%d",&choose);/*取得用戶的選擇*/

switch(choose)

{

case 1:

OutputInformation();

break;

case 2:

classNumberBytelephone();

break;

case 3:

DesplayInfoBysequenceNumber();

break;

case 4:

DesplayInfoByName();

break;

case 5:

p=MallocNode();/*先申請壹個新結點*/

GetInformation(p);/*要求用戶輸入信息到新結點中*/

InsertOneNode(p);/*將新結點加到鏈表中*/

break;

case 6:

DeleteNodeBysequenceNumber();

break;

case 7:

free(headLink);/*先釋放內存空間*/

exit(1);

break;

default:

break;

}

DesplayMenu();/*遞歸調用*/

}

/************************************

函數功能:建立鏈表表頭

************************************/

void CreateHeadLink(void)

{

student *p;

p=(student*)malloc(sizeof(student));

headLink=p;

p->next=NULL;

}

/************************************

函數功能:申請壹個新結點,並將其初始化

************************************/

student *MallocNode(void)

{

student *p;

int i;

p=(student*)malloc(sizeof(student));

if(p==NULL)

return NULL;

for(i=0;i<10;i++)

p->sequenceNumber[i]='\0';

for(i=0;i<20;i++)

p->classNumber[i]='\0';

for(i=0;i<20;i++)

p->name[i]='\0';

for(i=0;i<20;i++)

p->E_mail[i]='\0';

for(i=0;i<10;i++)

p->dormitoryNumber[i]='\0';

for(i=0;i<10;i++)

p->telephone[i]='\0';

p->next=NULL;

return p;

}

/************************************

函數功能:取得用戶輸入的學生信息

************************************/

void GetInformation(student *t)

{

printf("請輸入序號:\n");

scanf("%s",t->sequenceNumber);

printf("請輸入班級:\n");

scanf("%s",t->classNumber);

printf("請輸入姓名:\n");

scanf("%s",t->name);

printf("請輸入電話:\n");

scanf("%s",t->telephone);

printf("請輸入Email:\n");

scanf("%s",t->E_mail);

printf("請輸入宿舍號:\n");

scanf("%s",t->dormitoryNumber);

}

/************************************

函數功能:在鏈表的結尾處增加壹個結點

************************************/

void InsertOneNode(student *t)

{

student *p;

p=headLink;

while(p->next)

{

p=p->next;

}

p->next=t;

}

/************************************

函數功能:根據用戶輸入的序號顯示該序號學生的信息

************************************/

void DesplayInfoBysequenceNumber(void)

{

student *p;

char good[10];

char flag=0;

p=headLink->next;

if(p==NULL)

{

printf("對不起,現在沒有學生信息!\n");

return;

}

printf("請輸入序號:\n");

scanf("%s",good);

while(p)

{

if(strcmp(p->sequenceNumber,good)==0)

{

DesplayOneNode(p);

flag=1;

break;

}

p=p->next;

}

if(!flag)

printf("對不起,不存在序號為 %s 的學生\n",good);

}

/************************************

函數功能:根據用戶輸入的姓名顯示該學生的信息

************************************/

void DesplayInfoByName(void)

{

student *p;

char name[10];

char flag=0;

p=headLink->next;

printf("請輸入姓名:\n");

scanf("%s",name);

while(p)

{

if(strcmp(p->sequenceNumber,name)==0)

{

DesplayOneNode(p);

flag=1;

break;

}

p=p->next;

}

if(!flag)

printf("對不起,不存在姓名為 %s 的學生\n",name);

}

/************************************

函數功能:輸出壹個學生結點的信息

************************************/

void DesplayOneNode(student *t)

{

printf("%s\t",t->sequenceNumber);

printf("%s\t",t->classNumber);

printf("%s\t",t->name);

printf("%s\t",t->telephone);

printf("%s\t",t->E_mail);

printf("%s\t\n",t->dormitoryNumber);

}

/************************************

函數功能:根據用戶輸入的序號刪除該學生

************************************/

void DeleteNodeBysequenceNumber(void)

{

char good[10];

student *p,*q;

char flag=0;

printf("請輸入要刪除的學生序號:");

scanf("%s",good);

p=headLink;

q=headLink->next;

while(q)

{

if(strcmp(q->sequenceNumber,good)==0)

{

p->next=q->next;

free(q);

flag=1;

break;

}

p=p->next;

q=q->next;

}

if(!flag)

printf("不存在這學生\n");

}

/************************************

函數功能:顯示所有學生的信息

************************************/

void OutputInformation(void)

{

student *p;

p=headLink->next;

if(p==NULL)

{

printf("現在沒有學生信息,請先輸入學生\n\n");

return;

}

printf("序號\t班級\t姓名\t電話\t郵箱\t宿舍號\t\n");

while(p)

{

DesplayOneNode(p);

p=p->next;

}

}

/************************************

函數功能:根據用戶輸入的班級,按序號到低排序

************************************/

void classNumberBytelephone(void)

{

char classNumber[20];

student exchange,*r,*p,*q;

r=headLink->next;

if(r==NULL)

{

printf("現在還沒學生信息,請先輸入學生信息\n");

return;

}

printf("請輸入班級名:\n");

scanf("%s",classNumber);

while(r)/*兩層while循環實現排序*/

{

p=r;

q=r->next;

while(q)

{

if((strcmp(p->sequenceNumber,q->sequenceNumber)>0)/*序號大時才交換*/

&&(strcmp(p->classNumber,classNumber)==0)/*並且班級相同時才交換*/

&&(strcmp(q->classNumber,classNumber)==0))

{

strcpy(exchange.sequenceNumber,q->sequenceNumber);/*先復制q結點信息到exchange*/

strcpy(exchange.E_mail,q->E_mail);

strcpy(exchange.dormitoryNumber,q->dormitoryNumber);

strcpy(exchange.name,q->name);

strcpy(exchange.classNumber,q->classNumber);

strcpy(exchange.telephone,q->telephone);

strcpy(q->sequenceNumber,p->sequenceNumber);/*再復制p結點信息到q*/

strcpy(q->E_mail,p->E_mail);

strcpy(q->dormitoryNumber,p->dormitoryNumber);

strcpy(q->name,p->name);

strcpy(q->classNumber,p->classNumber);

strcpy(q->telephone,p->telephone);

strcpy(p->sequenceNumber,exchange.sequenceNumber);/*最後復制exchange結點信息到p*/

strcpy(p->E_mail,exchange.E_mail);

strcpy(p->dormitoryNumber,exchange.dormitoryNumber);

strcpy(p->name,exchange.name);

strcpy(p->classNumber,exchange.classNumber);

strcpy(p->telephone,exchange.telephone);

}

q=q->next;

}

r=r->next;

}

}

  • 上一篇:如何在ubuntu中安裝eclipse
  • 下一篇:斯諾克臺球怎麽控制球
  • copyright 2024編程學習大全網