当前位置:文档之家› C语言课程设计参考模板

C语言课程设计参考模板

C语言课程设计题目 XXXXXXX二级学院电子与信息工程学院班级 1X级XXXXX 专业X班姓名 XXX学号 XXX指导教师梁建勇2016年07月01日通讯录管理系统电子与信息工程学院C语言课程设计任务书2014022061 刘言松通讯录管理系统刘言松安康学院 2014级电子与信息工程系电子信息工程2班摘要:通讯录管理系统是生活中不可缺少的部分编写了一个通讯录管理系统是十分必要的。

本程序设计具有通讯信息的输入,进行保存、查找、删除等功能,操作界面简洁美观,易于操作。

程序用了条件、循环、结构体等知识点。

可运用于小的管理软件。

软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。

通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。

关键词:通讯录管理系统;结构体;条件语句;循环结构;指针1引言学习了C语言程序设计这门课程之后,使我对程序设计有了一定的了解,为了熟练掌握C 语言的语法特点、及其数据结构,提高自身编写程序的能力。

通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。

此外通过课程设计提高逻辑思考能力和解决实际问题的能力。

程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。

因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。

这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。

通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。

通过程序设计,达到理论与实际应用相结合,提高对信息管理系统的分析能力,能够根据实际应用,初步实现系统功能模块及算法的设计,通过编程基本实现信息管理系统。

2设计方案2.1设计思路建立一个函数,用来添加、显示、删除、查询、修改等信息,完成通讯录的功能。

主函数可以调用五个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、退出系统等功能。

在主函数中可以以1、2、3、4、5、数字键分别可以执行某个功能模块3程序设计与实施3.1根据该流程图定义数据类型建立函数typedef struct{char score; //编号char name[10]; //姓名char num[15]; //电话号码通讯录管理系统char email[20]; //电子邮箱char adds[20]; //工作单位}Person;3.2 主函数及其流程图定义主函数main()和一系列的功能函数,只有通过这些函数才可实现程序通讯录管理系统添加记录显示记录删除记录查询记录修改记录退出的功能。

每次使用都会调用主函数。

主函数主要是利用switch语句对数据进行处理,流程图如下图3.1所示。

图3.1系统流程图3.3其余各个功能函数及其流程图流程图及文本说明。

应该有多各部份,课设论文核心内容。

2014022061 刘言松4设计结果与分析将源程序编译、链接后生成可执行文件,运行该文件会看到如图4.1所示界面。

图4.1XXXX运行主函数时,首先调用函数menu();,该函数主要是利用输出函数printf进行输出。

输入1显示添加通讯录界面,如下图4.2所示。

图4.2XXXXXX这一函数实现了对字符串赋值的功能[1]。

系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。

每次输入结束后,系统输入询问是否继续添加的信息,然后执行switch语句,如果返回值是“Y”,则继续执行addnewcard()函数添加用户,否则返回主菜单。

输入2显示通讯录界面如图4.3所示。

通讯录管理系统图4.3XXXXX这一函数实现了对字符串赋值的功能[2]。

系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。

然后执行switch语句,如果返回值是“y”,则继续执行函数显示,否则返回主菜单。

在主菜单输入3显示删除通讯录界面如下图4.4所示。

图4.4XXX在主菜单界面输入数字“3”,执行deletecard()函数删除用户。

当通讯录执行者输入要删除学生的姓名,系统会搜索数据库并将搜索结果输出。

然后征求确认。

每次删除成功后系2014022061 刘言松统会询问是否继续删除,然后执行相应操作。

删除后,通讯录里的显示记录显示效果如图4.5所示:图4.5XXXXXXXXXXXXXXXX删除通讯录记录时首先选择出名字,其次在显示删除后程序才真正的删除,再进入显示界面就不会再显示原来所谓信息。

在主菜单输入4显示查询通讯录界面如图4.6所示。

图4.6查询信息界面这一函数提示通讯录管理人员可以有姓名、电话两种输入方式,调用scanf函数获取输入信息,然后执行if语句,则会显示查询用户信息,此外在此操作过程中选择1、2分别可以通讯录管理系统按照姓名电话号码进行快速查询。

在主菜单输入5显示修改通讯录界面如图4.7所示。

图4.7XXXXX这一函数实现了对字符串赋值的功能[5]。

系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。

每次输入结束后,系统输出询问是否继续修改信息,然后执行if语句,如果返回值是“Y”,则继续执行修改信息,否则返回主菜单。

5源程序#include<stdio.h> //编译预处理命令#include<stdlib.h> //定义杂项函数及内存分配函数#include<string.h> //字符串处理typedef struct //声明新名{char score; //结构体数据类型char name[10]; //编号char num[15]; //姓名char email[20]; //电子邮箱char adds[20]; //工作单位}Person;Person pe[80]; //登陆函数2014022061 刘言松int menu_select() //函数声明菜单选择{char c; //字符变量声明do{system("cls"); //执行控制台命令clsprintf("\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│0. 退出程序│\n");printf("\t\t└───────┘\n");printf("\t\t请您选择(0-5):");c=getchar(); //输入一个字符c }while(c<'0'||c>'5');return(c-'0');}int Input(Person per[],int n) //函数名Input,返回类型int,参数是一个自定义的数组Person per[],数组长度为n {int i=0;char sign,x[10]; // 声明一个char类型的变量sign和一个x数组while(sign!='n'&&sign!='N') //检测sign!='n'和sign!='N'并将其相与的值为真时,执行while语句,执行完重复检测;为假时退出语句{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].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);}void Display(Person per[],int n) //调用一个返回值为Person per[],int n的函数{int i;printf("-------------------------------------------------------------------\n");printf("编号姓名电话号码工作单位电子邮箱\n");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].num,per[i-1]. adds,per[i-1].email); //输出通讯录的一行if(i>1&&i%10==0) //每10行输出一条分隔线,并暂停一下{printf("\t-----------------------------------\n");printf("\t");system("pause");printf("\t-----------------------------------\n");}}printf("----------------------------------------------------------------------\n");system("pause");}int Delete_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++; //调用系统函数strcmp比较字符串大小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].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);}void Query_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└──────┘\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1){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].num);printf("\t工作单位: %s\n",per[i].adds);printf("\t电子邮箱: %s\n",per[i].email);}if(m==2){char s[20];int i=0;printf("\t请输入想查询的电话:");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].adds);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].num);printf("\t工作单位:");scanf("\t%s",per[i].adds);printf("\t电子邮箱:");scanf("\t%s",per[i].email);printf("\t修改成功!");}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 0:printf("\n\t\t谢谢使用,再见!\n"); //结束函数printf("\n\t\t");system("pause");exit(0);}}}课程设计成绩评定表。

相关主题