c语言课程设计--通讯录管理系统

时间:2024.3.31

5.4《C语言程序设计》课程设计实验报告封面

南京航空航天大学金城学院

《C语言程序设计》课程设计

实验报告

题目:                    

班级:                                

学号:                                

姓名:                                

成绩:                                

指导教师:                             

完成日期:      年    月    日

1.第一章:前言……………………………………………………2

2.第二章:概述……………………………………………………3

3.第三章:主要流程图……………………………………………4

4.第四章:算法分析………………………………………………5

5.第五章:测试及输出结果………………………………………9

6.第六章:课程设计体会…………………………………………

7.第七章:参考文献……………………………………………

8.第八章:程序源代码………………………………………………

第一章:前言

通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真学习课本知识,更重要的是要通过上机实践实现对知识的强化与巩固。C语言博大精深,需要我们认真体会,小心求证,不断实践。

 

C语言课程设计则对我们有以下几点帮助:

1.  进一步掌握和利用C语言进行程序设计的能力;


2.  进一步理解和运用结构化程序设计的思想和方法;

3.  初步掌握开发一个小型实用系统的基本方法;

4.  学会调试一个较长程序的基本方法;


5.  学会利用流程图或N-S图表示算法;


6.  掌握书写程设计开发文档的能力 (书写课程设计报告) 。

第二章:概述

目的和意义:

  本课程设计可加深对课堂理论学习的理解,增强动手能力,以培养学生合作的能力,为毕业设计作好实践环节上的准备。通讯录系统是在学校常见的计算机信息管理系统。它的主要任务是对学生信息进行管理,如学生信息的输入、查询、修改、增加、删除,迅速准确地完成各种学生信息的统计和查询。

主要内容:

本系统有分6个功能:(1)添加数据  (2)查询数据  (3)删除数据  (4)修改数据  (5)全部输出  (6)退出

其主要利用结构类型,指针,数组,函数等C语言知识来实现。

1.添加数据:输入姓名、电话号码及地址,即可添加数据。

2.查询数据:输入所要查询的姓名即可查询。

3.修改数据:输入所要修改的姓名,进行修改,保存后即成功。

4.删除数据:输入所要删除的姓名,确定后即成功。

5.输出数据:点击后即可查看所有保存的通讯录数据。

0.退出程序。

第三章:主要流程图

                    

模块化设计

为实现系统功能,本程序主要分为五个模块。它们分别为:添加数据,查询数据,删除数据,修改数据,全部输出和退出。这五个函数再通过主函数调用分别得以实现。主函数,首先提供了程序运行时的友好界面,列出了清单,提供用户做出选择,以便决定使用通讯录的哪种功能。

系统功能模块结构图:

文本框: 添加数据

第四章:算法分析

整个系统主要包括五大模块:添加数据,查询数据,删除数据,修改数据和全部输出。各个算法分析如下:

主main函数:

Void input函数

主要利用if函数

查找数据

删除数据

修改数据 void modify函数

全部输出

第五章:测试及输出结果

主界面:

添加界面:

查询界面:

按姓名:

按号码:

删除界面:

按姓名:

按号码:

修改界面:

按姓名:

按号码:

输出界面:

退出界面:

第六章:课程设计体会

一、 对实验原理有更深的理解   

通过该课程设计,掌握了什么是C语言程序设计,C语言程序设计的基本过程及其各阶段的基本任务,熟悉了C语言程序设计的流程图,了解了与C语言程序设计相关的技术,对课本上的知识有了更深的理解,课本上的知识是机械的,表面的。通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。

二、激发了学习的积极性

通过该课程设计,全面系统的理解了C语言程序设计构造的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的C语言程序设计的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。以前对于C语言程序设计的认识是模糊的,概念上的,现在通过自己动手做实验,对C语言程序设计的认识更加深刻。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,将不必要的命令去除。在这次课程设计中,我就是按照实验指导的思想来完成。加深了理解VC的内部功能及内部实现,培养实践动手能力和程序设计能力的目的。

三、 总结

课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。

我做的是通讯录系统,虽然是很简单的一个小的程序,但对我一个初学者来说却是一个很大的困难。更加是第一次做课程设计,所以第一天下午在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以下一步就是开始正式的编程序了。不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。 经过一波三折,终于开始正式编程。

编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强迫自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。

通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前。

第七章:参考文献

1、C程序设计(第四版)

谭浩强 著

2、收集的各种网络资料

