c语言实验报告

时间:2024.4.7

《程序设计基础(下)》大作业

报   告

学院名称:      计算机工程学院        

专    业:        数字媒体技术         

题    目:      员工工资管理系统      

学期:   13-14-2     班  级:  13媒体1

学号:     姓  名:  

报告成绩:          答辩成绩:         

教师姓名:          

20##年6月

目录

    一.课程设计目的.................................... 3

二. 课题设计内容、具备的功能....................... 3

  功能介绍............................................... 3

三. 模块(函数)的划分、各模块的功能................ 4

(1)求平均值流程图..................................... 5

 (2) 查询模块功能流程图................................. 5

四. 采用的自定义的数据类型......................... 6

五. 1.程序设计过程中、调试过程中所用的测试用例、程序                运行结果............................................... 6

       2.在课程设计中遇到的问题和解决的方法,还没有解决的问题..................................................12

 六.通过课程设计的体会、收获........................ 12

七.程序清单 ..........................................13              

一.课程设计目的

在本学期的学习中,我初步接触到了C语言,学会了用C语言编写一些小型的程序。然而这这些程序大都功能单一,实用价值不大。本次的C语言大作业就弥补了这些缺憾,为了做好这个C语言大作业,我使用了结构体、指针、文件等知识,做了一个功能较为完备的员工信息管理系统,让自己对C语言的理解和掌握又提升了一个层次。

二.课题设计内容、具备的功能

从对员工信息管理系统的特点入手,可以得出基本的系统需求分析情况。本系统主要实现对员工工资信息的管理,主要功能为员工信息管理和员工信息查找等。本系统分为员工信息输出模块、员工信息增删模块、员工信息处理模块和员工信息查找模块等。具体如图所示:

 

功能介绍:

运行程序,出现一个“员工工资管理系统的主界面”,其中有8个数字代表的选项,可以按相关的数字进行操作。每一条记录包括员工姓名、员工号、员工年龄、员工工资。 

  0)退出:

    无论在哪个界面,均可退出系统。

  1)员工信息输出:

    输出全部员工的信息。

  2)插入员工信息:

    学生可以插入一个或多个员工的信息,包括姓名 、员工号、年龄、工资等。员工

  3)删除信息:

    可以按员工姓名删除职工信息。

 4求平均值:

   可以求出员工的平均工资。

 5)员工信息排序:

   可以按照员工工资对员工信息进行排序。

6)求最值

  可以求出员工中工资最少者和工资最多者。

改管理系统具有以下特点:员工

(1)可以多次增加或删除信息。

(2) 系统操作方便,提示信息恰当。

(3) 能够永久保存信息。(文件操作)

(4) 自己根据常识设计数据结构。。

(5) 用结构化、模块化程序设计方法,尽量写成函数。

二.模块(函数)的划分、各模块的功能

该图书馆信息管理系统共有8个功能,分别为信息输出、信息插入、信息删除、求平均值、信息排序、求最值和退出系统;现在用Visio流程图展示出求平均值和查询功能模块,如图所示:

c语言实验报告

四.采用的自定义的数据类型

1.结构体类型

struct staff

{

   char name[10];//员工姓名为字符型

   int num;//员工号为整形

   int age;//员工年龄为整形

   int wage;//员工工资为整形

}sta[10];

(2)整型i,j,flag;

(3)字符型数组name[10];

(4)自定义函数

         void print()输出函数;

         void insert()插入函数;

         void delete()删除函数;

         void average()求平均值函数;

         void sort()排序函数;

         void zuizhi()求最值函数;

         void search()查询函数;

五、(1)程序设计过程中、调试过程中所用的测试用例、程序运行结果

1.测试用例:

  sun 111  27  7000

 函数的主界面如下图所示:

(1)    输入数字“1”,即可得到如下运行结果:

(2)输入数字“2”,即可得到如下运行结果:

(3)依次输入“sun 111 27 7000”,即可得到以下运行结果:

(4)输入数字3,即可得到以下运行结果:

(5)输入“sun”,即可得到以下运行结果:

(6)输入数字“4”,即可得到以下运行结果:

(7)输入数字“5”,即可得到以下运行结果:

(8)输入数字“6”,即可得到以下运行结果:

(9)输入数字“7”,即可得到以下运行结果:

(10)输入“zhang”,即可得到以下运行结果:

(11)输入数字“8”,即可得到以下运行结果:

此步骤为空操作,再按“enter”即可退出程序。

