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

合集下载

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

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

C语言课程设计职工信息管理系统标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]课程设计报告课程名称 C语言程序设计课题名称职工信息管理系统专业通信工程班级 1402班学号姓名熊舒炼指导教师罗雅博2015年 7月 3 日目录一、总体设计方案 (2)二、课程设计目的与要求 (3)设计目的 (3)设计要求 (3)三、使用说明及运用实例 (3)四、项目源程序代码 (8)五、设计心得与总结 (23)六、参考文献 (24)总体设计方案(一)、系统总体流程图(二)、为了方便使用,此系统结构均为全局类型定义struct employee单模块:显示职工管理系统的主菜单,供用户选择所需功能,通过自己定义的void menu()函数实现。

2.输入模块:输入职工的工号、姓名及其他的一些职工信息,通过自己定义的void input()函数实现。

3.保存模块:将内存中职工信息输出到磁盘文件中,通过自己定义的void save(int)函数实现。

4.浏览模块:浏览所有职工的信息,通过自己定义的void display()函数实现。

5.删除模块:删除需要删除的职工所有信息,通过自己定义的void del()函数实现。

6.查询模块:a.按职工号查询职工相关信息,通过自己定义的void search-num()函数实现。

b.按职工学历查询相关职工信息,通过自己定义的void search-xueli()函数实现。

c.按职工电话号码查询相关职工信息,通过自己定义的void search-tel()函数实现。

7.修改模块:可以修改需要修改的职工信息,通过自己定义的void modify()函数实现。

8.退出系统模块:推出职工信息管理系统,通过头文件中的中的exit(0)函数实现。

课程设计的目的与要求一、课程设计目的《C语言程序设计》是通信工程专业重要的基础课,通过本课程设计使学生进一步巩固课堂所学知识,全面熟悉、掌握C语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力。

C语言程序设计—职工信息管理系统设计

C语言程序设计—职工信息管理系统设计

南京工程学院程序设计课程设计报告职工信息管理系统设计专业学生姓名班级学号指导教师完成日期职工信息管理系统设计目录1课程设计目的 (1)2课程设计内容 (1)3设计流程图 (1)4源程序清单 (2)5小结 (27)程序设计课程设计报告(2011)职工信息管理系统的设计1课程设计目的1.加深对《C语言程序设计》课程知识的理解,掌握C语言应用程序的开发方法和步骤;2.进一步掌握和利用C语言进行程序设计的能力;3.进一步理解和运用结构化程序设计的思想和方法;4.初步掌握开发一个小型实用系统的基本方法;5.学会跳是一个较长程序的基本方法;6.学会利用流程图火N-S图表示算法;7.掌握书写长须设计开发文档的能力(书写课程设计报告)2 课程设计内容设计职工信息管理系统,要求职工心想包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

