C语言集中上机总结报告关于制作学生信息管理系统

时间:2024.3.31

C语言集中上机报告

                    

     通讯录管理

                院    系:       

                班    级:         

                姓    名:         

                合 作 者:         

                指导教师:          

2012  年   5月   29 日

 

一.     概述……………………………………………………………………..3

二.     总体方案设计…………………………………………………………..4

三.     详细设计………………………………………………………………..5

四.     程序的调试与运行结果说明…………………………………5

五.     课程设计总结…………………………………………………7

六.     总结…………………………………………………………….8

七.     附录……………………………………………………………..8

八.     参考文献………………………………………………………..13

概述

为综合应用C语言程序设计理论知识、进一步提高我们综合解决问题、协调工作的能力和良好的软件开发习惯。希望通过该实习能够进一步激发我们的学习热情,培养初步编程的能力,为自己的后续的学习和发展奠定基础。

根据题目的要求,设计的通信录由字符串类型的数据项,其中包括姓名、地址、邮政编码与电话号码组成。同时对于通讯录的要求是实现功能:存取、显示、删除记录、查询记录等基本功能。

1.     课程设计的目的

1、回顾C语言程序设计所学的各个知识点;回顾编程语言特点;

2、对具体题目的分析,功能分析,流程分析,设计过程中的结构体分析;

3、掌握从上至下的分析过程;合理完成功能的分解;

4、分析获得实现功能所需的各种数据结构;功能模块的整合;

5、使用面相过程开发语言建立各种数据结构,各种结构体;

6、掌握面相过程开发语言的特点,建立各种函数实现各个功能;

7、调用各个功能模块,完成系统的整体功能;调试、测试各个功能模块,并完成系统的测试。

2.     课程设计的要求

编写这段程序,是在对c语言基本知识的熟练掌握以及较为熟练的实际动手能力的基础上才能够满足题意并且完成的。但对于编写过程中,也会遇到一些开始没有考虑到的问题,在遇到的时候在根据实际的问题进行分析与解决,对于问题的解决自己既要积极的思考同时对于相关不是很熟悉或者较为陌生的知识点也要积极的查阅相关资料或者向老师请教。教师对本题目所提出的要求是能够自己独立或者在与他人的合作中完成题目要求。

3.     课程设计的主要设计思想

为了实现题目中所要求的功能而分别设计不同的版块。为了实现要求,需要对所学的C语言的各方面的知识有着较好的了解和运用。在整个过程中用到了基本的printf,scanf这些函数,也用到了结构体,数组,指针这些知识。在这个编写的过程成中函数循环,一些对于字符串的使用、处理的知识也会用到。

下面就是总的程序流程图:

 

 

 


二 总体方案设计

对于通讯录的设计为了达到题目所说的要求,整个程序本设计出了主函数,然后根据去要实现的功能分别设计,显示、删除、查找、修改、添加功能的子函数。在显示的函数设计过程中首先运用拉文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。修改也大体和删除相同,添加函数在设计时通过申请内存,然后通过指针将需要添加的信息添加进去,从而实现添加功能。

三 详细设计

整个程序本设计出了主函数,然后根据去要实现的功能分别设计,显示、删除、查找、修改、添加功能的子函数。

主函数用到了数组,结构体,指针的知识。显示、添加部分用到了printf和scanf函数来保证数据的输入与输出。修改部分除了用到了printf和scanf函数来保证数据的输入与输出同时用到了strcpy来修改数据。查找则是利用的是对地址的查找,使用了指针。删除用了变量之间的交换来实现。

四 程序的调试与运行结果说明

调试结果顺利。

开始界面:

创建功能的界面:

显示功能的界面:

删除功能的界面:

查找功能的界面:

修改功能的界面:

退出功能的界面:

五 课程设计总结

