c语言程序设计——通讯录

时间:2024.5.15

C语言课程设计报告

题 目:

设 计 者:

专业班级:

学 号:

指导教师:

年月日

河南理工大学计算机学院

1 题目与要求(左对齐,宋体粗四号)

◆ 建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;

◆ 能够提供添加、删除和修改通讯录信息的功能;

◆ 能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询; ◆ 将通讯录保存在文件中;

◆ 能够按表格方式输出通讯录信息。

1.2 本系统涉及的知识点

结构、数组、循环、函数、分支、指针(小四,宋体)

1.3 功能要求

主要包含一下多种功能:

添加:添加通讯录记录

显示:显示通讯录记录

删除:删除通讯录记录

查询:查询通讯录记录

修改:修改通讯录记录

保存:将信息保存到文件

2 功能设计(左对齐,宋体粗四号)

2.1 算法设计(左对齐,宋体粗小四号)

系统功能模块图:

c语言程序设计通讯录

添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱

后,会提示是否继续添加。

显示:可以以表格形式输出所有通讯录里的记录

删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容

查询:可以选择用姓名、电话、地址三种方式查询

修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、

电子邮箱即可完成修改

保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件

① 加:添加通讯录记录

c语言程序设计通讯录

②显示:显示通讯录记录

③删除:删除通讯录记录 ④查询:查询通讯录记录

先选择查询方式,以姓名查询方式为例

c语言程序设计通讯录

c语言程序设计通讯录

c语言程序设计通讯录

⑤修改:修改通讯录记录

2.2 部分模块流程图

一 . 按名字查找显示函数 void search( )

算法:通过调用名字查找函数,输入要查找的姓名.再调用find函数通过这一函数的循环找到与之姓名相应的的字符窜返回其所在序行数,然后调用输出函数显示指定的一条记录

c语言程序设计通讯录

.

读入s

c语言程序设计通讯录

真假

reture i

二 . 快速查找函数:voidqseek( )

通过调用快速查找函数,确认再查找之前,记录以排好序,然后输入待查找姓名,利用折半查找,m=(I+r)/2如果中间接点姓名与待找姓名相等,则调用printf函数显示记录,并返回,if(strcmp(t[m].name.s)<0) 则I=m+1, 否则 r=m-1,继续寻找,如果I>r,现是没找到。

读入s

I=0, r=n-1

I<=r

m=(I+r)/2

真 假

printf(t[m]) 是 假

reture

I=m+1 r=m-1

真 I>r ? 假

3 程序代码设计(左对齐,宋体粗四号) 通讯录:

typedefstruct

{

char score; /*编号*/ char name[10]; /*姓名*/ char num[15]; /*号码*/ char email[20]; /*邮箱*/ char age[8]; /*年龄*/ char adds[20]; /*住址*/ }Person;

void main() {

int n=0;

for(;;)

{

switch(menu_select())

{

case 1:

printf("\n\t添加记录到通讯录\n"); n=Input(pe,n);

break;

case 2:

printf("\n\t\t\t 通讯录记录表\n"); Display(pe,n);

break;

case 3:

printf("\n\t从通讯录中删除记录\n"); n=Delete_a_record(pe,n); printf("\t");

system("pause");

break;

case 4:

printf("\n\t在通讯录中查找记录\n"); Query_a_record(pe,n); printf("\t");

system("pause");

break; /*主函数*/ /*添加记录*/ /*显示记录*/ /*删除记录*/ /*查找记录*/

} } case 5: printf("\n\t修改通讯录中的记录\n"); Change(pe,n); printf("\t"); system("pause"); break; case 6: printf("\n\t保存功能\n"); WritetoText(pe,n); printf("\t"); system("pause"); break; case 0: printf("\n\t\t谢谢使用,再见!\n"); /*结束程序*/ printf("\n\t\t"); system("pause"); exit(0); } /*保存数据*/ /*修改数据*/

设计类,对象及基本数据类型:

创建一个record类,它有五个数据成员:

char name[20]; 姓名

char age[20]; 年龄

char adress[20]; 地址

char e-mile[20]; 邮箱

char number[20]; 电话

包含函数:功能如下:

void mainmenu(); 主菜单

void searchmenu(); 查找菜单

void enter(); 新添纪录

void search(); 按姓名查询

void display(); 显示所有

void load(); 读取文件

void save(); 写入文件

void delete(); 按姓名删除

结构体:

struct record

{

char age[20];

char name[20];

char number[20];

char e-mile[20];

charadress[20];

}student[500];

structslnode