设计一职工信息管理系统,使之能提供以下功能:(6)系统以菜单方式工作(7)职工信息录入功能(职工信息用文件保存)--输入(8)职工信息浏览功能--输出(9)查询和排序功能(至少一种查询方式)--算法(10)按工资查询(11)按学历查询等(12)职工信息删除、修改功能(任选项)3设计流程图职工信息管理系统的设计程序设计课程设计报告(2011)(1)菜单函数void menu() /*菜单函数*/{printf(" ☆☆☆计算机科学与技术软件技术☆☆☆\n");printf("\n");printf(" ∮1010704422 杨婷婷∮\n");printf("\n");printf(" ******************职工信息管理****************\n");printf(" 1.录入职工信息");printf(" 2.浏览职工信息\n");printf(" 3.查询职工信息");printf(" 4.删除职工信息\n");printf(" 5.添加职工信息");printf(" 6.修改职工信息\n");printf(" 7.退出\n");printf(" ********************谢谢使用******************\n");printf("\n");printf("\n");}(2)录入职工信息void append(){if((fp=fopen("worker.xls","a"))==NULL){printf("\n不能打开该文件!");exit();}printf("\n请输入添加职工信息(姓名、职工号、性别、年龄、学历、职位、工资、电话、地址)\n"); scanf("%s%s%s%s%s%s%s%s%s",,one.num,one.sex,one.age,one.record,one.positio n,one.wanges,one.tel,one.addr);fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.num,one.sex,o ne.age,one.record,one.position,one.wanges,one.tel,one.addr);fclose(fp);}(3)查询职工信息数据查找共分为职工号、姓名等方式查找void search(){int l;printf("\t\t\t\t*姓名查找按:1*\n");printf("\t\t\t\t*学历查找按:2*\n");printf("\t\t\t\t*职工号查按:3*\n");scanf("%d",&l);if(l>0&&l<4){switch(l){职工信息管理系统的设计case 1:nameway();break;case 2:xueliway();break;case 3:numway();break;}printf("\n\n操作完毕!!!");}else printf("\t\t\t\t输入有误!!!");}void nameway(){int k=0;char nam[8];printf("\n请输入您要查找的职工姓名:");scanf("%s",nam);if((fp=fopen("worker.xls","rb"))==NULL){printf("\n不能打开文件!");exit();}while(!feof(fp)){fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",,one.num,one.sex,one.age,one.record,one.p osition,one.wanges,one.tel,one.addr);if(strcmp(nam,)==0){printf("\n\n已查到,记录为:");printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.num,one.sex,one .age,one.record,one.position,one.wanges,one.tel,one.addr);k=1;}}if(k==0)printf("\n\n对不起,查无此人!。

C语言课程设计报告:职工信息管理系统程序设计

C语言课程设计报告:职工信息管理系统程序设计

1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。

(2)职工信息录入功能(职工信息用文件保存)。

(3)职工浏览功能。

(4)职工信息查询功能,查询方式可按学历查询或者工号查询。

(5)职工信息的删除、修改功能(可选项)。

2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。

3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。

2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。

流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。

显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。

流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。

C语言课程设计---职工管理系统设计报告

C语言课程设计---职工管理系统设计报告

课程名称:程序设计语言课程设计设计题目:职工信息管理系统设计学院:应用技术学院专业:电子信息工程目录:摘要: (2)任务书: (2)总结与体会: (10)摘要:通过这次的短学期,在老师的辅导下,我完成了课程设计。

通过课程设计的完成对C和C++有更深的了解。

我做的课程设计题目是职工信息管理系统设计,我主要用到了结构体,结构体数组,指针,文件等等。

对函数的调用,和指针有了更深的理解。

但我做的这个课程设计,职工信息管理系统还存在不足,还希望老师的指点。

我的这个管理系统能处理的是对公司员工的信息存储,还有对职工的查找和排序,还有对职工的信息修改。

有不足的地方还请老师指点。

昆明理工大学课程设计任务书应用技术学院学院电子信息工程专业2009 级学生姓名(学号):袁瑞(200911513127)课程设计目的:通过设计一个较为简单的管理系统,进一步熟悉C++中类的概念、类的封装、继承的实现方式。

了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。

课程设计(论文)题目及具体内容:写程序题目:职工信息管理系统设计设计说明与要求:职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)职工信息录入功能(职工信息用文件保存)(3)职工信息浏览功能(4)查询和排序功能:按工资查询、按学历查询(5)职工信息删除、修改功能(4)各函数调用关系(流程图):(6)编码及调试:(注:此系统由三个人设计,本人只设计了其中的两个功能)功能二. 修改员工信息模块:此功能代码如下:modify() /*修改员工信息*/{struct people p;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n请记住要修改的员工号.任意键继续...\n");getch();puts("\n\n");}printf_one(i);}do{printf("\n\n请输入要修改信息的员工号! 员工号:");scanf("%s",p.num);for(i=0;i<n;i++)if(strcmp(p.num,people[i].num)==0){k=i;p=people[i];}if(k==-1)printf("\n\n不存在,请重试");}while(k==-1);printf_face();printf_one(k);w1=modify_data(k,n);if(w1==1){printf("\n操作成功^_^.\n\n继续修改吗?\n\n\t 1).是2).保存并返回\t[ ]\b\b"); scanf("%d",&w0);w2=1;}else{w0=0;if(w2==1)people[k]=p;}if(w0!=1&&w2==1)save(n);}while(w0==1);system("cls");menu();}调试截图:功能三. 员工信息查询模块:此功能代码如下:search() /*查找功能*/ {int i,n,k,w1=1,w2,w3,w4,m,a;struct people p;n=load();{printf("\n\n以哪种方式查找? \n\t1).学历2).员工号[ ]\b\b"); scanf("%d",&m);switch(m){case 1:do{ k=-1;printf("\n\n请输入学历! 学历:");scanf("%s",p.xueli);printf_face();for(i=0;i<n;i++)if(strcmp(p.xueli,people[i].xueli)==0){ k=i;printf_one(k);break;}if(k==-1){ printf("\n\n没有该学历的员工");printf("\n\n重新查找吗?\n\t1).是2).否,返回[ ]\b\b"); scanf("%d",&w1);if(w1==2)printf_back();}}while(k==-1&&w1==1);break;case 2:do{k=-1;printf("\n\n输入您要查询的员工号! 员工号:");scanf("%s",p.num);printf_face();for(i=0;i<n;i++)if(strcmp(p.num,people[i].num)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\n该员工号不存在");printf("\n\n是否重新选择?\n\t1).是2).否,离开[ ]\b\b"); scanf("%d",&w1);if(w1==2)printf_back();}while(k==-1&&w1==1);break;}w4=0;w3=0;if(k!=-1){printf("\n\n请选择操作\n\t 1).继续查找2).修改3).删除4).返回菜单[ ]\b\b"); scanf("%d",&w2);switch(w2){case 2:w3=modify_data(k,n);break;case 3:{printf("\n确定吗?\n\t 1).确定2).返回[ ]\b\b");scanf("%d",&w4);if(w4==1)for(a=k;a<n;a++){strcpy(people[a].num,people[a+1].num);strcpy(people[a].name,people[a+1].name);strcpy(people[a].sex,people[a+1].sex);strcpy(people[a].age,people[a+1].age); /*删除所选员工信息*/ strcpy(people[a].xueli,people[a+1].xueli);strcpy(people[a].gongzi,people[a+1].gongzi);strcpy(people[a].address,people[a+1].address);strcpy(people[a].telephone,people[a+1].telephone);}break;}}if(w3==1||w4==1){save(n);printf("\n\n操作成功.^_^.");printf("\n\n请选择操作\n\t 1).继续查找2).返回[ ]\b\b" );scanf("%d",&w2);}}}while(w2==1);system("cls");menu();}此功能截图:员工信息是用用文本文件存储的,资料分别存储在这些文本文件中,具体如下:总结与体会:通过本次的课程设计,对C和C++又更一步的了解,了解了C上的结构体,并对结构体有了熟练的掌握,并且熟悉了指针,通过指针可以使程序很好的实现,结构体类型是一个很好的类型,在现实生活中,应用结构体可以使问题很好的解决。

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

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

