C语言课程设计参考模板 4Word文档下载推荐.docx
《C语言课程设计参考模板 4Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言课程设计参考模板 4Word文档下载推荐.docx(19页珍藏版)》请在冰点文库上搜索。
设计考核要求
1编写程序,调试,测试
2完成设计报告
3完成答辩
刘**安康学院20**级电子与信息工程系电子信息工程2班
摘要:
通讯录管理系统是生活中不可缺少的部分编写了一个通讯录管理系统是十分必要的。
本程序设计具有通讯信息的输入,进行保存、查找、删除等功能,操作界面简洁美观,易于操作。
程序用了条件、循环、结构体等知识点。
可运用于小的管理软件。
软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。
通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。
关键词:
通讯录管理系统;
结构体;
条件语句;
循环结构;
指针
1引言
学习了C语言程序设计这门课程之后,使我对程序设计有了一定的了解,为了熟练掌握C语言的语法特点、及其数据结构,提高自身编写程序的能力。
通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。
此外通过课程设计提高逻辑思考能力和解决实际问题的能力。
程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。
因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。
这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。
通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。
通过程序设计,达到理论与实际应用相结合,提高对信息管理系统的分析能力,能够根据实际应用,初步实现系统功能模块及算法的设计,通过编程基本实现信息管理系统。
2设计方案
2.1设计思路
建立一个函数,用来添加、显示、删除、查询、修改等信息,完成通讯录的功能。
主函数可以调用五个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、退出系统等功能。
在主函数中可以以1、2、3、4、5、数字键分别可以执行某个功能模块
3程序设计与实施
3.1根据该流程图定义数据类型建立函数
typedefstruct
{
charscore;
//编号
charname[10];
//姓名
charnum[15];
//电话号码
charemail[20];
//电子邮箱
charadds[20];
//工作单位
}Person;
3.2主函数及其流程图
定义主函数main()和一系列的功能函数,只有通过这些函数才可实现程序通讯录管理系统添加记录显示记录删除记录查询记录修改记录退出的功能。
每次使用都会调用主函数。
主函数主要是利用switch语句对数据进行处理,流程图如下图3.1所示。
图3.1系统流程图
3.3其余各个功能函数及其流程图
流程图及文本说明。
应该有多各部份,课设论文核心内容。
4设计结果与分析
将源程序编译、链接后生成可执行文件,运行该文件会看到如图4.1所示界面。
图4.1XXXX
运行主函数时,首先调用函数menu();
,该函数主要是利用输出函数printf进行输出。
输入1显示添加通讯录界面,如下图4.2所示。
图4.2XXXXXX
这一函数实现了对字符串赋值的功能[1]。
系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。
每次输入结束后,系统输入询问是否继续添加的信息,然后执行switch语句,如果返回值是“Y”,则继续执行addnewcard()函数添加用户,否则返回主菜单。
输入2显示通讯录界面如图4.3所示。
图4.3XXXXX
这一函数实现了对字符串赋值的功能[2]。
然后执行switch语句,如果返回值是“y”,则继续执行函数显示,否则返回主菜单。
在主菜单输入3显示删除通讯录界面如下图4.4所示。
图4.4XXX
在主菜单界面输入数字“3”,执行deletecard()函数删除用户。
当通讯录执行者输入要删除学生的姓名,系统会搜索数据库并将搜索结果输出。
然后征求确认。
每次删除成功后系统会询问是否继续删除,然后执行相应操作。
删除后,通讯录里的显示记录显示效果如图4.5所示:
图4.5XXXXXXXXXXXXXXXX
删除通讯录记录时首先选择出名字,其次在显示删除后程序才真正的删除,再进入显示界面就不会再显示原来所谓信息。
在主菜单输入4显示查询通讯录界面如图4.6所示。
图4.6查询信息界面
这一函数提示通讯录管理人员可以有姓名、电话两种输入方式,调用scanf函数获取输入信息,然后执行if语句,则会显示查询用户信息,此外在此操作过程中选择1、2分别可以按照姓名电话号码进行快速查询。
在主菜单输入5显示修改通讯录界面如图4.7所示。
图4.7XXXXX
这一函数实现了对字符串赋值的功能[5]。
每次输入结束后,系统输出询问是否继续修改信息,然后执行if语句,如果返回值是“Y”,则继续执行修改信息,否则返回主菜单。
5源程序
#include<
stdio.h>
//编译预处理命令
stdlib.h>
//定义杂项函数及内存分配函数
string.h>
//字符串处理
typedefstruct//声明新名
//结构体数据类型
Personpe[80];
//登陆函数
intmenu_select()//函数声明菜单选择
charc;
//字符变量声明
do
{
system("
cls"
);
//执行控制台命令cls
printf("
\t\t*****通讯录*****\n"
\t\t┌───────┐\n"
\t\t│1.添加记录│\n"
\t\t│2.显示记录│\n"
\t\t│3.删除记录│\n"
\t\t│4.查询记录│\n"
\t\t│5.修改记录│\n"
printf("
\t\t│0.退出程序│\n"
\t\t└───────┘\n"
\t\t请您选择(0-5):
"
c=getchar();
//输入一个字符c
}while(c<
'
0'
||c>
5'
return(c-'
}
intInput(Personper[],intn)//函数名Input,返回类型int,参数是一个自定义的数组Person
per[],数组长度为n
{
inti=0;
charsign,x[10];
//声明一个char类型的变量sign和一个x数组
while(sign!
='
n'
&
sign!
N'
)//检测sign!
和sign!
并将其相与的值为真时,执行while语句,执行完重复检测;
为假时退出语句
\t编号:
//输出显示函数
scanf("
\t%d"
&
per[n+i].score);
//读取键盘输入
\t姓名:
\t%s"
per[n+i].name);
\t电话号码:
per[n+i].num);
\t工作单位:
per[n+i].adds);
\t电子邮箱:
per[n+i].email);
gets(x);
\n\t是否继续添加?
(Y/N)"
\t%c"
sign);
i++;
}
return(n+i);
voidDisplay(Personper[],intn)//调用一个返回值为Personper[],intn的函数
inti;
-------------------------------------------------------------------\n"
编号姓名电话号码工作单位电子邮箱\n"
for(i=1;
i<
n+1;
i++)
{
%-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"
\t"
system("
pause"
}
----------------------------------------------------------------------\n"
system("
intDelete_a_record(Personper[],intn)//删除函数
chars[20];
inti=0,j;
\t请输入想删除记录中的名字:
scanf("
%s"
s);
//接收名字
while(strcmp(per[i].name,s)!
=0&
n)i++;
//调用系统函数strcmp比较字符串大小
if(i==n)
\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;
//将从他以后的每一个值付给前一个达到删除目的
\t\t\t已经成功删除!
return(n-1);
voidQuery_a_record(Personper[],intn)
intm;
\t\n请选择查询方式:
\t┌──────┐\n"
\t│1------姓名│\n"
\t│2------电话│\n"
\t│3------返回│\n"
\t└──────┘\n"
请选择:
%d"
m);
while(m!
=1&
m!
=2&
=3)
输入错误,请重新选择:
if(m==1)
chars[20];
inti=0;
\t请输入想查询的姓名:
while(strcmp(per[i].name,s)!
if(i==n)
return;
\t此人编号:
%d\n"
per[i].score);
%s\n"
per[i].num);
per[i].adds);
per[i].email);
if(m==2)
\t请输入想查询的电话:
while(strcmp(per[i].num,s)!
\t此人姓名:
per[i].name);
voidChange(Personper[],intn)
\t请输入想修改的记录中的名字:
return;
per[i].score);
\t修改成功!
voidmain()//主函数
intn=0;
for(;
;
)
switch(menu_select())
case1:
\n\t添加记录到通讯录\n"
//添加记录
n=Input(pe,n);
break;
case2:
\n\t\t\t通讯录记录表\n"
//显示记录
Display(pe,n);
break;
case3:
\n\t从通讯录中删除记录\n"
//删除记录
n=Delete_a_record(pe,n);
case4:
\n\t在通讯录中查找记录\n"
//查找记录
Query_a_record(pe,n);
case5:
\n\t修改通讯录中的记录\n"
//修改记录
Change(pe,n);
case0:
\n\t\t谢谢使用,再见!
//结束函数
\n\t\t"
exit(0);
}
课程设计成绩评定表
出勤
情况
出勤天数
缺勤天数
成
绩
评
定
出勤情况及设计过程表现(20分)
论文(20分)
设计成果(60分)
总成绩(100分)
综
合
指导教师签名:
年月日