2.在课程设计中遇到的问题和解决的方法,还没有解决的问题

在课程设计中,我遇到了很多问题,比如输出信息的不规范、增删信息的未显示、排序失败和文件的保存有误等。后来通过查阅课本和上网浏览相关问题的解决方法,最终成功地独自解决了这些问题。

六.通过课程设计的体会、收获

在这次的课程设计中,我发现了自己在C语言学习中还存在着许多的不足之处,先前书本上学习的知识点没法完全投入到现在的实际操作运用中去。在文件的设计与使用方面自己还有很多的欠缺,无法更好的将其运用到程序设计中去,还有很多的知识点都只限于书本知识的学习了。通过此次的课程设计我学会了很多东西,不只是仅限于自己在C语言知识上的提升,更多的是在编程的过程中遇到好多自己无法解决的问题,自己变得更加主动去学习,积极去查看课本,自己上网查找相关知识点,然后不断思考。虽然做好这次大作业花费了好长时间,但通过不断的努力,我还是成功地完成了此次的期末的课程大作业。回顾起此次课程设计,至今我仍感慨颇多,从理论到实践,整整三天的废寝忘食,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了如何自己去克服困难。通过这次课程设计,我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。

七.程序清单

/*工资管理系统

一个员工工资管理程序,有输入、输出、插入、删除、排序、查询、数据保存、能查询最高、最低工资、统计平均工资等功能。*/

#include

#include

struct staff

{

                                char name[10];

                                int num;

                                int age;

                                int wage;

}sta[10],t;

void print();

void insert();

void delete();

void average();

void sort();

void zuizhi();

void search();

int main()

{

                                int n;

                                printf("    **************************欢迎进入工资管理系统**************************\n");

                                do

                                {

                                   printf("                                1:输出(print)\n");

                                   printf("                                2:插入(insert)\n");

                                   printf("                                3:删除(delete)\n");

                                   printf("                                4:求平均值(average)\n");

                                   printf("                                5:排序(sort)\n");

                                   printf("                                6:求最值(zuizhi)\n");

                                   printf("                                7:查询(search)\n");

                                   printf("                                0:退出(exit)\n");

                                   printf("请输入你要进行操作所对应的序号:\n");

                                   scanf("%d",&n);

                                   switch(n)

                                   {

                                          case 1:   print();

                                                 break;

                                          case 2:insert();

                                                 break;

                                          case 3:delete();

                                                 break;

                                          case 4:average();

                                                 break;

                                          case 5:sort();

                                                 break;

                                          case 6:zuizhi();

                                                 break;

                                          case 7:search();

                                                 break;

                                          case 0:;

                                                 break;

                                          default:printf("错误选择!请重选");

                                                 break;

                                   }

                                }while(n!=0);

    return 0;

}

void print()

