當前位置:首頁 » 課程大全 » 通訊錄管理課程設計報告

通訊錄管理課程設計報告

發布時間: 2021-02-03 23:48:37

⑴ 求vb「通訊錄管理」課程設計實驗報告

有需要可以給我發郵件:[email protected]

⑵ 誰有通訊錄管理系統的課程設計報告啊 謝謝了~~~

//chuangyong 頭文件模塊 chuangyong.h

const int MaxLen=200; //最多可存放200個聯系人信息

char fName[20]="tel.dat";//磁碟文件:通信錄文件名
int Len; //全局變數,通信錄中當前聯系人總數

//1. 通訊錄數據結構設計
typedef struct Telephone
{
char name[20]; //姓名
int group;//群組:1.朋友 2.同事 3.家人 4.其他
char home[15];//住宅電話
char mobile[15];//手機
char email[20];//Email
char add[20];//地址
char memo[20];//備注
}Tel;

//指針數組結構,排序時用
typedef struct index
{
int len; //數組長度
Tel *tel[MaxLen]; //指針數組,
}Index;

//顯示模塊 xuanshi.cpp
void List(Tel tel[],Index lianxren); //按lianxren中指針數組的排序方式顯示所有聯系人。
void dayingbiaotou(void); //列印表頭
void dayingbiaowei(void);//列印表尾
void PrintOne(Tel r,int i); //僅列印一個聯系人r的信息,序號為i
void Print(Tel r); //列印表頭及一個聯系人的信息
void huanyin();//歡迎界面
int Menu(void); //主菜單,顯示第一級菜單:查看通信錄(1)、更新通信錄(2)、備份通信錄(3)、退出(0)。
int Menu2(void); //更新通信錄子菜單,顯示:新增聯系人(21)、編輯聯系人(22)、刪除聯系人(23)、返回主菜單(20)。

//文件處理模塊 wenjiancl.cpp
void New(Tel tel[],Index *lianxren); //新增聯系人。加到數組中第一個空著的位置。之後需要重新排序
void Edit(Tel tel[],Index *lianxren); //編輯聯系人。需要重新排序
void Delete(Tel tel[],Index *lianxren); // 刪除聯系人。邏輯刪除,僅將姓名賦空串。刪除後需要重新排序
void Input(Tel *r,Tel tel[],int menu); //輸入一個聯系人的信息,由menu識別:是新增(11)還是修改(13)
int chongcha(char *name,Tel tel[],char *orignal);//查重。在新增聯或編輯系人前,檢查是否有重名的情況。

int Select(); //選擇聯系人序號,避免出錯
int Load(Tel tel[],Index *lianxren); //讀取。將通信錄文件fName讀入內存。排序
int Save(Tel tel[]); //保存。將通信錄以fName(全局變數)為名保存到磁碟。此時做物理刪除:姓名為空串的聯系人表示已刪除,不存入通信錄文件。
int Copy(void); //備份通信錄。復制通信錄文件。

void pingypaix(Tel tel[],Index *lianxren); //按音序排序。
void xuanzpaixi(Index *p); //對指針數組選擇排序

//主文件模塊 zhuwenjian.cpp
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

#include "chuangyong.h"
#include "xuanshi.cpp"
#include "wenjiancl.cpp"

int main()
{
huanyin();

int select=0;

Tel tel[MaxLen]; //最多存放200個聯系人
Index lianxren;//按音序排序的指針數組

Load(tel,&lianxren); //從通信錄文件讀取信息

//循環顯示菜單,供用戶選擇
do{
if(select<10 || select==20)//選的是主菜單項<10,或由子菜單返回20。接著顯示主菜單
select=Menu();
else if(select>20 && select<30)//選的是子菜單2的項,繼續顯示子菜單2
select=Menu2();

switch(select)
{
case 1://按音序查看通信錄
List(tel,lianxren);

printf("\n\n\t按任意鍵繼續... ...");
getch(); //等待用戶看清屏幕,conio.h
break;

case 21: //新增聯系人
New(tel,&lianxren);
break;
case 22: //編輯聯系人
Edit(tel,&lianxren);
break;
case 23: //刪除聯系人
Delete(tel,&lianxren);
break;
case 20: //返回主菜單
break;

case 3: //備份通信錄
system("cls"); //沒有子菜單,先清除上一級菜單,stdlib.h
Save(tel); //用戶可能更新過,先保存當前tel到通信錄文件
Copy();
break;

case 0: //退出程序
break;
}
}while(select!=0);

Save(tel); //退出系統前,將內存數據存入通信錄文件

return 0;
}