c语言职工信息管理系统课程设计一、课程目标知识目标:1. 理解C语言中数组、结构体和文件操作的基本概念;2. 学会使用C语言编写职工信息管理系统的基本功能,如增加、删除、修改和查询职工信息;3. 掌握利用C语言进行简单的数据处理和分析。

技能目标:1. 能够运用结构体数组管理职工信息;2. 独立编写代码实现职工信息的增加、删除、修改和查询功能;3. 学会使用文件操作将职工信息存储到文件中,并从文件中读取数据;4. 通过编程实践,培养解决问题的能力和逻辑思维能力。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养良好的编程习惯;2. 培养学生的团队协作意识和沟通能力,通过分组讨论和实践,共同完成职工信息管理系统的开发;3. 强化学生的责任感和使命感,认识到信息技术在现实生活中的应用和价值。

课程性质:本课程为实践性较强的课程,结合课本知识,让学生通过实际操作,掌握C语言编程的基本方法和技巧。

学生特点:学生已具备一定的C语言基础,熟悉基本语法和简单程序设计,但缺乏实际项目经验。

教学要求:注重理论与实践相结合,引导学生通过动手实践,提高编程能力和解决问题的能力。

将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 理论知识:- 复习C语言基础:数据类型、运算符、控制语句等;- 数组与字符串:数组的使用,字符串操作;- 结构体:定义结构体,结构体数组,结构体指针;- 文件操作:文件的打开、关闭、读写,以及文件存储职工信息。

