c语言课程方案设计书职工信息管理系统Word文档下载推荐.docx
《c语言课程方案设计书职工信息管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言课程方案设计书职工信息管理系统Word文档下载推荐.docx(32页珍藏版)》请在冰豆网上搜索。
此程序是根据本校情况和老师指导所编写,用以解决教师对学生成绩的添加、修改、删除以及学生对其成绩的查询等工作。
2.2开发工具介绍
VisualC++VisualC++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。
虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。
所以实际中,更多的是以VisualC++6.0为平台。
VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境。
VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。
这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。
VisualC++它大概可以分成三个主要的部分:
1.DeveloperStudio。
2.MFC。
3.PlatformSDK。
[1]
三、总体设计
3.1总体思想
本系统主要的设计思想是实现对职工信息的录入、删除、排序、查询等主要功能。
职工信息以文件的形式存储。
系统的人机接口采用简单的字符界面进行交互。
系统的设计方法是结构化设计方法,采用C语言进行开发。
软件开发平台采用VisualC++6.0,主要考虑在VC中可以使用中文,用户交互界面设计比较美观清晰。
3.2软件模块结构图
根据需求分析结果,职工信息管理系统可以分为显示员工资料、录入员工资料、员工信息查询、删除员工信息、员工信息排序、退出信息系统。
如图3-1所示。
图3-1
3.3系统流程图
3.3.1主函数
3.3.2显示函数
3.3.3录入函数
3.3.4查询函数
3.3.5删除函数
3.3.6排序函数
四、详细设计和系统实施
4.1数据结构设计
4.1.1定义数组
定义一维数组structworkerwork[50]。
用于定义员工的总人数,当员工总人数超过50后便不能再录入员工资料。
4.1.2定义结构体
结构体structworker用于存放存放员工的资料,包括员工的基本信息:
工号,姓名,年龄,学历,工资,住址,电话号码。
structworker
{
intnum。
工号
charname[15]。
名字
charxingbie。
性别
intage。
年龄
charexp[6]。
学历
intwage。
工资
charaddress[20]。
住址
chartel[12]。
电话号码
}。
intcount=0。
当前工人个数
intsort_type=0。
当前排序类型
4.1.3函数功能描述
函数主界面:
voidhomepage()。
显示职工成绩信息:
voiddisplay()。
录入职工信息信息:
voidinput()。
删除职工信息:
voiddel()。
查询职工信息:
voidfind()。
排序职工信息:
voidsort()。
用户等待函数:
voidwaiting()。
退出系统函数:
voidquit()。
4.2界面设计
4.2.1用户登录界面
此模块用于欢迎界面,同时要求用户输入用户名和密码,只有当两者都正确时,才能进入到系统,当有三次错误,系统就会自动退出,如图4-1所示。
图4-1
代码实现:
voidmain()
{inti=0,k=0。
charusername[15],pwd[6]。
for(i=0。
i<
3。
i++)
{
printf("
\n请输入用户名:
"
)。
gets(username)。
printf("
\n请输入6位密码:
gets(pwd)。
if((strcmp(username,"
admin"
)==0)&
&
(strcmp(pwd,"
123456"
)==0))
\n您已经成功登录"
k=1。
for(i=0。
20。
."
Sleep(100)。
}
system("
cls"
homepage()。
break。
else
\n用户名或密码无效请重新输入:
\n"
continue。
if(k==0)
\n连续输入错误3次将退出程序\n"
Sleep(2000)。
quit()。
}
在此模块中,if((strcmp(username,"
Admin"
)==0)),用于检测用户名和密码是否正确。
此段代码用于获取账户名和密码并计数是否超过三次,超过三次,则有Sleep(2000)。
实现退出程序。
4.2.2主界面
此模块主要实现进入主界面和根据用户需要进入相应界面,包括显示界面,录入界面,删除界面,排序界面并可以选择退出,如图4-2所示:
图4-2
代码实现
voidhomepage()
charn。
while((n!
='
1'
)&
(n!
2'
3'
4'
5'
0'
))
\n请选择:
fflush(stdin)。
scanf("
%c"
&
n)。
switch(n)
case'
:
display()。
if(count<
50)input()。
{printf("
记录数已满\n"
break。
……
此模块中,switch(n),case()用于判定主界面的选项,根据选项进行设置。
其中if(count<
50)用于限制录入员工的人数,超过50名员工就无法再进行录入,并且直接通过sleep(2000)。
homepage()回到主界面上。
4.2.3显示界面
此模块是用来显示员工的资料信息的,包括工号,姓名,性别,年龄,学历,工资,住址,电话等基本信息,一边管理员能够及时的掌握到所要员工的资料。
如图4-3所示。
图4-3
voiddisplay()
inti。
charc。
printf("
备注:
学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):
\n\n\n"
switch(sort_type)
case0:
\t\t未排序:
\n\n"
case1:
\t\t按工号排序:
//sort()。
break。
case2:
\t\t按工资排序:
\t工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"
此模块中有三种显示方式,第一种是无序显示,就是按照录入时的顺序显示,,还有两种分别是是按照工号和工资来排序。
后两种显示方式主要是有switch(sort_type)语句来实现的,它相当于一个开关,与下面的case()相对应,相括号中的数字相对应时,就会执行相应的语句。
4.2.4录入界面
这个模块主要是录入员工资料,录入的顺序如图所示,当录入的员工人数满到50后,便不能再进行录入员工资料,此时已经达到了录入人数的最大值。
如图4-4所示。
图4-4
voidinput()
{inti,numcheck。
do
{printf("
工号:
%d"
work[count].num)。
numcheck=1。
if(work[count].num<
0)
请输入正整数:
count。
if(work[count].num==work[i].num)
{numcheck=0。
工号重复,重新输入:
do
c=getchar()。
if(c=='
y'
||c=='
Y'
)
count++。
此模块中if(work[count].num==work[i].num);
numcheck=0。
很是重要,它判定录入的工号是否重复,重复的话会有重新输入的提示,避免职工信息的重复。
当记录数已满时,通过sleep(2000),使之回到主界面,进行其他选项设置。
4.2.5信息查询界面
此模块用于职工信息的查询,共分为两种查询方式,一是按工号查询,二是按学历查询。
用if函数来实现,可快速查询到职工的姓名、工号、学历、电话等详细信息。
如图4-5所示。
图4-5
voidfind()
inti,j。
intchoice=0。
intfind_num。
charfindedu[6]。
\t\t请选择查询功能:
\t1.按工号查询\n"
\t2.按学历查询\n"
请输入选择:
scanf("
choice)。
}while((choice!
=1)&
(choice!
=2))。
if(choice==1)
\n\t请输入要查询的职工号\n"
find_num)。
\n正在查询,请稍候"
system("
\n\n按任意键返回\n"
c=getch()。
此模块中,通过while((choice!
这个选择来实现查询的方式,选择“1”为工号查询,选择“2”则为按学历查询。
if(find_num==work[i].num)即为根据职工号进行查询,strcmp(findedu,work[i].exp)根据学历进行职工信息查询。
4.2.6删除界面
此模块用于删除员工信息,对于已经无用的员工信息进行删除,采用按工号删除的模式。
如图4-6所示。
图4-6
voiddel()
inti,j,del_num,match=0。
请输入要删除的员工工号:
del_num)。
waiting()。
if(work[i].num==del_num)
match=1。
for(j=i。
j<
j++)
work[j]=work[j+1]。
count--。
此模块中,首先还是要先进职工信息查询模块,然后再根据查询到的职工号进行删除。
即为显示要删除的职工号,if(c=='
)则是确定是否删除选定的职工信息。
最后通过homepage()回到主界面。
五、遇到的问题及解决办法
1.在一些字符或字符串的定义上出项错误,如定义职工电话号码的时候,用成了float类型,而正确的应该是char类型。
2.在进行模块函数设计时,find()函数功能没有设计好,导致部分函数代码过长,可读性降低,以至于再次重写里面的一小部分代码,浪费了大量的时间。
3.在整个程序设计编写完成后,编译时出现了大量的错误,而且里面大部分是因为大小写问题,还有void拼错拼成viod,还有“;
”没有写,后来经过程序错误查询,一一更改了过来。
4.在编写代码时没有添加注解,降低了在调试测试时程序的可读性,同时也降低了与其他同学的交流,虽然在测试过程中我把全部的注解加上,但也延长了整个程序的开发时间。
六、课程设计总结
通过此次学生成绩信息管理系统,让我熟悉了软件开发的流程,相信在以后的工作中我能在最短的时间内投入到大的程序开发工程中。
在进行课程设计的前两天,不知道从何入手,很是不解,不知道我们究竟要做什么。
后来通过上网找资料,才发现有好多做法,根本就看不完,此时才真正意识到差距所在。
于是,通过借鉴网络作品,才发现作品并不是一味的照搬照抄才实用,集众家之所成,不断完善,才能造出属于自己的作品,并且实用。
在整个课程设计中,我认为最重要的就是耐心和细心。
细心,就是在编写过程中注意拼写,仔细编写程序;
耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。
虽然在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设计的经历让我学到了太多,同时也让我理解到参加的工程越大越能学到知识,因此以后我会积极主动的去参加一些工程,以此来提高自己的技能和编程经验。
七、参考文献
【1】.《实用c语言简明教程》李金祥、顾小晶主编
【2】.《c++语言程序设计》,刘振安,刘燕君,孙忱,机械工业出版社;
【3】.《C语言程序设计一体化案例教程》,刘维富,清华大学出版社;
【4】.《C语言课程设计》,黄明,梁旭,万洪莉,电子工业出版。
附录(源程序代码)
#include<
stdio.h>
string.h>
windows.h>
conio.h>
//主界面
//显示全部信息
//录入插入
//删除记录
//排序
//等待界面
//退出界面
//工号
//名字
//性别
//年龄
charexp[6]。
//学历
intwage。
//工资
charaddress[20]。
//住址
//电话号码
//当前工人个数
//当前排序类型
structworkerwork[50]。
color3f"
\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"
\t┃**********************************************************┃\n"
\t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n"
\t┃***┃************************************************┃***┃\n"
\t┃***┃*******┃***┃\n"
\t┃***┃***欢迎使用职工信息管理系统****┃***┃\n"
\t┃***┃***郝佳丽****┃***┃\n"
\t┃***┃***2011.06.20****┃***┃\n"
\t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\n"
\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"
for(i=0。
\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"
\t┃************************************************************┃\n"
\t┃***┃\n"
\t┃*1.显示员工资料*2.录入员工资料*┃\n"
\t┃*3.员工信息查询*4.删除员工记录*┃\n"
\t┃*5.员工信息排序*0.退出信息系统*┃\n"
\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"
case'
50)
input()。
printf("
find()。
case'
del()。
break。
sort()。
default:
\n选项错误\n"
v