當前位置:編程學習大全網 - 編程語言 - c語言編程問題 急!!!!

c語言編程問題 急!!!!

程序已經在c環境下調試成功了,可也有點小毛病,但是不影響調試,

#include <stdio.h>

#include<stdlib.h>

#include<string.h>

#include <conio.h>

#include<Ctime>

#include<Cstdlib>

#include<iostream>

using namespace std;

#define M 100 /*定義常數表示記錄數*/

struct record

{ char name[20];

char sex[2];

char age[2];

char phone[20];

char unit[40];

char post[20];

char address[40];

char e_mail[30];

}personl[M];

int num=0;

FILE *fp; //外部變量num為文件中的紀錄數

/******以下是函數原型*******/

void readfromfile(); //讀取文件

void enter();//輸入

void showall(); //顯示所有

void search();

void delet();

void add(); //插入

int mainmenu();

void searchbyunit(); //按單位查詢

void searchbyname(); //按姓名查詢

void searchbye_mail(); //按郵箱查詢

void deletemenu(); //刪除菜單

void deleteall();

void deletebyname(); //按姓名刪除

void deletebyunit() ; //按單位刪除

void deletebye_mail(); //按郵箱刪除

int suijishu();

void save(); //保存文件

/******主函數開始*******/

void main()

{

readfromfile();

while(1)

{

switch(mainmenu())

{

case 0:enter();break;

case 1:showall();break;

case 2:search();break;

case 3:delet();break;

case 4:add(); break;

case 5:save();break;

}

}

}

void readfromfile()//從文件導入