2. 实践操作:- 设计职工信息结构体,创建职工信息数组;- 编写增加、删除、修改和查询职工信息的功能函数;- 利用文件操作存储和读取职工信息;- 集成职工信息管理系统,实现用户界面。

3. 教学大纲:- 第一周:复习C语言基础知识,讲解数组与字符串;- 第二周:学习结构体,设计职工信息结构体;- 第三周:文件操作学习,实现职工信息的存储与读取;- 第四周:编写职工信息管理系统的功能函数;- 第五周:集成系统,测试与优化。

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

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

C语言课程设计职工信息管理系统设计The latest revision on November 22, 20201.设计目的在今天这个高速信息时代,许多繁杂的办公事务都由计算机代劳,例如职工信息管理等重复劳动越来越需要计算机来处理。

本系统就是为提高企业管理职工信息的效率而设计的,现在职工信息管理系统发挥无可取代的作用。

职工信息管理系统是一个可以用来进行职工工号、姓名等自然信息以及各项工资构成进行录入、查询、修改、删除、增加和排序浏览等操作的应用软件。

2.设计的总体思想本系统是用Visual C进行设计与开发,总体思想是结构化、模块化的程序设计。

由于主要实现的是管理系统的增、删、改、查和排序等功能,因此应用到程序设计中的基本控制结构,如循环和选择,还使用到C语言最具特色的语言成分——指针,高效地使用数组、字符串和结构体,采用经典的排序方法——冒泡法进行排序,并且包含对文件的读、写等基本操作。

3.功能模块描述职工信息管理系统是为企业进行职工信息管理提供辅助而设计的,需要为用户提供一个简单的人机界面以便操作,各功能模块如下。

1)登录模块:根据输入的登录密码判断是否允许该用户使用本系统,输入密码正确才能进入管理界面,管理职工信息。

2)创建模块:当第一次使用本系统时,根据提示输入职工的工号、姓名、性别、年龄、学历、职位、工资、电话和住址,可一次性输入多条职工的信息记录。

浏览模块:可以浏览经输入、修改、删除、添加、排序、读取后的职工信息。

3)查询模块:分为根据工号、姓名、电话、工资查询的四个具体需求,分别提示管理员要查询的职工信息的的工号、姓名、电话或工资。

4)修改模块:分为根据工号、姓名修改的两个具体需求,分别提示管理员要修改的职工信息的工号和姓名,如果有对应职工的信息记录存在,则逐项列出对应职工的信息。

5)删除模块:分为根据工号、姓名删除的两个具体需求,分别提示管理员要删除的职工信息的工号和姓名,如果有则删除此职工对应的信息记录。

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

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

湖北医药学院信息管理与信息系统专业《C程序设计》课程设计报告题目:职工信息管理系统班级:学号:姓名:成绩:前言在理论学习和基础实验的基础上,开发规模较大的程序,掌握应用计算机解决实际问题的基本方法,熟悉C 程序开发的全过程。

本任务是根据给定的数据和程序,应用单向链表处理一个小班学生的信息。

通过整个程序开发的过程,提高综合应用C 语言的能力、编程和调试能力,为学习软件专业课程创建较扎实的理论基础和实践基础。

