完整C语言课程设计参考模板.docx
- 文档编号:8117410
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:16
- 大小:288.35KB
完整C语言课程设计参考模板.docx
《完整C语言课程设计参考模板.docx》由会员分享,可在线阅读,更多相关《完整C语言课程设计参考模板.docx(16页珍藏版)》请在冰豆网上搜索。
完整C语言课程设计参考模板
C语言课程设计
题目XXXXXXX
二级学院电子与信息工程学院
班级1X级XXXXX专业X班
姓名XXX
学号XXX
指导教师梁建勇
2016年07月01日
电子与信息工程学院
C语言课程设计任务书
设计题目
通讯录管理系统
已知技术参数和设计要求
整个系统可以设计为数据插入模块、数据修改模块、数据删除模块、数据显示模块和数据查询模块.
信息记录要存放到文件中去,因而要实现文件的输入输出操作;要实现数据的插入、删除、修改和显示功能,因而要实现插入、删除、修改和显示操作;要实现按人名或电话号码进行查询的功能,因而要提供查找操作;另外还应该提供键盘式选择菜单以实现功能选择
设计内容与步骤
采用结构体数组。
(1)数据添加模块;
(2)数据显示模块;
(3)数据删除模块;
(4)数据查询模块;
(5)数据修改模块。
设计工作计划与进度安排
6月29日上午:
设计算法,并验证。
同日下午:
完成程序。
6月30日上午:
检查程序是否满足设计要求并完善.
同日下午:
完成设计报告.
设计考核要求
1编写程序,调试,测试
2完成设计报告
3完成答辩
通讯录管理系统
刘言松安康学院2014级电子与信息工程系电子信息工程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所示。
开始
选择1
添加记录
选择2
显示记录
选择3
删除记录
选择4
查询记录
结束
选择5
修改记录
Y
N
Y
Y
N
N
Y
N
Y
N
图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]。
系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。
然后执行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]。
系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据.每次输入结束后,系统输出询问是否继续修改信息,然后执行if语句,如果返回值是“Y”,则继续执行修改信息,否则返回主菜单.
5源程序
#include h〉//编译预处理命令 #include〈stdlib。 h>//定义杂项函数及内存分配函数 #include h〉//字符串处理 typedefstruct//声明新名 { charscore;//结构体数据类型 charname[10];//编号 charnum[15];//姓名 charemail[20];//电子邮箱 charadds[20];//工作单位 }Person; Personpe[80];//登陆函数 intmenu_select()//函数声明菜单选择 { charc;//字符变量声明 do { system("cls");//执行控制台命令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│0。 退出程序│\n"); printf(”\t\t└───────┘\n"); printf(”\t\t请您选择(0-5): ”); c=getchar();//输入一个字符c }while(c〈’0’||c>’5'); return(c—'0’); } intInput(Personper[],intn)//函数名Input,返回类型int,参数是一个自定义的数组Person per[],数组长度为n { inti=0; charsign,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); } voidDisplay(Personper[],intn)//调用一个返回值为Personper[],intn的函数 { inti; printf(”--——--—-—--———-——-—-—---———------—-———-—-—-———-—----—-——-——-———-———\n”); printf(”编号姓名电话号码工作单位电子邮箱\n"); printf("-----———-—-—--—-—————-——-——-----——--———--—--—-——-——-—-—-—-——-—---—-\n”); for(i=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”); } intDelete_a_record(Personper[],intn)//删除函数 { chars[20]; inti=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); } voidQuery_a_record(Personper[],intn) { intm; 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) { chars[20]; inti=0; printf(”\t请输入想查询的姓名: ”); scanf(”\t%s",s); while(strcmp(per[i].name,s)! =0&&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) { chars[20]; inti=0; printf("\t请输入想查询的电话: "); scanf(”\t%s",s); while(strcmp(per[i]。 num,s)! =0&&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); } } voidChange(Personper[],intn) { chars[20]; inti=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修改成功! "); } voidmain()//主函数 { intn=0; for(;;) { switch(menu_select()) { case1: printf("\n\t添加记录到通讯录\n”);//添加记录 n=Input(pe,n); break; case2: printf("\n\t\t\t通讯录记录表\n");//显示记录 Display(pe,n); break; case3: printf(”\n\t从通讯录中删除记录\n");//删除记录 n=Delete_a_record(pe,n); printf(”\t"); system(”pause"); break; case4: printf("\n\t在通讯录中查找记录\n”);//查找记录 Query_a_record(pe,n); printf("\t”); system("pause”); break; case5: printf("\n\t修改通讯录中的记录\n");//修改记录 Change(pe,n); printf("\t"); system(”pause"); break; case0: printf("\n\t\t谢谢使用,再见! \n");//结束函数 printf(”\n\t\t”); system("pause”); exit(0); } } } 课程设计成绩评定表 出勤 情况 出勤天数 缺勤天数 成 绩 评 定 出勤情况及设计过程表现(20分) 论文(20分) 设计成果(60分) 总成绩(100分) 综 合 评 定 指导教师签名: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 语言 课程设计 参考 模板
![提示](https://static.bdocx.com/images/bang_tan.gif)