通过这次课程设计,我对很多的函数有了新的认识,也对于多种函数的运用有了提高。在这次的程序编程过程中的过程中我又学到了曾经自己不知道的函数或是自己不会的函数的用法。这次课程设计课总的来说让我受益匪浅。在程序的设计过程中遇到了较多的困难。在一次次失败的打击下想过要放弃。但最后还是坚持了下来,毫不畏惧困难,在同学的帮助与讲解下我总算是顺利的完成了程序的编写。虽然在编写过程遇到会很多的困难,但当调试成功时那种喜悦的感觉没有什么东西可以代替。在程序的编写过程中发现自己有很多的知识漏洞和缺陷,需要进一步努力学习来完善自己。在这次的编写过程中我对c语言有了更进一步的认识和了解。此次编程过程的经验和知识肯定能促进我以后的学习。

此次课程设计不仅给了我很多很好的经验,也让我体会到了失败时的焦急和难受,也体会到了成功时的兴奋与喜悦。

六 后记

在编程的初始阶段,感觉题目好难,开始的时候根本就不知道从哪里开始编程,没有很多的思绪,不能从整体上把握整个题目的要求,不知道究竟怎样才能实现题目所说的要求,对于题目的整体的编写没有形成行之有效的思路,结果在刚刚开始编写的时候,不是这里有差错,就是那里编写遗漏了,最后写了一部分就写不下去。后来暂时停止了一段时间的编写,而在这段时间内自己重新的复习了老师已经讲解的c语言并且重新的分析了题目的要求,一点点的细细分析,把题目的要求分成了一些的功能模块,一点点的对相应的功能模块进行编写。在写完以后,觉得不仅增强了自己对c语言的理解,同时也加强了自己的逻辑分析能力。

七 附录

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

typedef struct Telephone

{

 char name[50]; char tel[30];

 char city[30];char eip[30];

 struct Telephone *next;

}TEL;

TEL *head;

void Initiate();void Menu();

void Create();//的功能是:创建新的通讯录。

void Add();// 在通讯录的末尾,写入新的信息,并返回选单

void Find();//查找记录

void Alter();//修改记录如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。

void Delete();//删除某人的信息,如果未找到要删的人,提示通讯录中没有此人的信息,并返回选单。

void List();//的功能是:显示通讯录中的所有记录。

int main()

{

   int  choice;char  yes_no;

   Initiate();

   do

   {

      system("cls");  Menu();

      printf("请选择0-6的数字"); scanf("%d",&choice);

      printf("\n");

      switch(choice)

      {

          case 1:Create();break; case 2:Add(); break;

          case 3:Find();break; case 4:Alter();break;

          case 5:Delete();break; case 6:List();break;

          case 0:

          printf("******O(∩_∩)O~谢谢您的使用O(∩_∩)O~*********\n");

          exit(0); break;

          default: printf("输入的不对哦!请再输入一次\n"); break;

      }

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

      do

      {

         scanf("%c",&yes_no);

      }while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');

   }while(yes_no=='Y'||yes_no=='y');

}

//初始化

void  Initiate()

{

    if((head=(TEL *)malloc(sizeof(TEL)))==NULL) exit(1);

    head->next=NULL;

}

//显示菜单

void Menu()

{

  printf("**************欢迎使用通讯录系统**************");

  printf("\n");

  printf("\n");

  printf("  1.创建通讯录。"); printf("  2.插入信息。");

  printf("  3.查询记录"); printf("  4.修改记录");

  printf("  5.删除记录!"); printf("  6.显示所有记录");

  printf("  0.退出通讯录\n"); printf("    请输入0~6:");

}

//创建通讯录

void Create()

{

     TEL *p1[100],*p2;

     int  m,i;

     printf("请输入创建个数:");

     scanf("%d",&m);

     for(i=1;i<=m;i++)

     {

        p1[i]=(TEL *)malloc(sizeof(TEL));

        printf("请输入第%d条信息!\n",i);

        printf("姓名:"); scanf("%s",&p1[i]->name);

        printf("电话:"); scanf("%s",&p1[i]->tel);

        printf("城市:"); scanf("%s",&p1[i]->city);

        printf("邮编:");scanf("%s",&p1[i]->eip);

        p1[i]->next=NULL;

        if(head->next==NULL)

           head->next=p1[i];

        else

        {

            for(p2=head;p2->next!=NULL;p2=p2->next);       //找到结点尾

            p2->next=p1[i];

        }

     }

    printf("信息已添加!\n");

    return;                                     //保存到链表

}