一、系统功能和原始数据1、系统功能A. 建立学生信息表,录入10名学生的信息,并将结果保存在文件student1.txt 中B. 显示所有学生信息C. 给定某学生的学号,删除该学生的信息D. 添加一名学生的信息,将其插入到相应位置,使整个学生信息表按学号有序E. 给定某学生的学号,修改该学生的信息F. 按姓名查询学生信息G. 按入学成绩对学生的信息进行排序H. 计算并显示学生入学平均成绩,显示入学成绩最高分和最低分的学生信息 I. 将最后的学生信息存入文件student2.txt 中 说明:1. 学生信息数据项:学号、姓名、性别、年龄、院系、入学成绩2. 录入学生信息时按学号由小到大的顺序录入3. 系统功能使用结构数组和单向链表两种方法实现输出记录模块工资管理系统输入记录模块查询记录模块更新记录模块统计记录模块键盘出入文件读入按姓名查询显示所有信息删除记录修改记录排序模块插入记录统计员工数和工资输出到屏幕输出到文件工资管理系统功能模块图2.原始数据3.数据结构本程序定义了结构体emplyee,用于存放职工的基本信息和工资信息。

typedef struct employee /*标记为employee*/{char num[10];char name[15];char sex;charcharint gz;}ZGGZ其各字段的值的含义如下。

num[10]: 保存职工编号name [15]:保存职工姓名sex:保存职工性别:保存职工部门:保存职工职称gz :保存职工工资二、程序设计1、建立职工信息结构体(1)函数原型、功能和形参说明1)、printheader()函数原型:void printheader()printheader()函数用于在以表格形式显示记录时,打印输出表头信息。

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

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

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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言课程设计职工信息管理系统设计集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]1.设计目的在今天这个高速信息时代,许多繁杂的办公事务都由计算机代劳,例如职工信息管理等重复劳动越来越需要计算机来处理。

本系统就是为提高企业管理职工信息的效率而设计的,现在职工信息管理系统发挥无可取代的作用。

职工信息管理系统是一个可以用来进行职工工号、姓名等自然信息以及各项工资构成进行录入、查询、修改、删除、增加和排序浏览等操作的应用软件。

2.设计的总体思想本系统是用Visual C进行设计与开发,总体思想是结构化、模块化的程序设计。

由于主要实现的是管理系统的增、删、改、查和排序等功能,因此应用到程序设计中的基本控制结构,如循环和选择,还使用到C语言最具特色的语言成分——指针,高效地使用数组、字符串和结构体,采用经典的排序方法——冒泡法进行排序,并且包含对文件的读、写等基本操作。

3.功能模块描述职工信息管理系统是为企业进行职工信息管理提供辅助而设计的,需要为用户提供一个简单的人机界面以便操作,各功能模块如下。

1)登录模块:根据输入的登录密码判断是否允许该用户使用本系统,输入密码正确才能进入管理界面,管理职工信息。

2)创建模块:当第一次使用本系统时,根据提示输入职工的工号、姓名、性别、年龄、学历、职位、工资、电话和住址,可一次性输入多条职工的信息记录。

浏览模块:可以浏览经输入、修改、删除、添加、排序、读取后的职工信息。

3)查询模块:分为根据工号、姓名、电话、工资查询的四个具体需求,分别提示管理员要查询的职工信息的的工号、姓名、电话或工资。

4)修改模块:分为根据工号、姓名修改的两个具体需求,分别提示管理员要修改的职工信息的工号和姓名,如果有对应职工的信息记录存在,则逐项列出对应职工的信息。

5)删除模块:分为根据工号、姓名删除的两个具体需求,分别提示管理员要删除的职工信息的工号和姓名,如果有则删除此职工对应的信息记录。

6)添加模块:可在原有职工信息记录的基础上增加新的职工信息记录,并保存至磁盘中。

7)排序模块:分为根据姓名、年龄、工资排序的三个具体需求,分别提示管理员选择排序的方式。

8)保存模块:将2)3)4)5)6)7)8)模块中改动的数据保存至文件中,以便进行管理、查找和备份。

9)读取模块:将文件中的数据读取至内存中。

4.概要设计系统模块结构图根据模块功能描述,职工信息系统可以分为11个模块,系统模块结构如图1所示。

