信息相等
输出职工信息
调用main()
结束
输入n
n==0
i=0
i=i+1
yes
no
yesno
no
yes
noyesno
yesnoyes
no
yes
如图3-4查找函数
3.2.5排序函数
(1)函数原型
voidpaixu(structworkerwork[100]);
(2)函数功能
职工信息排序模块,主要实现职工信息的排序功能
(3)函数形参说明
structworkerwork[100];
(5)函数流程图
如图3-5
结束
输入n,i=0
n==1
while(!
feof(read))
i=0&&i<文本数目
i++
按职工号排序
输出顺序并保存
开始
输出顺序并保存
结束
n==2
i=0&&i<文本数目
按学历排序
i++
(否)
(是)
(是)(否)
如图3-5排序函数
3.2.6删除或修改函数
(1)函数原型
voidshanchu(structworkerwork[100]);
(2)函数功能
职工信息删除或修改模块,主要实现职工信息的删除或修改功能
(3)函数形参说明
structworkerwork[100]
(5)函数流程图
输入职工号
是否确定删除
是否确定修改
删除
是否继续
结束
开始
输入2代表修改
输入职工号
修改
是否继续
结束
输入1代表删除
(是)
(是)(是)(是)
(否)
(否)
如图3-6删除修改函数
3.2.7结束函数
(1)函数原型
voidleft();
(2)函数功能
表示此程序运行结束
(3)函数形参说明
无
(4)函数流程图
输入0
进入返回界面
按任意键
进入主界面
结束
开始
图3-7结束函数
四.运行结果
4.1主界面
运行源程序.exe可进入职工信息管理系统主界面如图所示
下面,我要输入用户名和密码,注意(我这里如果第一次用户名和密码输入错误,那么还有两次输入机会,若两次后还不对,自动退出系统。
)下面请看演示
图4-1
图4-2
图4-3
下面是正确操作
图4-4
(注意,这里,我通过调用windows.h运用Sleep函数,配合for循环,产生登录效果)
4.2主菜单界面
图4-5
主界面通过输入1—6之间的数字,通过主界面函数,进入不同子函数,来实现相应功能。
输入完毕后航班信息已保存到文件
4.3录入职工信息界面
图4-6
图4-7
该界面主要输入职工信息,并将职工信息加以保存,同时,通过两个for循环以及if条件判断,保证职工的职工号不会重复。
图4-8浏览航班信息
按任意键返回主菜单
4.3显示界面
该界面显示输入到文档的所有职工信息,包括之前写到文档中的职工信息。
详细程序运行过程见下图:
图4-9
图4-10
4.4查询界面
该界面通过输入工资或者学历,能查询符合标准的员工。
如果没有符合标准的,输出“没有该职工信息,查无此人!
!
”字样,输入1代表按工资查询,输入2代表按学历查询。
详细过程,请看程序演示。
按数字1:
按照工资查询,输入9000,结果如图显示
图4-11
按数字2:
按照学历查询,输入本科,结果如图显示
图4-12
若查不到人显示查无此人
排序界面
该界面通过对指定文档读取,输入1代表按照职工号从小到大排序,输入2代表按照工资从小到大排序。
并将排序结果保存到指定文档中。
输入1
图4-13
输入2
图4-14
删除或修改界面
该界面该界面通过对指定文档读取,1代表删除,2代表修改。
删除是根据职工号进行删除,修改可以单项修改,即可以只改其中一项内容。
详细程序运行见下图
删除功能:
图4-15
可以选择是否确定删除,若不删,按2即可取消操作,若坚持删,按1。
图4-16
选择删除,显示剩余职工数据,并询问是否继续。
若按2:
则是询问是否继续,若为继续,返回上一个界面,若选择否,则返回菜单界面:
图4-17
该界面该界面通过对指定文档读取,1代表删除,2代表修改。
删除是根据职工号进行删除,修改可以单项修改,即可以只改其中一项内容。
修改功能:
3)该函数其实是删除函数的一个子函数,受删除函数调用,删除函数把值传给修改函数,修改函数可以判断职工号是否重复。
并且可以只修改职员的部分信息。
图4-18
4)判断是否确定修改,若是,按1,若不是,按2,直接返回菜单函数中,若按1,会出现数字选择,通过选择,选择要修改的类型。
图4-19
注意(在1职工号中,有辨别是否有重复现象,同样输错之后,还有两次机会,若都错,就退出系统)
1:
职工号
图4-20
下面以职工号为例,输出正确操作:
图4-21
若按1表示确定,则返回到删除函数中,若按2,则返回到菜单函数中。
结束程序界面
图4-22
表明此程序为退出程序。
五.课程设计总结
5.1编程中的问题及解决方法
(1)一开始查询模块第一种方法并不能运行,我不停的查阅资料,想做一种简便又可行的方法,这个模块发费了我很长时间,但做出来的那一刻内心无比的喜悦,过程再艰苦,但我收获了巨大的知识财富,同时我也更相信努力钻研必能取得成果。
(2)程序编译后有时并不能读懂错误的意思或者找不到错误在哪,XX则是很好的方法了。
5.2小结
此次程序设计主要用了函数的调用,if、else选择语句,switch语句,
相关文件知识,结合课本知识加上自己的应用结果颇为令人满意 ,但是还有很多的缺陷与不足。
在实践过程中,自己编程的时候常常会犯错误,并总结了一些克服缺点的方法。
而且更深刻体会到程序设计中最重要的一部分不是编写源程序,而是调试过程。
只有经过调试程序,我们才能掌握正确的语法知识及把问题的解决方法用程序语言来表达。
在设计程序的同时也增长了翻阅有关文献的能力,加强了实践能力及自学能力,培养了分析问题 、编程和动手能力,掌握了程序设计基本技能。
以下是课程设计中的错误总结和分析:
5.3心得体会
通过此次学生成绩信息管理系统,让我熟悉了软件开发的流程,相信在以后的工作中我能在最短的时间内投入到大的程序开发项目中。
在进行课程设计的前两天,不知道从何入手,很是不解,不知道我们究竟要做什么。
后来通过上网找资料,才发现有好多做法,根本就看不完,此时才真正意识到差距所在。
于是,通过借鉴网络作品,才发现作品并不是一味的照搬照抄才实用,集众家之所成,不断完善,才能造出属于自己的作品,并且实用。
在整个课程设计中,我认为最重要的就是耐心和细心。
细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。
虽然在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设计的经历让我学到了太多,同时也让我理解到参加的项目越大越能学到知识,因此以后我会积极主动的去参加一些项目,以此来提高自己的技能和编程经验。
5.4程序设计方法
①认真读题,审题。
②将一个大程序分成若干个小程序,逐步攻破。
参考文献
C程序设计
C语言从入门到精通
系统源程序:
#include
#include
#include
#include
//职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
voidmainhome();//主界面
voidinput(structworker*op);//录入插入
voiddisplay(structworker*ab);//显示全部信息
voidchazhao(structworkerwork[100]);
voidpaixu(structworkerwork[100]);//排序
voidshanchu(structworkerwork[100]);//删除记录
voidleft();//退出界面
voidxiugai(structworkerwork[100],inta);
structworker
{
doublenumber;/*工号*/
charname[20];//名字
charxingbie[15];//性别
intage;//年龄
charxueli[10];//学历
intwage;//工资
charaddress[80];//住址
chartelephone[20];//电话号码
};
structworkerwork[100];
intmain(void)
{inti,k=0;//i代表之后循环点的次数k代表循环次数,本程序中,错误超过三次,会退出系统。
charusers[50],mima[30];//定义用户名,密码。
system("color5f");//设置背景颜色。
printf("\n\n\n\n");
printf("\t\t\t\t┃************************************************************┃\n");
printf("\t\t\t\t┃**┃\n");
printf("\t\t\t\t┃**┃\n");
printf("\t\t\t\t┃**┃\n");
printf("\t\t\t\t┃**┃\n");
printf("\t\t\t\t┃*欢迎使用*┃\n");
printf("\t\t\t\t┃*职工信息管理系统*┃\n");
printf("\t\t\t\t┃**┃\n");
printf("\t\t\t\t┃**┃\n");
printf("\t\t\t\t┃**┃\n");
printf("\t\t\t\t┃**┃\n");
printf("\t\t\t\t┃**┃\n");
printf("\t\t\t\t┃************************************************************┃\n");
for(i=0;i<3;i++)
{
printf("\n请输入用户名:
");
gets(users);
printf("\n请输入密码:
");
gets(mima);
if((strcmp(users,"dong")==0)&&(strcmp(mima,"19981226")==0))
{
printf("\n您已经成功登录");
for(i=0;i<20;i++)
{
printf(".");
Sleep(100);
}
system("cls");
mainhome();
break;
}
k++;
if(k<3)
{
printf("\n用户名或密码无效请重新输入:
\n");
}
if(k==3)
{
printf("\n连续输入错误3次将退出程序\n");
Sleep(2000);
exit(0);
}
}
}
voidmainhome()
{
intn;
printf("\n\n\n\n");
printf("\t\t\t\t┃************************************************************┃\n");
printf("\t\t\t\t┃***┃\n");
printf("\t\t\t\t┃*1.录入员工资料*2.显示员工资料*┃\n");
printf("\t\t\t\t┃***┃\n");
printf("\t\t\t\t┃************************************************************┃\n");
printf("\t\t\t\t┃***┃\n");
printf("\t\t\t\t┃*3.员工信息查询*4.员工信息排序*┃\n");
printf("\t\t\t\t┃***┃\n");
printf("\t\t\t\t┃************************************************************┃\n");
printf("\t\t\t\t┃***┃\n");
printf("\t\t\t\t┃*5.删除/修改记录*0.退出信息系统*┃\n");
printf("\t\t\t\t┃***┃\n");
printf("\t\t\t\t┃************************************************************┃\n");
printf("\n请选择:
");structworker*m;m=work;
scanf("%d",&n);
switch(n)
{
case1:
input(work);
break;
case2:
display(m);
break;
case3:
chazhao(work);
break;
case4:
paixu(work);
break;
case5:
shanchu(work);
break;
case0:
left();
break;
}
}
voidinput(structworkerwork[100])
{
inti;
FILE*irry;//定义一个文件指针
if((irry=fopen("C:
\\20171008189董吉华\\fl2-1.txt","a+"))==NULL)
{
printf("sorry,I’merror:
\n");
exit(0);
}
for(i=0;i<100;i++)
{
if(!
feof(irry))
{
fscanf(irry,"\t%lf\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",&work[i].number,work[i].name,work[i].xingbie,
&work[i].age,work[i].xueli,&work[i].wage,work[i].address,work[i].telephone);
}
else
break;
}
intk=i;
system("cls");
charc;
printf("员工工号:
\n");
scanf("%lf",&work[k].number);
for(i=0;i{
if(work[k].number<0)
printf("请输入正整数:
\n");intm=0;
for(m=0;m<4;m++)
{
if(work[i].number==work[k].number)
{
printf("该职工号和之前%d员工相同,请重新输入:
\n",i+1);
printf("员工工号:
\n");
scanf("%lf",&work[k].number);
if(work[i].number!
=work[k].number)
break;
if(work[i].number==work[k].number&&m<3)
{
printf("该职工号和之前%d员工相同,请重新输入:
\n",i+1);
printf("员工工号:
\n");
scanf("%lf",&work[k].number);
}
if(m>=4);
exit(0);
}
}
}
printf("姓名:
\n");
scanf("%s",work[k].name);
printf("性别(F:
M):
\n");
scanf("%s",work[k].xingbie);
printf("年龄:
\n");
scanf("%d",&work[k].age);
printf("学历(中专,大专,本科,硕士,博士,其它):
\n");
scanf("%s",work[k].xueli);
printf("工资:
\n");
scanf("%d",&work[k].wage);
printf("住址:
\n");
scanf("%s",work[k].address);
printf("电话:
\n");
scanf("%s",work[k].telephone);
printf("\n是否继续输入(y/n):
\n");
fprintf(irry,"%.0f\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",work[k].number,work[k].name,work[k].xingbie,work[k].age,
work[k].xueli,work[k].wage,work[k].address,work[k].telephone);
if(fclose(irry))
{
printf("sorry,Icannotclose!
!
\n");
exit(0);
}
do
{
c=getchar();
if(c=='y'||c=='Y')
{
if(k<100)
{
input(work);
}
else
{
printf("记录数已满\n");
Sleep(2000);
system("cls");
mainhome();
}
}
elseif(c=='n'||c=='N')
{
system("cls");
mainhome();
}
else;
}while((c!
='y')&&(c!
='n')&&(c!
='Y')&&(c!
='N'));
}
voiddisplay(structworker*ab)
{
FILE*read;
if((read=fopen("C:
\\20171008189董吉华\\fl2-1.txt","r+"))==NULL)
{
print