C语言职工信息管理系统课程设计
更新时间:2024-04-27 21:50:01 阅读量: 综合文库 文档下载
湖北医药学院
信息管理与信息系统专业
《C程序设计》课程设计报告
题目: 班级: 学号: 姓名: 成绩:
职工信息管理系统
前言
在理论学习和基础实验的基础上,开发规模较大的程序,掌握应用计算机解决实际问题的基本方法,熟悉C程序开发的全过程。本任务是根据给定的数据和程序,应用单向链表处理一个小班学生的信息。通过整个程序开发的过程,提高综合应用C语言的能力、编程和调试能力,为学习软件专业课程创建较扎实的理论基础和实践基础。
一、系统功能和原始数据
1、系统功能
A. 建立学生信息表,录入10名学生的信息,并将结果保存在文件student1.txt中 B. 显示所有学生信息
C. 给定某学生的学号,删除该学生的信息
D. 添加一名学生的信息,将其插入到相应位置,使整个学生信息表按学号有序 E. 给定某学生的学号,修改该学生的信息 F. 按姓名查询学生信息
G. 按入学成绩对学生的信息进行排序
H. 计算并显示学生入学平均成绩,显示入学成绩最高分和最低分的学生信息 I. 将最后的学生信息存入文件student2.txt中 说明:
1. 学生信息数据项:学号、姓名、性别、年龄、院系、入学成绩 2. 录入学生信息时按学号由小到大的顺序录入 3. 系统功能使用结构数组和单向链表两种方法实现
工资管理系统输入记录模块查询记录模块更新记录模块统计记录模块输出记录模块文件读入键盘出入显示所有信息按姓名查询修改记录删除记录插入记录排序模块统计员工数和工资输出到文件输出到屏幕
工资管理系统功能模块图
开始 以可读写的方式打开一个数据文件 将此文件的内容读出,并存入一个新的结构体类型的数组中 调用menu()菜单函数 进入while(1)主循环 输入0~9中的一数值,选择相应操作 输入是否为0 判断键值,调用相应函数,完成相应功能 是否已对修改进行了存盘 调用save()函数,进行写数据文件操作 结束
2.原始数据
工号 100 101 102 103 104 姓名 米砂 米砾 罗斯 张满 林磊 女 男 女 男 男 性别 部门 公管学院 公管学院 公管学院 公管学院 公管学院 职位 学生 学生 学生 学生 学生 500 500 500 500 500 工资 105 106 107 108 109 胡水 王源 李君 张清 万羽 女 女 男 女 女 公管学院 公管学院 公管学院 公管学院 公管学院 学生 学生 学生 学生 学生 500 500 500 500 500 3.数据结构
本程序定义了结构体emplyee,用于存放职工的基本信息和工资信息。 typedef struct employee /*标记为employee*/ {
char num[10]; char name[15]; char sex; char char int gz; }ZGGZ
其各字段的值的含义如下。 num[10]: 保存职工编号 name [15]:保存职工姓名 sex:保存职工性别 :保存职工部门 :保存职工职称 gz :保存职工工资
二、程序设计
1、建立职工信息结构体
(1)函数原型、功能和形参说明 1)、printheader()
函数原型:void printheader()
printheader()函数用于在以表格形式显示记录时,打印输出表头信息。 2)、printdata()
函数原型:void printdata(ZGGZ pp)
printdata()函数用于以表格显示的方式,打印输出单个数组元素pp中的记录信息。 3)、Disp()
函数原型:void Disp(ZGGZ tp[],int n)
Disp()函数用于显示tp数组中存储的n条记录,内容为emplyee结构中定义的内容。 4)、numberinput()
函数原型:float numberinput(char *notice)
numberinput()函数用于输入数值型数据,notice用于保存printf()中输出的提示信息。该函数返回用户输入的浮点类型数据值。 5)、Stringinput()
函数原型:void Stringinput(char *t,int lens,char *notice)
Stringinput()函数用于输入字符串,并进行字符串长度验证(长度 函数原型:int Locate(ZGGZ tp[],int n,char findmess[],char nameornum[]) Locate()函数用于定位数组中符合要求的元素,并返回该数组元素的下标值。参数findmess[]保存要查找的具体内容,nameornum[]保存按什么字段在数组tp中查找。 7)、Add() 函数原型:int Add(ZGGZ tp[],int n) Add()函数用于在数组tp中增加工资记录元素,并返回数组中的当前记录数。 8)、Qur() 函数原型:void Qur(ZGGZ tp[],int n) Qur()函数用于在数组tp中按职工编号或姓名查找满足条件的记录,并显示出来。 9)、Del() 函数原型:int Del(ZGGZ tp[],int n) Del()函数用于先在数组tp中找到满足条件的记录,然后删除该记录。 10)、Modify() 函数原型:void Modify(ZGGZ tp[],int n) Modify()函数用于在数组tp中修改记录元素。 11)、Insert() 函数原型:int Insert(ZGGZ tp[],int n) Insert()函数用于在数组tp中插入记录,并返回数组中的当前记录数。 12)、Tongji() 函数原型:void Tongji(ZGGZ tp[],int n) Tongji()函数用于在数组tp中完成记录的统计工作,统计该公司职工工资的整体分布情况。 13)、Sort() 函数原型:void Sort(ZGGZ tp[],int n) Sort()函数用于在数组tp中完成利用冒泡排序算法实现数组的按实发工资字段的降序排序。 14)、save() 函数原型:void Save(ZGGZ tp[],int n) Save()函数用于将保存职工工资的数组tp中的n个元素写入磁盘的数据文件中。 15)、主函数main() Main()是整个工资管理系统控制部分 (2)、程序清单 #inclu #include struct employee { char num[10]; char name[15]; char sex[5]; char department[30]; char function[32]; int wage; }; int read_file(struct employee st[]); void menu(); void write_file(struct employee st[]); void add(); void select(); //查看职工所有信息 void name_query(); //按姓名查询 void num_del(); //按工号删除 void tongji(); //统计 void sort(); //排序 void num_modify(); //按工号修改职工信息 void save(); //保存信息 void fh(); //返回主菜单 struct employee st[300]; //这个数组用来保存所有的职工信息 和文件里面的一致 int Number=0; //记录总的职工人数 也就是数组/文件里面的职工人数 void main() { int choose=0; FILE *fp=NULL; char yesorno; if((fp=fopen(\ { printf(\提示:文件不存在,是否要创建一个?(y/n)\\n\ scanf(\ if(yesorno=='y'||yesorno=='Y') { //这里仅为了建立文件 fp=fopen(\ fclose(fp); //关闭fp所指的文件,释放文件缓冲区 } else exit(0); } else { Number=read_file(st); //要是文件已经有数据 将数据初始化到数组中 } system(\ while(true) { menu(); printf(\请选择:\scanf(\system(\switch(choose) { case 0: exit(0); //退出 break; case 1: add(); fh();//增加职工信息 break; case 2: select(); fh();//查看职工信息 break; case 3: name_query(); fh();// 查找 break; case 4: num_del(); fh();//删除 break; case 5: tongji(); fh();//统计 break; case 6: sort(); fh();//排序 break; case 7: num_modify(); fh();//修改后返回 break; case 8: save(); fh();//保存 break; default: break; } fflush(stdin); getchar(); system(\} } void save() { printf(\程序在运行时已自动保存.....\\n\} void fh() { printf(\按Enter键返回主菜单\\n\} void num_modify() //修改职工信息 { FILE *fp=NULL; char xh[60]; int i=0; int changeIndex=0; //changeIndex 改变标记 int index=0; printf(\请输入要修改的职工编号:\scanf(\ for (i=0;i if (strcmp(xh,st[i].num)==0) //比较输入工号和数组中已有工号 { changeIndex=i; //保存要修改的人的下标 break; } } printf(\工号\\t姓名\\t性别\\t部门\\t职能\\t工资\\n\ printf(\x].sex,st[changeIndex].department,st[changeIndex].function,st[changeIndex].wage); printf(\请重新输入该职工信息\printf(\工号:\ scanf(\printf(\姓名:\ scanf(\printf(\性别:\ scanf(\ printf(\部门:\ scanf(\printf(\职能:\ scanf(\printf(\工资:\ scanf(\ //信息修改后重新更新文件里面的数据 以保持数据一致性 fp=fopen(\for (i=0;i fwrite(&st[i],sizeof(struct student),1,fp); 入到fp所指向的文件中 } fclose(fp); printf(\修改成功\\n\} void sort()//排序 { struct student t; int wantNUmber=0; int i=0; int j=0; int k=0; for(i=0;i for(j=i+1;j { if(st[j].wage>st[k].wage) k=j; } if(k!=i) { t=st[i]; st[i]=st[k]; st[k]=t; } } printf(\你想输出前几名的成绩:\scanf(\if (wantNUmber>Number) //把ptr所指向n*size个字节输 { wantNUmber=Number; } printf(\工号\\t姓名\\t性别\\t部门\\t职能\\t工资\\n\for(i=0;i { printf(\ge); } } void tongji()//统计 { int i,m,k,max,min; double sum=0.0; for(i=0;i sum+=st[i].wage; } printf(\总工资为:%f\\n\ printf(\平均工资为:%f\\n\i=0;m=0;max=0; max=st[m].wage; for(i=1;i if (st[i].wage>max) m=i; max=st[m].wage; } printf(\最高工资为:%d\\n\ printf(\st[m].wage); i=0;k=0;min=0; min=st[0].wage; for(i=1;i { if (st[i].wage min=st[k].wage; } printf(\最底工资分:%d\\n\ printf(\.wage); } 删除职工信息 平均工资 修改职工信息 保存数据 2)建立职工信息单链表 (1)、函数原型、功能和形参说明 (2)、程序清单 #include \ #include \ #include \ int saveflag=0; /*是否需要存盘的标志变量*/ struct employee { char name[15]; /* 职工姓名 */ char num[10];/* 职工工号 */ char xb[4]; /* 职工性别 */ char bm[10]; /* 部门 */ char zc[10]; /* 工号职称 */ float gz; /* 工资 */ int mingci;/* 名次*/ }; typedef struct node { struct employee data; struct node *next; }Node,*Link; //Link l (注意是:字母l不是数字1) void add(Link l); void disp(Link l); //查看职工所有信息 void del(Link l); //删除功能 Node* Locate(Link l,char findmess[],char nameornum[]); void Qur(Link l); //查询功能 void Tongji(Link l); //统计 void Sort(Link l); //排序 void Modify(Link l); //修改功能 void Save(Link l); //保存功能 void printe(Node *p); //本函数用于打印链表中某个节点的数据内容 */ //以下4个函数用于输出中文标题 void printstart(); void Wrong(); void Nofind(); void printc(); void menu() { printf(\printf(\ *\\n\printf(\ 职工信息管理系统_单链表实现 *\\n\ printf(\ *\\n\printf(\ [1] 增加职工信息 [2] 删除职工信息 *\\n\printf(\ [3] 查询职工信息 [4] 修改职工信息 *\\n\ printf(\ [5] 插入职工信息 [6] 统计职工信息 *\\n\printf(\ [7] 排序 [8] 保存职工信息 *\\n\printf(\ [9] 显示数据 [0] 退出系统 *\\n\printf(\ *\\n\ printf(\} //void menu菜单结束 void Disp(Link l) //显示单链表l中存储的职工记录,内容为employee结构中定义的内容 { int count=0; Node *p; p=l->next; // l存储的是单链表中头结点的指针,该头结点没有存储职工学生信息,指针域指向的后继结点才有职工信息 if(!p) /*p==NULL,NUll在stdlib中定义为0*/ { printf(\提示:没有职工记录可以显示!\\n\ return; } printf(\显示结果\\n\printstart(); //打印横线 printc(); //打印职工信息 printf(\ while(p) //逐条输出链表中存储的职工信息 { printe(p); p=p->next; } printstart(); printf(\ } //void Disp结束 void printstart() { printf(\} void Wrong() { printf(\提示:输入错误!\\n\} void Nofind() { printf(\提示:没有找到该职工!\\n\} void printc() /* 本函数用于输出中文 */ { printf(\工号\\t 姓名 性别 部门 职称 工资\\n\} void printe(Node *p)/* 本函数用于打印链表中某个节点的数据内容 */ { printf(\ p->data.num,p->data.name,p->data.xb,p->data.bm,p->data.zc,p->data.gz); } //Locate(l,findmess,\ /* 该函数用于定位连表中符合要求的结点,并返回该指针 */ Node* Locate(Link l,char findmess[],char nameornum[]) { Node *r; if(strcmp(nameornum,\按工号查询 */ { r=l->next; while(r!=NULL) { if(strcmp(r->data.num,findmess)==0) /*若找到findmess值的工号*/ return r; r=r->next; } } else if(strcmp(nameornum,\按姓名查询 */ { r=l->next; while(r!=NULL) { if(strcmp(r->data.name,findmess)==0) /*若找到findmess值的职工姓名*/ return r; r=r->next; } } return 0; /*若未找到,返回一个空指针*/ } //add()函数中,无节点时,r指向list头,有节点时,r指向末尾节点 void Add(Link l) /* 增加职工 */ { Node *p,*r,*s; /*实现添加操作的临时的结构体指针变量*/ char num[10]; int flag=0; r=l; s=l->next; //链表没有节点时,s=null;/链表有节点时,指向第一个职工节点 while(r->next!=NULL) //如果存在后继结点时,r指针后移一个 r=r->next; /*将指针移至于链表最末尾,准备添加记录*/ while(1) { printf(\请你输入工号(以'0'返回上一级菜单:)\scanf(\ if(strcmp(num,\ //输入'0',跳出while(1),即跳出add()函数 break; s=l->next; //作用? 每次从第一个节点开始找,看num是否重复。 while(s) //工号重复时,返回主菜单 { if(strcmp(s->data.num,num)==0) { printf(\提示:工号为'%s'的职工已经存在,若要修改请你选择'4 修改'!\\n\flag=1; //break; return ; } s=s->next; } //while(s) p=(Node *)malloc(sizeof(Node)); //生成没赋值的新节点 p strcpy(p->data.num,num); printf(\请你输入姓名:\scanf(\getchar(); printf(\请你输入性别:\scanf(\getchar(); printf(\请你输入部门:\ scanf(\getchar(); printf(\请你输入职称:\scanf(\getchar(); printf(\请你输工资:\scanf(\getchar(); /* 信息输入已经完成 */ p->next=NULL; /*表明这是链表的尾部结点*/ r->next=p; /*将新建的结点加入链表尾部中*/ r=p; saveflag=1; } //while(1) } void Del(Link l) /* 删除 */ { int sel; Node *p,*r; /*实现删除操作的临时的结构体指针变量*/ char findmess[20]; if(!l->next) //当list无后继结点时,提示和结束返回del() { printf(\提示:没有记录可以删除!\\n\return; } printf(\按工号删除\\n=====>2按姓名删除\\n\scanf(\ if(sel==1) //按工号删除 { printf(\请你输入要删除的工号:\scanf(\ p=Locate(l,findmess,\ if(p) { r=l; //void Add增加结束 while(r->next!=p) r=r->next; //从第一个结点找起,直到发现r->next=p, 是待删除结点,跳出循环 r->next=p->next; //r r->next(p) p->next free(p); printf(\提示:该职工已经成功删除!\\n\saveflag=1; } else Nofind(); //显示一句话 } //if(sel==1) else if(sel==2) //按姓名删除 { printf(\请你输入要删除的姓名:\scanf(\ p=Locate(l,findmess,\if(p) { r=l; while(r->next!=p) r=r->next; r->next=p->next; //r r->next(p) free(p); printf(\提示:该职工已经成功删除!\\n\saveflag=1; } else Nofind(); } //if(sel==2) else Wrong(); //显示输入错误的话 } //void Del删除结束 void Qur(Link l) //查询功能 { int sel; //*1:按工号查询,2:按姓名查询,其它:返回主界面(菜单)*/ char findmess[20]; Node *p; //实现查询操作的临时的结构体指针变量 if(!l->next) { p->next printf(\提示:没有资料可以查询!\\n\return; } printf(\按工号查找\\n=====>2按姓名查找\\n\scanf(\ if(sel==1)/* 工号 */ { printf(\请你输入要查找的工号:\scanf(\ p=Locate(l,findmess,\ if(p) { printf(\查找结果\\n\printstart(); //打印横线 printc(); //打印信息 printc(p); //打印p结点各个数据成员的值 printstart(); //打印横线 } else Nofind(); } //if(sel==1) else if(sel==2) /* 姓名 */ { printf(\请你输入要查找的姓名:\scanf(\ p=Locate(l,findmess,\if(p) { printf(\查找结果\\n\printstart(); printc(); printc(p); printstart(); } else Nofind(); } else Wrong(); } //void Qur查询结束 void Modify(Link l) //修改功能 { Node *p; char findmess[20]; if(!l->next) { printf(\提示:没有资料可以修改!\\n\return; } printf(\请你输入要修改的职工工号:\scanf(\ p=Locate(l,findmess,\ if(p) { printf(\请你输入新工号(原来是%s):\scanf(\ printf(\请你输入新姓名(原来是%s):\scanf(\getchar(); printf(\请你输入新性别(原来是%s):\scanf(\getchar(); printf(\请你输入新的部门(原来是%s):\scanf(\ printf(\请你输入新的职称(原来是%s):\scanf(\getchar(); printf(\请你输入新的工资(原来是%d):\scanf(\ printf(\提示:资料修改成功!\\n\ //shoudsave=1; } else Nofind(); //if(p)结束 } //void Modify(Link l) //修改功能结束 //插入记录:按工号查询到要插入的节点的位置,然后在该工号之后插入一个新节点。 void Insert(Link l) { Node *s,*r,*p; /*p指向插入位置,p指新插入记录节点*/ char ch,new_num[10],old_num[10]; //old_num[]保存插入点位置之前的工号,new_num[]保存输入的新记录的工号 int flag=0; s=l->next; system(\Disp(l); while(1) { //stringinput(s,10,\ after the Number:\ printf(\请你输入已存在的工号(以'0'返回上一级菜单:)\scanf(\ if(strcmp(old_num,\ //输入'0',跳出while(1),即跳出Insert()函数 return; s=l->next; //作用? 每次从第一个节点开始找 flag=0; while(s) /*查询该工号是否存在,flag=1表示该工号存在*/ { if(strcmp(s->data.num,old_num)==0) { flag=1; break; } s=s->next; } if(flag==1) break; /*若工号存在,则进行插入之前的新记录的输入操作*/ else { getchar(); printf(\scanf(\if(ch=='y'||ch=='Y') {continue;} else {return;} //回主菜单 } }//while(1) /*以下新记录的插入新节点,工号不能跟已存在的工号相同,操作与Add()相同*/ printf(\请你输入待插入的工号(以'0'返回上一级菜单:)\scanf(\ if(strcmp(new_num,\ //输入'0',跳出while(1),即跳出add()函数 return; s=l->next; //作用? 每次从第一个节点开始找,看num是否重复。 while(s) //工号重复时,返回主菜单 { if(strcmp(s->data.num,new_num)==0) { printf(\提示:工号为'%s'的已经职工存在'!\\n\flag=1; return ; } s=s->next; } //while(s) p=(Node *)malloc(sizeof(Node)); if(!p) { printf(\如没有申请到,打印提示信息*/ return ; /*返回主界面*/ } strcpy(p->data.num,new_num); printf(\请你输入姓名:\scanf(\getchar(); printf(\请你输入性别:\scanf(\getchar(); printf(\请你输入部门:\scanf(\getchar(); printf(\请你输入职称:\scanf(\getchar(); printf(\请你输入工资:\scanf(\getchar(); // 信息输入已经完成 p->next=NULL; /*表明这是链表的尾部结点*/ saveflag=1; /*在main()有对该全局变量的判断,若为1,则进行存盘操作*/ /*将指针赋值给r,因为l中的头节点的下一个节点才实际保存着学生的记录*/ r=l->next; while(1) { if(strcmp(r->data.num,old_num)==0) /*在链表中插入一个节点*/ { p->next=r->next; r->next=p; break; } r=r->next; }// while(1) , r作为查询指针,依次从第一个节点找起,找到后 跳出 while(1)循环 Disp(l); printf(\// getchar(); } /*统计该公司工资最高和最低的人数及平均工资*/ void Tongji(Link l) { Node *pm,*pn; /*用于指向工资最高和最低节点*/ Node *r=l->next; int countm=0,countn=0; /*保存工资最高,最低*/ if(!r) { system(\ printf(\getchar(); return ; } system(\Disp(l); pm=pn=r; while(r) { if(r->data.gz<1900) countm++; if(r->data.gz<4000) countn++; if(r->data.gz>=pm->data.gz) pm=r; if(r->data.gz>=pn->data.gz) pn=r; r=r->next; } printf(\printf(\printf(\ printf(\ printf(\printf(\ gz:%d\\n\printf(\getchar(); } /*利用插入排序法实现单链表的按总分字段的降序排序,从高到低*/ void Sort(Link l) { Link ll; Node *p,*rr,*s; int i=0; if(l->next==NULL) { system(\ printf(\getchar(); return ; } ll=(Node*)malloc(sizeof(Node)); /*用于创建新的节点*/ if(!ll) { printf(\如没有申请到,打印提示信息*/ return ; /*返回主界面*/ } ll->next=NULL; system(\ Disp(l); /*显示排序前的所有职工记录*/ p=l->next; while(p) /*p!=NULL*/ { s=(Node*)malloc(sizeof(Node)); /*新建节点用于保存从原链表中取出的节点信息*/ if(!s) /*s==NULL*/ { printf(\如没有申请到,打印提示信息*/ return ; /*返回主界面*/ } s->data=p->data; /*填数据域*/ s->next=NULL; /*指针域为空*/ rr=ll; /*rr链表于存储插入单个节点后保持排序的链表,ll是这个链表的头指针,每次从头开始查找插入位置*/ while(rr->next!=NULL && rr->next->data.gz>=p->data.gz) {rr=rr->next;} /*指针移至工资比p所指的节点的工资低的节点位置*/ if(rr->next==NULL)/*若新链表ll中的所有节点的工资值都比p->data.gz大时,就将p所指节点加入链表尾部*/ rr->next=s; else /*否则将该节点插入至第一个工资字段比它低的节点的前面*/ { s->next=rr->next; rr->next=s; } p=p->next; /*原链表中的指针下移一个节点*/ } l->next=ll->next; /*ll中存储是的已排序的链表的头指针*/ p=l->next; /*已排好序的头指针赋给p,准备填写名次*/ while(p!=NULL) /*当p不为空时,进行下列操作*/ { i++; /*结点序号*/ p->data.mingci=i; /*将名次赋值*/ p=p->next; /*指针后移*/ } Disp(l); saveflag=1; printf(\ =====>sort complete!\\n\ } void Save(Link l) { FILE* fp; Node *p; //实现保存操作的临时的结构体指针变量 int flag=1,count=0; fp=fopen(\if(fp==NULL) { printf(\提示:重新打开文件时发生错误!\\n\return; } p=l->next; //p指向第一个记录结点 while(p) { if(fwrite(p,sizeof(Node),1,fp)==1) //将第一个记录结点值写入文件 { p=p->next; //依次写入第二个结点的值, count++; //文件的记录数+1 } else { flag=0; break; } } //while(p) if(count>0) { printf(\提示:文件保存成功.(有%d条记录已经保存.)\\n\saveflag=0; } else { system(\ printf(\保存文件失败,'0'条记录被保存!\\n\} fclose(fp); } // void Save结束 void main() { Link list; /*定义链表*/ // struct node *list; FILE *fp; /* 文件指针 */ int choose; /*保存选择结果变量*/ char ch; /*保存(y,Y,n,N)*/ int count=0; /*保存文件中的记录条数(或结点个数)*/ struct node *p,*r; /*定义记录指针变量*/ printf(\职工信息管理系统\\n\\t\\t\\t\\t\\n\ list=(struct node*)malloc(sizeof(struct node)); if(!list) { printf(\如没有申请到,打印提示信息*/ return ; /*返回主界面*/ } list->next=NULL; r=list; fp=fopen(\if(fp==NULL) { printf(\提示:文件还不存在,是否创建?(y/n)\\n\scanf(\if(ch=='y'||ch=='Y') fp=fopen(\else exit(0); } // if(fp==NULL) printf(\提示:文件已经打开,正在导入记录......\\n\ while(!feof(fp)) //没有到文件尾时,循环 { p=(struct node*)malloc(sizeof(struct node)); if(!p) { printf(\ /*没有申请成功*/ exit(0); /*退出*/ } if(fread(p,sizeof(struct node),1,fp)) /* 读文件的已有内容放入结点中 */ { p->next=NULL; r->next=p; r=p; /* 将该结点挂入链表中, r指向最后的节点 */ count++; } } //while(!feof(fp)) fclose(fp); /* 关闭文件 */ printf(\提示:记录导入完毕,共导入%d条记录.\\n\ while(1) { menu(); printf(\请选择:\scanf(\ if(choose==0) { if(saveflag==1) { getchar(); printf(\提示:资料已经改动,是否将改动保存到文件中(y/n)?\\n\scanf(\if(ch=='y'||ch=='Y') Save(list); } //if printf(\提示:你已经退出系统,再见!\\n\break; }//if switch(choose) { case 1:Add(list); break; /* 增加职工信息 */ case 2: Del(list); break;/* 删除职工信息 */ case 3: Qur(list); break;/* 查询职工信息*/ case 4: Modify(list); break;/* 修改查询职工信息*/ case 5: Insert(list); break;/* 插入职工信息 */ case 6: Tongji(list); break;/*统计职工记录*/ case 7: Sort(list); break;/*排序职工记录*/ case 8: Save(list); break;/* 保存职工信息 */ case 9: system(\Disp(list); break; /*显示学生记录*/ default: Wrong(); getchar(); break; } //switch(choose) }//while(1) } //main() /* */ (3)、运行结果 主界面 增加职工信息 删除职工信息(按工号删除) 删除职工信息(按姓名删除) 修改职工信息 插入职工信息 统计职工信息 保存职工信息 三、小结 本章通过“工资管理系统”的设计思想及其编程实现,我学习了系统需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试等系统的完整设计过程。在详细设计过程中重点介绍了数据管理系统中各功能模块的设计原理和利用间链表存储结构实现数据管理系统的方法。提高了我使用面向过程的思想设计不同的管理系统的方法。
正在阅读:
C语言职工信息管理系统课程设计04-27
现代管理原理形成性考核册(答案)04-21
介绍自己名字的作文12篇03-31
习题库03-14
浅谈对预算会计制度改革的几点思考05-13
党课考试资料(党章知识测试题库大全)05-22
乳腺癌测试题01-26
2008-2009学年二学期机械设计期末考试试卷(B卷)09-23
2013年中考成语汇编06-08
如何构建和谐校园02-11
- 计算机试题
- 【2012天津卷高考满分作文】鱼心人不知
- 教育心理学历年真题及答案--浙江教师资格考试
- 20180327-第六届“中金所杯”全国大学生金融知识大赛参考题库
- 洪林兴达煤矿2018年度水情水害预测预报
- 基本要道讲义
- 机电设备安装试运行异常现象分析与对策
- 《有机化学》复习资料-李月明
- 非常可乐非常MC2--非常可乐广告策划提案 - 图文
- 2011中考数学真题解析4 - 科学记数法(含答案)
- 企业人力资源管理师三级07- 09年真题及答案
- 基于单片机的光控自动窗帘控制系统设计说明书1 - 图文
- 20160802神华九江输煤皮带机安装方案001
- (共53套)新人教版一生物必修2(全册)教案汇总 word打印版
- 2014行政管理学总复习
- 中国银监会关于加强地方政府融资平台贷款风险监管的指导意见
- 民宿酒店核心竞争与研究
- 游园活动谜语大全2012
- 河南省天一大联考2016届高三英语5月阶段性测试试题(六)(A卷)
- 小型超市管理系统毕业论文详细设计4
- 管理系统
- 职工
- 语言
- 课程
- 设计
- 信息
- 连锁经营复习资料(选择题)
- 中国蜂巢呢行业发展研究报告 - 图文
- 保温施工组织设计
- c语言程序设计,江宝钏著,实验九
- 教育学多项选择题
- 苏州供电公司工作票管理规定(2011)--文
- 201301批次网上考试工程造价案例 A 卷 96分
- 09年1月高等教育自学考试《新闻采访写作》试题
- 2014年天津电大地方政府学y过程性评测四
- LNG学习资料第一册 基础知识 - 图文
- 洛阳市城市环境卫生管理办法
- LWIP结构
- 100首好听的广告背景音乐
- 公司质量管理机构设立的红头文件
- 2017年移动机器人(AGV)研究分析及发展趋势预测(目录)
- 浙江省执法证考试模拟试卷3(含有答案)
- 暗挖隧道初支侵限处理方案改
- 计算机一级考试试题
- 北京财险市场调研分析报告
- 食堂员工预防食物中毒培训 总结