{

if((fp=fopen("personl.txt","rb"))==NULL)//無法打開只讀的文件

{

printf("\n\t\t通訊錄文件不存在");

if ((fp=fopen("personl.txt","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(&personl[num],sizeof(struct record),1,fp);num++);

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

printf("\n\t\t * Hello...... *");

printf("\n\t\t * 歡迎進入通訊錄 *");

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

printf("\n\t\t 按任意鍵進入菜單......\n\n");

getch();

return;

}

printf("\n\t\t文件導入成功");

printf("\n\t\t通訊錄文件中無任何紀錄");

printf("\n\t\t按任意鍵返回主菜單\n");

getch();

return;

}

int mainmenu()

{

int c;

printf("*****************菜單************\n");

printf("************ 0.輸入記錄**********\n");

printf("************ 1.顯示記錄**********\n");

printf("************ 2.查詢菜單**********\n");

printf("************ 3.刪除菜單**********\n");

printf("************ 4.添加記錄**********\n");

printf("************ 5.保存文件**********\n");

printf("*********************************\n");

printf("\n Enter you choice(0~5):");

while(1)

{

scanf("%d",&c);

if(c>=0&&c<6)

break;

else

printf("輸入錯誤,請重新輸入");

}

return c;

}

void enter() //輸入

{

printf("\n\t\t**************** 請輸入信息 ****************\n");

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

scanf("%s",&personl[num].name);

printf("\n\t\t輸入性別:");

scanf("%s",&personl[num].sex);

printf("\n\t\t輸入年齡:");

scanf("%s",&personl[num].age);

printf("\n\t\t輸入電話號碼:");

scanf("%s",&personl[num].phone);

printf("\n\t\t輸入單位:");

scanf("%s",&personl[num].unit);

printf("\n\t\t輸入職位:");

scanf("%s",&personl[num].post);

printf("\n\t\t輸入地址:");

scanf("%s",&personl[num].address);

printf("\n\t\t輸入e-mail:");

scanf("%s",&personl[num].e_mail);

num++;

printf("\n\t\t是否繼續添加?(Y/N):\n");

getchar();

if (getchar()=='y')

{ enter();

num++;

}

return;

if(getchar()=='n')

return;

}

void showall()

{

int i;

if(num!=0)

{

printf("\n\t\t*************** 以下為通訊錄所有信息************\n");

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

{

printf("\n\t\t姓名: %s",personl[i].name);

printf("\n\t\t性別: %s",personl[i].sex);

printf("\n\t\t年齡: %s",personl[i].age);

printf("\n\t\t電話: %s",personl[i].phone);

printf("\n\t\t單位: %s",personl[i].unit);

printf("\n\t\t職位: %s",personl[i].post);

printf("\n\t\t地址: %s",personl[i].address);

printf("\n\t\te-mail:%s",personl[i].e_mail);

printf("\t\t");

}

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

}

else

printf("\n\t\t通訊錄中無任何紀錄");

printf("\n\t\t按任意鍵返回主菜單:\n");

getch();

return;

}

void search() //查詢菜單//

{char choic;

if(num==0)

{

printf("\n\t\t對不起,文件中無任何紀錄");

printf("\n\t\t按任意鍵返回主菜單\n");

getch();

return;

}

else

{printf("\n\t\t******************* 查詢菜單 *******************");

printf("\n\t\t***********1-按姓名查詢 2-按單位查詢***********");

printf("\n\t\t***********3-按郵箱查詢 4-返回主菜單**********");

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

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

printf("\n Enter you choice(1~4):");

choic=getch();

switch(choic)

{

case '1':searchbyname();break;

case '2':searchbyunit();break;

case '3':searchbye_mail();break;

case '4':mainmenu();break;

default: search();break;

}

}

}

void searchbyname() //按姓名查詢//

{ int mark=0;

int i;

printf("\n\t\t***************** 按姓名查找 *******************");

char name[20];

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

scanf("%s",name);

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

{

if (strcmp(personl[i].name,name)==0)

{

printf("\n\t\t************* 以下是您查找的信息 ***********");

printf("\n\t\t姓名: %s",personl[i].name);

printf("\n\t\t性別: %s",personl[i].sex);

printf("\n\t\t年齡: %s",personl[i].age);

printf("\n\t\t電話: %s",personl[i].phone);

printf("\n\t\t單位: %s",personl[i].unit);

printf("\n\t\t職位: %s",personl[i].post);

printf("\n\t\t地址: %s",personl[i].address);

printf("\n\t\te-mail:%s",personl[i].e_mail);

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

mark++;

}

}

if(mark==0)

{

printf("\n\t\t通訊錄中無該姓名");

printf("\n\t\t按任意鍵返回主菜單:\n");

}

printf("\n\t\t是否繼續查找?(Y/N):\n");

getchar();

if (getchar()=='y')

searchbyname();

return;

if(getchar()=='n')

return;

}

void searchbyunit() //按單位查詢

{

int mark=0;

int i;

printf("\n\t\t****************** 按單位查找 ******************");

char unit[40];

printf("\n\t\t請輸入單位:");

scanf("%s",unit);

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

{

if (strcmp(personl[i].unit,unit)==0)

{

printf("\n\t\t************** 以下是您查找的信息 **********");

printf("\n\t\t姓名: %s",personl[i].name);

printf("\n\t\t性別: %s",personl[i].sex);

printf("\n\t\t年齡: %s",personl[i].age);

printf("\n\t\t電話: %s",personl[i].phone);

printf("\n\t\t單位: %s",personl[i].unit);

printf("\n\t\t職位: %s",personl[i].post);

printf("\n\t\t地址: %s",personl[i].address);

printf("\n\t\te-mail:%s",personl[i].e_mail);

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

mark++;

printf("\n\t\t是否繼續查找?(Y/N):\n");

getchar();

if (getchar()=='y')

searchbyunit();

return;

if(getchar()=='n')

return;

}

}

if (mark==0)

{

printf("\n\t\t沒有該信息");

printf("\n\t\t按任意鍵返回主菜單\n");

getch();

return;

}

}

void searchbye_mail() //按郵箱查詢

{

int mark=0;

int i;

printf("\n\t\t****************** 按郵箱查找 ******************");

char e_mail[40];

printf("\n\t\t請輸入郵箱:");

scanf("%s",e_mail);

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

{

if (strcmp(personl[i].e_mail,e_mail)==0)

{

printf("\n\t\t************** 以下是您查找的信息 **********");

printf("\n\t\t姓名: %s",personl[i].name);

printf("\n\t\t性別: %s",personl[i].sex);

printf("\n\t\t年齡: %s",personl[i].age);

printf("\n\t\t電話: %s",personl[i].phone);

printf("\n\t\t單位: %s",personl[i].unit);

printf("\n\t\t職位: %s",personl[i].post);

printf("\n\t\t地址: %s",personl[i].address);

printf("\n\t\te-mail:%s",personl[i].e_mail);

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

mark++;

printf("\n\t\t是否繼續查找?(Y/N):\n");

getchar();

if (getchar()=='y')

searchbye_mail();

return;

if(getchar()=='n')

return;

}

}

if (mark==0)

{

printf("\n\t\t沒有該信息");

printf("\n\t\t按任意鍵返回主菜單\n");

getch();

return;

}

}

void delet()//刪除菜單

{

char choic;

if(num==0)

{

printf("\n\t\t對不起,文件中無任何紀錄");

printf("\n\t\t按任意鍵返回主菜單");

getch();

return;

}

else

{

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 Enter you choice(1~5):\n");

choic=getch();

switch(choic)

{

case '1':deleteall();break;

case '2':deletebyunit();break;

case '3':deletebyname();break;

case '4':deletebye_mail();break;

case '5':mainmenu();break;

default: delet();break;

}

}

}

void deleteall()//刪除所有

{

printf("\n\t\t確認刪除?(y/n)\n");

getchar();

if (getchar()=='y')

{

fclose(fp);

if ((fp=fopen("personl.txt","wb"))==NULL)

{

printf("\n\t\t不能打開文件,刪除失敗");

readfromfile();

}

num=0;

printf("\n\t\t紀錄已刪除,按任意鍵返回主菜單");

getch();

return;

}

else

delet();

}

void deletebyname()//按姓名刪除

{

int i,j;

int deletemark=0;

char name[20];

printf("\n\t\t請輸入要刪除姓名:");

scanf("%s",name);

if(num==0)

{

printf("\n\t\t對不起,文件中無任何紀錄");

printf("\n\t\t按任意鍵返回主菜單");

getch();

return;

}

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

{

if (strcmp(personl[i].name,name)==0)

{

printf("\n\t\t以下是您要刪除的紀錄:");

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

printf("\n\t\t姓名: %s",personl[i].name);

printf("\n\t\t性別: %s",personl[i].sex);

printf("\n\t\t年齡: %s",personl[i].age);

printf("\n\t\t電話: %s",personl[i].phone);

printf("\n\t\t單位: %s",personl[i].unit);

printf("\n\t\t職位: %s",personl[i].post);

printf("\n\t\t地址: %s",personl[i].address);

printf("\n\t\te-mail:%s",personl[i].e_mail);

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

printf("\n\t\t是否刪除?(y/n)\n");

getchar();

if (getchar()=='y')

{

for (j=i;j<num-1;j++) /*紀錄移動,從person數組中刪除之*/

personl[j]=personl[j+1];

num--;

deletemark++;

printf("\n\t\t刪除成功");

printf("\n\t\t是否繼續刪除?(y/n)\n");

getchar();

if (getchar()=='y')

deletebyname();

else

delet();

}

else

deletebyname();

}continue;

}

if (deletemark==0)

{

printf("\n\t\t沒有該紀錄");

printf("\n\t\t是否繼續刪除?(y/n)\n");

getchar();

if (getchar()=='y')

deletebyname();

else

delet();

}

}

void deletebyunit()//按單位刪除

{

int i,j;

int deletemark=0;

char unit[40];

printf("\n\t\t請輸入要刪除的單位:");

scanf("%s",unit);

if(num==0)

{

printf("\n\t\t對不起,文件中無任何紀錄");

printf("\n\t\t按任意鍵返回主菜單");

getch();

return;

}

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

{

if (strcmp(personl[i].unit,unit)==0)

{

printf("\n\t\t以下是您要刪除的紀錄:");

printf("\n\t\t姓名: %s",personl[i].name);

printf("\n\t\t性別: %s",personl[i].name);

printf("\n\t\t年齡: %s",personl[i].age);

printf("\n\t\t電話: %s",personl[i].phone);

printf("\n\t\t單位: %s",personl[i].unit);

printf("\n\t\t職位: %s",personl[i].post);

printf("\n\t\t地址: %s",personl[i].address);

printf("\n\t\te-mail:%s",personl[i].e_mail);

printf("\n\t\t是否刪除?(y/n)\n");

getchar();

if (getchar()=='y')

{

for (j=i;j<num-1;j++) /*紀錄移動,從stud數組中刪除之*/

personl[j]=personl[j+1];

num--;

deletemark++;

printf("\n\t\t刪除成功");

printf("\n\t\t是否繼續刪除?(y/n)\n");

getchar();

if (getchar()=='y')

deletebyunit();

return;

}

else

deletebyunit();

}

continue;

}

if (deletemark==0)

{

printf("\n\t\t沒有該紀錄");

printf("\n\t\t是否繼續刪除?(y/n)\n");

getchar();

if (getchar()=='y')

deletebyunit();

else

delet();

}

}

void deletebye_mail()//按郵箱刪除

{

int i,j;

int deletemark=0;

char e_mail[30];

printf("\n\t\t請輸入要刪除的郵箱");

scanf("%s",e_mail);

if(num==0)

{

printf("\n\t\t對不起,文件中無任何紀錄");

printf("\n\t\t按任意鍵返回主菜單");

getch();

return;

}

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

{

if (strcmp(personl[i].e_mail,e_mail)==0)

{

printf("\n\t\t以下是您要刪除的紀錄:");

printf("\n\t\t姓名: %s",personl[i].name);

printf("\n\t\t性別: %s",personl[i].name);

printf("\n\t\t年齡: %s",personl[i].age);

printf("\n\t\t電話: %s",personl[i].phone);

printf("\n\t\t單位: %s",personl[i].unit);

printf("\n\t\t職位: %s",personl[i].post);

printf("\n\t\t地址: %s",personl[i].address);

printf("\n\t\te-mail:%s",personl[i].e_mail);

printf("\n\t\t是否刪除?(y/n)");

getchar();

if (getchar()=='y')

{

for (j=i;j<num-1;j++) /*紀錄移動,從person數組中刪除之*/

personl[j]=personl[j+1];

num--;

deletemark++;

printf("\n\t\t刪除成功");

printf("\n\t\t是否繼續刪除?(y/n)\n");

getchar();

if (getchar()=='y')

deletebye_mail();

return;

}

else

deletebye_mail();

}

continue;

}

if (deletemark==0)

{

printf("\n\t\t沒有該紀錄");

printf("\n\t\t是否繼續刪除?(y/n)\n");

getchar();

if (getchar()=='y')

deletebye_mail();

else

delet();

}

}

void add()

{

int i,j;

i=suijishu();

if(num==0) enter();

else

{

for(j=num-1;j>=i;j--)

{

strcpy(personl[j+1].name,personl[j].name);

strcpy(personl[j+1].sex,personl[j].sex);

strcpy(personl[j+1].age,personl[j].age);

strcpy(personl[j+1].phone,personl[j].phone);

strcpy(personl[j+1].unit,personl[j].unit);

strcpy(personl[j+1].post,personl[j].post);

strcpy(personl[j+1].address,personl[j].address);

strcpy(personl[j+1].e_mail,personl[j].e_mail);

}

printf("\n\t\t**************** 請輸入要添加的信息 ****************\n");

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

scanf("%s",&personl[i].name);

printf("\n\t\t輸入性別:");

scanf("%s",&personl[i].sex);

printf("\n\t\t輸入年齡:");

scanf("%s",&personl[i].age);

printf("\n\t\t輸入電話號碼:");

scanf("%s",&personl[i].phone);

printf("\n\t\t輸入單位:");

scanf("%s",&personl[i].unit);

printf("\n\t\t輸入職位:");

scanf("%s",&personl[i].post);

printf("\n\t\t輸入地址:");

scanf("%s",&personl[i].address);

printf("\n\t\t輸入e-mail:");

scanf("%s",&personl[i].e_mail);

}

}

int suijishu()

{

int t;

srand(time(0));

t=rand()%num+1;

cout<<t<<endl;

return t;

}

void save()//寫入文件

{

int i;

if ((fp=fopen("personl.txt","wb"))==NULL)

{

printf("\n\t\t文件打開失敗");

}

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

{

if (fwrite(&personl[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);

}

  • 上一篇:寧波奉化教師編制考試要寫作文嗎
  • 下一篇:中國歷史上的海嘯
  • copyright 2024編程學習大全網