5.详细设计数据结构设计本程序定义结构体staffinfo,用于存放职工的相关信息。

定义的结构体如下(每个变量后面/* */中的内容为各个变量的含义):struct staffinfo{char num[10]; /*工号*/char name[9]; /*姓名*/char sex[3]; /*性别*/char age[3]; /*年龄*/char edu[5]; /*学历*/char role[5]; /*职位*/char salary[6]; /*工资*/char tel[16]; /*电话*/char addr[30]; /*住址*/}sta[N];由于工号、姓名、电话、住址等信息是用来描述职工这个有机整体,为了表示这些字段不是孤立的,而是共同描述一个完整的事物,因此用结构体来实现。

各函数说明1)void gotoxy(int x,int y)功能:用于在屏幕上定位,其中整型数x代表列数,整型数y代表行数,其中0≤x≤80,0≤y,(0,0)代表左上角。

2)void showtable1()void showtable2()功能:分别打印表头与表尾。

3)void enter()功能:进入系统登录界面,验证管理员输入的密码。

输入:登录密码。

处理:①接收管理员输入的密码,存放到相应变量中进行判断。

②判断密码是否正确,如果相符,则进入主菜单。

③如果不相符,则提示用户重新输入。

4)int find(char str[30],int t)功能:查找指定记录,str[30]表示需管理员输入的职工的某一项信息,t表示通过哪一项来查找,例如通过工号、姓名来查找。

若找到与输入的信息相同的记录,则返回找到的记录号,若找不到就返回-1。

输入:职工信息的某一项和想查找的途径。

处理:①接收管理员输入的职工信息与查找方式,并存入相应的变量中。

②将内存中的数据与输入信息逐条比对,直到找到相同的记录,返回找到的记录号。

③若没找到该职工的记录,就返回-1。

5)void creat()功能:创建职工信息。

将管理员输入的若干条信息记录存入内存中。

输入:①需创建的信息记录条数。

②若干条职工信息记录(工号、姓名、职位、电话等信息)。

处理:①提示管理员逐条输入职工信息。

②获取管理员输入的信息,存入内存中。

③提示管理员录入成功。

6)void display()功能:浏览经过改动的信息记录,即打印出内存中的数据。

7)void search()功能:查询所需职工信息记录。

四种方式查询:工号、姓名、电话和工资。

根据管理员输入的职工信息和查找方式,按不同方式查找记录,列表显示查找到的记录内容。

输入:①想要查找的方式。

②要查询的职工的某一项信息。

处理:①提示管理员要查询的方式和要查询职工的对应信息。

②循环品牌查找对应记录。

③如果找找,则列表显示结果。

8)void modify()功能:修改原有的职工信息记录。

两种查找匹配记录的方式:工号和姓名。

根据管理员输入的查找方式和职工信息查找是否存在匹配记录,若存在,则将此职工的信息改为管理员输入的内容。

输入:①想要查找匹配记录的方式。

②要修改的职工的某一项信息。

③确认修改的选项字母。

④所要修改记录的内容值(工号、姓名等)。

处理:①接收管理员输入的查找匹配记录的方式和要修改职工的某一项信息。

②判断是否有匹配职工记录,若有,则列表显示该记录并提示管理员是否确认修改。

③提示管理员输入该职工方的各项信息。

④提示管理员是否修改成功。

9)void delet()功能:删除指定的职工信息记录。

两种查找匹配记录的方式:工号和姓名。

根据管理员输入的查找方式和职工信息查找匹配记录,若找到,则列表显示,经提示后删除该条记录。

输入:①想要查找匹配记录的方式。

②要删除的职工的某一项信息。

③确认删除的选项字母。

处理:①接收管理员输入的查找匹配记录的方式和要修改职工的某一项信息。

②判断是否有匹配职工记录,若有,则列表显示该记录并提示管理员确认删除。

③提示管理员是否删除成功。

10)void add()功能:增加新的职工信息记录。

判断所输入的工号是否已存在,若不存在,则将管理员输入的若干条信息记录存入内存中。

