C语言课程设计之职工信息管理系统

自己写的,有点烂,但比较简单,没什么太复杂的地方

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct worker
{
    char ID[20];//工号
    char name[20];//姓名
    char sex[5];//性别
    char born[20];//生日
    char edu[20];//学历
    char position[20];//职务
    char wage[10];//工资
    char address[100];//住址
    char tel[15];//电话
}work[1000];
int n ;

//文件读写模块
void read()//读入数据
{
    FILE *fp;
    int i = 0;
    if( (fp = fopen("d:\\date.txt","r")) == NULL )
    {
        printf("请在D盘根目录下新建一个文本文件,文件名为date\n\n\n");
        system("pause");
        system("cls");
        return ;
    }
    fscanf(fp,"%d\n",&n);
    while(i < n)
    {
        fscanf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].sex,work[i].born,work[i].edu,work[i].position,work[i].wage,work[i].address,work[i].tel);
        i ++;
    }
    fclose(fp);
}
void write()//写入数据
{
    FILE *fp;
    int i = 0;
    if( (fp = fopen("d:\\date.txt","w")) == NULL )
    {
        printf("无法打开文件!\n");
        return ;
    }
    fprintf(fp,"%d\n",n);
    while(i < n)
    {
        fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].sex,work[i].born,work[i].edu,work[i].position,work[i].wage,work[i].address,work[i].tel);
        i ++;
    }
    fclose(fp);
}


//输入模块
void input()// 从键盘输入
{
	int i;
	int flag;//标记工号是否已存在
	char c;//指令Y?N
    read();//输入数据前先将文件中原有的数据读入
    do
    {
        flag = 0;
        printf("\t\t请输入职工的工号:                              \n\t\t");
        scanf("%s",work[n].ID);
        for(i = 0 ; i < n ; i ++)
        {
            if(strcmp(work[i].ID,work[n].ID) == 0)
            {
                flag = 1;
                break;
            }
        }
        if(flag)
        {
            printf("该工号已存在!\n\n");
			printf("\t\t是否继续输入?(Y/N): ");
            scanf("%*c%c",&c);
			if(c == 'N' || c == 'n') break;
            continue;
        }
        printf("\t\t请输入职工的姓名:                              \n\t\t");
        scanf("%s",work[n].name);
        printf("\t\t请输入职工的性别:                              \n\t\t");
        scanf("%s",work[n].sex);
        printf("\t\t请输入职工的出生年月:                          \n\t\t");
        scanf("%s",work[n].born);
        printf("\t\t请输入职工的学历:                              \n\t\t");
        scanf("%s",work[n].edu);
        printf("\t\t请输入职工的职务:                              \n\t\t");
        scanf("%s",work[n].position);
        printf("\t\t请输入职工的工资:                              \n\t\t");
        scanf("%s",work[n].wage);
        printf("\t\t请输入职工的住址:                              \n\t\t");
        scanf("%s",work[n].address);
        printf("\t\t请输入职工的电话:                              \n\t\t");
        scanf("%s",work[n].tel);
        printf("\t\t是否继续输入?(Y/N): ");
        scanf("%*c%c",&c);
        n ++;
    }while( c != 'N' && c != 'n');
    write();
    printf("\n\n数据已保存!\n\n");
}


//显示模块
void output_inf(int id)
{
   printf("\t\t    工号: %s\n",work[id].ID);
   printf("\t\t    姓名: %s\n",work[id].name);
   printf("\t\t    性别: %s\n",work[id].sex);
   printf("\t\t出生年月: %s\n",work[id].born);
   printf("\t\t    学历: %s\n",work[id].edu);
   printf("\t\t    职务: %s\n",work[id].position);
   printf("\t\t    工资: %s\n",work[id].wage);
   printf("\t\t    住址: %s\n",work[id].address);
   printf("\t\t    电话: %s\n",work[id].tel);
   printf("\n\n\n");
}
void show()//显示所有职工信息
{
	int i;
    read();
	if(n == 0) printf("无记录!\n\n");
	else
		for(i = 0 ; i < n ; i ++)
		{
			output_inf(i);
		}
}


