c语言职工信息管理系统设计共24页Word下载.docx

上传人:b****8 文档编号:22471626 上传时间:2023-02-04 格式:DOCX 页数:28 大小:26.80KB
下载 相关 举报
c语言职工信息管理系统设计共24页Word下载.docx_第1页
第1页 / 共28页
c语言职工信息管理系统设计共24页Word下载.docx_第2页
第2页 / 共28页
c语言职工信息管理系统设计共24页Word下载.docx_第3页
第3页 / 共28页
c语言职工信息管理系统设计共24页Word下载.docx_第4页
第4页 / 共28页
c语言职工信息管理系统设计共24页Word下载.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

c语言职工信息管理系统设计共24页Word下载.docx

《c语言职工信息管理系统设计共24页Word下载.docx》由会员分享,可在线阅读,更多相关《c语言职工信息管理系统设计共24页Word下载.docx(28页珍藏版)》请在冰豆网上搜索。

c语言职工信息管理系统设计共24页Word下载.docx

5、职工信息删除、修改功能

2.题目分析

该职工信息管理系统包括以下几个功能:

①信息录入

②信息浏览

③信息查询

④信息修改

⑤信息删除

据此,该系统应至少构建以下函数:

①信息录入函数

②信息输出函数

③信息查找函数

④信息更改函数

⑤信息删除函数

五大功能对应五大函数,便于编写出规划的模块化程序。

此外,题目要求以菜单方式工作、职工信息用文件保存,同时程序应满足美观以及使用简单方便的要求,构建下列函数:

⑥菜单函数(包括几个子菜单函数)

⑦信息储存函数

⑧信息读取函数

⑨系统终止函数

需要成功编写上述函数,主要需要突破以下难点:

①利用结构体类型保存职工信息

②将职工信息保存在文件中

③将职工信息从文件中读取出来

④信息成功录入(每次录入都是新增)

⑤结构体变量成员的引用

⑥strcmp函数的使用(成功搜索所需信息,用于查找、更改、删除等功能)

⑦数组信息的删除

⑧菜单循环功能

⑨系统界面、文字、注释优化,信息对齐输出

二、总体设计

1.基本思路:

如流程图(简略)所示:

系统基本思路为:

将不同功能模块化,分别调用相应函数进行设计,使程序代码清晰易读,设计思路清晰明了。

系统分为5大功能:

录入、浏览、查询、删除、更改功能。

1录入功能:

调用录入函数,信息储存、读取函数:

利用for循环,对信息进行录入(新增),并保存到文件中;

2浏览功能:

调用浏览函数:

利用for循环,简单地对已有职工信息进行打印,并做到输出界面美观,可读性强的效果;

3查询功能:

调用查询函数、信息读取函数:

拥有两种功能1.按职工号查询信息2.按姓名查询信息;

4删除功能:

调用删除函数,信息储存、读取函数:

将文件中的信息读取出并删除,之后保存新信息

5更改功能:

调用更改函数,信息储存、读取函数:

具有两种功能1.整体修改信息2.局部修改信息

三、详细设计

(一)信息储存函数:

1.voidsave(intm)

2.inti;

3.FILE*fp;

4.if((fp=fopen("

职工名单.txt"

"

wb"

))==NULL)

5.printf("

文件打开错误\n"

);

6.exit(0);

7.for(i=0;

i<

m;

i++)

8.if(fwrite(&

member[i],sizeof(structinf),1,fp)!

=1)