输入:①想要添加职工的工号。

②新的职工信息记录(姓名、学历等)。

处理:①提示管理员输入新职工的工号。

②判断职工号是否存在,若不存在,则提示管理员逐条输入职工信息。

③获取管理员输入的信息,存入内存中。

④提示管理员添加成功。

11)void order()功能:给职工信息记录排序(升序)。

三种排序方式:姓名、年龄和工资。

根据管理员输入的排序方式排序,列表显示排序结果。

输入:想要的排序方式。

处理:①提示管理员输入排序方式。

②按照指定方式排序。

③列表显示排序结果。

12)void save()功能:保存职工信息记录及记录条数至文件中。

输入:确认保存的选项字母。

处理:①提示管理员确认保存。

②若确认保存,则将内存中的数据保存至指定文件中。

③提示管理员保存成功。

13)void load()功能:从文件中读取职工信息记录及记录条数。

输入:确认读取的选项字母。

处理:①提示管理员确认读取。

②将文件中的数据读取至内存中。

③提示管理员读取成功。

14)void quit()功能:确认保存过数据后,安全退出系统。

输入:①确认保存的选项字母。

②确认退出系统的选项字母。

处理:①提示管理员确认保存。

②若确认保存,则将内存中的数据保存至指定文件中。

③提示管理员是否退出系统,若是则退出。

15)void main()功能:根据主菜单上的各项指令,调用1)至14)的各个函数。

系统控制图如图1所示。

6.程序分析程序预处理包括加载头文件,定义结构体,宏定义,全局变量,并对他们进行初始化。

#include <> /*输入/输出函数*/#include <> /*其他说明*/#include <> /*字符串函数*/#include <> /*系统操作函数*/#include <> /*屏幕操作函数*/#define N 20 /*系统记录的职工数,可根据不同企业的需要更改*/struct staffinfo{char num[10]; /*工号*/char name[9];char sex[3];char age[3];char edu[5]; /*学历*/char role[5]; /*职位*/char salary[6];char tel[16]; /*电话*/char addr[30]; /*住址*/}sta[N];int n=0; /*实际录入的职工信息记录总条数*/主函数void main()主要实现对整个程序的运行控制。

详细分析可参考图3。

/*********************************************主函数*********************************************/void main(){void gotoxy(int x,int y); /*光标定位*/void showtable1(); /*打印表头*/void showtable2();void enter();int find(char str[30],int t);void creat(); /*录入职工信息*/void display(); /*浏览职工信息*/void search();void modify();void delet();void add();void order();void save(); /void load(); /*从文件读取职工信息*/ void quit(); /*退出系统*/system("color 3e");enter();while (1){int choice;system("cls");/*清屏*/printf("职工信息管理系统");printf("==============主菜单==============\n");printf("************************************************\n");printf(" (( \002 1: 录入职工信息 ))\n");printf(" (( \002 2: 浏览职工信息 ))\n");printf(" (( \002 3: 查询所需职工信息 ))\n");printf(" (( \002 4: 修改原有的职工信息 ))\n");printf(" (( \002 5: 删除原有的职工信息 ))\n");printf(" (( \002 6: 添加新的职工信息 ))\n");printf(" (( \002 7: 给职工信息排序 ))\n");printf(" (( \002 8: 保存职工信息 ))\n");printf(" (( \002 9: 读取职工信息 ))\n");printf(" (( \002 0: 退出系统 ))\n");printf("************************************************\n");do{printf("\n \004请输入指令(0~9):");scanf("%d",&choice); /*输入选择的数字*/}while(choice<0||choice>9);switch(choice){case 1: creat(); break;case 2: display();break;case 3: search();break;case 4: modify();break;case 5: delet();break;case 6: add();break;case 7: order();break;case 8: save();break;case 9: load();break;case 0: quit();break;default:break;}}}光标定位函数void gotoxy(int x,int y) 0≤x≤80,0≤y,(0,0)代表左上角。

相关文档
最新文档