{

                                int i;

                                FILE * fp;

                                if((fp=fopen("sta.dat","rb"))==NULL)

                                {

                                   printf("文件不能打开\n");

                                   return;

                                }

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

                                {

                                   fread(&sta[i],sizeof(struct staff),10,fp);

                                   printf("%-10s%4d%4d%8d\n",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                }

                                fclose(fp);

}                             

void insert()

{

                                struct staff s;

                                FILE * fp;

                                int i,t,n;

                                printf("\n请输入姓名:");

                                   scanf("%s",s.name);

                                printf("请输入员工号:");

                                   scanf("%d",&s.num);

                                printf("请输入年龄:");

                                   scanf("%d",&s.age);

                                printf("请输入工资:");

                                   scanf("%d",&s.wage);

                                if((fp=fopen("sta.dat","rb"))==NULL)

                                {

                                   printf("不能打开文件.\n");

                                   return;

                                }

                                printf("原来的数据是:\n");

                                for(i=0;fread(&sta[i],sizeof(struct staff),1,fp)!=0;i++)

      printf("\n%-10s%4d%4d%8d",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                n=i;

                                printf("\n现在的员工工资情况是:\n");

                                for(t=0;sta[t].wage>s.age&&t

                                fp=fopen("sta.dat","wb");

                                for(i=0;i

                                {

                                   fwrite(&sta[i],sizeof(struct staff),1,fp);

                                   printf("\n%-10s%4d%4d%8d",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                }

                                fwrite(&s,sizeof(struct staff),1,fp);

                                printf("\n%-10s%4d%4d%8d",s.name,s.num,s.age,s.wage);

                                for(i=t;i

                                {

                                   fwrite(&sta[i],sizeof(struct staff),1,fp);

                                   printf("%-10s%4d%4d%8d",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                }

                                printf("\n");

                                fclose(fp);

                                fclose(fp);

}

void delete()

{

                                FILE * fp;

                                int i,j,n,flag;

                                char name[10];

                                if((fp=fopen("sta.dat","rb"))==NULL)

                                {

                                   printf("文件不能打开.\n");

                                   return;

                                }

                                printf("现在的员工信息:\n");

                                for(i=0;fread(&sta[i],sizeof(struct staff),1,fp)!=0;i++)

                                   printf("\n%-10s%4d%4d%8d",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                fclose(fp);

                                n=i;

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

                                scanf("%s",name);

                                for(flag=1,i=0;flag&&i

                                {

                                   if(strcmp(name,sta[i].name)==0)

                                   {

                                          for(j=i;j

                                          {

                                                 strcpy(sta[j].name,sta[j+1].name);

                                                 sta[j].num=sta[j+1].num;

                                                 sta[j].age=sta[j+1].age;

                                                 sta[j].wage=sta[j+1].wage;

                                          }

                                          flag=0;

                                   }

                                }

                                if(!flag)

                                   n=n-1;

                                else

                                   printf("不能找到");

                                printf("\n删除后的文件内容:\n");

                                if((fp=fopen("sta.dat","wb"))==NULL)

                                {

                                   printf("不能打开文件:\n");

                                   return;

                                }

                                for(i=0;i

                                   fwrite(&sta[i],sizeof(struct staff),1,fp);

                                fclose(fp);

                                fp=fopen("sta.dat","rb");

                                for(i=0;fread(&sta[i],sizeof(struct staff),1,fp)!=0;i++)

                                   printf("\n%-10s%4d%4d%8d",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                printf("\n");

                                fclose(fp);

}

void average()

{

                                FILE * fp;

                                int i;

                                float sum=0.0,aver;

                                if((fp=fopen("sta.dat","rb"))==NULL)

                                {

                                   printf("文件不能打开.\n");

                                   return;

                                }

                                for(i=0;fread(&sta[i],sizeof(struct staff),1,fp)!=0;i++)

                                   printf("\n%-10s%4d%4d%8d",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                printf("\n");

                                fclose(fp);

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

                                   sum=sum+sta[i].wage;

                                aver=sum/10;

                                printf("平均工资是%10.2f\n",aver);

}                             

                               

void sort()

{

                                FILE * fp;

                                int i,j;

                                if((fp=fopen("sta.dat","rb"))==NULL)

                                {

                                   printf("文件不能打开.\n");

                                   return;

                                }

                                printf("排序前的员工情况为:\n");

                                for(i=0;fread(&sta[i],sizeof(struct staff),1,fp)!=0;i++)

                                   printf("\n%-10s%4d%4d%8d",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                printf("\n");

                                fclose(fp);

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

                                {

                                   for(j=i+1;j<10;j++)

                                          if(sta[i].wage

                                          {

                                                 t=sta[i];

                                                 sta[i]=sta[j];

                                                 sta[j]=t;

                                          }

                                }

                                printf("排序后的员工情况为:\n");

                                fp=fopen("sta.dat","wb");

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

                                {

                                   fwrite(&sta[i],sizeof(struct staff),1,fp);

                                   printf("\n%-10s%4d%4d%8d",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                }

                                printf("\n");

                                fclose(fp);

}

void zuizhi()

{

                                FILE * fp;

                                int i,j;

                                if((fp=fopen("sta.dat","rb"))==NULL)

                                {

                                   printf("文件不能打开.\n");

                                   return;

                                }

                                for(i=0;fread(&sta[i],sizeof(struct staff),1,fp)!=0;i++)

                                   printf("\n%-10s%4d%4d%8d",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                printf("\n");

                                fclose(fp);

                                for(j=0;j<9;j++)

                                   for(i=0;i<9-j;i++)

                                          if(sta[i].wage

                                          {

                                                 t=sta[i];

                                                 sta[i]=sta[i+1];

                                                 sta[i+1]=t;

                                          }

                                printf("排序后的员工信息是:\n");

                                fp=fopen("sta.dat","wb");

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

                                {

                                   fwrite(&sta[i],sizeof(struct staff),1,fp);

                                   printf("\n%-10s%4d%4d%8d",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                }

                                printf("\n工资最低的员工的信息是%-10s%4d%4d%8d",sta[9].name,sta[9].num,sta[9].age,sta[9].wage);

                                printf("\n工资最高的员工的信息是%-10s%4d%4d%8d\n\n",sta[0].name,sta[0].num,sta[0].age,sta[0].wage);

                                fclose(fp);

}

void search()

{

                                FILE * fp;

                                int i,flag=1;

                                char name[10];

                                if((fp=fopen("sta.dat","rb"))==NULL)

                                {

                                   printf("文件不能打开.\n");

                                   return;

                                }

                                for(i=0;fread(&sta[i],sizeof(struct staff),1,fp)!=0;i++)

                                   printf("\n%-10s%4d%4d%8d",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                printf("\n");

                                fclose(fp);

                                printf("请输入要查询的员工的姓名:");

                                scanf("%s",&name);

                                for(i=0,flag=1;i<10&&flag!=0;i++)

                                {

                                   if(strcmp(name,sta[i].name)==0)

                                   {

                                          printf("该员工的信息为:\n%-10s%4d%4d%8d\n",sta[i].name,sta[i].num,sta[i].age,sta[i].wage);

                                          flag=0;

                                   }

                                   else

                                          printf("无此员工.\n");

                                }      

}

更多相关推荐:
c语言实验报告

四川师范大学计算机科学学院C语言程序设计实验手册20xx年2月年级20xx级专业电子商务班级04班姓名罗桂清学号20xx110438指导教师廖雪花1C语言程序设计实验课程简介课程名称C语言程序设计实验课程性质专...

c语言实验报告

课程设计报告学院课程名称专业班级学生姓名学号指导教师完成时间年月目录1菜单选择程序课程设计2学生信息管理系统课程设计题目1菜单选择程序课程设计一课程设计内容与要求1主菜单编写程序能够显示以下的主菜单主菜单1字母...

C语言实验报告书写格式及模板

大学学院实验报告专业名称实验室实验课程C实验名称姓名学号同组人员实验日期语言程序设计程序设计12345678

c语言实验报告模板完成版

高级语言程序设计学生实验报告专业计算机科学与技术学号姓名1实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2了解在该系统上如何编辑编译连接和运行一个C程序3通过运...

C语言实验报告(八)

华北水院高级语言程序设计C语言实验报告20xx20xx学年第二学期20xx级专业班级学号一实验题目文件二实验目的略三实验内容1程序验证用记事本编辑文本文件file1txt分析一下程序的功能及结果并验证inclu...

大学C语言实验报告答案

郑州大学09级C语言实验报告答案实验一1includeltstdiohgtvoidmainintabcscanfquotdddquotampaampbampcprintfquotsumdnquotabc2inc...

C语言实验报告样本

实验报告课程名称C语言程序设计实验项目顺序结构程序设计实验仪器计算机系别机电工程学院专业机械设计制造及其自动化班级学号机械110120xx010008学生姓名郭奎宇实验日期20xx年10月24日成绩指导教师一实...

C语言实验报告(样板)

滁州学院机械与电子工程学院实验报告课程姓名专业20xx机械本科学号实验一工作平台一目的和要求1熟悉语言程序的支持运行环境了解所用计算机系统的软硬件配置和使用方法2初步了解运行一个语言程序的过程二实验环境硬件环境...

C语言实验报告_结课作业

内蒙古工业大学信息工程学院实验报告课程名称:高级语言程序设计(C)实验名称:循环、数组、函数和结构体程序设计实验类型:验证性□综合性设计性□实验室名称:校计算机中心机房班级:学号:姓名:组别:同组人:成绩:实验…

C语言实验报告

实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2了解在该系统上如何编辑编译连接和运行一个C程序3通过运行简单的C程序初步了解C程序的特点2实验程序清单及运行结果...

C语言与软件技术基础用户自己建立数据类型实验报告

C语言与软件技术基础实验报告课程名称指导老师班级实验名称实验时间姓名实验地点提交时间座号一实验目的和要求1掌握结构体类型变量的定义和使用2掌握结构体类型数组的概念和应用3了解链表的概念和操作方法二实验环境和方法...

c语言实验报告1

C语言程序设计报告日期20xx年11月2日程序主要内容任务1程序首先随机产生一到十之间的正整数在屏幕上打印出问题例如67然后让学生输入答案序检查学生输入的答案是否正确若正确则RIGHT然后问下一个问题否则打印W...

c语言实验报告(38篇)