C语言课程设计之公司员工信息管理系统怎么做? C语言课程设计 职工信息管理系统

作者&投稿:却翁 (若有异议请与网页底部的电邮联系)

1、员工信息管理系统是事业单位科学、全面、高效进行人事管理的系统,参考大量中国人力资源管理理论,根植于国内管理的实际情况,实用而科学。内容包括机构的建立和维护,人员信息的录入和输出,工资的调整和发放以及各类报表的绘制和输出等功能。在操作上集输入、维护、查询、统计、打印、输出等处理为一体,简便灵活,自动化功能强大。


2、例程:

#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <string.h>
#define N 100
struct employee
{
    int num;
 char name[10];
 char sex;  
 int age;
 char xueli[30];
    int wage;
   char addr[30];
   long int tel;
}em[100];        /*定义一个结构体*/
void menu();
void input();
void save(int);
void display();
void del();
void add();
void search();
void search_num();
void search_xueli();
void search_tel();
void modify();  /*定义各函数*/
void menu()   /*菜单函数*/
{
 printf("              ☆☆☆计算机科学与技术学系☆☆☆
");
    printf("
");
    printf("                                   ∮08802班 关丽霞∮
");
    printf("
");
 printf("        ******************职工信息管理****************
");
 printf("           1.录入职工信息");
 printf("           2.浏览职工信息
");
 printf("           3.查询职工信息");
 printf("           4.删除职工信息
");
    printf("           5.添加职工信息");
 printf("           6.修改职工信息
");
 printf("           7.退出
");
 printf("        ********************谢谢使用******************
");
    printf("
");
    printf("
");
    
}
void main()
{   
 menu();  /*调用菜单函数*/
 int n,flag;
 char a;
 do
 {
    printf("请选择你需要操作的步骤(1--7):
");
    scanf("%d",&n);
    if(n>=1&&n<=7)
    {
    flag=1;
    break;
    }
    else
    {
   flag=0;
   printf("您输入有误,请重新选择!");
    }
 }
    while(flag==0);
    while(flag==1)
  {
  switch(n)
  {
          case 1:printf("               ◆◆◆输入职工信息◆◆◆
");printf("
");input();break;
       case 2:printf("              ◆◆◆浏览职工信息◆◆◆
");printf("
");display();break;
       case 3:printf("              ◆◆◆按职工号查询职工信息◆◆◆
");printf("
");search();break; 
       case 4:printf("              ◆◆◆删除职工信息◆◆◆
");printf("
");del();break;
    case 5:printf("              ◆◆◆添加职工信息◆◆◆
");printf("
");add();break;
       case 6:printf("               ◆◆◆修改职工信息◆◆◆
");printf("
");modify();break;
       case 7:exit(0);break;
    default :break;
  }
  getchar();
  printf("
");
     printf("是否继续进行(y or n):
");
     scanf("%c",&a);
  if(a=='y')
  {
     flag=1;
           system("cls");  /*清屏*/
           menu(); /*调用菜单函数*/
     printf("请再次选择你需要操作的步骤(1--6):
");
        scanf("%d",&n);
     printf("
");
  }
  
  else 
  exit(0);
 }
 
}
void input()   /*录入函数*/
{
   int i,m;
      printf("请输入需要创建信息的职工人数(1--100):
");
   scanf("%d",&m);
   for (i=0;i<m;i++)
   {
  printf("职工号: ");
  srand((int)time(0));
  em[i].num=rand()%10000+20000000;
  if(em[i].num!=em[i-1].num)
       printf("%8d ",em[i].num);
  printf("
");
     printf("请输入姓名:  ");
  scanf("%s",em[i].name);
  getchar();
  printf("请输入性别(f--女  m--男):  ");
  scanf("%c",&em[i].sex);
  printf("请输入年龄:  ");
  scanf("%d",&em[i].age);
  printf("请输入学历:  ");
  scanf("%s",em[i].xueli);
  printf("请输入工资:  ");
  scanf("%d",&em[i].wage);
  printf("请输入住址:  ");
  scanf("%s",em[i].addr);
        printf("请输入电话:  ");
     scanf("%d",&em[i].tel);
     printf("
");
    
   }
   printf("
创建完毕!
");
      save(m);
}
void save(int m)  /*保存文件函数*/
{
 int i;
 FILE*fp;
 if ((fp=fopen("employee_list","wb"))==NULL)  /*创建文件并判断是否能打开*/
 {
  printf ("cannot open file
");
     exit(0);
 }
 for (i=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/
   if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1)
   printf("file write error
");
   fclose(fp);
}
int load()  /*导入函数*/
{
     FILE*fp;
 int i=0;
   if((fp=fopen("employee_list","rb"))==NULL)
 {
  printf ("cannot open file
");
     exit(0);
 }
 else 
 {
  do 
  {
        fread(&em[i],sizeof(struct employee),1,fp);
     i++;
  }
  while(feof(fp)==0);
 }
 fclose(fp);
 return(i-1);
}
void display()  /*浏览函数*/
{
 int i;
 int m=load();
 printf("
  职工号姓名性别年龄学历工资住址电话   
");
 for(i=0;i<m;i++) /*m为输入部分的职工人数*/
     printf("
  %d%s%c%d%s%d%s%ld
",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
}
void del()   /*删除函数*/
{
  
    int m=load();
 int i,j,n,t,flag;
 char name[20];
 printf("
 原来的职工信息:
");
    display();   /* 调用浏览函数*/
    printf("
");
 printf("请输入要删除的职工的姓名:
");
 scanf("%s",name);
 for(flag=1,i=0;flag&&i<m;i++)
 {
  if(strcmp(em[i].name,name)==0)
  {
   printf("
已找到此人,原始记录为:
");
            printf("
职工号姓名性别年龄学历工资住址电话   
");
   printf("
%d%s%c%d%s%d%s%ld
",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
            printf("
确实要删除此人信息请按1,不删除请按0
");
   scanf("%d",&n);
            if(n==1)   /*如果删除,则其他的信息都往上移一行*/
   {
     for(j=i;j<m-1;j++)
     {
    strcpy(em[j].name,em[j+1].name);
                em[j].num=em[j+1].num;
                em[j].sex=em[j+1].sex;
                em[j].age=em[j+1].age;
                strcpy(em[j].xueli,em[j+1].xueli);
    em[j].wage=em[j+1].wage;  
                strcpy(em[j].addr,em[j+1].addr);
                em[j].tel=em[j+1].tel;
     }
    flag=0;
   }
  }
 }
 if(!flag)
    m=m-1;
 else
    printf("
对不起,查无此人!
");
    printf("
 浏览删除后的所有职工信息:
");
    save(m);     /*调用保存函数*/
    display();  /*调用浏览函数*/
 printf("
继续删除请按1,不再删除请按0
");
 scanf("%d",&t);
 switch(t)
 {
    case 1:del();break;
    case 0:break;
    default :break;
 }
}
void add()/*添加函数*/
{
 FILE*fp;
 int n;
    int count=0;
    int i;
    int m=load();
    printf("
 原来的职工信息:
");
    display();   /* 调用浏览函数*/
    printf("
");
    fp=fopen("emploee_list","a");
    printf("请输入想增加的职工数:
");
 scanf("%d",&n);
    for (i=m;i<(m+n);i++)
  {
  printf("
 请输入新增加职工的信息:
");
  printf("请输入职工号:  ");
  srand((int)time(0));
  em[i].num=rand()%10000+20000000;
  if(em[i].num!=em[i-1].num)
       printf("%8d ",em[i].num);
  printf("
");
        printf("请输入姓名:  ");
     scanf("%s",em[i].name);
        getchar();
        printf("请输入性别(f--女  m--男):  ");
     scanf("%c",&em[i].sex);
        printf("请输入年龄:  ");
     scanf("%d",&em[i].age);
     printf("请输入学历:  ");
     scanf("%s",em[i].xueli);
     printf("请输入工资:  ");
     scanf("%d",&em[i].wage);
      printf("请输入住址:  ");
     scanf("%s",em[i].addr);
        printf("请输入电话:  ");
     scanf("%d",&em[i].tel);
        printf("
");
     count=count+1;
  printf("已增加的人数:
");
     printf("%d
",count);
 }
    printf("
添加完毕!
"); 
    m=m+count;
 printf("
浏览增加后的所有职工信息:
");
 printf("
");
 save(m);
    display();
   fclose(fp);
}
void search()/*查询函数*/
{
    int t,flag;
 do
 {
    printf("
按职工号查询请按1 ; 按学历查询请按2 ; 按电话号码查询请按3,进入主函数按4
");
    scanf("%d",&t);
    if(t>=1&&t<=4)
    {
    flag=1;
    break;
    }
    else
    {
   flag=0;
   printf("您输入有误,请重新选择!");
    }
 }
    while(flag==0);
    while(flag==1)
 {
    switch(t)
    { 
     case 1:printf("按职工号查询
");search_num();break;
     case 2:printf("按学历查询
");search_xueli();break;
     case 3:printf("按电话号码查询
");search_tel();break;
  case 4:main();break;
     default:break;
    }
    
 }
}
void search_num()
{
  int num;
  int i,t;
  int m=load();
  printf("请输入要查找的职工号(20001111---20009999):
");
  scanf("%d",&num);
  for(i=0;i<m;i++)
    if(num==em[i].num)
 {  
    printf("
已找到此人,其记录为:
");
       printf("
职工号姓名性别年龄学历工资住址电话   
");
    printf("
%d%s%c%d%s%d%s%ld
",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
    break;
 }
   if(i==m)  
    printf("
对不起,查无此人
");
   printf("
");
   printf("返回查询函数请按1,继续查询职工号请按2
");
   scanf("%d",&t);
   switch(t)
   { 
   case 1:search();break;
      case 2: break;
   default:break;
   }
}
void search_xueli()
{
  char xueli[30];
  int i,t;
  int m=load();
  printf("请输入要查找的学历:
");
  scanf("%s",xueli);
  for(i=0;i<m;i++)
   if(strcmp(em[i].xueli,xueli)==0)
 {
    printf("
已找到,其记录为:
");
    printf("
职工号姓名性别年龄学历工资住址电话   
");
    printf("
%d%s%c%d%s%d%s%ld
",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
    
 }
  if(i==m) 
    printf("
对不起,查无此人
");
   printf("
");
   printf("返回查询函数请按1,继续查询学历请按2
");
   scanf("%d",&t);
  switch(t)
  { 
   case 1:search();break;
      case 2:break;
   default :break;
  }
 
}
void search_tel()
{
   long int tel;
  int i, t;
  int m=load();
  printf("请输入要查找的电话号码:
");
  scanf("%ld",&tel);
  for(i=0;i<m;i++)
    if(tel==em[i].tel)
 {  
    printf("
已找到此人,其记录为:
");
       printf("
职工号姓名性别年龄学历工资住址电话   
");
    printf("
%d%s%c%d%s%d%s%ld
",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
    break;
 }
    if(i==m)  
    printf("
对不起,查无此人
");
   printf("
");
   printf("返回查询函数请按1,继续查询电话号码请按2
");
   scanf("%d",&t);
  switch(t)
  { 
   case 1:search();break;
      case 2:break;
   default :break;
  }
  
}


c语言编的学生信息管理系统小程序 参考吧
<stdio.h>
#include <stdlib.h>
#include <string.h>
struct st
{
char name[20];
int english;
int math;
int chinese;
int average;
st *next;

};
struct st *pend=NULL;//初始链表的尾指针
struct st *pendorder=NULL;//顺序链表的尾指针
struct st *pheadorder=NULL;//顺序链表的头指针
struct st *makeorder(struct st *phead);//按分数从大到小排序 生产链表
struct st *addtolist(struct st *add);// 将平均分最大的添到另一个链表
struct st *createlist();//输入学生信息时生成的初始链表
struct st * deletestu(char *name,st *phead);//删除一个学员的信息
struct st *addstu(st *name,st *phead);//向顺序链表添加一个元素,插入的地方按平均成绩
void printinfo(st *phead);//按平均成绩打印出每个学员的名字

int main()
{
int select;
char deletename[20];
struct st *addstud=NULL;
struct st *phead=NULL;
phead=createlist();//输入时创建链表
pheadorder=makeorder(phead);//将链表排序
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
while(select>0)//选择操作1为删除2为添加3为打印,其他的输入会跳出循环
{
switch(select)
{

case 1:
printf("please input the of the student to be deleted:\n");
scanf("%s",deletename);
pheadorder=deletestu(deletename,pheadorder);
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
break;
case 2:
printf("please input the information of the student to be added:\n");
addstud=new st;
scanf("%s%d%d%d",addstud->name,&(addstud->english),&(addstud->math),&(addstud->chinese));
addstud->average=((addstud->english)+(addstud->math)+(addstud->chinese))/3;
while((addstud->english)<=0)
{
delete addstud;
printf("please input the information of the student to be added:\n");
addstud=new st;
scanf("%s%d%d%d",addstud->name,&(addstud->english),&(addstud->math),&(addstud->chinese));
addstud->average=((addstud->english)+(addstud->math)+(addstud->chinese))/3;
}
pheadorder=addstu(addstud,pheadorder);
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
break;
case 3:
printinfo(pheadorder);
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
break;
default:
goto laber;

}
}
laber:system("pause");
return 1;

}
struct st *createlist()//输入时创建初始链表
{
struct st *pfirst=NULL;
struct st *plast=NULL;
struct st *p=new st;
printf("please input the information of the students:\n");
scanf("%s%d%d%d",p->name,&(p->english),&(p->math),&(p->chinese));
p->average=((p->english)+(p->math)+(p->chinese))/3;
while((p->english)>0)
{
if(pfirst==NULL)
pfirst=plast=p;
else
plast->next=p;
plast=p;
printf("please input again:\n");
p=new st;
scanf("%s%d%d%d",p->name,&(p->english),&(p->math),&(p->chinese));
p->average=((p->english)+(p->math)+(p->chinese))/3;

}
plast->next=NULL;
printf("list create successful\n");
delete p;
return pfirst;
}
struct st *deletestu(char *name,st *phead)//删除一个学员
{
int flag=0;
st *p=NULL;
if(strcmp(phead->name,name)==0)
{
phead=phead->next;
flag=1;
}
else
for(p=phead;p;p=p->next)
{
if(strcmp(p->next->name,name)==0)
{
p->next=p->next->next;
flag=1;
break;
}
}
if(!flag)
printf("the student you delete is not in the list\n");
else printf("delete successful\n");
return phead;
}
struct st *addstu(st *name,st *phead)//按平均分增加一个学员
{
name->next=NULL;
struct st *p=NULL;
if((name->average)>(phead->average))
{
name->next=phead;
phead=name;
return phead;
}
else
{
for(p=phead;p->next;p=p->next)
{
if((name->average)>(p->next->average))
{
name->next=p->next;
p->next=name;
return phead;
}

}
}
p=p->next;
p->next=name;
return phead;

}
void printinfo(st *phead)//打印信息
{
st *p;
for(p=phead;p;p=p->next)
printf("%s\n",p->name);
}

struct st *addtolist(struct st *phead,struct st *add)//生成顺序链表时每回都添加一个平均成绩最高的学员信息
{
add->next=NULL;
if(phead==NULL)
pendorder=phead=add;
else
pendorder->next=add;
pendorder=add;
return phead;

}

struct st *makeorder(struct st *phead)//将初始链表变成顺序链表
{
if(phead!=NULL)
{
int max;
struct st *p=NULL;
struct st *index=NULL;
while(phead)
{
max=0;
for(p=phead;p;p=p->next)
{
if(p->average>max)
{
max=p->average;
index=p;
}
}
phead=deletestu(index->name,phead);
pheadorder=addtolist(pheadorder,index);
}
return pheadorder;
}
else printf("there is no list members to be ordered\n");
return pheadorder;
}

c语言课程设计——职工信息管理系统~

#include
#include
int main()
{
void TestOnLineTeacherManage(); //声明教师信息管理函数
void TestOnLineSelfManage();//声明个人管理函数
int n;
printf(“0教师管理,1个人管理”);
scanf(“%d”,&n);
If (n==0)
TestOnLineTeacherManage();
else
TestOnLineSelfManage();//选择教师管理或者个人信息管理
Return 0;
}

Void TestOnLineTeacherManage() //教师信息管理函数
{
Struct TestOnLineTeacher
{
Int Tnum;
Char Tname[20];
Char Tsex;
Char Ttel[20];
}Teacher[100]; //定义一个结构体
void add(); //定义教师信息添加
void del(); //定义教师信息删除
Void modify(); //定义教师信息修改
int a;
Printf(“1添加2删除3修改”);
Scanf (“%d”,&a);
Switch(a)
{
Case1:add();break;
Case2:del();break;
Case3:modify();break;
Default:break;
}//选择功能
}

Void add() //教师信息添加函数,若添加Teacher[i]
{
printf(“输入工号”);
Scanf(“%d”,&Teacher[i].Tnum);
printf(“输入姓名”);
Scanf(“%s”,&Teacher[i].Tname);
printf(“输入性别f女m男”);
Scanf(“%c”,&Teacher[i].Tsex);
printf(“输入电话”);
Scanf(“%s”,&Teacher[i].Ttel);
}

Void del() //教师信息删除函数,若删除Teacher[i]
{
Teacher[i-1]=Teacher[i+1];
Free(Teacher[i]);
}

Void modify() //教师信息修改函数,若修改Teacher[i]
{
Int t;
Int num;
Char name[20];
Char sex;
Char tel[20];
Printf(“修改选项1工号2姓名3性别4电话”);
Scanf(“%d”,&t);
Switch(t)
{
Case1:scanf(“%d”,&num);Teacher[i].Tnum=num;break;
Case2:scanf(“%s”,&name);strcpy(Teacher[i].Tname,name);break;
Case3:scanf(“%c”,&sex);Teacher[i].Tsex=sex;break;
Case4:scanf(“%s”,&tel);strcpy(Teacher[i].Ttel,tel);break;
Default:break;
}//选择修改项并修改
}

Void TestOnLineSelfManage() //个人信息管理
{
Struct TestOnLineManage
{
Int Mnum;
Char Mname[20];
Char Msex;
Char Mtel[20];
}Manage[1]; //定义一个结构体
Int b;
Int num;
Char name[20];
Char sex;
Char tel[20];
Printf(“修改选项1工号2姓名3性别4电话”);
Scanf(“%d”,&b);
Switch(t)
{
Case1:scanf(“%d”,&num);Manage[1].Mnum=num;break;
Case2:scanf(“%s”,&name);strcpy(Manage[1].Mname,name);break;
Case3:scanf(“%c”,&sex);Manage[1].Msex=sex;break;
Case4:scanf(“%s”,&tel);strcpy(Manage[1].Mtel,tel);break;
Default:break;
}//选择修改项并修改
}

我这有个学生成绩管理系统的c程序 是去年我们的设计题目给你参考一下啦 感觉都一个样了基本相同 这个设计嘛 还是要自己写的 只有这样才可以学好c的,而且c语言很有用的是语言学的基础。你肯定是工科的学生吧,这样就跟重要了,像人家清华大学的c语言课就三节一学期下来,到后来每个人都有几个这样的课程设计题目,好几百行的他们都能编出来,不是他们聪明,当然肯定不笨了...所以啊都是个氛围和兴趣的问题了。多参考参考是对的,在图书馆借几本相关的书籍看看,上网查查,但不要复制别人的就可以了.....

这个给你参考一下吧
#include
#include
#include
#include

typedef struct STUDENT
{
char studentNumber[10];/*学生学号*/
char studentName[20];/*学生姓名*/
char className[20];/*班级名称*/
float mark1;/*第1门成绩*/
float mark2;/*第2门成绩*/
float mark3;/*第3门成绩*/
struct STUDENT *next;
}STUDENT;
STUDENT *headLink;/*链表表头指针*/
/*以下是函数声明*/
void ReadInfoFormFile(void);
void DesplayMenu(void);
void CreateHeadLink(void);
STUDENT *MallocNode(void);
void GetInformation(STUDENT *t);
void OutputInformation(void);
void DesplayInfoBystudentName(void);
void DesplayInfoBystudentNumber(void);
void DesplayOneNode(STUDENT *t);
void InsertOneNode(STUDENT *t);
void DeleteNodeBystudentNumber(void);
void ChangeMarkByName(void);
void ChangeMarkByNumber(void);
void SaveLinkToFile(void);
void DesplayMarkSegment(void);
void CompositorByTotalMark(void);
int choose;/*用于接受用户的选择*/
/*主函数*/
main()
{
CreateHeadLink();
ReadInfoFormFile();
DesplayMenu();
}
/************************************
函数功能:从文件中读学生信息到链表中
************************************/
void ReadInfoFormFile(void)
{
FILE *fp;
STUDENT *p;
fp=fopen("student.txt","r");
if(!fp)
{
printf("文件不存在
");
return;
}
p=MallocNode();
while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3))>0)
{
InsertOneNode(p);
p=MallocNode();
}
fclose(fp);
}
/************************************
函数功能:显示菜单,根据用户的输入
完成相应的功能
************************************/
void DesplayMenu(void)
{
STUDENT *p;
printf("-------请选择相应功能------------

");
printf("| 1 显示所有学生的信息 |
");
printf("| 2 按姓名查询 |
");
printf("| 3 按学号查询 |
");
printf("| 4 增加学生 |
");
printf("| 5 删除学生 |
");
printf("| 6 按姓名修改学生成绩 |
");
printf("| 7 按学号修改学生成绩 |
");
printf("| 8 保存所有学生信息 |
");
printf("| 9 显示优秀和不及格学生成绩 |
");
printf("| 10 排序结果并输出绩 |
");
printf("| 11 退出 |

");
scanf("%d",&choose);/*取得用户的选择*/
switch(choose)
{
case 1:
OutputInformation();/*显示所有学生的信息*/
break;
case 2:
DesplayInfoBystudentName();
break;
case 3:
DesplayInfoBystudentNumber();/*根据用户输入的学号显示该学生的信息*/
break;
case 4:
p=MallocNode();/*先申请一个新结点*/
GetInformation(p);/*要求用户输入信息到新结点中*/
InsertOneNode(p);/*将新结点加到链表中*/
break;
case 5:
DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/
break;
case 6:
ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/
break;
case 7:
ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/
break;
case 8:
SaveLinkToFile();/*保存数据*/
break;
case 9:
DesplayMarkSegment();/*显示各分数段的学生成绩*/
break;
case 10:
CompositorByTotalMark();
break;
case 11:
SaveLinkToFile();/*保存数据后再退出*/
free(headLink);
exit(1);
break;
default:
break;
}
DesplayMenu();/*递归调用*/
}
/************************************
函数功能:建立链表表头
************************************/
void CreateHeadLink(void)
{
STUDENT *p;
p=(STUDENT*)malloc(sizeof(STUDENT));
headLink=p;
p->next=NULL;
}
/************************************
函数功能:申请一个新结点,并将其初始化
************************************/
STUDENT *MallocNode(void)
{
STUDENT *p;
int i;
p=(STUDENT*)malloc(sizeof(STUDENT));
if(p==NULL)
return NULL;
for(i=0;i<10;i++)
p->studentNumber[i]='\0';
for(i=0;i<20;i++)
p->studentName[i]='\0';
for(i=0;i<20;i++)
p->className[i]='\0';
p->mark1=0.0;
p->mark2=0.0;
p->mark3=0.0;
p->next=NULL;
return p;
}
/************************************
函数功能:取得用户输入的学生信息
************************************/
void GetInformation(STUDENT *t)
{
printf("请输入学生学号:
");
scanf("%s",t->studentNumber);
printf("请输入学生姓名:
");
scanf("%s",t->studentName);
printf("请输入该生所在班级:
");
scanf("%s",t->className);
printf("请输入第1门成绩:
");
scanf("%f",&(t->mark1));
printf("请输入第2门成绩:
");
scanf("%f",&(t->mark2));
printf("请输入第3门成绩:
");
scanf("%f",&(t->mark3));
}
/************************************
函数功能:在链表的结尾处增加一个结点
************************************/
void InsertOneNode(STUDENT *t)
{
STUDENT *p;
p=headLink;
while(p->next)
{
p=p->next;
}
p->next=t;
}
/************************************
函数功能:根据用户输入的学生姓名显示该学生的信息
************************************/
void DesplayInfoBystudentName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
p=headLink->next;
printf("请输入学生姓名:
");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("学号姓名班级成绩1成绩1成绩3总成绩平均成绩

");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在姓名为 %s 的学生
",studentName);
}
/************************************
函数功能:根据用户输入的学号显示该学生的信息
************************************/
void DesplayInfoBystudentNumber(void)
{
STUDENT *p;
char studentNumber[10];
char flag=0;
p=headLink->next;
printf("请输入学生学号:
");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("学号姓名班级成绩1成绩1成绩3总成绩平均成绩

");
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在学号为 %s 的学生
",studentNumber);
}
/************************************
函数功能:输出一个结点的信息
************************************/
void DesplayOneNode(STUDENT *t)
{
printf("%s",t->studentNumber);
printf("%s",t->studentName);
printf("%s",t->className);
printf("%.2f",t->mark1);
printf("%.2f",t->mark2);
printf("%.2f",t->mark3);
printf("%.2f",t->mark1+t->mark2+t->mark3);
printf("%.2f
",(t->mark1+t->mark2+t->mark3)/3);
}
/************************************
函数功能:根据用户输入的学号删除该学生
************************************/
void DeleteNodeBystudentNumber(void)
{
char studentNumber[10];
STUDENT *p,*q;
char flag=0;
printf("请输入要删除的学生学号:");
scanf("%s",studentNumber);
p=headLink;
q=headLink->next;
while(q)
{
if(strcmp(q->studentNumber,studentNumber)==0)
{
p->next=q->next;
free(q);
flag=1;
break;
}
p=p->next;
q=q->next;
}
if(!flag)
{
printf("不存在该学号的学生
");
return;
}
printf("成功删除
");
}
/************************************
函数功能:显示所有学生的信息
************************************/
void OutputInformation(void)
{
STUDENT *p;
p=headLink->next;
if(p==NULL)
{
printf("现在没有学生信息,请先输入学生信息

");
return;
}
printf("学号姓名班级成绩1成绩1成绩3总成绩平均成绩

");
while(p)
{
DesplayOneNode(p);
p=p->next;
}
}
/************************************
函数功能:根据输入的姓名修改成绩
************************************/
void ChangeMarkByName(void)
{
STUDENT *p;
char studentName[20];
char flag=0;
float mark1,mark2,mark3;
p=headLink->next;
printf("请输入学生姓名:
");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("请输入新的第1门成绩:
");
scanf("%f",&mark1);
printf("请输入新的第2门成绩:
");
scanf("%f",&mark2);
printf("请输入新的第3门成绩:
");
scanf("%f",&mark3);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
flag=1;
printf("修改成功
");
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在姓名为 %s 的学生
",studentName);
}
/************************************
函数功能:根据输入的学号修改成绩
************************************/
void ChangeMarkByNumber(void)
{
STUDENT *p;
char studentNumber[20];
char flag=0;
float mark1,mark2,mark3;
p=headLink->next;
printf("请输入学生学号:
");
scanf("%s",studentNumber);
while(p)
{
if(strcmp(p->studentNumber,studentNumber)==0)
{
printf("请输入新的第1门成绩:
");
scanf("%f",&mark1);
printf("请输入新的第2门成绩:
");
scanf("%f",&mark2);
printf("请输入新的第3门成绩:
");
scanf("%f",&mark3);
p->mark1=mark1;
p->mark2=mark2;
p->mark3=mark3;
flag=1;
printf("修改成功
");
break;
}
p=p->next;
}
if(!flag)
printf("对不起,不存在学号为 %s 的学生
",studentNumber);
}
/************************************
函数功能:保存链表数据到文件中
************************************/
void SaveLinkToFile(void)
{
STUDENT *p;
FILE *fp;
p=headLink->next;
if(p==NULL)
{
printf("现在没有学生信息,请先输入学生信息

");
return;
}
fp=fopen("student.txt","w+");
if(!fp)
{
printf("文件不存在
");
return;
}
while(p)
{
fprintf(fp,"%s %s %s %f %f %f
",p->studentNumber,p->studentName,p->className,p->mark1,p->mark2,p->mark3);
p=p->next;
}
fclose(fp);
}
/************************************
函数功能:显示优秀和不及格学生成绩
************************************/
void DesplayMarkSegment(void)
{
STUDENT *p;
int count=0;
p=headLink->next;
printf("60分以下(不及格)的学生成绩如下:
");
printf("学号姓名班级成绩1成绩1成绩3总成绩平均成绩

");
while(p)
{
if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p->mark3/10))))/*只要有一科不及格就认为该生不及格*/
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("不及格的学生一共有%d人
",count);
p=headLink->next;
printf("成绩优秀的学生成绩如下:
");
printf("学号姓名班级成绩1成绩1成绩3总成绩平均成绩

");
count=0;
while(p)
{
if((8mark1/10)))&&(8mark2/10)))&&(8mark3/10))))
{
count++;
DesplayOneNode(p);
}
p=p->next;
}
printf("成绩优秀的学生一共有%d人
",count);
}
/************************************
函数功能:按总成绩排序
************************************/
void CompositorByTotalMark(void)
{
STUDENT exchange,*r,*p,*q;
r=headLink->next;
if(r==NULL)
{
printf("现在还没学生信息,请先输入学生信息
");
return;
}
while(r)/*两层while循环实现排序*/
{
p=r;
q=r->next;
while(q)
{
if((q->mark1+q->mark2+q->mark3)>(p->mark1+p->mark2+p->mark3))
{
strcpy(exchange.studentNumber,q->studentNumber);/*先复制q结点信息到exchange*/
strcpy(exchange.studentName,q->studentName);
strcpy(exchange.className,q->className);
exchange.mark1=q->mark1;
exchange.mark2=q->mark2;
exchange.mark3=q->mark3;

strcpy(q->studentNumber,p->studentNumber);/*再复制p结点信息到q*/
strcpy(q->studentName,p->studentName);
strcpy(q->className,p->className);
q->mark1=p->mark1;
q->mark2=p->mark3;
q->mark3=p->mark3;
strcpy(p->studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/
strcpy(p->studentName,exchange.studentName);
strcpy(p->className,exchange.className);
p->mark1=exchange.mark1;
p->mark2=exchange.mark2;
p->mark3=exchange.mark3;
}
q=q->next;
}
r=r->next;
}
OutputInformation();
}

祝你学好c语言。我不是冲着分来的,就是想让你能好好认识到什么是大学的真谛,这样的实践菜能让你逐渐成熟!

C语言职工信息管理系统设计
答:职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:1、系统以菜单方式工作2、职工信息录入功能(职工信息用文件保存)--输入3、职工信息浏览功能--输出4、职...

C语言课程设计之公司员工信息管理系统怎么做?
答:case 1:printf(" ◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break; case 2:printf(" ◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break; case 3:printf(" ◆◆◆按职工号查询职工信息◆◆◆\n"...

C语言课程设计 职工信息管理系统
答:职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能: 职工信息录入功能(职工信息用文件保存)--输入 职工信息浏览功能 --输出 查询或...

C语言课程设计职工信息管理系统
答:职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:系统以菜单方式工作v职工信息录入功能(职工信息... 职工信息包括职工号、姓名、性别、年龄、学历、工资、...

C语言 职工信息管理系统
答:C语言 职工信息管理系统 1)参考数据结构typedefstruct{charname[10];(职工姓名)intnumber;(职工编号不重复)charsex;(职工性别)floatprice;(职工工资)charaddress;(职工住址)charlevel;(学历如专科... 1)参考数据结构typedef struct {...

员工信息管理系统设计
答:一、项目的总体概况利用结构化软件工程的方法,灵活应用C语言课程的相关知识,开发一个具有一定实际意义的小系统:公司员工作信息管理系统。该系统的主要任务是实现对一个员工的各类人... 一、项目的总体概况利用结构化软件工程的方法,灵活...

用C语言设计并实现一个员工信息管理系统
答:{cout << "单 位 姓 名 性别 出生年月 职 称 基本工资 津 贴 个 税 水电费 实发工资\n";for(int i = 0; i < 79; ++i) cout << "*"; cout << endl;}void RowShow(WAGE a[]...

员工信息管理系统,C语言做
答:员工信息管理系统,C语言做 公司员工基本信息管理程序设计设计结构体数组,结构体中包含数据为:员工编号、姓名、性别、年龄、职务、部门、住址、设计各个函数,分别实现以下功能:(1)输入数据(2)显示所有员... 公司员工基本信息管理程序设计...

请教高手发我一个C语言程序设计课程设计 内容是 职工工资管理的 源程序...
答:cout<<"简易职工薪水管理程序 by 做他\n";// delete this line cout<<"版权没有 请随意复制或修改任何代码\n";//delete this line cout<<"请选择操作:1.录入 2.删除 3.修改 4.查询 5.显示所有员工 6.退出 :...

C/C++程序设计课程设计员工管理系统
答:课程设计题目:员工信息管理程序的开发 ⑴先声明员工Person结构,该结构中包含编号、姓名、出生年月、性别、联系电话、基本工资等成员变量,并定义Person结构数组; ⑵编写主函数,要求提供一界面,允许工作人员输入、修改和删除员工信息; ⑶将员...