//添加通讯录信息

void Add()

{

     TEL *p,*q;

     if((q=(TEL *)malloc(sizeof(TEL)))==NULL) exit(1);

     printf("请输入要添加的信息!\n");

     printf("姓名:"); scanf("%s",&q->name);        //添加信息

     printf("电话:"); scanf("%s",q->tel);

     printf("城市:");scanf("%s",q->city);

     printf("邮编:");scanf("%s",q->eip);

     for(p=head;p->next!=NULL;p=p->next) ;

        p->next=q;

     q->next=NULL;

     printf("此信息已添加!");

     return;

}

//查找通讯录信息

void Find()

{

    TEL *p;

    char name[50];

    if(head->next==NULL)

    {printf("此通讯录为空!\n");

      return;

    }

    printf("请输入要查找的姓名:\n");

    scanf("%s",&name);

    for(p=head->next;p!=NULL;p=p->next)

    {

       if(strcmp(p->name,name)==0)

       {

           printf("姓名\t城市\t邮编\t电话\n");

           printf("%s\t%s\t%s\t%s\n",p->name,p->city,p->eip,p->tel);

       }

       else  if(p->next==NULL)

          printf("无此信息!\n");

    }

}

//修改通讯录信息

void Alter()

{

   char name[50];                                     //先查找 后删除

   TEL *p, *p1;

   if (head->next == NULL)

   {

      printf("此通讯录为空!\n");

      return;

   }

   printf("请输入要修改的姓名:\n");

   scanf("%s",name);

   for(p=head->next;p!=NULL;p=p->next)

   {

       if(strcmp(p->name,name)==0)

          break;

       else   if(p->next==NULL)

       {

           printf("无此信息!\n");

           return;

       }

   }

   p1=(TEL *)malloc(sizeof(TEL));

   printf("姓名:");scanf("%s",p1->name);                     //添加信息

   strcpy(p->name,p1->name);

   printf("电话:");scanf("%s",p1->tel);

   strcpy(p->tel,p1->tel);

   printf("城市:"); scanf("%s",p1->city);

   strcpy(p->city,p1->city);

   printf("邮编:");scanf("%s",p1->eip);

   strcpy(p->eip,p1->eip);

   printf("此信息已修改!\n");

   //显示修改的信息

   printf("姓名\t城市\t邮编\t电话\n");

   printf("%s\t%s\t%s\t%s\n",p->name,p->city,p->eip,p->tel);

   free(p1);

}

//删除通讯录信息

void Delete()

{

   char  name[50];                                     //先查找 后删除

   TEL *p = head->next, *p1 =head->next,*p2;

   if (head->next == NULL)

   {

     printf("此通讯录为空!\n");

     return;

   }

   printf("请输入要删除的姓名:\n");

   scanf(" %s",name);

   while ((strcmp(p->name,name)!=0 )&& p->next != NULL)

   {

      p1=p;

      p =p->next;

   }

   if (strcmp(name, p->name)==0)                    //输出删除信息

   {

       if (p == head->next&&p->next!=NULL)

         head->next = p->next;

       else  if(p==head->next&&p->next==NULL)

       {

           head->next=p->next;

           printf("信息已删除,先此通讯录为空!!\n");

           return;

       }

       else

         p1->next = p->next;

   }

   else

   {

       printf("此信息不存在!!!\n");

       return;

   }

   printf("此信息已删除!");

   printf("姓名\t城市\t邮编\t电话\n");

   for(p2=head->next;p2!=NULL;p2=p2->next)

      printf("%s\t%s\t%s\t%s\n",p2->name,p2->city,p2->eip,p2->tel);

}

