C语言课程设计大作业样本.docx

上传人:b****7 文档编号:9328510 上传时间:2023-02-04 格式:DOCX 页数:34 大小:152.02KB
下载 相关 举报
C语言课程设计大作业样本.docx_第1页
第1页 / 共34页
C语言课程设计大作业样本.docx_第2页
第2页 / 共34页
C语言课程设计大作业样本.docx_第3页
第3页 / 共34页
C语言课程设计大作业样本.docx_第4页
第4页 / 共34页
C语言课程设计大作业样本.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

C语言课程设计大作业样本.docx

《C语言课程设计大作业样本.docx》由会员分享,可在线阅读,更多相关《C语言课程设计大作业样本.docx(34页珍藏版)》请在冰豆网上搜索。

C语言课程设计大作业样本.docx

C语言课程设计大作业样本

郑州大学

 

课程报告

 

课程名称:

C语言程序设计

专业班级:

(15)班

学生姓名:

谢*

学号:

7611***

任课教师:

赵**

学期:

--2

 

课程报告任务书

题目

通讯录管理系统

重要

内容

开发一种通讯录管理系统,基本信息涉及:

编号、姓名、性别、出生年月、固定电话、手机号、电子邮件等基本信息(也可以依照自己状况进行扩充)。

使之能提供如下基本功能:

(1)通讯录等信息录入功能(注:

数据等规定用文献保存)--输入

(2)通讯录信息浏览功能--输出

(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):

①按电话号码进行查询②按姓名查询等

按照年龄排序

按姓名排序等

(4)通讯录条目删除与修改等

扩展功能:

可以按照自己限度进行扩展。

例如

(1)简朴权限解决

(2)报表打印功能(3)模糊查询,如姓张人员等;或者给定电子邮件某些进行查询等(4)给定指定年龄范畴之内查询等等。

总之,可以依照自己需求进行分析功能,成绩评估按照难度进行区别。

任务

规定

一、提交材料应涉及:

(1)系统源代码

(2)课程报告

二、整个设计过程详细规定

(1)需求分析规定学生对案例系统进行分析,设计出需要完毕功能,完善各个模块调用关系;

(2)设计过程规定学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)

(3)实现过程规定学生养成良好编码习惯、完毕各个模块并进行测试,最后完毕系统整体测试;

(4)总结阶段按照规定完毕系统设计和实现报告,并进行总结、答辩。

成绩

评估

报告撰写状况(30分)

系统完毕状况(30分)

答辩状况(40分)

总分

内容

20分

规范限度

5分

程序测试

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");//窗口初始化

printf("\t\t\t**********欢迎使用通讯录管理系统!

***********\n");

printf("\t\t\t*************┌───────┐***************\n");

printf("\t\t\t**************1.添加记录***************\n");

printf("\t\t\t**************│2.显示记录│****************\n");

printf("\t\t\t**************│3.删除记录│****************\n");

printf("\t\t\t**************│4.查询记录│****************\n");

printf("\t\t\t**************│5.修改记录│****************\n");

printf("\t\t\t**************│6.保存记录│*****************\n");

printf("\t\t\t**************│7.排序记录│*****************\n");

printf("\t\t\t**************│0.退出程序│*****************\n");

printf("\t\t\t**************└──────┘****************\n");

printf("\t\t请您选取(0-7):

");

c=getchar();

}while(c<'0'||c>'7');

return(c-'0');

}

(2)显示模块

此模块为显示所有记录,流程图如下:

 

voidDisplay(Personper[],intn)

{

Inti;

printf("----------------------------------------------------------------------\n");//格式

printf("编号\t姓名\t年龄\t电话号码\t通讯地址\t电子邮箱\n");

printf("----------------------------------------------------------------------\n");

for(i=1;i

{

printf("%-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");

printf("\t");

system("pause");

printf("\t-----------------------------------\n");

}}

printf("----------------------------------------------------------------------\n");

system("pause");

(3)修改模块

此模块先调用查找函数查找到所要修改信息,然后顾客依照需要修改信息。

流程图如下:

voidxiugai(Personper[],intn)

{

chars[20];

inti=0;

printf("\t请输入想修改记录中名字:

");

scanf("%s",s);//输入修改人名字

while(strcmp(per[i].name,s)!

=0&&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].age);

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修改成功");}

(4)插入模块

此模块为插入信息模块,插入后再调用保存函数来保存所插入数据,支持多条信息插入。

流程图

intInput(Personper[],intn)

{

inti=0;

charsign,x[10];

while(sign!

='n'&&sign!

='N')

{

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].age);

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);

}(5)删除模块

此模块先运用查找模块找到所要删除信息,然后依照顾客选取来拟定与否删除信息,此种调用到Save函数。

其流程图如下:

intshanchu(Personper[],intn)

