C语言课程设计职工工作量统计系统Word下载.docx
- 文档编号:22254821
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:37
- 大小:239.11KB
C语言课程设计职工工作量统计系统Word下载.docx
《C语言课程设计职工工作量统计系统Word下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计职工工作量统计系统Word下载.docx(37页珍藏版)》请在冰豆网上搜索。
具体的设计框图如下:
6)、信息浏览功能
7)、信息查询功能详细
8)、信息修改功能详细
9)、信息删除功能
1、菜单界面:
2、职工信息输入界面
3、职工信息浏览界面
4、按量化得分排序后界面
5、查询职工信息功能界面
可见相比较于刚才,删去了4号职工张亮。
8、工作量累加界面
可以看到2号职工赵天宇的工作量直接累加上了
五、附录
1、程序清单
2、
#include
<
>
3、
4、
5、
#define
FILENAME"
d:
\\
6、
N100
7、
structworker
8、
{
9、intempnum;
/*工号*/
10、charname[20];
/*姓名*/
11、charsex[5];
/*性别*/
12、charbirthday[30];
/*生日*/
13、charDep[20];
/*系别*/
14、intage;
/*年龄*/
15、doubleTeachworkload;
/*教育工作量*/
16、doubleScientficworkload;
/*科研工作量*/
17、doubleQscore;
/*量化得分*/
18、intgrade;
/*该员工的排名名次*/
19、charPosition[30];
/*职称*/
20、};
21、/
22、定义
23、
/
24、voidxinxi()
25、{
26、
printf("
\n+++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++\n"
);
27、
printf(
"
+
职工工作量统计
系统
+\n"
)
;
28、
);
29、
1.
职工基本信息输入
30、
31、
2.
工作量累加
32、
33、
3.
按照量化得分排序
34、
35、
4.
删除某职工信
息
36、
37、
5.
浏览所有员工
38、
39、
6.
查询某员工
信息
40、
41、
7.
修改某员工信
42、
43、
8.
结束程序,
将数据写入文件
信息表
44、
+++++++++++++++++++++++++++++++++++++++++++++
45、
}
46、
/**********************************************
显示菜单
47、
48、
49、voidQscore1(structworkerw[],intlength)
50、{
51、inti=0,sum1=0,sum2=0;
52、for(i=0;
i<
length;
i++)
54、
53、{
sum1+=w[i].Teachworkload;
55、sum2+=w[i].Scientficworkload;
56、}
57、score=(w[j].Scientficworkload/sum2)*(1/2)+(w
[j].Teachworkload/sum1)*(1/2);
58、for(i=0;
59、{
60、
w[i].Qscore=w[i].Scientficworkload/sum2*+w[i].Teachworkload/sum1*;
61、}
62、}
63、/**********************************************
64、计算量化得分
66、intreadFromFile(structworkerw[])
67、{
68、FILE*fp=NULL;
69、inti=0;
/*i用来循环判断人
数*/
70、
71、fp=fopen(FILENAME,"
rb"
/*打开文件,文件指
if(fread(w+i,
sizeof(worker),1,fp)==1)
85、fclose(fp);
86、}
87、returni;
88、}
89、/
90、信息显示到屏幕
91、
92、intf(structworkerw[],intlength)
93、{
94、inti=length,j=0,flag=1;
/*i用来表示已经录入过信息的人数*/
95、while(i<
N)
96、{
97、printf("
第%d个职工\n"
i+1);
/*显示
下一个需要输入信息的员工是第几个员工*/
98、printf("
\n"
101、
if(w[i].empnum==0)break;
102、
103、
104、
for(j=0;
j<
j++)
105、
106、
if(w[j].empnum==w[i].empnum)
107、
108、
flag=0;
109、
该职工号人员已经存在,请
重新输入"
110、
111、
112、
if(flag==0)break;
/*如果职工
已经存在那么跳出程序*/
请你输入工号(以职工号为0结束输
入):
\n)"
/*输入职工号信息*/
100、
scanf("
%d"
&
w[i].empnum);
99、
113、printf("
请你输入该员工的姓名:
/*开始输入该员工的各类基本信息*/
114、
%s"
w[i].name);
115、
请你输入该员工的性别:
116、
w[i].sex);
117、
请输入该员工的年龄:
118、
w[i].age);
119、
请输入该员工的出生年月日(格式
1995/03/23):
120、
w[i].birthday);
121、
请输入该员工的系别:
122、
w[i].Dep);
123、
请你输入该员工的教育工作量
(单
位:
小时):
124、
%lf"
&
w[i].Teachworkload);
125、
126、
请你输入该员工的科研工作量
127、
w[i].Scientficworkload);
128、
score);
129、
130、
请你输入该员工的职位:
)
131、
w[i].Position);
132、
133、
i++;
134、
135、
Qscore1(w,length);
137、
138、
/*******************************************
136、
returni;
139、
功能:
输入职工基本信息
140、
141、
voidinput(structworkerw[],intlength)
142、
143、
inti=1,empnum;
/*i用来寻找需要累加工作量
的员工*/
144、
doubleScientficworkload,Teachworkload;
145、
请输入工号:
/*用来查找某位
工人*/
146、
empnum);
147、
if(empnum==0)
148、
149、
输入错误请重新输入"
150、
getchar();
151、
152、
154、{
155、printf("
请输入新完成教育工作量(单位:
小
时,无增加请填0):
/*输入各类新增工作量*/
156、getchar();
157、scanf("
Teachworkload);
158、printf("
请输入新完成的科研工作量(单位:
小时,无增加请填0):
159、getchar();
160、scanf("
Scientficworkload);
161、mpnum==empnum)/*找到该员工
存在,则累加新增工作量*/
162、{
163、
w[i].Scientficworkload+=Scientficworkload;
164、
w[i].Teachworkload+=Teachworkload;
165、
break;
166、
167、
168、
if(i>
=length)
/*如果员工不存在,提
示重新输入工号*/
170、
工号不存在:
\n
171、
请输入工号:
172、
scanf(
173、
174、
175、
176、
177、
178、功能:
工作量输入并累加
179、
180、voidsortQscore(structworkerw[],intlength)
/*选择法对量化得分进行排序*/
181、
182、
inti=0,j=0,k=0;
183、
structworkers;
/*结构体temp转换变量*/
184、
for(i=0;
/*选择法对于量
化得分进行排序*/
186、
k=i;
187、
for(j=i+1;
188、
189、
if(w[j].Qscore>
w[k].Qscore)k=j;
190、
191、
/*交换w[i]andw[k]*/
192、
s=w[k];
193、
w[k]=w[i];
194、
w[i]=s;
195、
、if(length>
0)w[0].grade=1;
197、
for(i=1;
i++)/*循环对于量
化得分排序好后的人进行标上名次的操作*/
198、
199、
if(w[i].Qscore==w[i-1].Qscore)
w[i].grade=w[i-1].grade;
200、elsew[i].grade=w[i-1].grade+1;
201、}
202、printf("
名次工号姓名年龄
性别生日系别职称教育工作量科研工作量量化得分\n"
/*输出表头*/
203、for(i=0;
i++)/*输出排序之后的
职工工作量信息表*/
204、
205、
206、
%d\t"
w[i].grade);
207、
w[i].empnum);
208、printf("
%s\t"
w[i].name);
209、
w[i].age);
210、
w[i].sex);
211、
w[i].birthday);
212、
w[i].Dep);
213、
w[i].Position);
214、
%\t"
w[i].Teachworkload);
215、
w[i].Scientficworkload);
216、
w[i].Qscore);
217、
218、
219、
220、
221、
222、
按量化得分从大到小排序并标上名次并且输出
排序结果
224、intdelet(structworkerw[],intlength)
225、{
226、inti=0,j=0;
227、charchoice;
/*给用户来判断是否删除*/
228、intempnum;
/*所需要删除职工信息的工
号*/
229、printf("
请输入需要删除的员工职工号:
230、scanf("
/*输入所需要删除的
职工号*/
231、for(i=0;
i++)/*循环查找该职工
是否存在并输出该职工工号信息*/
232、
233、
if
(w[i].empnum==empnum)
234、
235、
想删除的职工号为:
236、
%d\n"
237、
238、
241、
242、
你却定要删除这个职工信息吗
(Y/N)\n"
/*输出让用户确实是否删除*/
243、
244、
%c"
choice);
245、
if(choice=='
Y'
||choice=='
y'
246、
247、
for(j=i;
248、
249、
w[j]=w[j+1];
250、
251、
length--;
/*删
除之后总人数减一*/
252、
删除成功"
253、
254、
255、
elseprintf("
\n指定员工不存在\n"
256、
returnlength;
257、
258、
259、
按职工号删除职工信息
260、
261、voidwriteToFile(structworkerw[],intlength)
/*数据写入文件的功能函数*/
262、
263、
FILE*fp=NULL;
/*设置文件指针*/
264、
int
i=0;
265、
fp=fopen(FILENAME,"
wb"
/*打开文件*/
266、
(fp==NULL)/*打开失败*/
267、
268、
打开文件出错!
269、
exit(0);
270、
271、
/*循环写入文件每
一组结构体数据*/
272、fwrite(w+i,sizeof(worker),1,fp);
/*写
入每个结构体数据*/
273、
274、
275、
276、
fclose(fp);
/*关闭文件*/
277、结构体数组中的职工信息输出到
文件
278、
279、voidviewworker(structworkerw[],intlength)
280、{
281、inti;
282、Qscore1(w,length);
283、mpnum);
284、printf(
285、
286、
287、
288、
289、
290、
291、
292、
293、
294、
296、
297、
voidSeek(structworkerw[],intlength)
298、
299、
inti;
300、
charDep[20];
3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 职工 工作量 统计 系统