第八章:程序源代码

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define szSTR 64 /*指可以记录并保存64个通讯录,当然,可以再设置增加或减少*/

#define fileDB "c:\\contact.txt"/*指保存的目录*/

struct CONTACT {

char name[szSTR];/*姓名*/

char unit[szSTR];/*工作单位*/

char tele[szSTR];/*电话*/

char mail[szSTR];/*mail*/

};

typedef struct CONTACT CON;

#define BNAME 1

#define BUNIT 2

#define BTELE 4

#define BMAIL 8

#define BFULL 0xFF

int OPER[5] = {BFULL, BNAME, BUNIT, BTELE, BMAIL};

void input(CON * s, int mask)

{

if(mask & BNAME) { printf("请输入学生姓名:"); scanf("%s", s->name); }

if(mask & BUNIT) { printf("请输入工作单位:"); scanf("%s", s->unit); }

if(mask & BTELE) { printf("请输入联系电话:"); scanf("%s", s->tele); }

if(mask & BMAIL) { printf("请输入电子邮件:"); scanf("%s", s->mail); }

}/*end input*/

void show (int id, CON * s)

{

if(!s) return ;

if(id)

  printf("%d\t%s\t%s\t%s\t%s\n",

   id, s->name , s->unit , s->tele , s->mail );

else

  printf("【姓名】%s【工作单位】%s【电话】%s【电邮】%s\n",

   s->name , s->unit , s->tele , s->mail );

/*end if*/

}/*end show*/

void regist(void)

{

CON s; FILE * f = 0;

input(&s, BFULL);

f = fopen(fileDB, "ab");

fwrite(&s,sizeof(s),1,f);

fclose(f);

printf("资料已保存!\n");

}/*end regist*/

int browse(char * key, fpos_t * p, CON * s)

{

FILE * f =0; int i = 0, r = 0; CON t;

char * a = 0, * b = 0; fpos_t q;

 if(!s) return 0;

f = fopen(fileDB, "rb");

if(!f) {

  printf("数据库暂无记录\n");

  return 0;

}/*end if*/

printf("编号\t姓名\t单位\t电话\t电邮\n");

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

while(!feof(f)) {

  fgetpos(f, &q);

  r = fread(&t, sizeof(t), 1, f);

  if(r<1)break;

  if(t.name[0]==0) continue;

  if(key) {

   a = strstr(t.name , key);

   b = strstr(t.tele , key);

   if(a == 0 && b == 0) continue;

  }/*end if*/

 if(p) *p = q;

  if(s) memcpy(s, &t, sizeof(t));

  i++;

  show(i, &t);

}/*end while*/

fclose(f);

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

return i;

}/*end browse*/

fpos_t query(CON * s)

{

char key[szSTR]=""; fpos_t p = 0; int r = 0;

printf("请输入姓名或者电话号码:");

scanf("%s", key);

r = browse(key, &p, s);

return r?p:-1;

}/*end query*/

void clear(void)

{

FILE * f = 0; CON s;

fpos_t p = query(&s);

if(p<0) return;

f = fopen(fileDB, "rb+");

fsetpos(f, &p);

memset(&s, 0, sizeof(s));

fwrite(&s, sizeof(s),1, f);

fclose(f);

printf("记录已删除!\n");

}/*end clear*/

void modify(void)

{

FILE * f = 0; CON s; int cmd = 0;

fpos_t p = query(&s);

if(p<0) return;

f = fopen(fileDB, "rb+");

fsetpos(f, &p);

for(;;) {

  show(0, &s);

  printf("请选择:1-姓名;2-工作单位;3-电话;4-电邮;5-保存并退出;6-放弃修改并退出\n");

  scanf("%d", &cmd);

  switch(cmd) {

  case 1:

  case 2:

  case 3:

  case 4:

   input(&s, OPER[cmd]);

   break;

  case 5:

   fsetpos(f, &p);

   fwrite(&s, sizeof(s), 1, f);

  case 6:

   fclose(f);

   return;

 default:

   printf("错误的操作,请重新输入。\n");

  }/*end case*/

}/*mext*/

}/*end clear*/

int main(void)