//xuanshi.cpp 菜單模塊。與程序其他模塊獨立。通過返回的菜單代碼與操作對應

// 歡迎部分
void huanyin()
{
char A[100]={"歡迎使用本通訊錄 本程序由 飛堯 編寫 o(∩_∩)o...!回車進入!"};
int i,j,k;
for(i=0;i<6;i++)
{
printf("\n");
}
puts(" ******************************************************\n");
printf("\t\t");

for(i=0;A[i]!='\0';i++)
{
if(i==49)printf("\n\n\t\t\t");
printf("%c",A[i]);
for(j=0;j<10000;j++)
for(k=0;k<2000;k++)
;
}

puts("\n\n\n\t\t\t 07計科C班 王崇堯");
puts("\n ******************************************************\a");
getch();
}

//主菜單,顯示第一級菜單:查看通信錄(1)、更新通信錄(2)、備份通信錄(3)、退出(0)。
int Menu(void)
{

int i;
char menu;

do{

system("cls"); //清屏,stdlib.h
for(i=0;i<6;i++)
{
printf("\n");
}
puts("\n **********主菜單*********");
puts(" * *");
puts(" * 1. 查看通信錄 *");
puts(" * 2. 更新通信錄 *");
puts(" * 3. 備份通信錄 *");
puts(" * 0. 退出程序 *");
puts(" * *");
puts(" *************************\n");
printf("\t 請選擇:");
menu = getche();

switch( menu )
{
case '0':
puts("\n\n\t退出程序!");
menu=menu-'0';
break; // 跳出循環
case '1':
case '3':
menu=menu-'0';
break;
case '2':
menu=Menu2();
break;
default:
puts("\n\n\t選擇錯誤!");
menu='9';
}
}while(menu=='9');//要返回菜單代碼,'0'、'1'、20,21,22,23、'3'都是有效值

return menu;
}

//更新通信錄子菜單,顯示:新增聯系人(21)、編輯聯系人(22)、刪除聯系人(23)、返回(20)。
int Menu2()
{
char menu;
int i;
do{
system("cls"); //清屏,stdlib.h
for(i=0;i<6;i++)
{
printf("\n");
}
puts("\n ********更新通信錄*******");
puts(" * *");
puts(" * 1. 新增聯系人 *");
puts(" * 2. 編輯聯系人 *");
puts(" * 3. 刪除聯系人 *");
puts(" * 0. 返回主菜單 *");
puts(" * *");
puts(" *************************\n");
printf("\t 請選擇:");
menu = getche(); //輸入一個字元,不回顯,不需要敲入回車,conio.h

switch( menu )
{
case '0':
puts("\n\n\t返回主菜單!");
break;// 跳出循環
case '1':
case '2':
case '3':
break;
default:
puts("\n\n\t選擇錯誤!");
menu='9';
}
}while(menu=='9'); //要返回菜單代碼,'0'、'1'、'2'、'3'都是有效值

return 20+menu-'0';
}

//瀏覽部分

void List(Tel tel[],Index lianxren) //按lianxren的排序方式顯示所有結點。
{
int i; //i:數組下標

if(Len==0)
{
printf("\n\t沒有聯系人");
return ;
}

dayingbiaotou();

for(i=0; i<Len; i++) //按音序遍歷所有聯系人,序號為i+1
PrintOne( *(lianxren.tel[i]), i+1);

dayingbiaowei();
}

void dayingbiaotou(void) //列印表頭
{
printf("\n\n\t通信錄 * 聯系人");
printf("\n\t----------------------------------------------------------------------");

printf("\n\t%-10s%-6s%-10s%-10s", "姓名", "群組", "住宅電話", "手機");
printf("%-10s%-10s%-10s", "Email", "地址", "備注");

printf("\n\t----------------------------------------------------------------------");

}

void dayingbiaowei(void)//列印表尾
{
printf("\n\t----------------------------------------------------------------------\n");
}