{

record date;

structslnode *next;

structslnode *prior;

4 C程序设计总结(左对齐,宋体粗四号)

这次的程序实设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手,自己发现和解决问题。发现了自己的许多不足。平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题没有解决。我相信在以后的学习能够解决好它们。但是,收获还是不小的,我不仅对C的操作有了进一步的掌握,还了解到了程序设计的书写风格及其注释的格式。

当我选择通讯录这个题目时,一开始想运用大量链表及指针来完成,但是在慢慢琢磨之后,觉得这个不一定要用链表,于是改变了编程思路。当然还有不少文件的读写问题,不过还是通过不断测试之后顺利解决了。另外一点要说的就是这个程序用了很多的循环,因此对于循环的控制要十分小心,有时while和do-while的区别也是十分重要的。

通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己

便好地学好计算机。

总体来说,这次C语言程序设计实验还是比较成功的,虽然最终程序还存在一些不足,但能取得这样的成绩我还是比较高兴的。

最后,要感谢学校为我们提供这次实验机会,也要感谢老师的教导和好心人对我的帮助与支持。

参考文献(左对齐,宋体粗四号)

内容:列出课程设计中所参考的所有书目,格式如下:

[1] 谭浩强,C程序设计(第二版),北京:清华大学出版社,2001.1 (左对齐,

宋体,五号)

[2] 陈朔鹰,C语言程序设计习题集,北京:人民邮电出版社,2003.6 一. 附录:源程序代码

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedefstruct

{

char score; /*编号*/

char name[10]; /*姓名*/ char num[15]; /*号码*/ char email[20]; char age[8]; char adds[20]; /*邮箱*/ /*年龄*/ /*住址*/ }Person;

Person pe[80];

intmenu_select()

{ char c; do{ system("cls"); printf("\t\t *****通讯录***** \n"); printf("\t\t┌───────┐\n"); printf("\t\t│ 1. 添加记录│\n"); printf("\t\t│ 2. 显示记录│\n"); printf("\t\t│ 3. 删除记录│\n");

} printf("\t\t│ 4. 查询记录│\n"); printf("\t\t│ 5. 修改记录│\n"); printf("\t\t│ 6. 保存记录│\n"); printf("\t\t│ 0. 退出程序│\n"); printf("\t\t└───────┘\n"); printf("\t\t请您选择(0-6):"); c=getchar(); }while(c<'0'||c>'6'); return(c-'0');

int Input(Person per[],int n)

{

}

void Display(Person per[],int n)

{

int i;

printf("----------------------------------------------------------------------\n"); /*格式*/

printf("编号姓名年龄电话号码通讯地址电子邮箱\n"); int i=0; charsign,x[10]; while(sign!='n'&&sign!='N') { printf("\t编号:"); scanf("\t%d",&per[n+i].score); printf("\t姓名:"); scanf("\t%s",per[n+i].name); printf("\t年龄:"); scanf("\t%s",per[n+i].age); printf("\t电话号码:"); scanf("\t%s",per[n+i].num); printf("\t通讯住址:"); scanf("\t%s",per[n+i].adds); printf("\t电子邮箱:"); scanf("\t%s",per[n+i].email); gets(x); printf("\n\t是否继续添加?(Y/N)"); scanf("\t%c",&sign); i++; } return(n+i);

}

printf("----------------------------------------------------------------------\n"); for(i=1;i<n+1;i++) { printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1 if(i>1&&i%10==0) { printf("\t-----------------------------------\n"); printf("\t"); system("pause"); printf("\t-----------------------------------\n"); ].num,per[i-1].adds,per[i-1].email); } } printf("----------------------------------------------------------------------\n"); system("pause");

intDelete_a_record(Person per[],int n) {

char s[20];

int i=0,j;

printf("\t请输入想删除记录中的名字:");

scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n) i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return(n); } for(j=i;j<n-1;j++) { strcpy(per[j].num,per[j+1].num); strcpy(per[j].name,per[j+1].name); strcpy(per[j].age,per[j+1].age); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].email,per[j+1].email); per[j].score=per[j+1].score; } printf("\t\t\t已经成功删除!\n"); return(n-1);

}

