职工信息管理系统(课程设计)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct phone
{
 char num[30];
 char name[50];
 char sex[10];
 char year[50];
 char school[50];
 char zhiwei[50];
 char money[10];
 char address[30];
 char tel[30];
 struct phone *next;
}phone;

phone *head;
void Initiate();
void Menu();
phone *Create();
void Find();
void Alter();
void Delete();
void List();
phone *write_in();
phone *write_out();

phone *write_in(phone *head)
{
 FILE *fp;
    phone *p;
 if((fp=fopen("D:职工信息.txt","w"))==NULL)
 {
  printf("无法打开文件!!!\n");
  exit(0);
 }
 p=head->next;
 if(head!=NULL)
 while(p!=NULL)
 {
  fprintf(fp,"%s %s %s %s %s %s %s %s %s",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel);
  fprintf(fp,"\r\n");
  p=p->next;
 }
 fclose(fp);
 return head;
}
phone *write_out()
{
 FILE *fp;
 phone *p,*pre,*tail;
 head=(phone *)malloc(sizeof(phone));
 strcpy(head->num,"\0");
 strcpy(head->name,"\0");
 strcpy(head->sex,"\0");
 strcpy(head->year,"\0");
 strcpy(head->school,"\0");
 strcpy(head->zhiwei,"\0");
 strcpy(head->money,"\0");
 strcpy(head->address,"\0");
 strcpy(head->tel,"\0");
 tail = pre=head;
 fp=fopen("D:职工信息.txt","r");
 if(fp==NULL)
 {
  printf("文件打开失败!!!");
  exit(0);
 }
 p=(phone *)malloc(sizeof(phone));
 p->next=NULL;
 head->next=NULL;
 while(fscanf(fp,"%s %s %s %s %s %s %s %s %s",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel)!=EOF)
 {
  pre = tail;
  tail->next=p;
  tail=p;
  p=(phone *)malloc(sizeof(phone));
  p->next=NULL;
 }
 fclose(fp);
 return head;
}
//初始化
void  Initiate()
{
    if((head=(phone *)malloc(sizeof(phone)))==NULL)
  exit(1);
    head->next=NULL;
}
//显示菜单
void Menu()
{
  printf("**************欢迎使用职工信息管理系统**************");
  printf("\n");
  printf("\n");
  printf("    1.创建信息.\n");
  printf("    2.查询信息.\n");
  printf("    3.修改信息.\n");
  printf("    4.删除信息!\n");
  printf("    5.显示所有信息.\n");
  printf("    0.退出系统.\n");
}

//创建通讯录
phone *Create()
{
     phone *p1,*p2;
     int  m,i;
     printf("请输入创建个数:");
     scanf("%d",&m);
     for(i=1;i<=m;i++)
     {
        p1=(phone *)malloc(sizeof(phone));
        printf("请输入第%d条信息!\n",i);
        printf("请输入职工号:\n");
        scanf("%s",p1->num);
        printf("姓名:\n");
        scanf("%s",p1->name);
        printf("性别:\n");
        scanf("%s",p1->sex);
        printf("出生年月:\n");
        scanf("%s",p1->year);
        printf("学历:\n");
        scanf("%s",p1->school);
        printf("职务:\n");
        scanf("%s",p1->zhiwei);
        printf("工资:\n");
        scanf("%s",p1->money);
        printf("地址:\n");
        scanf("%s",p1->address);
        printf("电话:\n");
        scanf("%s",p1->tel);

        p1->next=NULL;
        if(head->next==NULL)
           head->next = p1;
        else
        {
            for(p2=head;p2->next!=NULL;p2=p2->next);       //找到结点尾
            p2->next = p1;
        }
     }
    printf("信息已添加!\n");
    head=write_in(head);
    return head;
                                      //保存到链表
}

//查找通讯录信息
void Find()
{
    phone *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出生年月\t学历\t职务\t工资\t地址\t电话\n");
           printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel);
       }
       else  if(p->next==NULL)
          printf("无此信息!\n");
    }
    head=write_in(head);
}
//修改通讯录信息
void Alter()
{
 head=write_out();
   char name[50];                                     //先查找 后删除
   phone *p=head->next;
   if (p == NULL)
   {
      printf("此系统为空!\n");
      return;
   }
   printf("请输入要修改的姓名:\n");
   scanf("%s",name);
   while(p!=NULL)
   {
       if(strcmp(p->name,name)==0)
        {
        printf("请输入需要插入的信息");
     printf("姓名:\n");
        scanf("%s",p->name);
        printf("性别:\n");
        scanf("%s",p->sex);
        printf("出生年月:\n");
        scanf("%s",p->year);
        printf("学历:\n");
        scanf("%s",p->school);
        printf("职务:\n");
        scanf("%s",p->zhiwei);
        printf("工资:\n");
        scanf("%s",p->money);
        printf("地址:\n");
        scanf("%s",p->address);
        printf("电话:\n");
        scanf("%s",p->tel);
        break;
  }
   }
   printf("修改成功");
    head=write_in(head);
}
  
//删除通讯录信息
void Delete()
{
 head=write_out();
   char  name[50];                                     //先查找 后删除
   phone *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出生年月\t学历\t职务\t工资\t地址\t电话\n");
   for(p2=head->next;p2!=NULL;p2=p2->next)
      printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel);
      head=write_in(head);
}
//显示所有记录
void List()
{
 head=write_out();
   phone *p;
   if(head->next==NULL)
   {
       printf("此系统中无记录!\n");
       return;
   }
   printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\t地址\t电话\n");
   for(p=head->next;p!=NULL;p=p->next)
      printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel);
}

int main()
{
   int  choice;
   char  yes_no;
  
   Initiate();

   do
   {
      Menu();
      printf("请选择0-5的数字\n");
      scanf("%d",&choice);
      printf("\n");
      switch(choice)
      {
          case 1:Create();
          break;
          case 2:Find();
          break;
          case 3:Alter();
          break;
          case 4:Delete();
          break;
          case 5:List();
          break;
          case 0:
          printf("************感谢您的使用************\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');
}

 

  • 9
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
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数据结构设
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值