void PrintOne(Tel r,int i) //僅列印一個聯系人r的信息,序號為i
{
if(i!=0) //聯系人前加序號
printf("\n%6d\t%-10s",i,r.name);
else //聯系人前不加序號
printf("\n\t%-10s",r.name);

//群組:1.朋友 2.同事 3.家人 4.其他
switch(r.group)
{
case 1:
printf("%-6s","朋友");
break;
case 2:
printf("%-6s","同事");
break;
case 3:
printf("%-6s","家人");
break;
default:
printf("%-6s","其他");
}

printf("%-10s%-10s%-10s", r.home , r.mobile , r.email);
printf("%-10s%-10s",r.add , r.memo );
}

void Print(Tel r) //列印表頭及一個聯系人的信息
{
dayingbiaotou();
PrintOne(r,0);//只列印一人,不輸出序號(第二個參數為0)
dayingbiaowei();
}

//文件處理模塊 wenjiancl.cpp

//文件處理部分
int Load(Tel tel[],Index *lianxren) //讀取。將通信錄文件fName讀入內存。排序
{
FILE *fin;
int i=0;

fin=fopen(fName,"rb");
if(!fin)
{
printf("\n\t通信錄不存在,請先新增聯系人!\n\n按任意鍵繼續... ...");
getch();

return 0;
}

while(1)
{
fread(&tel[i],sizeof(Tel),1,fin);
if(feof(fin))
break;
i++;
}

fclose(fin);
Len=i;//更新通信錄總人數
pingypaix(tel,lianxren); //按音序排序

return i;
}

int Save(Tel tel[]) //保存。將通信錄以fName(全局變數)為名保存到磁碟。此時做物理刪除:姓名為空串的聯系人表示已刪除,不存入通信錄文件。
{
FILE* fout;
int i,j;//i:tel數組的下標,j:通信錄中實際人數計數(不含tel中name為空的元素)

fout=fopen(fName,"wb");
if(!fout)
{
printf("\n\t不能正確保存通信錄!按任意鍵繼續... ...");
getch();

return 0;
}

//i為tel數組下標,j為實際人數計數(tel數組中有已邏輯刪除的聯系人,姓名為空串)
for(i=0,j=0; j<Len; )
{
//找到一個有效的聯系人,排出邏輯刪除者(姓名為空串)
while( strcmp(tel[i].name,"") == 0 )
i++;

fwrite(&tel[i],sizeof(Tel),1,fout);
i++;
j++;
}
fclose(fout);

return j;
}

int Copy(void) //備份通信錄。復制通信錄文件。
{
FILE *fout,*fin;
Tel *p=(Tel*)malloc(sizeof(Tel)); //存放從通信錄讀入的臨時數據
char name[20];

fin=fopen(fName,"rb");
if(!fin)
{
printf("\n\t沒有聯系人!");
return 0;
}

do{
printf("\n\t請輸入備份文件名:");
scanf("%s",name);
strcat(name,".bak");
fout=fopen(name,"wb");
if(!fout)
printf("\t無效文件名或路徑!\n");
}while(!fout);

while(1)
{
fread(p,sizeof(Tel),1,fin);
if(feof(fin))
break;
fwrite(p,sizeof(Tel),1,fout);
}

printf("\n\t備份成功!");
free(p);
return 1;

}

//基本操作部分

void New(Tel tel[],Index *lianxren) //新增聯系人。加到數組中第一個空著的位置。之後需要重新排序
{
int t=0; //找到tel中第一個空的位置,存放新輸入的聯系人
if(Len>=MaxLen)
{
printf("\n\n\t通信錄已滿!");
return ;
}

//找到tel中第一個空的位置t
while( strcmp(tel[t].name,"")!=0 )
t++;

Input(&tel[t],tel,21);//新增聯系人(21),輸入聯系人信息
Len++; //聯系人增1

pingypaix(tel,lianxren);//重新排序
}

void Edit(Tel tel[],Index *lianxren) //編輯聯系人。需要重新排序
{
int i;

List(tel,*lianxren);//按音序排序的順序修改

if(Len==0) return ;

i=Select();
Print( *(lianxren->tel[i]) ); //顯示用戶選中的聯系人i

Input( lianxren->tel[i] ,tel,23); //編輯(23)時輸入聯系人信息

pingypaix(tel,lianxren); //重新排序
}

