C语言程序设计报告

时间:2024.5.2

C语言程序设计报告

题  目:学生通讯录管理系统

院系名称:电子工程系

专业名称:电子信息工程

    级:电信一班

学生姓名:

学号(8位):

指导教师:

设计起止时间:20##年9月13日~20##年9月23日

一、目的

全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。

二,设计内容:

设计与开发一个通讯录管理系统,对通讯录中的姓名、单位、电话、QQ 、mail等基本信息进行管理、主要功能如下:

     1).输入记录;

     2).显示记录;

     3).按姓名查找显示记录;

     4).删除记录;

     5).插入记录;

     6).记录保存为文件;

     7).从文件中读记录;

     8).按姓名排序;

     9).显示单条记录;

三.概要设计

1.录入学生信息将信息保存至文件中

2.从文件中读取信息显示出学生信息

3. 从文件中读取信息存至单链表中,传递头指针从而修改学生信息,再将修改完成的学生信息保存至文件中

4. 从文件中读取信息存至单链表中,传递头指针从然后用冒泡法排序学生信息,再将修改完成的学生信息保存至文件中

1、课题的主要功能模块划分:

C语言程序设计报告

2.各个模块详细的功能描述。

1.录入学生信息

录入学生信息将信息保存至文件中

2.显示学生信息

从文件中读取信息显示出学生信息

3.查询学生信息

从文件中读取信息存至单链表中,输入你要查找的学号。

4.修改学生信息

从文件中读取信息存至单链表中,传递头指针从而修改学生信息,再将修改完成的学生信息保存至文件中

5.删除学生信息

从文件中读取信息存至单链表中,传递头指针从而删除学生信息,再将修改完成的学生信息保存至文件中

6.排序学生信息

从文件中读取信息存至单链表中,传递头指针从然后用冒泡法排序学生信息,再将修改完成的学生信息保存至文件

四、程序调试:

一、先进行人工检查,即静态检查。
  在写好一个程序以后,不要匆匆忙忙上机,而应对程序进行人工检查。这一步十分重要,它能发现程序设计人员由于疏忽而造成的多数错误。这一步往往容易被人忽视,总希望把一切都推给计算机去做,但这样会多占用机器时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序。
  为了更有效地进行人工检查,所编的程序应力求做到以下几点:
  ①应当采用结构化程序方法编程,以增加可读性;
  ②尽可能多加注释,以帮助理解每段程序的作用;
  ③在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。
  二、在人工检查无误后,再上机调试。
  通过上机发现错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应当注意的是有时提示出错的地方并不是真正出错的位置,如果在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。
  如果系统提示的出错信息很多,应当从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息。这时只要加上一个变量定义,就所有错误都消除了。
  三、在改正语法错误(包括“错误(error)”和“警告(warning)”)后,程序经过连接(link)就得到可执行的目标程序。运行程序,输入程序所需数据,就可得到运行结果。应当对运行结果作分析,看它是否符合要求。有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。
  有时,数据比较复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据”,输入这些数据可以很容易判断结果正确与否。例如解方程。事实上,当程序复杂时很难把所有的可能情况全部都试到,选择典型的临界数据作试验即可。
  四、运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下办法:
  1.将程序与流程图仔细对照,如果流程图是正确的,程序写错了,是很容易发现的。例如,复合语句忘记写花括弧,只要一对照流程图就能很快发现。
  2.如果实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个printf函数语句,输出有关变量的值,逐段往下检查。直到找到在某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”,就能发现错误所在。
  3.也可以用“条件编译”命令进行程序调试(在程序调试阶段,若干printf函数语句就要进行编译并执行。当调试完毕,这些语句不用再编译了,也不再被执行了)。这种方法可以不必一一去掉printf函数语句,以提高效率。
  4.如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题。如有则改正之,接着修改程序。
  5.有的系统还提供debug(调试)工具,跟踪程序并给出相应信息,使用更为方便,请查阅有关手册。
  总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于积累经验。在程序调试过程中往往反映出一个人的水平,经验和态度。希望大家给以足够的重视。上机调试程序的目的决不是为了“验证程序的正确”,而是“掌握调试的方法和技术”,要学会自己找问题,这样慢慢自己就会写出错误较少的实用程序。