voidQuery_a_record(Person per[],int n) {

int m;

printf("\t\n请选择查询方式:\n"); printf("\t┌──────┐\n"); printf("\t│1------姓名│\n");

printf("\t│2------电话│\n");

printf("\t│3------地址│\n");

printf("\t│4------返回│\n");

printf("\t└──────┘\n"); printf("请选择:");

scanf("%d",&m);

while(m!=1&&m!=2&&m!=3&&m!=4) {

printf("输入错误,请重新选择:");

if(m==1) { } ; if(m==2) { char s[20]; int i=0; printf("\t请输入想查询的电话:"); char s[20]; int i=0; printf("\t请输入想查询的姓名:"); scanf("\t%s",s); while(strcmp(per[i].name,s)!=0&&i<n) i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t此人编号: %d\n",per[i].score); printf("\t此人年龄: %s\n",per[i].age); printf("\t电话号码: %s\n",per[i].num); printf("\t通讯地址: %s\n",per[i].adds); printf("\t电子邮箱: %s\n",per[i].email); } scanf("%d",&m);

}

scanf("\t%s",s); while(strcmp(per[i].num,s)!=0&&i<n) i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t此人编号: %d\n",per[i].score); printf("\t此人姓名: %s\n",per[i].name); printf("\t此人年龄: %s\n",per[i].age); printf("\t通讯地址: %s\n",per[i].adds); printf("\t电子邮箱: %s\n",per[i].email); } ; if(m==3) { } ; char s[20]; int i=0; printf("\t请输入想查询的地址:"); scanf("\t%s",s); while(strcmp(per[i].adds,s)!=0&&i<n) i++; if(i==n) { printf("\t通讯录中没有此人!\n"); return; } printf("\t此人编号: %d\n",per[i].score); printf("\t此人姓名: %s\n",per[i].name); printf("\t此人年龄: %s\n",per[i].age); printf("\t电话号码: %s\n",per[i].num); printf("\t电子邮箱: %s\n",per[i].email);

void Change(Person per[],int n) {

char s[20]; int i=0; printf("\t请输入想修改的记录中的名字:"); scanf("%s",s); while(strcmp(per[i].name,s)!=0&&i<n) i++; if(i==n)

}

{ printf("\t通讯录中没有此人!\n"); return; } printf("\t编号:"); scanf("\t%d",&per[i].score); printf("\t姓名:"); scanf("\t%s",per[i].name); printf("\t年龄:"); scanf("\t%s",per[i].age); printf("\t电话号码:"); scanf("\t%s",per[i].num); printf("\t通讯住址:"); scanf("\t%s",per[i].adds); printf("\t电子邮箱:"); scanf("\t%s",per[i].email); printf("\t修改成功!");

voidWritetoText(Person per[],int n)

{

int i=0;

FILE *fp; /*定义文件指针*/ char filename[20]; /*定义文件名*/

printf("\t保存到文件\n"); /*输入文件名*/ printf("\t请输入所保存的文件名:"); scanf("\t%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("\t无法打开文件\n"); system("pause"); return; } fprintf(fp,"******************************************通讯录******************************************\n");

fprintf(fp,"编号姓名年龄电话号码通讯地址电子邮箱\n");

fprintf(fp,"%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email);

i++; fprintf(fp,"------------------------------------------------------------------------------------------\n"); while(i<n) {

} fprintf(fp,"------------------------------------------------------------------------------------------\n"); fprintf(fp,"***************************************共有%d条记录****************************************\n",n);

fclose(fp); /*关闭文件*/

}

void main() /*主函数*/ printf("保存成功!\n");

{

int n=0;

for(;;)

{

switch(menu_select())

{

case 1:

printf("\n\t添加记录到通讯录\n");

n=Input(pe,n);

break;

case 2:

printf("\n\t\t\t 通讯录记录表\n");

Display(pe,n);

break;

case 3:

printf("\n\t从通讯录中删除记录\n");

n=Delete_a_record(pe,n);

printf("\t");

system("pause");

break;

case 4:

printf("\n\t在通讯录中查找记录\n");

Query_a_record(pe,n);

printf("\t");

system("pause");

break;

case 5:

printf("\n\t修改通讯录中的记录\n");

Change(pe,n);

printf("\t");

system("pause"); /*添加记录*/ /*显示记录*/ /*删除记录*/ /*查找记录*/ /*修改数据*/

break; case 6: printf("\n\t保存功能\n"); WritetoText(pe,n); /*保存数据*/ printf("\t");

system("pause");

break;

case 0:

printf("\n\t\t谢谢使用,再见!\n");

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

system("pause");

exit(0);

}

}

}

/*结束程序*/

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:##组长:##同组成员:##目录一、目的....................…

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

C语言程序设计基础课程设计报告

程序设计基础课程设计报告课程名称课程设计题目程序设计基础课程设计学生信息管理系统姓名系专业年级学号指导教师职称计算机科学技术系计算机网络技术讲师20xx年1月1日一设计题目及要求1题目学生信息管理系统2要求1建...

《C语言程序设计》课程设计报告格式 (2)

C语言程序设计课程设计报告20xx20xx学年第1学期专业软件工程软件测试服务班级1班姓名学号陈家汀指导教师谢小竹成绩计算机与信息工程学院20xx年1月12日目录一课程设计的目的与要求页码二方案实现与调试页码2...

C语言课程设计报告---学籍信息管理系统

中国地质大学本科生课程论文封面1课程设计评语注1无评阅人签名成绩无效2必须用钢笔或圆珠笔批阅用铅笔阅卷无效3如有平时成绩必须在上面评分表中标出并计算入总成绩2目录课程设计评语2目录31课程论文题目42程序设计思...

C语言课程设计报告_运动会分数统计系统

C语言课程设计报告_运动会分数统计系统一.需求分析1问题描述运动会分数统计系统参加运动会有n个系,系编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前…

C语言课程设计报告-图书管理系统

课程设计报告图书馆管理系统目录1题目与要求22系统总体设计要给出必要的文字说明及必要的图示321功能需求分析明确选题的功能需求322系统功能模块划分要给出系统功能模块图43详细设计431重要数据的数据结构设计即...

c语言程序设计课程设计报告(34篇)