void Delete(Tel tel[],Index *lianxren) // 刪除聯系人。邏輯刪除,僅將姓名賦空串。刪除後需要重新排序
{
int i;
char select; //用戶選擇:是否繼續輸入除姓名以外的信息

List(tel,*lianxren);//按音序排序的順序刪除

if(Len==0) return ;

i=Select();
Print( *(lianxren->tel[i]) );//顯示用戶選中的聯系人i

printf("\n\t確定要刪除此人?(y/n)");
select=getche();
if(select=='Y' || select=='y')
{
strcpy(lianxren->tel[i]->name,"");//刪除聯系人信息(邏輯刪除):將姓名賦空串,表示無人
Len--; //聯系人減1
pingypaix(tel,lianxren);//重新排序
}

}

void Input(Tel *r,Tel tel[],int menu) //輸入一個聯系人的信息,由們menu識別:是新增(11)還是修改(13)
{
int select;
char name[20],orignal[20];

if(menu==21)//新增,原來沒名字
strcpy(orignal,"");
else //編輯,原來有名字
strcpy(orignal,r->name );

printf("\n\n\t請輸入聯系人姓名:");
do{
scanf("%s", name);
}while(chongcha(name,tel,orignal)); //重名檢查。修改時,可以與原來的姓名相同
strcpy(r->name,name);

printf("\t是否繼續輸入(y/n)?");
select=getche();
if(select=='y' || select=='Y')
{
//群組
printf("\n\t群組(1.朋友 2.同事 3.家人 4.其他),請輸入序號:");
scanf("%d",& (r->group));
while( r->group<1 ||r->group>4)
{
printf("\n\t輸入錯誤!請重新輸入群組序號(1.朋友 2.同事 3.家人 4.其他):");
scanf("%d",& (r->group));
}

printf("\t住宅電話:");
scanf("%s",r->home );
printf("\t手機:");
scanf("%s",r->mobile );
printf("\tEmail:");
scanf("%s",r->email );
printf("\t地址:");
scanf("%s",r->add);
printf("\t備註:");
scanf("%s",r->memo );
}
else if(menu==21) //新增聯系人(menu=21)時,用戶未輸入,設置預設值
{
r->group=4; //預設群組:其他
strcpy(r->home , "");
strcpy(r->mobile , "");
strcpy(r->email , "");
strcpy(r->add , "");
strcpy(r->memo , "");
}
}

int chongcha(char *name,Tel tel[],char *original)//查重。在新增或編輯聯系人前,檢查是否有重名的情況。
{
int i,j; //i:數組下標 j: 除姓名為空串以外的實際人數
int p=0; //重名標志:1 重名,0沒有重名

if(strcmp(name,original)!=0)//name不是原來的名字,
for(i=0,j=0; j<Len; ) //遍歷所有聯系人
{
//找到一個有效的聯系人,排出邏輯刪除者(姓名為空串)
while( strcmp(tel[i].name,"") == 0 )
i++;

if( strcmp(name,tel[i].name)==0 ) //name不是原來的名字,但與通信錄中名字重復
{
p=1;
printf("\n\t重名!請重新輸入:");
break;
}

i++;
j++;
}

return p;
}

int Select() //選擇聯系人序號,避免出錯
{
int i=0;
int c; //c: scanf()輸入的返回值,輸入成功,返回1;否則,返回0

printf("\n\t請按序號選擇聯系人:");
c=scanf("%d",&i);

while(i<1 || i>Len)
{
printf("\n\t輸入錯誤!請按序號選擇聯系人:");
if(c==0) fflush(stdin); //輸入不成功,清空與輸入流stdin有關的輸入緩沖區的內容,stdio.h
c=scanf("%d",&i);
}

return i-1;
}

//排序部分
void pingypaix(Tel tel[],Index *lianxren) //按音序排序。
{
int i,j; //i:數組下標 j: 除姓名為空串以外的實際人數

if( Len==0 )
return ;

//初始化排序指針數組
lianxren->len=0;
for(i=0,j=0; j<Len; )
{
//找到一個有效的聯系人,排出邏輯刪除者(姓名為空串)
while( strcmp(tel[i].name,"") == 0 )
i++;

lianxren->tel[j]=&tel[i];
j++;
i++;
lianxren->len++;
}

//選擇排序
xuanzpaixi( lianxren );
}

