C语言课程设计大作业样本Word文档下载推荐.docx
《C语言课程设计大作业样本Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言课程设计大作业样本Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
一、提交材料应涉及:
(1)系统源代码
(2)课程报告
二、整个设计过程详细规定
(1)需求分析规定学生对案例系统进行分析,设计出需要完毕功能,完善各个模块调用关系;
(2)设计过程规定学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)
(3)实现过程规定学生养成良好编码习惯、完毕各个模块并进行测试,最后完毕系统整体测试;
(4)总结阶段按照规定完毕系统设计和实现报告,并进行总结、答辩。
成绩
评估
报告撰写状况(30分)
系统完毕状况(30分)
答辩状况(40分)
总分
20分
规范限度
5分
程序测试
基本功能20分
扩展功能10分
自述状况10分
答辩状况
30分
成绩评估教师:
一.需求分析
1,具备数据插入、修改、删除、显示和查询功能电话簿管理程序。
2,数据涉及:
人名、工作单位、电话号码和E-MAIL地址。
3,可对记录中姓名和电话号码进行修改。
4,可增长和删除记录。
5,可显示所有保存记录。
6,可按人名或电话号码进行查询。
分析
建议采用构造体数组和文献系统实现。
构造体成员涉及人名、工作单位、电话号码和E-MAIL地址。
依照题目规定程序应当采用构造体数组和文献系统实现。
应当有文献操作功能;
在程序中应当涉及输入、显示、删除、查询、添加、修改、保存、加载和退出功能。
二、概要设计
(1).程序模块构成及各个函数功能:
程序模块构成:
主函数:
main();
输出数据函数:
printf();
读取数据函数:
scanf();
显示记录函数:
Display();
删除记录函数:
shanchu();
查找记录函数:
chaxun();
自定义清屏函数:
system(“cls”);
自定义输入函数:
input();
字符输入函数:
getchar();
修改数据函数:
xiugai();
保存数据函数:
baocun();
排序数据函数:
paixu();
各函数重要功能:
随时输出数据;
读取输入数据信息;
显示菜单函数:
显示可供选取主菜单;
显示通讯录所有输入信息;
显示要删除通讯录所有输入信息;
显示要查询通讯录所有输入信息;
自定义清屏函数:
清除前面运营留下信息;
自定义输入函数:
输入通讯录成员;
;
字符输入函数:
从终端输入一种字符,遇回车键返回;
修改通讯录成员信息;
保存通讯录成员信息;
排序通讯录成员信息;
(2)程序中抽象数据类型定义:
顾客状态构造
顾客
{
编号:
姓名:
电话;
年龄;
邮箱:
地址;
(3)总体流程图
依照上面分析,可以将程序系统设计分为如下几种模块:
插入、显示、删除、查询、修改、保存和退出。
}
三.详细设计
(1).主菜单;
主菜单普通设计得比较简洁,只提供输入,解决和输出某些函数调用。
其中各功能模块用菜单方式选取。
流程图
N
Y
【程序】
Personpe[80];
intmenu_select()
{
charc;
do{
system("
cls"
);
//清屏
printf("
\t\t\t**********************************************\n"
);
//窗口初始化
\t\t\t**********欢迎使用通讯录管理系统!
***********\n"
\t\t\t*************┌───────┐***************\n"
\t\t\t**************1.添加记录***************\n"
\t\t\t**************│2.显示记录│****************\n"
\t\t\t**************│3.删除记录│****************\n"
\t\t\t**************│4.查询记录│****************\n"
\t\t\t**************│5.修改记录│****************\n"
\t\t\t**************│6.保存记录│*****************\n"
\t\t\t**************│7.排序记录│*****************\n"
\t\t\t**************│0.退出程序│*****************\n"
\t\t\t**************└──────┘****************\n"
\t\t请您选取(0-7):
"
c=getchar();
}while(c<
'
0'
||c>
7'
return(c-'
}
(2)显示模块
此模块为显示所有记录,流程图如下:
voidDisplay(Personper[],intn)
{
Inti;
printf("
----------------------------------------------------------------------\n"
//格式
编号\t姓名\t年龄\t电话号码\t通讯地址\t电子邮箱\n"
for(i=1;
i<
n+1;
i++)
%-8d%-8s%-8s%-18s%-18s%-8s\n"
per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email);
if(i>
1&
&
i%10==0)
{printf("
\t-----------------------------------\n"
\t"
pause"
}}
(3)修改模块
此模块先调用查找函数查找到所要修改信息,然后顾客依照需要修改信息。
流程图如下:
voidxiugai(Personper[],intn)
chars[20];
inti=0;
\t请输入想修改记录中名字:
scanf("
%s"
s);
//输入修改人名字
while(strcmp(per[i].name,s)!
=0&
n)i++;
if(i==n)
\t通讯录中没有此人!
\n"
return;
}
\t编号:
\t%d"
&
per[i].score);
\t姓名:
\t%s"
per[i].name);
\t年龄:
per[i].age);
\t电话号码:
per[i].num);
\t通讯住址:
per[i].adds);
\t电子邮箱:
per[i].email);
\t修改成功"
}
(4)插入模块
此模块为插入信息模块,插入后再调用保存函数来保存所插入数据,支持多条信息插入。
intInput(Personper[],intn)
charsign,x[10];
while(sign!
='
n'
sign!
N'
)
per[n+i].score);
per[n+i].name);
per[n+i].age);
per[n+i].num);
per[n+i].adds);
per[n+i].email);
gets(x);
\n\t与否继续添加?
(Y/N)"
\t%c"
sign);
i++;
return(n+i);
}(5)删除模块
此模块先运用查找模块找到所要删除信息,然后依照顾客选取来拟定与否删除信息,此种调用到Save函数。
其流程图如下:
intshanchu(Personper[],intn)
inti=0,j;
\t请输入想删除记录中名字:
if(i==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);
\t\t\t已经成功删除!
return(n-1);
(6)查询模块
voidchaxun(Personper[],intn)
intm;
\t\n请选取查询方式:
\t┌──────---┐\n"
\t│1------姓名查询│\n"
\t│2------电话查询│\n"
\t│3------地址查询│\n"
\t│4------返回│\n"
\t└──────---┘\n"
请选取:
scanf("
%d"
m);
while(m!
=1&
m!
=2&
=3&
=4)
输入错误请重新选取:
if(m==1)
\t请输入想查询姓名:
\t此人编号:
%d\n"
per[i].score);
//输出查询成果
\t此人年龄:
%s\n"
\t电话号码:
\t通讯地址:
\t电子邮箱:
};
if(m==2)
\t请输入想查询电话:
while(strcmp(per[i].num,s)!
//输出查询成果
\t此人姓名:
if(m==3)
\t请输入想查询地址:
while(strcmp(per[i].adds,s)!
n)
per[i].email);
(7)排序模块
voidpaixu(Personper[],intn)
{
inti,j;
//printf("
\t\按编号排序:
for(j=1;
if((strcmp(per[j].num,per[j+1].num))>
0)
strcpy(per->
num,per[j].num);
name,per[j].name);
age,per[j].age);
adds,per[j].adds);
email,per[j].email);
strcpy(per[j+1].num,per->
num);
strcpy(per[j+1].name,per->
name);
strcpy(per[j+1].age,per->
age);
strcpy(per[j+1].adds,per->
adds);
strcpy(per[j+1].email,per->
email);
排序成功!
五.测试成果
1.主菜单
2.显示所有信息
3.插入信息
4.查找模块
第一步:
第二步:
第三步:
第四步:
5.删除模块
6.修改模块
第一步
第二步
六.课程心得总结
刚开始学习C语言,总觉得很难理解,也很难学。
在这之前,咱们已经学习了一种学期,对C语言有了一定理解,但是也仅仅是停留在学习理解范畴,对里面好多东西还是很陌生,并不是很纯熟,有着许多欠缺,更多在运用起来时候还是感到很不好动手。
这次程序设计实验是对咱们进入大学以来学习程序设计语言成果一次大检查。
自己动手发现和解决问题。
通过这,我发现了自己许多局限性,平时没有掌握好知识在这次实验中彻底暴露出来,通过不断思考,不断查阅资料和上机运营解决其中大某些问题。
固然,还存在某些问题没有解决。
我相信在后来学习可以解决好它们。
课堂上许多关于C语言语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取。
然而要使用C语言这个工具解决实际问题,又必要掌握它。
通过上机练习,对于语法知识有了感性结识,加深对它理解,在理解基本上就会自然而然地掌握C语言语法规定。
对于某些内容自己以为在课堂上听懂了,但上机实践中会发现本来理解偏差,更加巩固了学过知识,并且在设计时候学要系统知识,也是一种较大挑战,某一方面知识欠缺都将影响到整个程序设计。
这次大作业让我学到了诸多有用东西,巩固了之前学习,通过这个程序学习,使我进一步理解和运用构造化程序设计思想和办法。
相信对后来初步掌握开发一种小型实用系统基本办法,学会调试一种比较长程序基本办法,学会运用流程图表达算法,进一步掌握和提高运用C语言进行程序设计能力。
我以为,这次实习对于我是非常故意义,对我个人影响比较大,对我动手能力有了很大提高。
通过这次课程设计,我对诸多函数有了新结识,也学会了运用各种函数。
最后感谢完毕大作业过程中协助过我教师和同窗。
源代码:
#include<
stdlib.h>
stdio.h>
string.h>
typedefstruct
charscore;
/*编号*/
charname[10];
/*姓名*/
charnum[15];
/*号码*/
charemail[20];
/*邮箱*/
charage[8];
/*年龄*/
charadds[20];
/*地址*/
}Person;
\t\t\t**************│6.保存记录│****************\n"
\t\t\t**************│7.排序记录│****************\n"
\t\t\t**************│0.退出程序│****************\n"