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结构数组; ⑵编写主函数,要求提供一界面,允许工作人员输入、修改和删除员工信息; ⑶将员...