//查询模块
void que()//查询信息
{
	char num;
	int flag,i;
	char q_id[20] ;//查询工号
	char q_name[20] ;//查询姓名
	char q_edu[20] ; //查询学历
	char q_position[20] ;//查询职位
	char c;//指令Y?N
    read();//打开程序后,要查询以前的数据,要先读入
    while(1)
    {
        system("cls");
        printf("\t\t******************查询********************\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*             1.按工号查询               *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*             2.按姓名查询               *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*             3.按学历查询               *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*             4.按职务查询               *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*       输入其他任意键退出本模块         *\n");
        printf("\t\t******************************************\n");
        printf("\t\t请输入指令(1-4):");
        scanf("%*c%c",&num);
        if(num < '1' || num > '4')
        {
            printf("错误指令!\n\n");
            system("pause");
            continue;
        }
        system("cls");
        flag = 0;//用来标记职工信息是否存在
        if(num == '1')//按工号查询
        {
            printf("\t\t请输入您要查询职工的工号:");
            scanf("%s",q_id);
            for(i = 0 ; i < n ;i ++)
            {
                if( strcmp(work[i].ID,q_id) == 0)
                {
                    output_inf(i);
                    flag = 1;//标记
                    break;
                }
            }
        }
        else if(num == '2')//按姓名查询
        {
            printf("\t\t请输入您要查询职工的姓名:");
            scanf("%s",q_name);
            for(i = 0 ; i < n ;i ++)
            {
                if( strcmp(work[i].name,q_name) == 0)
                {
                    output_inf(i);
                    flag = 1;//标记
                }
            }
        }
        else if(num == '3')//按学历查询
        {
            printf("\t\t请输入您要查询职工的学历:");

            scanf("%s",q_edu);
            for(i = 0 ; i < n ;i ++)
            {
                if( strcmp(work[i].edu,q_edu) == 0)
                {
                    output_inf(i);
                    flag = 1;//标记
                }
            }
        }
        else if(num == '4')//按职务查询
        {
            printf("\t\t请输入您要查询职工的职务:");
            scanf("%s",q_position);
            for(i = 0 ; i < n ;i ++)
            {
                if( strcmp(work[i].position,q_position) == 0)
                {
                    output_inf(i);
                    flag = 1;//标记
                }
            }
        }
        if(!flag)//判断是否有该职工信息
        {
            printf("\n\n无该职工信息!\n\n");
        }
        printf("\n\n是否继续查询(Y/N):");

        scanf("%*c%c",&c);
        if(c == 'N' || c == 'n') break;
    }
}

//修改信息模块
void mod()//修改职工信息
{
	char change_ID[20];//需修改的职工的工号
	int number;//职工信息在数据中的位置
	char num;//指令
	char message[100];//修改的信息
	char c;//指令Y?N
	int flag;
	int i;
    read();
    while(1)
    {
        flag = 0;
        system("cls");
        printf("请输入需修改的职工的工号:");
        scanf("%s",change_ID);
        for(i = 0 ; i < n ; i ++)
        {
            if( strcmp(work[i].ID,change_ID) == 0 )
            {
                number = i;
                flag = 1;
                break;
            }
        }
        if(!flag)
        {
            printf("\n\n无此员工信息!!\n\n");
            printf("\n\n是否继续修改(Y/N):");
            scanf("%*c%c",&c);
            if(c == 'N' || c == 'n') break;
            continue;
        }
        printf("\n\n\t\t******************修改********************\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*             1.修改姓名                 *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*             2.修改学历                 *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*             3.修改职务                 *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*             4.修改工资                 *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*             5.修改住址                 *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*             6.修改电话                 *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*       输入其他任意键退出本模块         *\n");
        printf("\t\t******************************************\n");
        printf("\t\t请输入指令(1-6):");
        scanf("%*c%c",&num);
        if(num < '1' || num > '6')
        {
            printf("错误指令!\n\n");
            system("pause");
            continue;
        }
        system("cls");
        printf("请输入修改后的信息:");
        scanf("%s",message);
        switch(num)
        {
            case '1' : strcpy(work[number].name,message); break;
            case '2' : strcpy(work[number].edu,message); break;
            case '3' : strcpy(work[number].position,message); break;
            case '4' : strcpy(work[number].wage,message); break;
            case '5' : strcpy(work[number].address,message); break;
            case '6' : strcpy(work[number].tel,message); break;
        }
        system("cls");
        printf("\n\n是否继续修改(Y/N):");
        scanf("%*c%c",&c);
        if(c == 'N' || c == 'n') break;
    }
    write();
}