五.测试数据及运行结果

1.正常测试数据和运行结果

要求提供3组正常测试数据和运行结果

初始界面

输入数据

回到主菜单,进行数据管理

添加通讯信息

修改通讯信息

显示通讯信息

查询通讯信息

六、总结

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

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

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

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

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

                                                                           

                                                                                                                                                              七、源程序

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

#include "conio.h"

#define PT "序号:%s 姓名:%s 性别:%s 手机号:%s QQ:%s 生日:%s\n",p->num,p->name,p->sex,p->phone,p->QQ,p->birthday

#define N sizeof(struct stud)

struct stud

{

   char num[10];

   char name[15];

   char sex[15];

   char phone[15];

   char QQ[15];

   char birthday[15];

   struct stud *next;

};

struct stud *creat(void)

{

   struct stud *p1,*p2,*head;

   int i=1;

    char choice;

   head=p2=(struct stud *)malloc(N);

    printf("★**************************************************************★\n");

    printf("★*********************欢迎使用通讯录管理系统*******************★\n");

    printf("★**************************************************************★\n\n\n");

    printf("                                                                  \n");

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

   printf("▲输入信息时请以空格间隔输入,一组通讯信息输入完后请按回车键结束▲\n\n\n");

   printf("※请输入序号  姓名  性别  手机号  QQ  生日※\n");

   head->next=NULL;

    choice='y';

    for(i=1;choice=='y'||choice=='Y';i++)

   {

     p1=(struct stud *)malloc(N);

     scanf("%s %s %s %s %s %s",p1->num,p1->name,p1->sex,p1->phone,p1->QQ,p1->birthday);

       p2->next=p1;

        p2=p1;

        printf("\n是否继续?(Y/N):");

        choice=getche();

        printf("\n");

   }

   p2->next=NULL;

   return head;

}

void insert (struct stud *head)

{

   struct stud *p;

   p=(struct stud *) malloc(N);

   printf("请输入要插入的序号   姓名   性别   手机号   QQ   生日\n");

   scanf("%s %s %s %s %s %s",p->num,p->name,p->sex,p->phone,p->QQ,p->birthday);

   if(head->next!=NULL)

    {

        p->next=head->next;

        head->next=p;

    }

    printf("\n通讯信息插入成功!按任意键继续!");

    getche();

}

void modify(struct stud *h)

{

   char number[10];

   struct stud *p;

   char choice;

   printf("请输入要修改的通讯信息的序号:");

   scanf("%s",number);

   for(p=h;strcmp(p->num,number)!=0;p=p->next) ;

   while(1)

   {

      printf("请输入修改后通讯信息:\n");

     printf("请输入要插入的序号   姓名   性别   手机号   QQ   生日\n");

     scanf("%s %s %s %s %s %s",p->num,p->name,p->sex,p->phone,p->QQ,p->birthday);

      printf("修改后通讯信息如下:\n");

      printf("\n序号:%s 姓名:%s 性别:%s 手机号:%s QQ:%s 生日:%s\n",p->num,p->name,p->sex,p->phone,p->QQ,p->birthday);

      printf("\n确认?是Y否N:");

      choice=getche();

      if(choice=='y'||choice=='Y') break;

   }

   printf("\n修改成功,按任意键继续!");

   getche();

}

void cut(struct stud *p0)

{

   char number[10];

   struct stud *p;

   char choice;

   if(p0->next==NULL)

   {

      printf("信息出错!按任意键退出!");

   getch();

   exit(1);

   }

   printf("请输入要删除的序号:");

   scanf("%s",number);

   for(p=p0->next;strcmp(p->num,number)!=0;p0=p,p=p->next);

   printf("你要删除的通讯信息如下,请确认是否删除:\n");

   printf("\n序号:%s 姓名:%s 性别:%s 手机号:%s QQ:%s 生日:%s\n",p->num,p->name,p->sex,p->phone,p->QQ,p->birthday);

   printf("\n是Y,否N:");

   choice=getche();

   if(choice=='Y'||choice=='y')

   {

      p0->next=p->next;

   free(p);

   printf("\n文件删除成功!");

   }

   printf("\n按任意键结束!");

   getche();

}