9.printf("

文件写入错误\n"

10.fclose(fp);

函数功能:

将信息存储到文件中

(二)信息读取函数:

1.intload()

2.FILE*fp;

3.inti=0;

rb"

文件打开失败\n"

7.else

8.do

9.fread(&

member[i],sizeof(structinf),1,fp);

10.i++;

11.while(feof(fp)==0);

12.fclose(fp);

13.return(i-1);

将储存在文件中的信息读入程序中,返回已有信息量的值

(三)信息展示函数:

1.voidshow()

2.intt;

3.inti=load();

4.printf("

工号\t\t\t姓名\t\t\t性别\t\t\t年龄\n\n"

5.for(t=0;

t<

i;

t++)

6.printf("

%-12s\t\t%-12s\t\t%-12s\t\t%-12d\n\n"

member[t].no,member[t].name,member[t].sex,member[t].age);

7.printf("

工资\t\t\t学历\t\t\t地址\t\t\t手机号码\n\n"

8.for(t=0;

%-12ld\t\t%-12s\t\t%-12s\t\t%-12s\n\n"

member[t].wages,member[t].edu,member[t].addr,member[t].telno);

函数功能:

简单地将存储在文件中的信息打印在屏幕上

(四)信息查找函数:

1.voidfunc3()

2.intt,a,cmd3;

4.charno[11];

5.charedu[20];

6.Menu3();

7.fflush(stdin);

8.scanf("

%d"

&

cmd1);

9.show();

10.switch(cmd1)

11.case(0):

main();

12.case

(1):

13.printf("

请输入您想要查找的职工号:

\n"

14.fflush(stdin);

15.scanf("

%s"

no);

16.for(t=0;

17.{if(strcmp(member[t].no,no)==0)

18.printf("

恭喜你查找到结果:

\n\n"

19.printf("

20.printf("

21.printf("

22.printf("

23.else{

24.printf("

对不起,您的输入有误。

\n\n请您选择接下来的操作:

\n1.重新输出\t2.返回上一级菜单\t3.终止程序\n"

25.fflush(stdin);

26.scanf("

cmd3);

27.switch(cmd3)

28.case

(1):

func3();

29.case

(2):

Menu();

30.case(3):

printf("

感谢您使用本系统,您如有对本团队的不满或建议,请致电123456789,谢谢!

31.exit(0);

32.}break;

33.case

(2):

34.printf("

请输入您想要要查找的学历:

35.fflush(stdin);

36.scanf("

edu);

37.for(a=0;

a<

a++)

38.{if(strcmp(member[a].edu,edu)==0)

39.printf("

40.printf("

41.printf("

member[a].no,member[a].name,member[a].sex,member[a].age);

42.printf("

43.printf("

member[a].wages,member[a].edu,member[a].addr,member[a].telno);

44.else{

45.printf("

\n1.重新输入\t2.返回上一级菜单\t3.终止程序\n"

46.fflush(stdin);

47.scanf("

48.switch(cmd3)

49.case

(1):

50.case

(2):

51.case(3):

52.exit(0);

53.}break;

54.}End();

函数名字说明:

函数为菜单3(信息查询)所需功能,故为func3

函数功能说明:

1.输入职工号查找信息2.输入姓名查找信息

(五)信息删除函数

1.voiddel()

2.intm=load();

3.inti,j,n,t,judge;

4.charname[18];

以下为系统中已存在的职工信息:

6.show();

8.printf("

请输入您想要删除的职工的姓名:

9.fflush(stdin);

10.scanf("

name);

11.for(judge=1,i=0;

judge&

&

12.if(strcmp(member[i].name,name)==0)

恭喜您找到此人,ta的信息如下:

14.printf("

15.printf("

member[i].no,member[i].name,member[i].sex,member[i].age);

16.printf("

17.printf("

member[i].wages,member[i].edu,member[i].addr,member[i].telno);

您确定要删除此人信息吗?

\n1.确定\t2.不删除\n"

19.fflush(stdin);

20.scanf("

n);

21.if(n==1)

22.for(j=i;

j<

m-1;

j++)

23.strcpy(member[j].no,member[j+1].no);

24.strcpy(member[j].name,member[j+1].name);

25.strcpy(member[j].sex,member[j+1].sex);

26.member[j].age=member[j+1].age;

27.member[j].wages=member[j+1].wages;

28.strcpy(member[j].edu,member[j+1].edu);

29.strcpy(member[j].addr,member[j+1].addr);

30.strcpy(member[j].telno,member[j+1].telno);

31.judge=0;

32.else

33.printf("

请选择您接下来想要做的:

\n1.返回主菜单\t2.重新执行删除功能\n"

34.fflush(stdin);

35.scanf("

cmd2);

36.if(cmd2==1)

37.main();

38.else

39.del();

40.if(!

judge!

=0)

41.m=m-1;

42.else

对不起,查无此人\n\n"

44.printf("

\n1.返回主菜单\t2.重新输入\n"

45.fflush(stdin);

46.scanf("

47.if(cmd2==1)

48.main();

49.else

50.del();

51.printf("

下面为删除信息后所有职工信息:

52.save(m);

53.show();

54.printf("

请问您要继续删除吗?

\n1.是\t2.不需要\n"

55.fflush(stdin);

56.scanf("

t);

57.switch(t)

58.case

(1):

del();

break;

59.case

(2):

四、程序运行结果测试与分析

1.主菜单界面:

菜单简洁明了,不失美观,为方便用户使用,提供手动清屏功能(9)

2.信息浏览功能:

该功能可实现从文件中读取信息并打印到屏幕上,信息对称具有一定可读性。

(并不是每次运行程序都需要录入信息再浏览,可以直接浏览以前运行程序时曾经录入的信息)

3.信息录入功能:

此处为信息录入功能菜单界面,简洁清新。

此处为录入功能工作界面,按照提示输入相应数据即可成功录入

此处为录入成功后,录入结束界面(每一个功能结束界面均为这个)

4.信息查询功能

此处为信息查询功能,按照题目要求分两种查询功能:

1.职工号查询;

2.学历查询。

两种功能的实现方式均为从文件中读取信息再与输入信息对比,一致即将信息输出到屏幕。

最后调用END函数,选择后续操作。

5.信息删除功能

如上图,每次执行删除功能前,都会将信息从文件中读取出来并输出到屏幕,以便于用户选择所需删除的信息。

如上图,输入想要删除的职工信息之后,成功搜索后输出此人信息并询问用户是否需要删除此人信息:

确定后执行删除功能。

如上图,删除功能执行后,将信息删除后的信息输出屏幕,此后询问用户是否需要继续删除,需要即重复删除功能操作,不需要则调用END函数选择后续操作。

6.信息修改功能

如上图,与删除功能一致,执行功能前将所有信息输出屏幕,以便用户选择其所需更改的职工信息

如上图,找到此人信息后,询问是否确定修改:

否,则选择重新修改或是返回主菜单;

确定修改则再次进行功能选择:

1.整体修改2.单个修改

如上图,此处为整体修改功能界面,只需按照文字提示即可顺利操作

如上图,此处为单个修改界面,每次修改只能修改一个选项。

如上图,此处为单个修改修改后效果,只将工号改变

7.退出界面

最后表达感谢以及留下联系方式。

注:

由于电脑问题,程序不能全屏显示,因此上述截图中的电话号码没有空间输出,自动换行到第二行。

正常情况下是不会出现的。

五、结论与心得

1.变量定义、命名:

最初进行设计时,出错最多的地方是每一个函数变量的定义,因为函数较多,而我也从未进行过这样的程序设计,导致局部变量,全局变量方面有些许混乱,再加上对变量的命名,将我弄得焦头烂额。

解决方法:

在将程序大体上编写好后,重新仔细阅读了课本在这方面的知识,对变量进行了一定程度上的规范,解决了这上面的问题。

2.文件的建立、存储、读取:

在拿到课设题目的时候,便发现基本上大多数题目都需要将信息储存到文件中,当初我的内心是崩溃的,因为并没有学习过这方面的内容,据说文件还是C语言的精髓之一。

只好乖乖地拿起书本,将这方面的内容浏览一遍。

一遍遍地试,虽然对文件还是一知半懂,但也终于可以实现文件的建立,存储、读取功能了。

3.信息录入功能

这一点也许并不算是难点,但在程序运行初期,这个功能每次录入的时候会将之前录入的信息覆盖掉,而不是更新。

考虑到程序的实用性,显然这样的功能是不符合要求的,于是对其进行了更改,还是改了一下控制条件,便实现了我想要的功能:

每次录入都是新增,而不是覆盖。

我称之为神奇的条件。

4.数据体结构定义

刚开始的定义,对职工编号、电话号码等数据定义的是长整型,后来却发现因为职工编号(测试时我输入的是学号,有10位)、电话号码过长,已超出长整型数据的范围。

这里给予我警醒:

在以前的C语言学习过程中,我总是忽略了这些数据范围大小,认为记这些并没有什么用,在课设时才意识到,这一点也是不可忽略的!

随后我便将这些数据定义为字符串数组,顺利解决了这个问题。

5.信息忘记修改

比如说,在第三点更改数据类型后,将后面的一些相应点修改后,却依然有漏改的:

如信息查询时,整型与字符串的比较方式不一样,此处漏改将会导致程序出错。

至今未能有较好的改正方法,只能更加细心,或修改前将所需要修改的点罗列出来。

6.对条件的控制

在这样一个比较大(在我这样的初学者看来)的程序中,对某些条件的控制出错可谓是致命的,因为编译并不会出错,而程序运行结果却会偏离预想轨道,发现错误难度大大提高。

我便是在职工信息查询功能—职工姓名查询中,久久发现不了错误,就是一直查找不成功,后来经过多次检查才发现是条件控制少了个“等于号”。

解决方案,只能是在进行条件控制时加倍留心,力争不出错。

7.画面界面设置

作为一个应用程序,界面必须好看具有较强可读性,否则实用性不强。

在做清屏功能时,也有想过每做一步自动清屏,但根据用户需要,有时候需要查阅前面的操作,因此,最终选择的是手动清屏功能,适合不同的需求。

此外,在进行信息输出到屏幕时,往往会因为长度不够,出现不对齐的现象,这个问题困扰我比较久,最后通过长度规定,一个一个尝试,试出比较适合的一个长度,实现了对齐输出。

8.程序模块化设计

此处课程设计,最大的收获可能便是模块化设计,将程序分为一块一块的函数,便于浏览,思路清晰,简洁明了,修改方便,也可以减少程序代码行数,降低了程序的复杂度,使程序设计、调试和维护等操作简单化

9.未完成的想法

①界面还可以更加优美,同学中还有能改变背景色的,我也希望可以这样做。

②程序中有很多重复的地方(可直接用函数调用),比如说在删除、修改功能中的删除修改前的信息展示,可直接调用信息显示函数;

但在查询功能中,由于在一些文字解释上面的需要或者是功能特别要求,不能直接套用,需要做一些修改。

这是我觉得比较不好的地方,想要改,但其他课程的压力实在有些大,找不出时间好好想想怎么修改。

③用链表储存信息。

现在的这个程序采用的是数组储存信息,在删除、修改功能上并没有链表方便,但想要采用链表时,程序已经写完了一半,如果重新采用链表,就需要重写程序,留下了一个遗憾。

另外,课上学习的链表内容我也没有完全掌握,似懂非懂,也希望能够在寒假的时候好好看看,确实学会C语言。

④多项修改功能。

该程序已有整体修改功能以及单个修改功能,但在实际应用中,可能还需要实现多项修改功能,比如同时修改两项等等。

这个想法一闪而过,我也并没有在上面研究研究,时间确实不够。

六、源代码清单

1#include<

stdio.h>

2#include<

windows.h>

3#include<

string.h>

4structinf

5charno[11];

6charname[18];

7charsex[5];

8intage;

9longwages;

10charedu[20];

11charaddr[40];

12chartelno[11];

13}member[100];

14intcmd1,cmd2;

15voidsave(intm)

16inti;

17FILE*fp;

18if((fp=fopen("

19printf("

20exit(0);

21for(i=0;

22if(fwrite(&

23printf("

24fclose(fp);

25intload()

26FILE*fp;

27inti=0;

28if((fp=fopen("

29printf("

30exit(0);

31else

32do

33fread(&

34i++;

35while(feof(fp)==0);

36fclose(fp);

37return(i-1);

38voidshow()

39intt;

40inti=load();

41printf("

42for(t=0;

43printf("

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1