任務
以本班同學的具體數(shù)據(jù)為背景,設計一個本班同學通訊錄。
實現(xiàn)功能
1)? 通訊錄編輯(添加、刪除)。
2)? 按不同的項進行查找。
3)? 對已存在的通訊錄按不同的項排序。
4)? 將通訊錄寫入文件
5)從文件讀入通訊錄
備注:通訊錄至少應該有以下數(shù)據(jù)項:
姓名,地址,電話,郵編,E-mail。
概要設計
(1)人數(shù)不定,每輸入一個人編號。
(2)記錄每位同學的姓名、電話號碼、地址、郵編和E-mail。?
(3)可對記錄中的姓名和電話號碼等進行修改。
(4)可增加或刪除記錄
(5)加入查詢功能,通過姓名或電話號碼查詢到同學的條目。
(6)在開始畫面加入簡單的菜單便于選擇功能。
(7)將信息保存在文件。
詳細設計?
?1.數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)框架
?1.主要流程:
2. 主要功能
?
系統(tǒng)功能需求:
<1>記錄功能:記錄每位同學的姓名、電話號碼、地址、郵編和E-mail
<2>查找功能:按不同方式查找信息
<3>添加功能:添加信息
<4>排序功能:將信息按照姓名排序
<5>刪除功能:刪除指定的信息
<6>保存在文件:將做完的信息保存在文件
<7>結(jié)束:結(jié)束程序
3.函數(shù)說明
選擇功能函數(shù)
void next()
{
void show();
void seek();
void add();
void sort();
void out();
void keep();
int end();
int b;
printf("\t***********************NEXT**************************\n");
printf("\t請選擇接下來的操作:");
scanf("%d",&b);
printf("\t*****************************************************\n");
switch(b)
{
case 1 :show();break;
case 2 :seek();break;
case 3 :add();break;
case 4 :sort();break;
case 5 :out();break;
case 6 :keep();break;
case 7 :end();break;
}
}
?輸入函數(shù)
void write()
{
void next();
void write1();
printf("\t請輸入信息(每次輸入1時繼續(xù)輸入,輸入2時停止輸入)\n");
printf("\t姓名\t家庭電話\t地址\t郵編\tE-mail\n");
write1();
}
void write1()
{
void next();
void write2();
int a;
printf("是否輸入:");
scanf("%d",&a);
printf("\n");
switch(a)
{
case 1 :write2();break;
case 2 :next();break;
}
}
void write2()
{
void write1();
j=i+1;
printf("%d\t",j);
scanf("%s%d%s%d%s",stu[i].name,&stu[i].phone,stu[i].adress,&stu[i].postcode,stu[i].e_mail);
i=i+1;
write1();
}
輸出函數(shù)
void show()
{
void next();
int s=0;
printf("\t下面將會顯示輸入的數(shù)據(jù):\n");
printf("\t姓名\t家庭電話\t地址\t郵編\tE-mail\n");
for(i=0;i<j;i++)
{
s=s+1;
printf("%d\t%s\t%d\t%s\t%d\t%s\n",s,stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
}
printf("\t顯示結(jié)束\n");
next();
}
查找函數(shù)
void seek()
{
int q;
void numberseek();
void nameseek();
printf("\t請選擇搜索方式:1~按名字查找\n\t 2~按家庭電話號碼查找\n");
printf("\t請選擇查找方式:");
scanf("%d",&q);
switch(q)
{
case 1 :nameseek();break;
case 2 :numberseek();break;
}
}
void nameseek()
{
void next();
char d[5];
printf("\t請輸入要查找學生的名字:");
scanf("%s",d);
for(i=0;i<j;i++)
{
if(strcmp(d,stu[i].name)==0)
{
printf("\t你要查找的學生信息為:\n");
printf("\t姓名\t家庭電話\t地址\t郵編\tE-mail\n");
printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
break;
}
else
continue;
}
next();
}
void numberseek()
{
void next();
int e;
printf("\t請輸入要查找的電話號碼:");
scanf("%d",&e);
for(i=0;i<j;i++)
{
if(e==stu[i].phone)
{
printf("\t你要查找的學生信息為:\n");
printf("\t姓名\t家庭電話\t地址\t郵編\tE-mail\n");
printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
break;
}
else
continue;
}
next();
}
添加函數(shù)
void add()
{
void next();
void write1();
i=j;
printf("\t請輸入信息(每次輸入1時繼續(xù)輸入,輸入2時停止輸入)\n");
printf("\t姓名\t家庭電話\t地址\t郵編\tE-mail\n");
write1();
}
?課程設計成果
?程序源代碼
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Student
{
char name[20];
int long phone;
char adress[40];
int postcode;
char e_mail[30];
}stu[100];
int j=0,i=0;
void next()
{
void show();
void seek();
void add();
void sort();
void out();
void keep();
int end();
int b;
printf("\t***********************NEXT**************************\n");
printf("\t請選擇接下來的操作:");
scanf("%d",&b);
printf("\t*****************************************************\n");
switch(b)
{
case 1 :show();break;
case 2 :seek();break;
case 3 :add();break;
case 4 :sort();break;
case 5 :out();break;
case 6 :keep();break;
case 7 :end();break;
}
}
void write()
{
void next();
void write1();
printf("\t請輸入信息(每次輸入1時繼續(xù)輸入,輸入2時停止輸入)\n");
printf("\t姓名\t家庭電話\t地址\t郵編\tE-mail\n");
write1();
}
void write1()
{
void next();
void write2();
int a;
printf("是否輸入:");
scanf("%d",&a);
printf("\n");
switch(a)
{
case 1 :write2();break;
case 2 :next();break;
}
}
void write2()
{
void write1();
j=i+1;
printf("%d\t",j);
scanf("%s%d%s%d%s",stu[i].name,&stu[i].phone,stu[i].adress,&stu[i].postcode,stu[i].e_mail);
i=i+1;
write1();
}
void show()
{
void next();
int s=0;
printf("\t下面將會顯示輸入的數(shù)據(jù):\n");
printf("\t姓名\t家庭電話\t地址\t郵編\tE-mail\n");
for(i=0;i<j;i++)
{
s=s+1;
printf("%d\t%s\t%d\t%s\t%d\t%s\n",s,stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
}
printf("\t顯示結(jié)束\n");
next();
}
void seek()
{
int q;
void numberseek();
void nameseek();
printf("\t請選擇搜索方式:1~按名字查找\n\t 2~按家庭電話號碼查找\n");
printf("\t請選擇查找方式:");
scanf("%d",&q);
switch(q)
{
case 1 :nameseek();break;
case 2 :numberseek();break;
}
}
void nameseek()
{
void next();
char d[5];
printf("\t請輸入要查找學生的名字:");
scanf("%s",d);
for(i=0;i<j;i++)
{
if(strcmp(d,stu[i].name)==0)
{
printf("\t你要查找的學生信息為:\n");
printf("\t姓名\t家庭電話\t地址\t郵編\tE-mail\n");
printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
break;
}
else
continue;
}
next();
}
void numberseek()
{
void next();
int e;
printf("\t請輸入要查找的電話號碼:");
scanf("%d",&e);
for(i=0;i<j;i++)
{
if(e==stu[i].phone)
{
printf("\t你要查找的學生信息為:\n");
printf("\t姓名\t家庭電話\t地址\t郵編\tE-mail\n");
printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
break;
}
else
continue;
}
next();
}
void add()
{
void next();
void write1();
i=j;
printf("\t請輸入信息(每次輸入1時繼續(xù)輸入,輸入2時停止輸入)\n");
printf("\t姓名\t家庭電話\t地址\t郵編\tE-mail\n");
write1();
}
void sort()
{
void next();
void show();
int h,g,x;
char temp;
for(i=0;i<(j-1);i++)
{
h=i;
for(g=i+1;g<j;g++)
{
if(strcmp(stu[h].name,stu[g].name)==0)
h=g;
if(h!=i)
{
strcpy(temp,stu[i].name);strcpy(stu[i].name,stu[h].name);strcpy(stu[h].name,temp);
x=stu[i].phone;stu[i].phone=stu[h].phone;stu[h].phone=temp;
strcpy(temp,stu[i].adress);strcpy(stu[i].adress,stu[h].adress);strcpy(stu[h].adress,temp);
x=stu[i].postcode;stu[i].postcode=stu[h].postcode;stu[h].postcode=temp;
strcpy(temp,stu[i].e_mail);strcpy(stu[i].e_mail,stu[h].e_mail);strcpy(stu[h].e_mail,temp);
}
}
}
printf("排序成功\n");
show();
}
void out()
{
void next();
int t,h,v;
printf("\t請輸入要刪除的學生編號:");
scanf("%d",&t);
h=i;
for(v=t-1;v<h;v++)
{
strcpy(stu[v].name,stu[v+1].name);
stu[v].phone=stu[v+1].phone;
strcpy(stu[v].adress,stu[v+1].adress);
stu[v].postcode=stu[v+1].postcode;
strcpy(stu[v].e_mail,stu[v+1].e_mail);
}
j=j-1;
printf("\t刪除完畢\n");
next();
}
void keep()
{
void next();
FILE *fp;
int v=0;
char filename[10];
printf("請輸入要保存的文件名:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("文件無法打開\n");
exit(0);
}
fprintf(fp,"\t姓名\t電話號\t地址\t郵編\tE-mail\n");
for(i=0;i<j;i++)
{
v=v+1;
fprintf(fp,"%d\t%s\t%d\t%s\t%d\t%s\n",v,stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
}
fclose(fp);
printf("已經(jīng)保存在文件%s中\(zhòng)n",filename);
next();
}
int end()
{
void next();
int g;
printf("\t是否關(guān)閉程序:\n1:是\t2:否\n");
printf("\t請輸入你的選擇:");
scanf("%d",&g);
switch(g)
{
case 1 :return 0;
case 2 :next();
}
return 0;
}
int main()
{
int ch;
printf("\t********************開始*********************\n\n");
printf("\t 1. 顯示通訊錄\n");
printf("\t 2. 查找\n");
printf("\t 3. 添加通訊錄\n");
printf("\t 4. 按姓名排序\n");
printf("\t 5. 刪除通訊錄\n");
printf("\t 6. 將記錄保存在文件\n");
printf("\t 7. 結(jié)束\n");
printf("\t***********************************************\n");
printf("\t請先輸入信息\n");
write();
return 0;
}
課程設計心得?
通過為期一周的課程設計,我對《C語言》這門課程有了更深一步的了解。它是計算機程序設計的重要理論技術(shù)基礎,在我們信息與計算科學專業(yè)的學習中占據(jù)著十分重要的地位。同時也使我知道,要學好這門課程,僅學習書本上的知識是不夠的,還要有較強的實踐能力。因為我學習知識就是為了實踐。而只有多實踐,多編寫程序,才能更好的理解與掌握書本上的東西。文章來源:http://www.zghlxwxcb.cn/news/detail-457349.html
附件:源碼下載
C語言課程設計-通訊錄管理系統(tǒng)_c語言課程設計之通訊錄管理系統(tǒng)資源-CSDN文庫https://download.csdn.net/download/NBITer/87369754文章來源地址http://www.zghlxwxcb.cn/news/detail-457349.html
到了這里,關(guān)于C語言課程設計_通訊錄管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!