




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 绪论1.1 课题背景及目的公司的扩张和人员的变动都需要处理相应职工的信息, 凭借人力很难用最短 的时间整理出需要的职工信息。 运用计算机系统对职工档案进行管理, 能够提高 管理效率、 节约时间、方便管理人员管理信息。 因此需要设计一个职工信息管理 系统,系统以菜单的方式工作, 可以录入、查询、删除等。职工的信息包括工号、 姓名、性别、年龄、学历、工资、住址、电话等 (职工号不可重复) ,使查询职 工信息变得又快又简单。1.2 课题的研究方法本系统主要的设计思想是实现对职工信息的录入、删除、排序、查询等主 要功能。职工信息以文件的形式存储,这要用到文件存储数据结构。数据结构 的构造类型包括结
2、构体变量、结构体数组、结构体指针等。基本类型有整形字 符型,其中字符型用来定义职工编号、姓名、工资、电话、地址等。一维数组 struct worker work 用于定义员工的总人数,结构体 struct worker 用于存放员工 的资料。系统的人机接口采用简单的字符界面进行交互。系统的设计方法是结 构化设计方法,采用C语言进行开发。软件开发平台采用 Visual C+6.0。2概要设计2.1软件模块结构图职工信息管理系统可以分为显示员工资料、录入员工资料、查询员工信息、 删除员工信息、对员工信息进行排序、退出信息系统。职工信息管理系统图 2.1 职工信息管理系统模块结构图3 详细设计3.1
3、 数据结构设计定义一维数组 struct worker work50; 用于定义员工的总人数,当员工总人 数超过 50 后便不能再录入员工资料。 1结构体 struct worker 用于存放存放员工的资料,包括员工的基本信息:工 号,姓名,年龄,学历,工资,住址,电话号码。struct workerint num;工号char name15;名字char xingbie;性别int age;年龄char exp6;学历int wage;工资精品资料char address20; 住址char tel12;电话号码;int count=0;当前工人个数int sort_type=0;当前排序类
4、型3.2 界面设计3.2.1 登录主界面设置用户名和密码,输入正确方可进入主界面。由 strcmp 函数判断,代码 实现: if(strcmp(username,"abcde")=0)&&(strcmp(pwd,"123456")=0)2如果输入用户名和密码错误超过三次,则自动退出程序。代码实现:for(i=0;i<3;i+)printf("n 请输入用户名 :");gets(username);gets(pwd);printf("n 请输入 6 位密码 :");精品资料if(k=0)prin
5、tf("n 连续输入三次错误将退出程序 :n");Sleep(2000);quit();3.2.2 主界面进入主界面后用户可以根据自己的需要选择相应的选项1.显示员工资料;2.录入员工资料; 3.员工信息查询; 4.删除员工信息; 0.退出信息系统。 3代码实现:while (n!='1')&&(n!='2')&&(n!='3')&&(n!='4')&&(n!='5')&&(n!='0')printf
6、("n 请选择 :")case '1':display();精品资料break;case '2':if(count<50)input();elseprintf(" 记录数已满 n");Sleep(2000); system("cls"); homepage();break;default:3.2.3 显示员工信息界面一条信息由员工的工号、 姓名、性别、年龄、学历、工资、住址和电话组成, 用户登录此界面可查看相应的信息,用 switch() 语句来实现。代码实现:void display()int
7、i;char c;printf("备注:学历(1=中专,2=大专,3=本科,4=硕士 ,5=博士 ,6=其它):nnn”);switch(sort_type)case 0: printf("tt 未排序 :nn"); break;case 1:printf("tt按工号排序 :nn"); /sort();break;case 2:printf("tt按工资排序 :nn");/sort();break;printf("t工号t姓名t性别t年龄t学历t工资t住址t电话n”);精品资料3.2.4 录入员工信息界面登录此界
8、面可以录入新员工的信息, 当系统中的员工人数达到上限时不可以 录入新信息。 if(workcount.num=worki.num) ; numcheck=0 判定录入的工号 是否重复,重复的话会有重新输入的提示,避免职工信息的重复。当记录数已 满时,通过 sleep(2000) ,使之回到主界面,进行其他选项设置。 2代码实现:void input() int i,numcheck;char c;do printf(" 工号 :n");scanf("%d",&workcount.num);numcheck=1;if(workcount.num&l
9、t;0) doc=getchar();if(c='y'|c='Y')count+;3.2.5 查询员工信息界面员工信息的查询可以按工号或学历进行查询。用 if 函数来实现。通过 while (choice!=1)&&(choice!=2); 这个选择来实现查询的方式,选择“ 1”为工号查询, 选择“2 ”则为按学历查询。 if (find_num=worki.num) 即为根据职工号进行查 询, strcmp(findedu,worki.exp) 根据学历进行职工信息查询。代码实现:void find()int i,j;int choice=0;
10、int find_num;char findedu6;精品资料c=getch();system("cls");printf("tt 请选择查询功能 :n");while (choice!=1)&&(choice!=2);if (choice=1)n");printf("nt 请输入要查询的职工号scanf("%d",&find_num);printf("n 正在查询,请稍候 ");for(i=0;i<20;i+)printf(".");Sleep
11、(100);system("cls");printf("nn 按任意键返回 n");system("cls");homepage();3.2.6 删除员工信息界面 首先要进行职工信息查询,然后再对查询到的职工进行删除。printf("%d",&del_num); 即为显示要删除的职工号, if(c='y'|c='Y') 则是确定是 否删除选定的职工信息。最后通过 homepage() 回到主界面。代码实现:void del()int i,j,del_num,match=0;c
12、har c;system("cls");printf(" 请输入要删除的员工工号 :n");scanf("%d",&del_num);waiting();精品资料for(i=0;i<count;i+)if(worki.num=del_num)match=1;for(j=i;j<count;j+)workj=workj+1;精品资料4使用说明及运行实例(1)登录王界面按提示输入用户名和密码登录主界面,输入累计错误三次自动退出系统。用-文杵査讥er程渥计1-吐MM M欢迎使用职工信息、管理系统we*苏静2011531H
13、R20&淆输'、用=名iabcde请输入石位密码-123456户名:abcde;密码:123456图4.1登陆界面(2) 主界面进入主界面选择相应的选项进行操作精品资料图4.2主界面(3)查询员工信息界面如图4.3相应的信息查按所选功能输入17文件夹I>ebug课程设计I. exe*.通选择查询功能二1-技工号蚤询辈接学历查询 请输入选择,询员工资料。图4.3查询信息界面贰件夹琛程谀计hEHET备注:手Tfv i =屮亏”2- 直"本科.4=阪丄”只=博丄=其它:(4)示员信息工号356124按任惫键返回姓名性别MasmSunimT inafJackJanief
14、Sunnijlf年龄学历工资住址电话285lseeeBe ij in si3333333562 MR AHu nan12345632e12000Hebei&678902548008Hun din4561232?3BMOHun ar的石沾2134000Hunan333333c: "F讥新锥文件夹Deb口臥课程设计1是否继续删除?<>图4.4无序显示员工信息(5) 删除员工信息界面如图4.5.1按提示输入信息,并确认图4.5删除员工信息界面(6) 录入界面如图4.6输入员工的相应信息,输入工号重复后系统提示重新输入。图4.6录入员工界面(7) 退出程序显示界面图4.7
15、退出系统显示界面5总结5.1遇到的问题及解决办法(1) 些字符或字符串的定义上出项错误,如定义职工电话号码的时候,用成 了 float类型,而正确的应该是char类型。(2) 对排序模块进行设计时流程图没设计好,导致运行程序时间过长(3)在进行模块函数设计时,fin d()函数功能没有设计好,导致部分函数代码过长,可读性降低。再次重写里面的一部分代码,浪费了大量的时间。5.2心得体会这次的课程设计让我学会了许多函数的使用, 培养了分析问题、解决问题的 能力,同时也体会到了 C语言操作灵活、执行效率高等特点。在整个课程设计 中,我认为最重要的就是耐心和细心。在编写过程中注意拼写,仔细编写程 序;
16、在程序编译中出现很多错误的时候能够耐心去修改,这些都是需要学习的。只有这样,才能很好的完成程序。上机操作可以加深对数组、循环等语句的理解。刚开始拿到题目不知道从哪里下手,只有去搜集一些课外资料和咨询师兄 师姐们的意见。设计流程图的时候由于逻辑性不是很强,源代码也没有注释, 在实际中总会出现一些乱码。以后设计程序一定不能偷懒把注释漏掉了。在运 行过程中除了错,可以看看代码和注释是否表达的意思是一样的。因此,一个 系统的菜单和提示信息非常重要,有了这些信息用户才能够了解怎么使用这个 系统。有了 VC+的一个清晰简单的菜单和一些提示信息这后,调试过程完成 的非常顺利。通过这次课程设计,我觉得自己还需
17、改进的还有很多。路还很长, 需要学习的东西还很多。参考文献1 李峰,谢中科.C语言程序设计.上海:复旦大学出版社,2011:21 ,133-1382 谭浩强.C程序设计(第三版)北京:清华大学出版社,2005 : 95-99。3 刘维富,陈建平.C语言程序设计一体化案例教程北京:清华大学出版社:2009 : 118-121,125。附录 源程序清单I#include<stdio.h>#include<string.h>#include<windows.h>#include<conio.h>void homepage();/主界面void disp
18、lay();/显示全部信息void input();/ 录入 插入void find();/查询void del();/删除记录void waiting();/等待界面void quit();/退出界面struct workerfint num;/工号char name15;/名字char xingbie;/性别int age;/年龄char exp6;/学历int wage;/工资char address20;/ 住址char tel12;/电话号码int count=0;/当前工人个数int sort_type=0;/当前排序类型struct worker work50;void main
19、() int i=0,k=0;char username15,pwd6; system("color 3f"); printf("nn");t I*printf("printf("tItIn");printf("tI*In");printf("tI*In");printf("tI*In");printf("tI*In");printf("tI*In");printf("tI*In");printf(&quo
20、t;tI*In");printf("tI*In");printf("tIn");printf("tIprintf("tIn");printf("tLprintf("n");* * * * * * * * * * * I欢迎使用职工信息管理系统苏静201153100206* * I*for(i=0;i<3;i+)printf("n 请输入用户名 :");gets(username);printf("n 请输入 6 位密码 :");gets(p
21、wd);if(strcmp(username,"abcde")=0)&&(strcmp(pwd,"123456")=0)printf("n 您已经成功登录 ");k=1;精品资料printf(" 记录数已满 n");精品资料for(i=0;i<20;i+)printf(".");Sleep(100);system("cls");homepage();break;elseprintf("n 用户名或密码无效 请重新输入 :n"); co
22、ntinue;if(k=0)printf("n 连续输入错误 3 次 将退出程序 n");Sleep(2000);quit();void homepage()char n;printf("nn");printf("t inn");* |n");料printf("t | *printf("t | *printf("t |*1.显示员工资料*2.录入员工资n");n")printf("t*n");* |n");录* |n");n"
23、);printf("t |*printf("t |*3.员工信息查询*4.删除员工记n");printf("t |*printf("t | *printf("t |*printf("t |*0.退出信息系统n");printf("t*printf("t |*prin tf("t 1nwhile (n!='1')&&(n!='2')&&(n!='3')&&(n!='4')&am
24、p;&(n!='5')&&(n!='0') printf("n 请选择 :");fflush(stdin);scanf("%c",&n);switch(n)case '1':display();break;case '2':if(count<50) input();elseSleep(2000);system("cls"); homepage();break;case '3':find();break;case
25、9;4':del();break;case '0':quit();break;default:printf("n 选项错误 n");void display()int i;char c;system("cls");printf(" 备注:学历 (1=中专 ,2=大专 ,3=本科 ,4=硕士 ,5=博士 ,6=其它):nnn");switch(sort_type)case 0:printf("tt 未排序 :nn");break;case 1:printf("tt 按工号排序 :nn
26、");/sort();break;case 2:printf("tt 按工资排序 :nn");/sort();break;printf("t工号t姓名t性别t年龄t学历t工资t住址t电话n"); if (count=0) printf("nt 无员工信息! n");for(i=0;i<count;i+)printf("t%dt%st%ct%dt%st%dt%st%sn",worki.num,,worki .xingbie,worki.age,worki.exp,worki.wag
27、e,worki.address,worki.tel);printf("nn 按任意键返回 n");c=getch();system("cls");homepage();void input()int i,numcheck;char c;system ("cls");入:n");其它):n");do printf("工号:n");scanf("%d",&workcount.num);numcheck=1;if(workcount.num<0)printf(&quo
28、t;请输入正整数:n");for(i=0;i<count;i+)if(workcount.num=worki.num)numcheck=0;printf("工号重复,重新输while(!numcheck);printf("姓名:");fflush(stdin);scanf("%s",);fflush(stdin);printf("性别(F 女:M 男):");scanf("%c",&workcount.xingbie);prin tf("年龄:
29、");scanf("%d",&workcount.age);fflush(stdin);printf(" 学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=scanf("%s",workcount.exp);printf(" 工资:");scanf("%d",&workcount.wage);printf(" 住址:");scanf("%s",workcount.address);printf(" 电话 :")
30、;scanf("%s",workcount.tel);printf("n 是否继续输入 (y/n):n");doc=getchar();if(c='y'|c='Y')count+;if(count<50)input();elseprintf(" 记录数已满 n");Sleep(2000); system("cls"); homepage();else if(c='n'|c='N')count+; system("cls");h
31、omepage(); else;while(c!='y')&&(c!='n')&&(c!='Y')&&(c!='N');void del()int i,j,del_num,match=0;char c;system("cls");printf(" 请输入要删除的员工工号 :n");scanf("%d",&del_num);waiting();for(i=0;i<count;i+)if(worki.num=del
32、_num)match=1;for(j=i;j<count;j+)workj=workj+1;count-;if(!match) printf("n 没有要找的工号 .n");printf("n 是否继续删除 ?(y/n)");fflush(stdin);doc=getchar();if(c='y'|c='Y')del();else if(c='n'|c='N')system("cls"); homepage();while(c!='y')&&
33、amp;(c!='n');void find()int i,j;int choice=0;int find_num;char findedu6;char c;system("cls");printf("tt 请选择查询功能 :n");printf("t1. 按工号查询 n");printf("t2.按学历查询 n");printf(" 请输入选择 :");doscanf("%d",&choice);while (choice!=1)&&
34、(choice!=2);if (choice=1)printf("nt 请输入要查询的职工号 n");scanf("%d",&find_num);printf("n 正在查询,请稍候 ");for(i=0;i<20;i+)printf(".");Sleep(100);system("cls");for (i=0;i<=count;i+)if (find_num=worki.num)printf("nnt工号t姓名t性别t年龄t学历t工资t住址t电 话 n");printf("t%dt%st%ct%dt%st%dt%st%sn",worki.num,,wo rki.xin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中考语文一轮复习:短语类型、词性、句子基础知识(含答案)
- 2025年小红帽考试题及答案
- 2025年长春职业技术学院单招职业适应性考试题库带答案
- 2025年泰州职业技术学院单招职业适应性测试题库及答案1套
- 2025年齐齐哈尔高等师范专科学校单招职业适应性测试题库1套
- 2024年五年级数学下册 7 解决问题的策略第二课时 解决问题的策略(2)教学实录 苏教版
- 2025年高中物理:10类难题解题模板考试常见
- 2023一年级数学上册 3 1-5的认识和加减法第7课时 0配套教学实录 新人教版
- 2024-2025学年高中历史 第一单元 第一次世界大战 第2课 旷日持久的战争教学教学实录 新人教版选修3
- 开场致辞与会议主旨演讲回顾报告
- 2025年兼职销售代表合同样本
- 医院财务知识培训
- 绿植花卉租赁合同
- 2025年内蒙古建筑职业技术学院单招职业适应性测试题库及答案1套
- 部编人教版小学一年级道德与法制教案全册
- DeepSeek从入门到精通进阶科普
- 眼视光行业现状及展望
- 2025年多旋翼无人机超视距驾驶员执照参考试题库500题(附答案)
- 幼儿园学前班春季家长会演讲稿
- 2024年云南省高等职业技术教育招生考试数学试题
- 2025-2030年中国电船行业运行状况及发展潜力分析报告
评论
0/150
提交评论