//显示所有记录

void List()

{

   TEL *p;

   if(head->next==NULL)

   {

       printf("此通讯录中无记录!\n");

       return;

   }

   printf("姓名\t城市\t邮编\t电话\n");

   for(p=head->next;p!=NULL;p=p->next)

      printf("%s\t%s\t%s\t%s\n",p->name,p->city,p->tel,p->eip);

}

参考文献

 [1] 谭浩强,C程序设计题解与上机指导(第二版),北京,清华大学出版社,20##年9月。

[2] 谭浩强,C程序设计(第三版),北京,清华大学出版社,20##年7月。

更多相关推荐:
学生信息管理系统总结

个人总结--------学生信息管理系统小结经过大家的努力,学生管理系统终于做完了,经过这次实习系统设计,自己总结了这个学生信息管理系统的一些问题,不过收获还是颇为丰富的,再有理论知识上结合实践,使我学到了更多…

学生信息管理系统论文及心得体会,MFC,VC++

中国石油大学华东计通学院沟通与协作实训实习报告专业班级软件工程1202学号120xx220姓名卢凯瑞20xx年7月第一部分学生信息管理系统实习报告认知实习总结备注小四字号宋体15倍行距第一部分内容不少于3页一实...

学生信息管理系统项目开发总结报告

项目开发总结报告1引言11编写目的为了总结报告在工作过程中产生的问题获得的经验并且总结报告设计和制作者过程中的逻辑和想法以便在以后的生产和学习过程中得到进一步提高12背景说明a本项目名称学生信息管理系统b此软件...

信息管理系统课程设计小结

开发小结通过此次课程设计使我更加扎实的掌握了有关信息管理系统方面的知识在设计过程中虽然遇到了一些问题但经过一次又一次的思考一遍又一遍的检查终于找出了原因所在也暴露出了前期我在这方面的知识欠缺和经验不足实践出真知...

学生成绩管理系统测试总结报告

软件测试课程设计报告题目学生成绩管理系统院系计算机科学学院班级软件一班成员田欣1学生成绩管理系统测试报告正文1测试概述11测试目的对学生成绩管理系统项目中所有的软件测试活动中包括测试进度资源问题风险以及测试组和...

学籍信息管理系统工作总结

学籍信息管理系统工作总结学籍管理是学校和教育部门一项重要的日常工作,也是一项基本教育管理制度。随着信息技术的发展,全国中小学生电子学籍信息管理系统诞生了。在区教育局的领导下,在20xx年x月份开始,我校就开始对…

学生信息管理系统项目开发总结报告

项目开发总结报告学生信息管理系统执笔者日期20xx1224软工测试项目总结报告一引言11编写目的本文档编写与整个项目开发完成以后对于整个项目开发的过程进行最后的总结并对项目产品进行最后的验收12背景待开发软件系...

学生信息管理系统c语言程序设计报告(完美)

学生信息管理系统HUNANUNIVERSITY程序设计训练报告学生姓名学生学号专业班级指导老师院长系主任20xx年5月25日第1页学生信息管理系统目录一系统功能简介3二本人完成的主要工作3三实训分析4四实训设计...

学生宿舍管理系统-小结

C项目开发实训总结报告宿舍信息管理系统的设计项目名称InformationManagementSystemforDormitorydesign班级软件092学生姓名唐坤学号930505037指导教师葛红美职称讲...

学籍管理系统项目总结

项目总结报告1引言11编写目的对所做的学籍管理系统以总结性的回顾检查所做的学籍管理系统是否符合用户的要求对系统的主要功能做一概括以及开发完这个系统后的经验和教训12背景a学籍管理系统b本项目的任务是由林金莲老师...

数据库课程设计 学生管理系统 总结报告

附表2漳州师范学院计算机科学与工程系数据库课程设计总结报告

学生信息管理系统开题报告

毕业设计开题报告书123456

学生信息管理系统总结(25篇)