{

chars[20];

inti=0,j;

printf("\t请输入想删除记录中名字:

");

scanf("%s",s);

while(strcmp(per[i].name,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return(n);

}

for(j=i;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);

}

printf("\t\t\t已经成功删除!

\n");

return(n-1);

}

(6)查询模块

voidchaxun(Personper[],intn)

{

intm;

printf("\t\n请选取查询方式:

\n");

printf("\t┌──────---┐\n");

printf("\t│1------姓名查询│\n");

printf("\t│2------电话查询│\n");

printf("\t│3------地址查询│\n");

printf("\t│4------返回│\n");

printf("\t└──────---┘\n");

printf("请选取:

");

scanf("%d",&m);

while(m!

=1&&m!

=2&&m!

=3&&m!

=4)

{

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].age);

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].age);

printf("\t通讯地址:

%s\n",per[i].adds);

printf("\t电子邮箱:

%s\n",per[i].email);

};

if(m==3)

{

chars[20];

inti=0;

printf("\t请输入想查询地址:

");

scanf("\t%s",s);

while(strcmp(per[i].adds,s)!

=0&&i

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].age);

printf("\t电话号码:

%s\n",per[i].num);

printf("\t电子邮箱:

%s\n",per[i].email);

};

}

(7)排序模块

voidpaixu(Personper[],intn)

{

inti,j;

//printf("\t\按编号排序:

\n");

for(i=1;i

{

for(j=1;j

if((strcmp(per[j].num,per[j+1].num))>0)

{

strcpy(per->num,per[j].num);

strcpy(per->name,per[j].name);

strcpy(per->age,per[j].age);

strcpy(per->adds,per[j].adds);

strcpy(per->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);

}

}

printf("排序成功!

\n");

}

五.测试成果

1.主菜单

2.显示所有信息

3.插入信息

4.查找模块

第一步:

第二步:

第三步:

第四步:

5.删除模块

6.修改模块

第一步

第二步

 

六.课程心得总结

刚开始学习C语言,总觉得很难理解,也很难学。

在这之前,咱们已经学习了一种学期,对C语言有了一定理解,但是也仅仅是停留在学习理解范畴,对里面好多东西还是很陌生,并不是很纯熟,有着许多欠缺,更多在运用起来时候还是感到很不好动手。

这次程序设计实验是对咱们进入大学以来学习程序设计语言成果一次大检查。

自己动手发现和解决问题。

通过这,我发现了自己许多局限性,平时没有掌握好知识在这次实验中彻底暴露出来,通过不断思考,不断查阅资料和上机运营解决其中大某些问题。

固然,还存在某些问题没有解决。

我相信在后来学习可以解决好它们。

课堂上许多关于C语言语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取。

然而要使用C语言这个工具解决实际问题,又必要掌握它。

通过上机练习,对于语法知识有了感性结识,加深对它理解,在理解基本上就会自然而然地掌握C语言语法规定。

对于某些内容自己以为在课堂上听懂了,但上机实践中会发现本来理解偏差,更加巩固了学过知识,并且在设计时候学要系统知识,也是一种较大挑战,某一方面知识欠缺都将影响到整个程序设计。

这次大作业让我学到了诸多有用东西,巩固了之前学习,通过这个程序学习,使我进一步理解和运用构造化程序设计思想和办法。

相信对后来初步掌握开发一种小型实用系统基本办法,学会调试一种比较长程序基本办法,学会运用流程图表达算法,进一步掌握和提高运用C语言进行程序设计能力。

我以为,这次实习对于我是非常故意义,对我个人影响比较大,对我动手能力有了很大提高。

通过这次课程设计,我对诸多函数有了新结识,也学会了运用各种函数。

最后感谢完毕大作业过程中协助过我教师和同窗。

 

源代码:

#include

#include

#include

typedefstruct

{

charscore;/*编号*/

charname[10];/*姓名*/

charnum[15];/*号码*/

charemail[20];/*邮箱*/

charage[8];/*年龄*/

charadds[20];/*地址*/

}Person;

Personpe[80];

intmenu_select()

{

charc;

do{

system("cls");

printf("\t\t\t**********************************************\n");//窗口初始化

printf("\t\t\t**********欢迎使用通讯录管理系统!

***********\n");

printf("\t\t\t*************┌───────┐***************\n");

printf("\t\t\t**************1.添加记录***************\n");

printf("\t\t\t**************│2.显示记录│****************\n");

printf("\t\t\t**************│3.删除记录│****************\n");

printf("\t\t\t**************│4.查询记录│****************\n");

printf("\t\t\t**************│5.修改记录│****************\n");

printf("\t\t\t**************│6.保存记录│****************\n");

printf("\t\t\t**************│7.排序记录│****************\n");

printf("\t\t\t**************│0.退出程序│****************\n");

printf("\t\t\t**************└──────┘****************\n");

printf("\t\t请您选取(0-7):

");

c=getchar();

}while(c<'0'||c>'7');

return(c-'0');

}

voidpaixu(Personper[],intn)

{

inti,j;

//printf("\t\按编号排序:

\n");

for(i=1;i

{

for(j=1;j

if((strcmp(per[j].num,per[j+1].num))>0)

{

strcpy(per->num,per[j].num);

strcpy(per->name,per[j].name);

strcpy(per->age,per[j].age);

strcpy(per->adds,per[j].adds);

strcpy(per->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);

}

}

printf("排序成功!

\n");

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1