void xuanzpaixi(Index *p) //對指針數組選擇排序
{
int i,j,n=p->len;
int min;
Tel *temp;

if( n==0 ) return ;//沒有聯系人,不需要排序

//選擇排序
for(i=0; i<n-1; i++)
{
//找最小元素
min=i;
for(j=i+1; j<n; j++)
{
if(strcmp( p->tel[j]->name , p->tel[min]->name )<0)
min=j;

}

//交換 最小元素min,當前無序序列第一個元素i
if(min!=i)
{
temp=p->tel[i];
p->tel[i]=p->tel[min];
p->tel[min]=temp;
}
}//end of for i
}

⑶ 急求一份C語言課程設計報告,通訊錄管理系統,急急急急!!!!

C語言課程設計報告:http://wenku..com/view/d5723f36eefdc8d376ee325f.html

C語言通訊錄管理系統:http://wenku..com/view/13c5f96a1eb91a37f1115c8b.html

⑷ 通訊錄管理和設計報告

代碼如下

#include <stdio.h>
#include <stdlib.h>
void dis_mainframe();//主頁面
void show_txl();
void insert_txl();
void search_txl();
void del_txl();
#define SIZE 10
struct record
{
char name[10];
char telphone[11];
char addr[30];
}rec[SIZE];
void main()
{
int sel_num;
dis_mainframe();
do
{
scanf("%d",&sel_num);
switch(sel_num)
{
case 1:printf("通訊錄內容:\n");
show_txl();
break;
case 2:printf("請添加姓名 電話 地址\n");
insert_txl();
break;
case 3:printf("請輸入查找的姓名\n");
search_txl();
break;
case 4:printf("請輸入刪除的姓名\n");
del_txl();
break;
default:printf("input erro");
}
} while(1);
}
void dis_mainframe()
{
printf("通訊錄\n");
printf("\n\n");
printf("1.查看通訊錄\n");
printf("2.添加記錄\n");
printf("3.按姓名查找\n");
printf("4.刪除記錄\n");
printf("\n按1查看,按2添加,按3查找,按4刪除....\n");
}
void show_txl()
{
FILE *fp;
int i;

if ((fp=fopen("e:\\set up\\txl.txt","rb"))!=NULL)
{
for(i=0;i<3;i++)
fread(&rec[i],sizeof(rec[i]),1,fp);
}

for(i=0;i<3;i++)
printf("%s,%s,%s",rec[i].name,rec[i].telphone,rec[i].addr);
fclose(fp);
}
void insert_txl()
{
int i;
FILE *fp;
for (i=0;i<3;i++)
{
scanf("%s%s%s",&rec[i].name,&rec[i].telphone,&rec[i].addr);
}
if ((fp=fopen("e:\\set up\\txl.txt",

"wb"))!=NULL)
{
for(i=0;i<3;i++)
fwrite(&rec[i],sizeof(rec[i]),1,fp);
}
else
{
printf("can''t open file");
exit(0);
}
fclose(fp);
exit(0);

}
void search_txl()
{

}
void del_txl()
{

}

⑸ 通訊錄管理系統課程設計

你要什麼語言的?C C++ java ...
還有具體的功能要求呢

