c語言課程設計pdf
① 急求 C語言課程設計 教材電子版 曹計昌版的 科學出版社的
《C語言程序設計》 作者:曹計昌等編著 頁數:463 出版日期:2008
這本我就有pdf
② c語言課程設計,絕不照抄,我僅作參考
為你設計一份滿意的畢業論文,
為你的人生打造一份滿意的答卷 good luck
③ 求C語言課程設計一份
改好了,代碼如下!
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#include<conio.h>
typedef struct
{
char num[10];
char name[20];
int score;
}Student;
Student stu[80];
int menu_select()
{
char c;
do{
system("cls");
printf("\t\t \n");
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Search a Record |\n");
printf("\t\t | 7. Rebuild a Record|\n"); //增加代碼
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-7):");
c=getchar();
}while(c<'0'||c>'7');
getchar();
return(c-'0');
}
/***********************增加函數模塊*********************/
/* 函數功能:修改學生姓名,分數 */
/********************************************************/
int Rebuild(Student stud[],int n)
{
char name[20];
int score;
char num[10];
int flag=0;
printf("\t\t Please input the Rebuilded student`s number:");
scanf("%s",&num);
for(int i=0;i<n;i++)
{
if(strcmp(stu[i].num,num)==0)
{
flag=1;
printf("\t\t Please intput the rebuild student`s name:");
scanf("%s",name);
strcpy(stud[i].name,name);
printf("\t\t Please input the rebuild student`s score:");
scanf("%d",&score);
stud[i].score=score;
return flag;
}
}
return flag;
}
int Input(Student stud[],int n)
{
int i=0;
int j,temp=0;
int flag=1;
char sign='y',x[10];
while(sign!='n'&&sign!='N')
{
while(flag)
{
printf("\t\t\tstudent's num:");
scanf("\t\t\t%s",stud[n+i].num);
for(j=0;j<strlen(stud[n+i].num);j++)
{
if(stud[n+i].num[j]>='1'&&stud[n+i].num[j]<='9')
{
;
}
else{
flag=1;
break;
}
flag=0;
}
}
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x);
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign);
flag=1;
i++;
}
return(n+i);
}
void Display(Student stud[],int n)
{
int i;
printf("\t\t\t-----------------------------------\n");
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++)
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0)
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n)
{
int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{
strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n)
{
char x[10];
int flag=1;
int j;
while(flag)
{
printf("\t\t\tstudent's num:");
scanf("\t\t\t%s",stud[n].num);
for(j=0;j<strlen(stud[n].num);j++)
{
if(stud[n].num[j]>='1'&&stud[n].num[j]<='9')
{
;
}
else{
flag=1;
break;
}
flag=0;
}
}
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n);
printf("\t\t\tInsert Successed!\n");
return(n);
}
int Delete_a_record(Student stud[],int n)
{
char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:");
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++;
if(i==n)
{
printf("\t\t\tnot find!\n");
return(n);
}
for(j=i;j<n-1;j++)
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n");
return(n-1);
}
int Search_a_record(Student stud[],int n)
{
int j;
int flag=1;
char temp[10];
while(flag)
{
printf("\t\t\tInput student's num:");
scanf("\t\t\t%s",temp);
for(j=0;j<strlen(temp);j++)
{
if(temp[j]>='1'&&temp[j]<='9')
{
;
}
else{
flag=1;
break;
}
flag=0;
}
}
printf("\t\t\t-----------------------------------\n");
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(j=0;j<80;j++)
{
if(strcmp(temp,stud[j].num)==0)
{
printf("\t\t\t%-16s%-15s%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\t-----------------------------------\n");
}
}
return(n);
}
void main()
{
int x;
int n=0;
for(;;)
{
x=menu_select();
switch(x)
{
case 1:
printf("\t\t\tInput Records\n");
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n");
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n);
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n);
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n);
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tSearch a Record\n");
n=Search_a_record(stu,n);
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tRebuild a Record\n");
if(Rebuild(stu,n))
{
printf("\t\t Action successed! press any key return..");
getch();
}
else
{
printf("\t\t Sorry,no such student!\n");
printf("\t\t Press any key return..");
getch();
}
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n");
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
④ C語言課程設計
/ / SaleFish.cpp
/ / N數的類型,也就是,有多少次出售的標題,n為5,以解決上述問題,運行n個 / / K是總數的魚
/ /如果輸出的K是不是在沒有找到的數字小於1000(即魚數)中的n倍賣根據上述銷售計劃出售/ /最後的輸出結果為K = 59
#包括
#包括的
使用命名空間std;
無效的主要(){ BR />雙K = 11.0;
雙I,J;
雙IJ;
= 1;
J = 2;
廉政n 內部溫度= 0;
雙tempk = K;
法院<<「請輸入n:」;
CIN >> N;
(1)
{
K = tempk;
(J <= N && tempk <1000){
IJ = I / J;
(廠((九* K-(1 IJ))-11)<1E-6 &&?= N)
{法院<<「K是:」<< endl << tempk溫度+ = 1;打破;}
其他{K = IJ * K-(1-IJ);我+ = 1; + = 1;}
} J = 2; i = 1;
(臨時)休息;
>(廠(tempk-1000)<1E-6){cout <<「請K是\ n」;}
tempk + = 1;
}
不中。 cout <<「請結束... \ n按任意鍵退出...」;
getchar函數();
getchar函數();
}
該〇二〇一〇]親希望採用。
⑤ 急!!!c語言課程設計一份、絕對給分!!!
我自己寫了一個關於C語言的鏈表程序,,裡面有插入學生信息和和成績排名。。也有查找和刪除,插入,但是我沒有做修改的功能。。。
是沒有界面的我還不會圖形的。但是我覺得基本代碼也應該還是有用的。你給看下我的。看可不可以幫到你。以後希望多多交流 。。。
#include "iostream.h"
#include "stdio.h"
#define manfen 150
typedef struct student {
char name[20];
double fen[4];
struct student * next;
} student;
int i=1;
int strcmp(char *a, char *b)
{
while((*a++ == *b++)&&(*a))
;
if((*a==NULL)&&(*b==NULL))
return 1;
else
return 0;
}
void SqlistStudent(student *&L,int j=1)
{
void heli(student *,int);
int a;
student *p,*q;
q=p=L=new student;
for(a=0;a<j;a++)
{
cout<<endl;
cout<<"請輸入第";
cout<<i;
cout<<"位學生的名字:";
cin>>q->name;
cout<<" 語文分數:";
cin>>q->fen[0];
heli(q,0);
cout<<" 數學分數:";
cin>>q->fen[1];
heli(q,1);
cout<<" 英語分數:";
cin>>q->fen[2];
heli(q,2);
q->fen[3]=q->fen[0]+q->fen[1]+q->fen[2];
q=new student();
p->next=q;
p=q;
q->next=NULL;
i++;
}
cout<<"輸入截止"<<endl;
}
void heli(student *t,int e)
{
while(t->fen[e]<0||t->fen[e]>manfen)
{
cout<<"輸入的分數不合理,輸入范圍為:0-"<<manfen<<" 重新輸入:"<<endl;
cin>>t->fen[e];
}
}
void shanchu(student *&l)
{
int strcmp(char *a, char *b);
student *q,*p;
char na[20];
int a=0,b=0;
q=p=l;
while(a!=-1)
{
cout<<"輸入請刪除學生信息的名字"<<endl;
cin>>na;
while(q->next!=NULL)
{
if( strcmp(na,q->name)==1 )
break;
p=q;
q=q->next;
b++;
}
if(strcmp(na,q->name)==1 )
{
if(b==0)
{
l=q->next;
i--;
break;
}
else
{
p->next=q->next;
i--;
break;
}
}
else
cout<<"沒有此學生信息,請檢查和重新輸入"<<endl;
q=p=l;
}
}
void charu(student *&l)
{
int strcmp(char *a, char *b);
void heli(student *t,int e);
student *q,*p;
q=p=l;
int a=0,b=0,c=1,d=1;
char na[20];
student *f;
f=new student;
i++;
cout<<endl;
cout<<"請輸入學生的名字";
cin>>f->name;
cout<<" 語文分數:";
cin>>f->fen[0];
heli(f,0);
cout<<" 數學分數:";
cin>>f->fen[1];
heli(f,1);
cout<<" 英語分數:";
cin>>f->fen[2];
heli(f,2);
f->fen[3]=f->fen[0]+f->fen[1]+f->fen[2];
f->next=NULL;
while(d!=0)
{
cout<<"請輸入插入結點位置相鄰的學生姓名"<<endl;
cin>>na;
while(q->next!=NULL)
{
b=strcmp(na,q->name);
if(b==1)
break;
p=q;
q=q->next;
d++;
}
if(b==1)
{
cout<<"在輸入的名字前插入請輸入1"<<endl;
cout<<"在輸入的名字後插入請輸入2"<<endl;
cin>>a;
if(a==1)
{
if(d==1)
{
f->next=l;
l=f;
cout<<"插入完成"<<endl;
break;
}
else
{
p->next=f;
f->next=q;
cout<<"插入完成"<<endl;
break;
}
}
if(a==2)
{
f->next=q->next;
q->next=f;
cout<<"插入完成"<<endl;
break;
}
}
if(b==0)
{
cout<<"沒有找到此名字"<<endl;
}
q=p=l;
}
}
void print(student *l)
{
student *q;
q=l;
while(q->next!=NULL)
{
cout<<"學生的名字:"<<q->name<<endl;
cout<<"語文:"<<q->fen[0]<<endl;
cout<<"數學:"<<q->fen[1]<<endl;
cout<<"英語:"<<q->fen[2]<<endl;
cout<<"總分:"<<q->fen[3]<<endl;
q=q->next;
}
}
void anfencha(int a,double b,student *l)
{
student *q;
q=l;
int h=0;
while(q->next!=NULL)
{
if(q->fen[a]==b)
{
cout<<"學生的名字:"<<q->name<<endl;
cout<<"語文:"<<q->fen[0]<<endl;
cout<<"數學:"<<q->fen[1]<<endl;
cout<<"英語:"<<q->fen[2]<<endl;
cout<<"總分:"<<q->fen[3]<<endl;
h++;
}
q=q->next;
}
cout<<"您要查詢的學生不存在"<<endl;
}
void anmin(char *na,student *l)
{
student *q;
int h=0;
q=l;
while(q->next!=NULL)
{
if(strcmp(na,q->name)==1)
{
cout<<"學生的名字:"<<q->name<<endl;
cout<<"語文:"<<q->fen[0]<<endl;
cout<<"數學:"<<q->fen[1]<<endl;
cout<<"英語:"<<q->fen[2]<<endl;
cout<<"總分:"<<q->fen[3]<<endl;
h++;
}
q=q->next;
}
if(h==0)
cout<<"沒有此學生信息。"<<endl;
}
void paixu(student *l,int e)
{
student *q,*p;
student *a[30];
int b=0,c;
q=p=l;
for(b=0;b<30;b++)
a[b]=q;
b=0;
while(q->next!=NULL)
{
a[b]=q;
q=q->next;
b++;
}
for(b=0;b<i-1;b++)
{
for(c=b+1;c<i-1;c++)
{
if(a[b]->fen[e]<=a[c]->fen[e])
{
p=a[b];a[b]=a[c];a[c]=p;
}
}
}
switch(e)
{
case 0:cout<<"按照語文分數的排名情況是:"<<endl;break;
case 1:cout<<"按照數學分數的排名情況是:"<<endl;break;
case 2:cout<<"按照英語分數的排名情況是:"<<endl;break;
case 3:cout<<"按照總分分數的排名情況是:"<<endl;break;
}
for(b=0;b<i-1;b++)
{
cout<<"第"<<b+1<<"名"<<endl;
cout<<"學生的名字:"<<a[b]->name<<endl;
cout<<" 語文:"<<a[b]->fen[0]<<endl;
cout<<" 數學:"<<a[b]->fen[1]<<endl;
cout<<" 英語:"<<a[b]->fen[2]<<endl;
cout<<" 總分:"<<a[b]->fen[3]<<endl;
cout<<endl;
}
}
void main()
{
student *head;
int a=1,b=1,c=1,d;
char na[20];
cout<<"請輸入需要保存的學生人數:"<<endl;
cin>>a;
SqlistStudent(head,a);
while(a!=0)
{
cout<<endl;
cout<<"退出請輸入:0"<<endl;
cout<<"要查詢請輸入:1"<<endl;
cout<<"要插入學生信息請輸入:2"<<endl;
cout<<"要查詢各科排名情況:3"<<endl;
cout<<"要刪除學生信息請輸入4"<<endl;
cin>>a;
if(a==0)
break;
if(a==1)
{
cout<<"根據分數查詢請輸入1"<<endl;
cout<<"根據名字查詢請輸入2"<<endl;
cout<<"查詢所有學生請輸入3"<<endl;
cin>>b;
if(b==1)
{
cout<<"根據語文分數查詢請輸入0"<<endl;
cout<<"根據數學分數查詢請輸入1"<<endl;
cout<<"根據英語分數查詢請輸入2"<<endl;
cout<<"根據總分數查詢請輸入3"<<endl;
cin>>c;
cout<<"請輸入要查找科目分數:"<<endl;
cin>>d;
anfencha(c,d,head);
}
if(b==2)
{
cout<<"請輸入要查詢學生名字:"<<endl;
cin>>na;
anmin(na,head);
}
if(b==3)
print(head);
}
if(a==2)
{
charu(head);
}
if(a==3)
{
cout<<"根據語文分數查詢請輸入0"<<endl;
cout<<"根據數學分數查詢請輸入1"<<endl;
cout<<"根據英語分數查詢請輸入2"<<endl;
cout<<"根據總分數查詢請輸入3"<<endl;
cin>>c;
paixu(head,c);
}
if(a==4)
shanchu(head);
}
}
⑥ 急求《c語言課程設計案例精編》電子書,急求!!!!最好是pdf!
以我自身經歷來看,感覺看視頻比看書效率高,畢竟理科知識不像是文科的,看書效率太低了。可能一個很簡單的知識點,自己看書得半個小時,但是懂的人就講幾句話,就能明白了。所以相比之下,還是視頻效率比看書高。選擇個適合自己的就能學懂C了。我當初看的是夏老師的,感覺挺適合我這樣初學者的。他講的不繁瑣啰嗦,都是重點,而且思維原理講的最好。能讓我理解,我感覺這點很重要。比之前看的什麼郝斌曾怡金文的那些繁瑣啰嗦聽不出重點的好多了。
⑦ C語言課程設計文件
你好
你可以試試,分不要緊。
#define N 200
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int i,key;
int score=0;/*得分*/
int gamespeed=50000;/*游戲速度自己調整*/
struct Food
{
int x;/*食物的橫坐標*/
int y;/*食物的縱坐標*/
int yes;/*判斷是否要出現食物的變數*/
}food;/*食物的結構體*/
struct Snake
{
int x[N];
int y[N];
int node;/*蛇的節數*/
int direction;/*蛇移動方向*/
int life;/* 蛇的生命,0活著,1死亡*/
}snake;
void Init(void);/*圖形驅動*/
void Close(void);/*圖形結束*/
void DrawK(void);/*開始畫面*/
void GameOver(void);/*結束游戲*/
void GamePlay(void);/*玩游戲具體過程*/
void PrScore(void);/*輸出成績*/
/*主函數*/
void main(void)
{
Init();/*圖形驅動*/
DrawK();/*開始畫面*/
GamePlay();/*玩游戲具體過程*/
Close();/*圖形結束*/
}
/*圖形驅動*/
void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
}
/*開始畫面,左上角坐標為(50,40),右下角坐標為(610,460)的圍牆*/
void DrawK(void)
{
/*setbkcolor(LIGHTGREEN);*/
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設置線型*/
for(i=50;i<=600;i+=10)/*畫圍牆*/
{
rectangle(i,40,i+10,49); /*上邊*/
rectangle(i,451,i+10,460);/*下邊*/
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10); /*左邊*/
rectangle(601,i,610,i+10);/*右邊*/
}
}
/*玩游戲具體過程*/
void GamePlay(void)
{
randomize();/*隨機數發生器*/
food.yes=1;/*1表示需要出現新食物,0表示已經存在食物*/
snake.life=0;/*活著*/
snake.direction=1;/*方嚮往右*/
snake.x[0]=100;snake.y[0]=100;/*蛇頭*/
snake.x[1]=110;snake.y[1]=100;
snake.node=2;/*節數*/
PrScore();/*輸出得分*/
while(1)/*可以重復玩游戲,壓ESC鍵結束*/
{
while(!kbhit())/*在沒有按鍵的情況下,蛇自己移動身體*/
{
if(food.yes==1)/*需要出現新食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)/*食物隨機出現後必須讓食物能夠在整格內,這樣才可以讓蛇吃到*/
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;/*畫面上有食物了*/
}
if(food.yes==0)/*畫面上有食物了就要顯示*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--)/*蛇的每個環節往前移動,也就是貪吃蛇的關鍵演算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
/*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/
switch(snake.direction)
{
case 1:snake.x[0]+=10;break;
case 2: snake.x[0]-=10;break;
case 3: snake.y[0]-=10;break;
case 4: snake.y[0]+=10;break;
}
for(i=3;i<snake.node;i++)/*從蛇的第四節開始判斷是否撞到自己了,因為蛇頭為兩節,第三節不可能拐過來*/
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
GameOver();/*顯示失敗*/
snake.life=1;
break;
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||
snake.y[0]>455)/*蛇是否撞到牆壁*/
{
GameOver();/*本次游戲結束*/
snake.life=1; /*蛇死*/
}
if(snake.life==1)/*以上兩種判斷以後,如果蛇死就跳出內循環,重新開始*/
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以後*/
{
setcolor(0);/*把畫面上的食物東西去掉*/
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
/*新的一節先放在看不見的位置,下次循環就取前一節的位置*/
snake.node++;/*蛇的身體長一節*/
food.yes=1;/*畫面上需要出現新的食物*/
score+=10;
PrScore();/*輸出新得分*/
}
setcolor(4);/*畫出蛇*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,
snake.y[i]-10);
delay(gamespeed);
setcolor(0);/*用黑色去除蛇的的最後一節*/
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
} /*endwhile(!kbhit)*/
if(snake.life==1)/*如果蛇死就跳出循環*/
break;
key=bioskey(0);/*接收按鍵*/
if(key==ESC)/*按ESC鍵退出*/
break;
else
if(key==UP&&snake.direction!=4)
/*判斷是否往相反的方向移動*/
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}/*endwhile(1)*/
}
/*游戲結束*/
void GameOver(void)
{
cleardevice();
PrScore();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();
}
/*輸出成績*/
void PrScore(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,20,str);
}
/*圖形結束*/
void Close(void)
{
getch();
closegraph();
}
謝謝。
⑧ c語言課程設計範文
我這兒有復一個程序不知能制不能幫助你解決問題:
#include"stdio.h"
main()
{
int i=0,num=0,word=0;
char string[54],c;
gets(string);
for (;((c=string[i])!='\0');i++)
{
if (c=='')
word=0;
if (word==0)
{
num++;
word=1;
}
}
printf("there are %d words in the line\n",num);
getch();
}
這個程序是關於統計你輸入一行字元的單詞的個數的,
⑨ c語言課程設計
#include<stdio.h>
#include<string.h>
#define N 100
typedef struct AA
{
char name[20];
char phone[12];
char e_mail[30];
char relation[20];
}AA;
/*1。輸入新聯系人2。刪除指定的聯系人(輸入姓名,若找掉則刪除該聯系人的信息)
3。根據輸入的與本人關系,顯示聯系信息4。顯示所有聯系人的信息設計菜單*/
int input__(AA * s)
{
int len = 0,i = 0,n;
printf("請輸入要添加的聯系人個數,上限為%d個\n",N);
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("請依次輸入第%d聯系人的姓名、電話、郵箱以及與本人的關系(中間使用空格隔開即可):\n",i);
scanf("%s%s%s%s",s[i].name,s[i].phone,s[i].e_mail,s[i].relation);
}
return n;
}
void delete__(AA *s,int *n)
{
int i = 0,j = 0,status = 0;
char ca[20] = "";
printf("請輸入要刪除的聯系人的姓名\n");
scanf("%s",ca);
for(i=0;i<*n;i++)
{
if(!strcmp(ca,s[i].name))
{
*n = *n-1;
status = 1;
for(j=i;j<*n;j++)
{
s[j] = s[j+1];
}
break;
}
}
if(status == 0)
printf("沒有找到要刪除的人的信息\n");
else
printf("刪除成功\n");
}
void show__relation(AA *s,int n)
{
int i = 0,status = 0;
printf("請輸入與聯系人的關系\n");
char ca[20] = "";
scanf("%s",ca);
for(i=0;i<n;i++)
{
if(!strcmp(ca,s[i].relation))
{
printf("name:%15s\tphone:%15s\ne-mail:%15s\trelation:%15s\n",s[i].name,s[i].phone,s[i].e_mail,s[i].relation);
status = 1;
}
}
if(!status)
printf("沒有找到相應的信息\n");
}
void show__all(AA *s,int n)
{
int i = 0;
for(i = 0 ; i <n ; i++)
{
printf("name:%15s\tphone:%15s\ne-mail:%15s\trelation:%15s\n",s[i].name,s[i].phone,s[i].e_mail,s[i].relation);
}
}
int main(void)
{
AA a[N];
int n = 0;
int i;
while(1)
{
printf("0------退出系統\n1------輸入聯系人信息\n2------刪除指定聯系人信息\n");
printf("3------顯示與本人關系相通的聯系人信息\n4------顯示所有聯系人的信息\n");
scanf("%d",&i);
if(i == 0)
break;
switch(i)
{
case 1:n = input__(a); break;
case 2:
if(n == 0)
{
printf("你還沒有添加信息,請先添加信息:\n");
break;
}
else
{
delete__(a,&n);
break;
}
case 3:
{
if(n == 0)
{
printf("你還沒有添加信息,請先添加信息:\n");
break;
}
else
{
show__relation(a,n);
break;
}
}
case 4:
{
if(n == 0)
{
printf("你還沒有添加信息,請先添加信息:\n");
break;
}
else
{
show__all(a,n);
break;
}
}
default:
printf("您的選擇有誤,請重新選擇\n");
break;
}
}
return 0;
}