C语言实训报告

《C语言程序设计与数据结构》实训报告

课题名称:                  

    业:                  

    级:                   

    号:                   

    名:                   

指导教师:                    

20XX  1    6   

一、课程设计题目

《员工工资管理系统》

二、  实训项目介绍

(1)    显示菜单:用户登录成功,系统显示界面,显示系统功能的提示信息。

(2)    职工信息输入:用户输入要添加的职工工号,姓名,年龄,性别,基本工资,岗位工资,总工资信息等。当职工工号为0时输入结束。输入数据时,须验证数据的输入格式正确,保证职工号的唯一性。

(3)    职工信息输出:将结构体中的职工信息输出到屏幕上。

(4)    职工信息查询:1按职工号查询;2按职工姓名查询。查到则显示他全部信息,否则输出“not found”。

(5)    职工信息修改:修改职工信息并保存(工号不能修改)。

(6)    工资排序:对结构体数组中的所有职工按基本工资降序排序,用选择法实现;对结构体数组中的所有职工按岗位工资降序排序,用冒泡法实现;对结构体数组中的所有职工总工资降序排序,用插入法实现。

(7)    工资统计:分别统计总工资

(8)    导出函数:把结构体数组中的职工信息保存到磁盘文件

(9)    导入函数:从外部文件中导入信息到结构体数组里

(10)  退出:结束程序运行

三、实训目的