⑹ 通訊錄管理 C語言課程設計

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct record
{
char id[10];
char name[20];
char phone[20];
char adress[40];
char postcode[10];
char e_mail[30];
}student[500];
int num=0;//外部變數num為文件中的紀錄數
FILE *fp;
void mainmenu();//主菜單
void newrecord();//新添紀錄
void searchmenu();//查詢菜單
void searchbyid();//按學號查詢
void searchbyname();//按姓名查詢
void searchbyphone();//按電話查詢
void deletemenu();//刪除菜單
void deleteall();//刪除所有
void deleteone();//刪除單個
void showall();//顯示所有
void readfromfile();//讀取文件
void writetofile();//寫入文件
void deletebyid();//按學號刪除
void deletebyname();//按姓名刪除
void listbyid();//按學號排序
void listbyname();//按姓名排序
void listmenu();//排序菜單
void main()
{
readfromfile();
while (1)
{
mainmenu();
}
}
void readfromfile()//從文件導入
{
if((fp=fopen("student.bin","rb"))==NULL)
{
printf("\n\t\t通訊錄文件不存在");
if ((fp=fopen("student.bin","wb"))==NULL)
{
printf("\n\t\t建立失敗");
exit(0);
}
else
{
printf("\n\t\t通訊錄文件已建立");
printf("\n\t\t按任意鍵進入主菜單");
getch();
return;
}
exit(0);
}
fseek(fp,0,2); /*文件位置指針移動到文件末尾*/
if (ftell(fp)>0) /*文件不為空*/
{
rewind(fp); /*文件位置指針移動到文件開始位置*/
for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++);
printf("\n\t\t文件導入成功");
printf("\n\t\t按任意鍵返回主菜單");
getch();
return;
}
printf("\n\t\t文件導入成功");
printf("\n\t\t通訊錄文件中無任何紀錄");
printf("\n\t\t按任意鍵返回主菜單");
getch();
return;
}
void mainmenu()//主菜單
{
char choic;
system("cls");
printf("\n\t\t******************** 主菜單 ********************");
printf("\n\t\t*********** 1-新添紀錄 2-查詢菜單 ************");
printf("\n\t\t*********** 3-刪除菜單 4-記錄排序 ************");
printf("\n\t\t*********** 5-保存退出 6-不保存退出***********");
printf("\n\t\t************************************************");
printf("\n\t\t請選擇:");
choic=getch();
switch (choic)
{
case '1':newrecord();break;
case '2':searchmenu();break;
case '3':deletemenu();break;
case '4':listmenu();break;
case '5':writetofile();break;
case '6':exit(0);
default:mainmenu();
}
}
void searchmenu()//查詢菜單
{
char choic;
system("cls");
printf("\n\t\t******************* 查詢菜單 *******************");
printf("\n\t\t********** 1-顯示所有 2-按學號查詢 ************");
printf("\n\t\t********** 3-按姓名查詢4-按電話查詢 ************");
printf("\n\t\t********** 5-返回主菜單 ************");
printf("\n\t\t************************************************");
printf("\n\t\t請選擇:");
choic=getch();
switch (choic)
{
case '1':showall();break;
case '2':searchbyid();break;
case '3':searchbyname();break;
case '4':searchbyphone();break;
case '5':mainmenu();break;
}
}
void deletemenu()//刪除菜單
{
char choic;
if(num==0)
{
printf("\n\t\t對不起,文件中無任何紀錄");
printf("\n\t\t按任意鍵返回主菜單");
getch();
return;
}
system("cls");
printf("\n\t\t******************* 刪除菜單 *******************");
printf("\n\t\t*********** 1-刪除所有 2-刪除單個 ***********");
printf("\n\t\t*********** 3-返回主菜單 ***********");
printf("\n\t\t************************************************");
printf("\n\t\t請選擇:");
choic=getch();
switch (choic)
{
case '1':deleteall();break;
case '2':deleteone();break;
case '3':mainmenu();break;
default:mainmenu();break;
}
}
void deleteall()//刪除所有
{
printf("\n\t\t確認刪除?(y/n)");
if (getch()=='y')
{
fclose(fp);
if ((fp=fopen("student.bin","wb"))==NULL)
{
printf("\n\t\t不能打開文件,刪除失敗");
readfromfile();
}
num=0;
printf("\n\t\t紀錄已刪除,按任意鍵返回主菜單");
getch();
return;
}
else
return;
}
void deletebyname()//按姓名刪除
{
int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name[20];
printf("\n\t\t請輸入要刪除學生姓名:");
scanf("%s",name);
for (i=a;i<num;i++)
{
if (strcmp(student[i].name,name)==NULL)
{
printf("\n\t\t以下是您要刪除的學生紀錄:");
findmark++;
printf("\n\t\t________________________________");
printf("\n\t\t學號: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t電話: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\te-mail:%s",student[i].e_mail);
printf("\n\t\t________________________________");
printf("\n\t\t是否刪除?(y/n)");
if (getch()=='y')
{
for (j=i;j<num-1;j++) /*紀錄移動,從stud數組中刪除之*/
student[j]=student[j+1];
num--;
deletemark++;
printf("\n\t\t刪除成功");
if((i+1)<num)
{
printf("\n\t\t是否繼續刪除相同姓名的同學信息?(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
printf("\n\t\t是否繼續刪除?(y/n)");
if (getch()=='y')
deletebyname();
return;
}
if((i+1)<num)
{
printf("\n\t\t是否繼續刪除相同姓名的同學信息?(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
}
else
continue;
}
if ((deletemark==0)&&(findmark==0))
{
printf("\n\t\t沒有該同學的紀錄");
printf("\n\t\t是否繼續刪除?(y/n)");
if (getch()=='y')
deletebyid();
return;
return;
}
else if (findmark!=0)
{
printf("\n\t\t沒有重名信息");
printf("\n\t\t沒有該同學的紀錄");
printf("\n\t\t是否繼續刪除?(y/n)");
if (getch()=='y')
deletebyid();
return;
return;
}
}
void deletebyid()//按學號刪除
{
int i,j;
int deletemark=0;
char id[20];
printf("\n\t\t請輸入要刪除學生學號:");
scanf("%s",id);
if(num==0)
{
printf("\n\t\t對不起,文件中無任何紀錄");
printf("\n\t\t按任意鍵返回主菜單");
getch();
return;
}
for (i=0;i<num;i++)
{
if (strcmp(student[i].id,id)==NULL)
{
printf("\n\t\t以下是您要刪除的學生紀錄:");
printf("\n\t\t學號: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t電話: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\te-mail:%s",student[i].e_mail);
printf("\n\t\t是否刪除?(y/n)");
if (getch()=='y')
{
for (j=i;j<num-1;j++) /*紀錄移動,從stud數組中刪除之*/
student[j]=student[j+1];
num--;
deletemark++;
printf("\n\t\t刪除成功");
printf("\n\t\t是否繼續刪除?(y/n)");
if (getch()=='y')
deletebyid();
return;
}
else
return;
}
continue;

}
if (deletemark==0)
{
printf("\n\t\t沒有該同學的紀錄");
printf("\n\t\t是否繼續刪除?(y/n)");
if (getch()=='y')
deletebyid();
return;
}
}
void newrecord()//添加紀錄
{
printf("\n\t\t**************** 請輸入學生信息 ****************\n");
printf("\n\t\t輸入學號:");
scanf("%s",&student[num].id);
printf("\n\t\t輸入姓名:");
scanf("%s",&student[num].name);
printf("\n\t\t輸入電話號碼:");

scanf("%s",&student[num].phone);
printf("\n\t\t輸入地址:");
scanf("%s",&student[num].adress);
printf("\n\t\t輸入郵編:");
scanf("%s",&student[num].postcode);
printf("\n\t\t輸入e-mail:");
scanf("%s",&student[num].e_mail);
num++;
printf("\n\t\t是否繼續添加?(Y/N):");
if (getch()=='y')
newrecord();
return;
}
void showall()//顯示所有
{
int i;
system("cls");
if(num!=0)
{
printf("\n\t\t*************** 以下為通訊錄所有信息************");
for (i=0;i<num;i++)
{
printf("\n\t\t學號: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t電話: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\t郵編: %s",student[i].postcode);
printf("\n\t\te-mail:%s",student[i].e_mail);

printf("\t\t");
if (i+1<num)
{
printf("\n\t\t__________________________");
system("pause");
}
}
printf("\n\t\t************************************************");
}
else
printf("\n\t\t通訊錄中無任何紀錄");
printf("\n\t\t按任意鍵返回主菜單:");
getch();
return;
}

//按電話查詢
void searchbyphone()
{
int mark=0;
int i;
int a=0;
printf("\n\t\t****************** 按電話查找 ******************");
char phone[10];
printf("\n\t\t請輸入學號:");
scanf("%s",phone);
for(i=0;i<num;i++)
{
if (strcmp(student[i].phone,phone)==0)
{
printf("\n\t\t************** 以下是您查找的學生信息 **********");
printf("\n\t\t學號: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t電話: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\te-mail:%s",student[i].e_mail);
printf("\n\t\t************************************************");
printf("\n\t\t按任意鍵返回主菜單:");
mark++;
getch();
return;
}
}
if (mark==0)
{
printf("\n\t\t沒有改學生的信息");
printf("\n\t\t按任意鍵返回主菜單");
getch();
return;
}
}
void searchbyname()//按姓名查詢
{
int mark=0;
int i;
int a=0;
printf("\n\t\t***************** 按姓名查找 *******************");
char name[20];
printf("\n\t\t請輸入姓名:");
scanf("%s",name);
for(i=a;i<num;i++)
{
if (strcmp(student[i].name,name)==0)
{
printf("\n\t\t************* 以下是您查找的學生信息 ***********");
printf("\n\t\t學號: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t電話: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\te-mail:%s",student[i].e_mail);
printf("\n\t\t************************************************");
mark++;
if ((i+1)<num)
{
printf("\n\t\t是否繼續查找相同名字的學生信息:(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
else
return;
}
else
{
printf("\n\t\t按任意鍵返回主菜單");
getch();
return;
}
}
}
if(mark!=0)
{
printf("\n\t\t沒有相同姓名的學生紀錄");
printf("\n\t\t按任意鍵返回主菜單");
getch();
return;
}
else
{
printf("\n\t\t沒有相同姓名的學生紀錄");
printf("\n\t\t按任意鍵返回主菜單");
getch();
return;
}
}
void searchbyid()//按學號查詢
{
int mark=0;
int i;
int a=0;
printf("\n\t\t****************** 按學號查找 ******************\n");
char id[10];
printf("\n\t\t請輸入學號:");
scanf("%s",id);
for(i=0;i<num;i++)
{
if (strcmp(student[i].id,id)==0)
{
printf("\n\t\t************** 以下是您查找的學生信息 **********");
printf("\n\t\t學號: %s",student[i].id);
printf("\n\t\t姓名: %s",student[i].name);
printf("\n\t\t電話: %s",student[i].phone);
printf("\n\t\t地址: %s",student[i].adress);
printf("\n\t\te-mail:%s",student[i].e_mail);
printf("\n\t\t************************************************");
printf("\n\t\t按任意鍵返回主菜單:");
mark++;
getch();
return;
}

}
if (mark==0)
{
printf("\n\t\t沒有改學生的信息");
printf("\n\t\t按任意鍵返回主菜單");
getch();
return;
}
}
void writetofile()//寫入文件
{
int i;
if ((fp=fopen("student.bin","wb"))==NULL)
{
printf("\n\t\t文件打開失敗");
}
for (i=0;i<num;i++)
{
if (fwrite(&student[i],sizeof(struct record),1,fp)!=1)
{
printf("\n\t\t寫入文件錯誤!\n");
}
}
fclose(fp);
printf("\n\t\t通訊錄文件已保存");
printf("\n\t\t按任意鍵退出程序\n\t\t");
exit(0);

}
void deleteone()//刪除單個
{
char choic;
printf("\n\t\t1-按學號刪除 2-按姓名刪除");
printf("\n\t\t請選擇:");
choic=getch();
switch (choic)
{
case '1':deletebyid();break;
case '2':deletebyname();break;
}
}
void listbyname()//按姓名排序
{
int i,j;
struct record tmp;
for (i=1;i<num;i++)
{
if(strcmp(student[i].name,student[i-1].name)<0)
{
tmp=student[i];
j=i-1;
do
{
student[j+1]=student[j];
j--;
}while ((strcmp(tmp.name,student[j].name)<0&&j>=0));
student[j+1]=tmp;
}
}
printf("\n\t\t排序成功,是否顯示?(y/n)");
if (getch()=='y')
showall();
return;
}
void listbyid()//按學號排序
{
int i,j;
struct record tmp;
for (i=1;i<num;i++)
{
if(strcmp(student[i].id,student[i-1].id)<0)
{
tmp=student[i];
j=i-1;
do
{
student[j+1]=student[j];
j--;
}while ((strcmp(tmp.id,student[j].id)<0)&&j>=0);
student[j+1]=tmp;
}
}
printf("\n\t\t排序成功,是否顯示?(y/n)");
if (getch()=='y')
showall();
return;
}
void listmenu()//排序菜單
{
char choic;
if(num==0)
{
printf("\n\t\t對不起,文件中無任何紀錄");
printf("\n\t\t按任意鍵返回主菜單");
getch();
return;
}
system("cls");
printf("\n\t\t******************* 排序菜單 *******************");
printf("\n\t\t********** 1-按學號排序 2-按姓名排序 **********");
printf("\n\t\t********** 3-返回主菜單 **********");
printf("\n\t\t************************************************");
printf("\n\t\t請選擇:");
choic=getch();
switch(choic)
{
case '1':listbyid();break;
case '2':listbyname();break;
case '3':mainmenu();break;
default:mainmenu();break;
}
}

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919