{

int cmd = 0; CON s;

for(;;) {

  printf("\n\t\t\t\t欢迎使用本通信簿!");

  printf("\n\t\t\t-------------1-添加--------------");

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

  printf("\n\t\t\t-------------3-删除--------------");

  printf("\n\t\t\t-------------4-修改--------------");

  printf("\n\t\t\t-------------5-全部输出----------");

  printf("\n\t\t\t-------------0-退出--------------\n");

  scanf("%d", &cmd);

  switch(cmd) {

   case 0: return 0;

   case 1: regist(); break;

   case 2: query(&s); break;

   case 3: clear(); break;

   case 4: modify(); break;

   case 5: browse(0, 0, &s); break;

  }//end case

}

return 0;

}

/*此程序存在一个弊端,在执行添加操作时,如果输完某个数据后加空格再输入一个数据时会有问题,想要知道,自己运行了看去 O(∩_∩)O哈哈~*/

优缺点:

1、此程序在运行时最好不要出现错误,不然会有麻烦,很难解决,这是本程序的弊端所在。

2、此程序所记录的通讯录为有限多个,暂时限定为64个,不过可以根据所需做出适当调整。

3、此程序界面简洁明了,易于操作,不失为一优点。

更多相关推荐:
c课程设计报告书——通讯录管理系统

C语言课程设计课程设计报告题目学号姓名年级专业指导教师完成日期安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformationAnhuiNormalUniversi...

c++课程设计总结报告 通讯录管理系统

源代码includeltiostreamgtincludeltstringgtincludeltiomanipgtincludeltfstreamgtincludeltconiohgtincludeltcstd...

手机通讯录管理系统课程设计报告模板

山东工商学院信电学院高级语言程序设计课程设计报告高级语言程序设计课程设计报告题目手机通讯录管理系统专业电子信息工程班级电子112学号姓名指导教师日期20xx年7月9日至20xx年7月14日山东工商学院信电学院山...

通讯录管理系统课程设计报告

设计课题题目一课程设计目的与要求1课程设计目的1综合运用之前所学知识选择控制循环控制数组函数指针结构体和文件等来完成一个简单的信息管理程序的设计2充分体现和体会函数在程序设计中的必要性和实用性并反映主函数mai...

C语言课程设计报告—手机通讯录管理系统

目录摘要2第一章绪论311课程设计目的和内容概述312题目手机通讯录管理系统3第二章程序分析421总体设计422详细设计423总流程图4第三章模块介绍和总体实现731构建结构体写入文件732构造函数与模块833...

个人通讯录管理系统课程设计报告示例

重庆科技学院课程设计报告院系电子信息工程学院专业班级学生姓名学号设计地点单位设计题目完成日期20xx年3月5日指导教师评语成绩五级记分制指导教师签字重庆科技学院课程设计报告重庆科技学院课程设计任务书设计题目个人...

c语言个人通信录管理系统课程设计报告

高级语言程序设计报告个人通信录管理系统院系班级成员时间通信与信息工程学院杨文刚1107020xx020xx年7月2日基于链表的个人通信录管理系统课程设计任务书目录1设计目的12总体设计23详细设计34程序调试与...

c语言课程设计报告书_通讯录管理系统[1]

题目通讯录管理系统一需求分析任务要求自学C语言中有关链表及外部文件的内容设计出通讯录管理系统具体要求如下建立通讯录信息信息至少包括编号姓名年龄电话通讯地址电子邮箱等内容能够提供添加删除和修改通讯录信息等功能能够...

C语言课程设计报告—手机通讯录管理系统

目录摘要2第一章绪论311课程设计目的和内容概述312题目手机通讯录管理系统3第二章程序分析421总体设计422详细设计423总流程图4第三章模块介绍和总体实现731构建结构体写入文件732构造函数与模块833...

个人通讯录管理系统课程设计报告示例

重庆科技学院个人通讯录管理系统课程设计报告重庆科技学院课程设计报告院系电气与信息工程学院班级计科普1001学生姓名刘静学号20xx441674设计地点单位计算机自主学习中心设计题目个人通讯录管理系统完成日期20...

C语言课程设计报告(学生通讯录管理系统设计)

课程设计报告课程学号姓名班级教师时间本科高级语言程序设计1310411031秦钱军20xx级计算机科学与技术冯凤20xx年1月计算机科学与技术系123456789附录includeltstdiohgtinclu...

通讯录管理系统设计报告

C语言通讯录管理系统通讯录管理系统学生姓名学院计算机与通信工程学院班级班学号摘要本课程设计主要是一个简单的通讯录管理系统通过程序中的菜单编号实现对数据的添加修改删除等操作在本课程设计中系统开发平台为Window...

通讯录管理系统课程设计报告(29篇)