1、C语言课程设计参考模板 C语言课程设计参考模板 编辑整理: 尊敬的读者朋友们: 这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(C语言课程设计参考模板)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。 本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为C语言课程设计参考模板的全部内容。 15 C语言课
2、程 设 计 题 目 XXXXXXX 二级学院 电子与信息工程学院 班 级 1X级XXXXX 专业X班 姓 名 XXX 学 号 XXX 指导教师 梁建勇 2016年07月01日 电子与信息工程学院 C语言课程设计任务书 设计题目 通讯录管理系统 已知技术参数和设计要求 整个系统可以设计为数据插入模块、数据修改模块、数据删除模块、数据显示
3、模块和数据查询模块. 信息记录要存放到文件中去,因而要实现文件的输入输出操作;要实现数据的插入、删除、修改和显示功能,因而要实现插入、删除、修改和显示操作;要实现按人名或电话号码进行查询的功能,因而要提供查找操作;另外还应该提供键盘式选择菜单以实现功能选择 设计内容与步骤 采用结构体数组。 (1)数据添加模块; (2)数据显示模块; (3)数据删除模块; (4)数据查询模块; (5)数据修改模块。 设计工作计划与进度安排 6月29日上午:设计算法,并验证。 同日下午:完成程序。 6月30日上午:检查程序是否满足设计要求并完善。 同日下午:完成设计报告。
4、 设计考核要求 1 编写程序,调试,测试 2 完成设计报告 3 完成答辩 通讯录管理系统 刘言松 安康学院 2014级电子与信息工程系电子信息工程2班 摘要:通讯录管理系统是生活中不可缺少的部分编写了一个通讯录管理系统是十分必要的。本程序设计具有通讯信息的输入,进行保存、查找、删除等功能,操作界面简洁美观,易于操作.程序用了条件、循环、结构体等知识点。可运用于小的管理软件。软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各
5、种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。 关键词:通讯录管理系统;结构体;条件语句;循环结构;指针 1引言 学习了C语言程序设计这门课程之后,使我对程序设计有了一定的了解,为了熟练掌握C语言的语法特点、及其数据结构,提高自身编写程序的能力。通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。此外通过课程设计提高逻辑思考能力和解决实际问题的能力。程序设计中,语句的语法和常量变量的定义都有严格的
6、要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。通过程序设计,达到理论与实际应用相结合,提高对信息管理系统的分析能力,能够根据实际应用,初步实现系统功能模块及算法的设计,通过编程基本实现信息管理系统。 2设计方案 2.1设计思路 建立一个函数,用来添加、显示
7、删除、查询、修改等信息,完成通讯录的功能.主函数可以调用五个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、退出系统等功能.在主函数中可以以1、2、3、4、5、数字键分别可以执行某个功能模块 3程序设计与实施 3.1根据该流程图定义数据类型建立函数 typedef struct { char score; //编号 char name[10]; //姓名 char num[15]; //电话号码 char email[20]; //电子邮箱
8、char adds[20]; //工作单位 }Person; 3。2 主函数及其流程图 定义主函数 main()和一系列的功能函数,只有通过这些函数才可实现程序 通讯录管理系统 添加记录 显示记录 删除记录 查询记录 修改记录 退 出 的功能.每次使用都会调用主函数.主函数主要是利用switch语句对数据进行 处理,流程图如下图3。1所示。 Y N Y Y N N Y N Y N 图3.
9、1系统流程图 3.3其余各个功能函数及其流程图 流程图及文本说明。应该有多各部份,课设论文核心内容. 4设计结果与分析 将源程序编译、链接后生成可执行文件,运行该文件会看到如图4.1所示界面。 图4。1XXXX 运行主函数时,首先调用函数menu();,该函数主要是利用输出函数printf进行输出。 输入1显示添加通讯录界面,如下图4。2所示。 图4。2XXXXXX 这一函数实现了对字符串赋值的功能[1]。系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。每次输入结束后,系统输入询问是否继续添
10、加的信息,然后执行switch语句,如果返回值是“Y”,则继续执行addnewcard()函数添加用户,否则返回主菜单。 输入2显示通讯录界面如图4。3所示。 图4.3XXXXX 这一函数实现了对字符串赋值的功能[2]。系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。然后执行switch语句,如果返回值是“y”,则继续执行函数显示,否则返回主菜单。 在主菜单输入3显示删除通讯录界面如下图4.4所示。 图4.4XXX 在主菜单界面输入数字“3”,执行d
11、eletecard()函数删除用户.当通讯录执行者输入要删除学生的姓名,系统会搜索数据库并将搜索结果输出。然后征求确认。每次删除成功后系统会询问是否继续删除,然后执行相应操作。删除后,通讯录里的显示记录显示效果如图4.5所示: 图4。5XXXXXXXXXXXXXXXX 删除通讯录记录时首先选择出名字,其次在显示删除后程序才真正的删除,再进入显示界面就不会再显示原来所谓信息。 在主菜单输入4显示查询通讯录界面如图4。6所示。
12、 图4.6查询信息界面 这一函数提示通讯录管理人员可以有姓名、电话两种输入方式,调用scanf函数获取输入信息,然后执行if语句,则会显示查询用户信息,此外在此操作过程中选择1、2分别可以按照姓名电话号码进行快速查询。 在主菜单输入5显示修改通讯录界面如图4。7所示。 图4.7XXXXX 这一函数实现了对字符串赋值的功能[5]。系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。每次输入结束后,系统输出询问是否继续修改信息,然后执行if
13、语句,如果返回值是“Y”,则继续执行修改信息,否则返回主菜单。
5源程序
#include〈stdio.h> //编译预处理命令
#include〈stdlib。h> //定义杂项函数及内存分配函数
#include 14、型
char name[10]; //编号
char num[15]; //姓名
char email[20]; //电子邮箱
char adds[20]; //工作单位
}Person;
Person pe[80]; //登陆函数
int menu_select() //函数声明 菜单选择
{
char c; //字符变量声明
do
{
system(”cls”); //执行控制台命令cls
printf(”\t\t *****通讯录* 15、* \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): 16、");
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 17、'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(" 18、\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("-——-—----—-—--—-—----——-————————- 19、———-——-——--——-—-———----——-——---—--\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, 20、per[i—1].email); //输出通讯录的一行
if(i〉1&&i%10==0) //每10行输出一条分隔线,并暂停一下
{
printf("\t——-—-————---—---——-—------—-—-——---\n”);
printf("\t");
system(”pause”);
printf("\t—-———---—-——-——---—-—-—————-—-----—\n”);
}
}
printf(”-———---—-—————-—--— 21、—-—-—--—-—--——-———-——-—-—-——-—--———-—--—--———-—---—\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 22、系统函数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; 23、 //将从他以后的每一个值付给前一个达到删除目的
}
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") 24、
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 25、 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〈 26、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;
p 27、rintf(”\t请输入想修改的记录中的名字:”);
scanf(”%s”,s);
while(strcmp(per[i]。name,s)!=0&&i 28、f("\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 29、\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");
30、 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:
31、 printf(”\n\t\t谢谢使用,再见!\n”); //结束函数
printf("\n\t\t");
system("pause”);
exit(0);
}
}
}
课程设计成绩评定表
出勤
情况
出勤天数
缺勤天数
成
绩
评
定
出勤情况及设计过程表现(20分)
论文(20分)
设计成果(60分)
总成绩(100分)
综
合
评
定
指导教师签名:
年 月 日