void find(struct stud *h)

{

   char number[10];

   struct stud *p;

   printf("请输入你要查找的序号:");

   scanf("%s",number);

   for(p=h;strcmp(p->num,number)!=0;p=p->next) ;

   printf("你查找的通讯信息如下:\n");

   printf("\n序号:%s 姓名:%s 性别:%s 手机号:%s QQ:%s 生日:%s\n",p->num,p->name,p->sex,p->phone,p->QQ,p->birthday);

   printf("按任意键继续!");

   getche();

}

void print(struct stud *p)

{

   p=p->next;

   while(p!=NULL)

   {

     printf(PT);

     p=p->next;

   }

   printf("\n按任意键继续!");

    getche();

}

void sort(struct stud *head)     

 {

   struct stud *q,*t,*p;   

    p=head; 

    t=NULL;

    while(t!=head->next)   

   {

     p=head;   

        q=p->next;   

        while(q->next!=t)   

     {

        if(strcmp(p->next->num,q->next->num)>0)

        {

          p->next=q->next;   

                q->next=q->next->next;   

                p->next->next=q;   

        }   

            p=p->next;   

            q=p->next;   

     }

        t=q;   

    } 

   printf("通讯信息排序完毕,按任意键继续!");

   getche();

}

void main()

{

   int choice=1,i;

   struct stud *head;

   head=NULL;

   head=creat();

   for(i=1;choice!=0;i++)

   {

   system("cls");

   printf("★**************************************************************★\n");

   printf("§*******************★欢迎使用通讯录管理系统★*****************§\n");

   printf("§**************************************************************§\n");

   printf("§§                                                          §§\n");

   printf("§§                                                          §§\n");

   printf("§§                                                          §§\n");

   printf("§§                    ☆1 . 添加通讯信息                    §§\n");

   printf("§§                    ☆2 . 修改通讯信息                    §§\n");

   printf("§§                    ☆3 . 删除通讯信息                    §§\n");

   printf("§§                    ☆4 . 查询通讯信息                    §§\n");

   printf("§§                    ☆5 . 显示通讯信息                    §§\n");

   printf("§§                    ☆6 . 按序号排序通讯信息              §§\n");

   printf("§§                    ☆0 . 退出系统                        §§\n");

   printf("§§                                                          §§\n");

   printf("§§                                                          §§\n");

   printf("§§                                                          §§\n");

   printf("★**************************************************************★\n");

   printf("◆请选择(0-6):\n");

   scanf("%d",&choice);

   switch(choice)

   {

      case 1: insert(head) ; break;

       case 2: modify(head) ; break;

       case 3: cut(head) ; break;

       case 4: find(head) ; break;

       case 5: print(head);break;

      case 6: sort(head);break;

       case 0: break;

   }

}

}

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:##组长:##同组成员:##目录一、目的....................…

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

《C语言程序设计实践》课程报告

课程报告课程名称程序设计实践专业班级计算机科学与技术1205班学生姓名雷原康学号20xx16010522任课教师陈卫东学期20xx20xx学年第二学期1课程报告任务书成绩评定教师21需求分析经过大一上学期的理论...

C语言课程设计报告 学生选课系统加源代码

实践教学兰州理工大学计算机与通信学院20##年春季学期C程序设计课程设计题目:学生选课系统专业班级:通信工程1班姓名:学号:指导教师:成绩:摘要学生选课系统是一个教育单位不可缺少的重要系统组成部分,它对于学校的…

c语言课程设计报告

青岛农业大学课程设计报告题目:使用菜单选择趣味程序姓名:学院:理学与信息科学学院专业:通信工程班级:2班学号:指导教师:年月日一设计目的进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系…

C语言课程设计报告-图书管理系统

课程设计报告图书馆管理系统目录1题目与要求22系统总体设计要给出必要的文字说明及必要的图示321功能需求分析明确选题的功能需求322系统功能模块划分要给出系统功能模块图43详细设计431重要数据的数据结构设计即...

C语言课程设计报告_运动会分数统计系统

C语言课程设计报告_运动会分数统计系统一.需求分析1问题描述运动会分数统计系统参加运动会有n个系,系编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前…

c语言程序设计课程设计报告(34篇)