(1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法。

(2)掌握C语言的基本概念和基础知识。

(3)通过训练能够读懂较为复杂的C语言源程序并具备基本C语言程序设计的能力。

(4)熟练掌握各种常用类的定义,继承,文件的应用,为更好的理解面向对象打下更好的基础。

(5)通过实训,培养自己编写、调试、分析大型应用程序的能力。

(6)掌握面向对象的基本原理,提高学生综合程序设计的能力。

(7)培养自己独立解决问题,查找资料的能力。同学之间相互帮助,相互交流,相互合作的团队精神。

(8) 培养自己良好的学习兴趣,独立的编程风格。

(9) 通过实训检查自己学习上的不足,达到熟练掌握C语言的基本知识和技能。

四、课程设计报告内容

3.1功能要求

该系统运行在DOS环境下,人机界面为命令行文本界面。完成的任务是对若干人的通信录信息进行管理,且数据保存到文件中。

实现的主要功能是:

= 登陆: 判断用户输入的密码正确性,并限制用户只能有三次机会输入,若超过则关闭计算机。

= 添加:增加一个或几个人的通信录信息。

= 删除:删除已输入的通信录信息。

= 查询:根据输入的姓名查找通信录信息。

= 修改:根据输入的姓名修改通信录信息。

= 显示:输出所有通信录信息。

3.2 设计环境

所使用的语言采用标准C,开发工具可选用在DOS环境下的Win-TC。

3.3 数据结构

本系统是对员工的个人工资信息进行管理,记录的信息采用C的结构体数据类型描述,定义如下:

struct ren                          /*定义个人资料结构体类型*/

{  int num;                               /*编号*/

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

     char tel[12];                          /*电话号码*/

     char email[20];                        /*email地址*/

     char qq[12];                           /*QQ*/

     char address[50];                      /*住址*/

};

C语言实训报告

C语言实训报告

五、结论

员工工资管理系统的编写,看似杂乱无头绪,实际上却并不如此。它的每一个功能都能分成模块,有句话说的好,大事化小,小事化了。C语言编程也正式如此,把一个大的程序分为若干相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,这样不仅降低了难度还使得思路清晰,很容易编写出要做的程序,从而为设计一些较大的软件打下了良好的基础。

算法的设计:

(1)  自顶向下

  现有全局,在进行整体设计,然后再进行下层的设计,逐步实现精细化。采用这种方法能够做到胸有全局,能全盘考虑,不至于顾此失彼,头重脚轻。

(2)  逐步细化

   一步步地将上层的任务分解成较小的、易于实现的任务,知道可以很简单实现为止。

编写源程序:

(1)  不求速度,但求质量!一步一个脚印,编写程序时候宁可速度慢些也要尽量保证质量,做到尽量不出错。

(2)  精力集中,全神贯注!写程序时候最忌讳三心二意,这样才能思路清晰保证质量。

(3)  保持一个良好的编程心态,不要被长长的代码吓到,更不要厌烦,既然同样都是写,为什么不仲满激情的去写那?

程序的编译与运行:

(1)  查找错误是一件让人闹心的事,但是要注重技巧,注意平时经验的积累。才能在最快的时间找出错误

(2)  用心去查找,也许你会发现错误并不是很难找

(3)  程序编译成功不要满足现状,要积极测试程序的可用性,对功能不理想,存在缺点的地方,积极的改进,完善。

    

六、结束语

在实训过程中,使我良好的锻炼了自己,首先是兴趣方面,通过编写员工工资管理系统使我更加喜欢编程,使我从以前的迷茫状态中解脱出来,使我了解了编程的真正意义。我想这对我以后的人生有着很大的帮助。其次通过编写员工工资管理系统使我对写程序有了一定的思路,不像以前无从下手,使我理解了算法的意义,使我懂得了模块化思想的好处。通过一个星期的编写代码,使我对书本上的知识有了更深的理解,甚至有很多不懂的问题在这过程中自然而然的理解了。在张文轩老师的悉心指导下,我对C语言有了更深刻的理解,对程序的算法,数据的定义,程序的改错等方面的能力有了很大提高,自身的注意力,耐心,和对编程的兴趣有了很大增长,使我获益匪浅。

七、附录:(源程序清单)

#include "stdio.h"

struct worker

{

    int num;

    char name[10];

    int age;

    int wages;

}aa[5];

  main()

{

    int button;

    system("graftabl 936");

    clrscr();

    printf("******职工工资管理系统******\n");

    printf("请输入5位职工的信息:\n");

    input();

    while(1)

    {

      clrscr();

      printf("******职工工资管理系统******\n");

      printf("1-职工工资统计功能\n");

      printf("2-职工工资分析功能\n");

      printf("3-职工工资查询功能\n");

      printf("4-职工信息查询功能\n");

      printf("0退出\n");

      printf("******职工工资管理系统******\n");

      scanf("%d",&button);

      if(button==1)

      {

        printf("\n调用职工工资统计功能\n");

        tongji();

      }

      else if(button==2)

      {

        printf("\n调用职工工资分析功能\n");

        fenxi();

      }

      else if(button==3)

      {

        printf("\n调用职工工资查询系统\n");

        search();

      }

      else if(button==4)

      {

        printf("\n调用职工工资修改功能\n");

        xiugai();

      }

      else if(button==0)

      {

        exit();

      }

      else

      {

        printf("您的输入有误,请重新输入:");

      }

      printf("\n按空格键返回主菜单:\n");

    getch();

    }

}

/*职工工资统计模块*/

tongji()

{

    int i,j;

    float aver=0,sum;

    for(i=0;i<5;i++)

    {

        sum=sum+aa[i].wages;/*总工资*/

    }

    printf("所有员工工资总和为:%f\n",sum);

    aver=sum/5;

    printf("所有员工的平均工资为:%f\n",aver);

}

/*职工工资分析模块*/

fenxi()

{

/*最高工资*/

   float max;

   int i,j;

   max=aa[0].wages;

   for(i=1,i=0;i<5;i++)

   {

      if(max

      {

         j=i;

         max=aa[i].wages;

      }

   }

   printf("工资最高的职工是:\n");

   printf("员工号:%d\n",aa[j].num);

   printf("姓名:%s\n",aa[j].num);

   printf("年龄:%d\n",aa[j].age);

   printf("工资:%d\n",aa[j].wages);

}

/*职工工资查询模块*/

search()

{

/*给定工号,显示某位职工的信息*/

   long x;

   int i;

   printf("请输入需要修改的员工的员工号:");

   scanf("%ld",&x);

   for(i=0;i<5;i++)

   {

      if(aa[i].num==x)

      {

         printf("工资最高的职工是:\n");

         printf("员工号:%d\n",aa[i].num);

         printf("姓名:%s\n",aa[i].name);

         printf("年龄:%d\n",aa[i].age);

         printf("工资:%d\n",aa[i].wages);

      }

   }

}

/*职工工资修改模块*/

xiugai()

{

/*职工工资信息修改*/

   long x;

   int i;

   printf("请输入工号,修改某位职工的信息:");

   scanf("%ld",&x);

   for(i=0;i<5;i++)

   {

      if(aa[i].num==x)

      {

         printf("请输入第%d号员工号的新姓名:",i+1);

         scanf("%s",&aa[i].name);

         printf("请输入第%d号员工号的新年龄:",i+1);

         scanf("%d",&aa[i].age);

         printf("请输入第%d号员工号的新工资:",i+1);

         scanf("%d",&aa[i].wages);

         printf("姓名:%s\n",aa[i].name);

         printf("年龄:%d\n",aa[i].age);

         printf("工资:%d\n",aa[i].wages);

       }

    }

}

input()

{

    int i,j;

    int aver=0,sum=0;

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

    {

        aa[i-1].num=i;

        printf("请输入第%d号员工的姓名:",i);

        scanf("%s",&aa[i-1].name);

        printf("请输入第%d号员工的年龄:",i);

        scanf("%s",&aa[i-1].age);

        printf("请输入第%d号员工的工资:",i);

        scanf("%s",&aa[i-1].wages);

     }

     printf("输入信息结束,按空格键返回主菜单。");

     getch();

}

相关推荐