//删除信息模块
void del()//删除职工信息
{
	char delete_ID[20];//删除职工工号
	int i,j;
	int flag;//标记是否有该职工信息
	char c;
    read();
    while(1)
    {
        system("cls");
        flag = 0;
        printf("请输入需删除职工信息的工号:");
        scanf("%s",delete_ID);
        for(i = 0 ; i < n ; i ++)
        {
            if( strcmp(work[i].ID,delete_ID) == 0)
            {
                n --;
                flag = 1;
                for(j = i ; j < n ; j ++)
                {
                    work[j] =work[j + 1];
                }
                break;
            }
        }
        if(!flag)  printf("\n\n无此员工信息!\n\n");
        else printf("\n\n删除成功!\n");
        printf("\n\n是否继续删除(Y/N):");
        scanf("%*c%c",&c);
        if(c == 'N' || c == 'n') break;
    }
    write();
}

//菜单模块
void menu()//菜单
{
    printf("\t\t************职工信息管理系统菜单**********\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*              1.录入职工信息            *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*              2.显示职工信息            *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*              3.查询职工信息            *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*              4.修改职工信息            *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*              5.删除职工信息            *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*              0.退出                    *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t******************************************\n");
    printf("\t\t请输入指令(0-5): ");
}


int main()
{
    int num;
    n = 0;
    system("color 0B");
    while(1)
    {
        menu();
        scanf("%d",&num);
        system("cls");
        switch(num)
        {
            case 1: input(); break;
            case 2: show();  break;
            case 3: que();   break;
            case 4: mod();   break;
            case 5: del();   break;
            case 0: printf("谢谢使用!\n\n"); return 0;
            default :printf("\n--->无效的指令!\n\n\n");
        }
        system("pause");
        system("cls");
    }
}


  • 23
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
XXXXXXX大 学 课程设计说明书 名称 计算机语言C课程设计 —— 职工信息管理系统设计 2011 年 6月20 日至 2011年6 月26 日 共1 周 院 系 . 班 级 . 姓 名 . 学 号 . 系 主 任 . 教研室主任 . 指导教师 . 目 录 一、课程设计的目的与要求 3 1.1目的 3 1.2 要求 3 二、题目说明 4 2.1程序开发背景 4 2.2开发工具介绍 4 三、总体设计 5 3.1总体思想 5 3.2软件模块结构图 5 3.3系统流程图 6 3.3.1主函数 6 3.3.2显示函数 7 3.3.3录入函数 7 3.3.4查询函数 8 3.3.5删除函数 9 3.3.6排序函数 10 四、详细设计和系统实施 11 4.1数据结构设计 11 4.1.1定义数组 11 4.1.2定义结构体 11 4.1.3函数功能描述 11 4.2界面设计 12 4.2.1用户登录界面 12 4.2.2 主界面 13 4.2.3显示界面 15 4.2.4录入界面 16 4.2.5信息查询界面 17 4.2.6删除界面 19 五、遇到的问题及解决办法 20 六、课程设计总结 21 七、参考文献 22 附录(源程序代码) 23 一、课程设计的目的与要求 1.1目的 1.掌握C语言编程的基础知识较熟练的编写C语言应用程序。 2.能够利用所学的基本知识和技能,解决简单的程序设计问题,增强独立完成工作的能 力。 3.通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很 大的提高,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的 推动作用。 1.2 要求 1.要求利用C语言面向过程的编程思想来完成系统的设计; 2.突出C语言的函数特征,以多个函数实现每一个子功能; 3.画出功能模块图; 4. 进行简单界面设计,能够实现友好的交互; 5. 具有清晰的程序流程图和数据结构的详细定义; 6. 熟练掌握C语言对文件的各种操作。 二、题目说明 1.职工信息管理系统设计,使之包括职工号、、性别、年龄、学历、工资、住址、等( 职工号不重复)。 2.使这个管理系统具有以下功能:可以使系统以菜单方式工作、能够录入、查询、删除 、排序职工的信息。 3.可以按学历、按工号查询职工信息。使查询职工信息变得方便、简单。 2.1程序开发背景 现在随着社会的进步和人民生活水平的逐渐提升,大学生数量越来越多,相应的所需 要处理的的信息也越来越复杂,而凭借人力不可能准确及时地处理所有信息,因此,编 写此程序是极为必要的。但由于各个学校的情况不同,所以难以编写一个通用的成绩管 理程序。此程序是根据本校情况和老师指导所编写,用以解决教师对学生成绩的添加、 修改、删除以及学生对其成绩的查询等工作。 2.2开发工具介绍 Visual C++ Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。 虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为平台。 Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境 。 Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。 Visual C++它大概可以分成三个主要的部分: 1. Developer Studio。2. MFC。3. Platform SDK。[1] 三、总体设计 3.1总体思想 本系统主要的设计思想是实现对职工信息的录入、删除、排序、查询等主要功能。职工 信息以文件的形式存储。系统的人机接口采用简单的字符界面进行交互。系统的设计方 法是结构化设计方法,采用C语言进行开发。软件开发平台采用Visual C++6.0,主要考虑在VC中可以使用中文,用户交互界面设计比较美观清晰。 3.2软件模块结构图 根据需求分析结果,职工信息管理系统可以分为显示员工资料、录入员工资料、员工 信息查询、删除员工信息、员工信息排序、退出信息系统。如图3-1所示。 图3-1 3.3系统流程图 3.3.1主函数 3.3.2显示函数 3.3.3录入函数 3.3.4查询函数 3.3.5删除函数 3.3.6排序函数 四、详细设计和系统实施 4.1数据结构设
### 回答1: 职工信息管理系统是一种用于记录和管理职工信息的软件系统。在C语言课程设计中,我们可以使用C语言编程来实现这个系统。 首先,我们可以定义一个结构体,用于存储职工的信息,包括姓名、工号、职位、部门等。然后,我们可以设计一个函数,用于录入职工信息,并将其保存到一个文件中。这个函数可以从用户获取职工的各个信息,并将其写入文件。 接下来,我们设计一个函数,用于查询指定职工的信息。这个函数可以通过工号或姓名等关键字,在文件中查找对应的职工信息,并将其打印出来。我们还可以设计一个函数,用于显示所有职工的信息,让用户可以一览全局。 此外,我们还可以设计函数来实现更新职工信息的功能。用户可以输入要修改的职工的工号或姓名,然后可以选择要修改的字段,比如姓名、职位、部门等。根据用户的选择,我们可以实现相应的数据更新操作。 最后,我们需要设计一个函数来实现删除指定职工的功能。用户可以输入要删除的职工的工号或姓名,然后我们可以在文件中查找对应的职工信息,并将其从文件中删除。 通过以上的功能设计,我们可以实现一个简单的职工信息管理系统。在C语言课程设计中,我们可以利用C语言的基本语法和文件操作等知识,逐步完成这个系统的各个功能。这不仅有助于提升我们对C语言的掌握程度,同时也锻炼了我们的问题解决能力和编程能力。 ### 回答2: 职工信息管理系统是一个用于管理公司或组织中职工信息的软件系统。在C语言课程设计中,我们可以采用C语言来实现这样的系统。 首先,我们需要设计系统的数据结构,包括职工的基本信息,如姓名、工号、性别、年龄、职位等。可以使用结构体来表示职工信息,每个结构体变量代表一个职工。可以通过定义一个数组来存储多个职工的信息。 其次,我们需要设计系统的功能模块。例如,可以实现添加职工信息、修改职工信息、删除职工信息、查询职工信息等功能。可以通过定义各个函数来实现这些功能,例如addEmployee()函数用于添加职工信息,updateEmployee()函数用于修改职工信息,deleteEmployee()函数用于删除职工信息,searchEmployee()函数用于查询职工信息。 然后,我们需要设计系统的界面交互。可以通过命令行界面来实现用户和系统的交互。用户可以通过输入命令来执行不同的功能,例如输入"add"来添加职工信息,输入"update"来修改职工信息,输入"delete"来删除职工信息,输入"search"来查询职工信息。 最后,我们需要测试系统的功能和稳定性。可以编写一些测试用例,对系统中的各个功能进行测试,验证系统的正确性和健壮性,确保系统能够正常运行。 综上所述,C语言课程设计中的职工信息管理系统可以通过合理设计数据结构、功能模块和界面交互,来实现对职工信息的有效管理。通过编码和测试的过程,我们能够提高自己的编程能力和问题解决能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值