《C语言系统设计》正文.docx

上传人:b****4 文档编号:5968344 上传时间:2023-05-09 格式:DOCX 页数:29 大小:29.97KB
下载 相关 举报
《C语言系统设计》正文.docx_第1页
第1页 / 共29页
《C语言系统设计》正文.docx_第2页
第2页 / 共29页
《C语言系统设计》正文.docx_第3页
第3页 / 共29页
《C语言系统设计》正文.docx_第4页
第4页 / 共29页
《C语言系统设计》正文.docx_第5页
第5页 / 共29页
《C语言系统设计》正文.docx_第6页
第6页 / 共29页
《C语言系统设计》正文.docx_第7页
第7页 / 共29页
《C语言系统设计》正文.docx_第8页
第8页 / 共29页
《C语言系统设计》正文.docx_第9页
第9页 / 共29页
《C语言系统设计》正文.docx_第10页
第10页 / 共29页
《C语言系统设计》正文.docx_第11页
第11页 / 共29页
《C语言系统设计》正文.docx_第12页
第12页 / 共29页
《C语言系统设计》正文.docx_第13页
第13页 / 共29页
《C语言系统设计》正文.docx_第14页
第14页 / 共29页
《C语言系统设计》正文.docx_第15页
第15页 / 共29页
《C语言系统设计》正文.docx_第16页
第16页 / 共29页
《C语言系统设计》正文.docx_第17页
第17页 / 共29页
《C语言系统设计》正文.docx_第18页
第18页 / 共29页
《C语言系统设计》正文.docx_第19页
第19页 / 共29页
《C语言系统设计》正文.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《C语言系统设计》正文.docx

《《C语言系统设计》正文.docx》由会员分享,可在线阅读,更多相关《《C语言系统设计》正文.docx(29页珍藏版)》请在冰点文库上搜索。

《C语言系统设计》正文.docx

《C语言系统设计》正文

目录

1.实训题目…………………………………………………………1

2.系统的功能与目标………………………………………………1

3.系统设计的必要性………………………………………………3

4.系统运行的环境…………………………………………………2

5.系统设计…………………………………………………………3

5.1模块结构………………………………………………………

5.2模块说明………………………………………………………

5.3程序(代码)清单……………………………………………

6.实训总结………………………………………………………..

7.参考文献…………………………………………………………

 

1.实训题目

职工管理系统

2.系统的功能与目标

2.1功能:

当用户运行系统时,展现给用户的功能界面,用户可从此界面选择功能号,来实现其想要的功能。

2.2目标:

本次课程实训须运用如下知识:

数组,结构体或共用体;指针;选择结构程序设计,循环结构程序设计;自定义函数及其调用;简单的文件操作。

基于C语言设计出一个职工管理系统。

3.系统设计的必要性

C语言课程实训是将所学的专业理论知识运用于实践的过程。

通过编程来解决实际问题,培养独立解决问题的能力和理论联系实际的能力,为后续课程的学习、毕业设计、乃至走向社会打好基础。

4.系统运行的环境

MicrosoftVisualC++

5.系统设计

5.1模块结构

5.1.1入口函数

5.1.2展示系统功能菜单

5.1.3创建员工库

5.1.4每一条员工数据的缓存

5.1.5向原有员工库添加信息

5.1.6返回原有库中所有员工的记录

5.2模块说明

5.2.1入口函数

函数名:

main()

参数说明:

功能:

提供应用系统运行的入口

返回类型:

void

备注说明:

在此函数中调用menu(),向用户展示系统功能菜单。

5.2.2展示系统功能菜单

函数名:

menu()

参数说明:

功能:

向用户展示系统功能菜单

返回类型:

void

备注说明:

每个功能菜单前加阿拉伯数字,来提示用户根据数字选择菜单功能。

5.2.3创建员工库

函数名:

build()

功能:

根据用户输入的员工的人数及每个员工的信息,缓存采用struct来处理,当用户输入完毕后,把缓存的信息一次性存储到文件worker.data中。

返回类型:

void

备注说明:

在menu()函数中调用此函数

5.2.4每一条员工数据的缓存

函数名:

input(inti)

参数说明:

i,员工的记录编号(也即结构体数组的索引编号)

功能:

把用户在屏幕上输入的每个员工的信息存入对应的结构体数组中,此时结构体起到一个缓存的作用。

返回类型:

void

备注说明:

在build()函数或add()函数中调用此函数

5.2.5向原有员工库添加信息

函数名:

add()

参数说明:

功能:

向原有员工库添加新的员工信息

返回类型:

void

备注说明:

在menu()函数中调用此函数,在menu()中判断,当用户选择数字”2”的时候,通过此函数来完成在职员工信息的增加

5.2.6返回原有库中所有员工的记录数

函数名:

load()

参数说明:

功能:

把文件中的员工数据都读取出来存储到缓存中(即结构体数组中)

返回类型:

int,如果返回值得

备注说明:

在add()函数中调用此函数,以确定当前库的记录条数。

5.3程序代码

#include

#include

#include

#defineN100

//---------声明变量--------------------------------------------------

typedefstruct{

intnum;

charname[10];

intsex;

charage[7];

charwdate[7];

intedu;

intzw;

charzhengzhi[10];

charaddress[30];

}employee;//存储职工信息的一个结构

employeeem[N],s;

inttotal;

intp;

voidmenu();

voidbuild();

voidinput(inti);

input_num();

voiddisplay();

intmodify_data(int);

voidsave(intn);

voidprintf_face();

voidprintf_one(intk);

voidprintf_back();

intload();

voiddel();

voidadd();

voidchange();

voidsname();

voids_name();

voidorder();

voidbrowse();

voidquit();

voiddaochu();

//-----------------------函数声明---------------------------------------

/**********************************************************************/

/*函数名:

main()***/

/*参数说明:

无***/

/*功能:

提供应用系统运行的入口***/

/*返回类型:

void***/

/*作者:

王苗苗***/

/**********************************************************************/

voidmain()

{

menu();

}

//-----------------------------------------------------------------------

/**********************************************************************/

/*函数名:

menu()***/

/*参数说明:

无***/

/*功能:

向用户展示系统功能菜单***/

/*返回类型:

void***/

/*作者:

王苗苗***/

/**********************************************************************/

voidmenu()

{

inta=0;

charinput='y';

while(input=='y'||input=='Y')

{

printf("\n");

printf("功能菜单\n");

printf("\n");

printf("0.创建并初始化员工信息库\n");

printf("\n");

printf("1.删除员工信息\n");

printf("\n");

printf("2.添加员工信息\n");

printf("\n");

printf("3.依据姓名检索员工信息\n");

printf("\n");

printf("4.检索所有员工信息\n");

printf("\n");

printf("5.修改员工信息\n");

printf("\n");

printf("6.员工信息排序\n");

printf("\n");

printf("7.退出系统\n");

printf("\n");

printf("\t请输入一个编号:

[]\b\b");

scanf("%d",&a);

switch(a){

case0:

build();//输入职工信息

break;

case1:

del();//删除一个职工信息

break;

case2:

add();//添加一个职工信息

break;

case3:

sname();//依据姓名检索一个职工信息

break;

case4:

browse();//检索一个职工信息

break;

case5:

change();//修改职工信息

break;

case6:

order();//员工信息排序

break;

case7:

quit();//退出系统

break;

printf("谢谢您的使用\n");

return;

default:

printf("你的输入错误\n");

}

printf("是否继续管理?

(y/n)");

scanf("%s",&input);

}

if(input=='N'||input=='n')

{

printf("输入完毕,回车键返回\n");

getchar();

return;

}

}

//---------------------------------------------------------------------------

/**********************************************************************/

/*函数名:

build()***/

/*参数说明:

无***/

/*功能:

根据用户输入的员工的人数及每个员工的信息,缓存采用

struct来处理,当用户输入完毕后,把缓存的信息一次性

存储到文件worker.data中。

***/

/*返回类型:

void***/

/*作者:

王苗苗***/

/**********************************************************************/

voidbuild()

{

FILE*fp;

inti=0,total,j;

printf("请输入员工人数(0-%d):

[]\b\b",N);

scanf("%d",&total);

for(i=0;i

{

input(i);

}

if((fp=fopen("employee.txt","w"))==NULL)

{

printf("打开文件出错!

\n");

exit(0);

}

else{

for(j=0;j

{

fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%d\t%s\t%s\n",em[j].num,em[j].name,em[j].sex,em[j].age,em[j].wdate,em[j].edu,em[j].zw,em[j].zhengzhi,em[j].address);

}

printf("****导出成功(另存为employee.txt)****\n");

if(fclose(fp))

{

printf("关闭文件出错!

\n");exit(0);

}

}

}

//-----------------------------------------------------------------------------

voidquit()

{

printf("谢谢使用本系统!

");

}

//-----------------------------------------------------------------------------

/**********************************************************************/

/*函数名:

input(inti)***/

/*参数说明:

i,员工的记录编号(也即结构体数组的索引编号)***/

/*功能:

把用户在屏幕上输入的每个员工的信息存入对应的结构体数组中,

此时结构体起到一个缓存的作用。

***/

/*返回类型:

void***/

/*作者:

王苗苗***/

/**********************************************************************/

voidinput(inti)

{charm,y,n;

printf("第%d个职工\n",i+1);

printf("\n");

printf("工号:

\n");

scanf("%d",&em[i].num);

printf("\n");

printf("姓名:

\n");

scanf("%s",em[i].name);

printf("\n");

printf("性别:

\n");

printf("1.男2.女\n");

scanf("%d",&em[i].sex);

printf("\n");

printf("年龄:

\n");

scanf("%s",em[i].name);

printf("\n");

printf("入职时间:

(如1986-10)\n");

scanf("%s",em[i].wdate);

printf("\n");

printf("学历:

\n");

printf("1.小学2.初中3.高中\n4.大学5.研究生6.博士\n");

scanf("%d",&em[i].edu);

printf("\n");

printf("职位:

\n");

printf("1.董事长2.部门经理3.秘书\n4.技术员5.领班6.员工\n");

scanf("%d",&em[i].zw);

printf("\n");

printf("政治面貌:

\n");

scanf("%s",em[i].zhengzhi);

printf("\n");

printf("地址:

\n");

scanf("%s",em[i].address);

printf("是否继续输入?

(y/n)\n");

scanf("%s",&m);

if(m==y){

daochu();

}

else

menu();

}

//-----------------------------------------------------------------------------voiddisplay()

{

FILE*fp;

inti;

if((fp=fopen("employee.txt","rb"))==NULL)return;

printf("输出结果:

\n");

printf("工号姓名性别年龄入职时间学历职位政治面貌地址\n");

printf("\n");

for(i=0;fread(&em[i],sizeof(employee),1,fp)!

=0;i++)

{

printf("%-6s",em[i].num);

printf("%-10s",em[i].name);

printf("%-10d",em[i].sex);

printf("%-10s",em[i].age);

printf("%-10s",em[i].wdate);

printf("%-10d",em[i].edu);

printf("%-10d",em[i].zw);

printf("%-10s",em[i].zhengzhi);

printf("%-30s\n",em[i].address);

}

printf("完毕,按回车键返回\n");

getchar();

fclose(fp);

return;

}

//-----------------------------------------------------------------------------

/**********************************************************************/

/*函数名:

add()***/

/*参数说明:

无***/

/*功能:

向原有员工库添加新的员工信息***/

/*返回类型:

void***/

/*作者:

王苗苗***/

/**********************************************************************/

voidadd()//添加一个职工信息

{

inti,m,n,k,p,j;

FILE*fp;

n=load();

if(n==-1)

menu();

printf("输入要增加的员工数(0-%d):

[]\b\b\b",N-n);

scanf("%d",&m);

k=m+n;

for(i=n;i

printf("输入第%d个员工记录:

\n",i++);

input(i);

if((fp=fopen("employee.txt","a+"))==NULL)

{

printf("\n\t\t员工库打开失败!

\n");

return;

}

for(p=0;p

{

fprintf(fp,"%d\t%s\t%s\t%d\t%s\t%d\t%d\t%s\t%s\n",em[j].num,em[j].name,em[j].sex,em[j].age,em[j].wdate,em[j].edu,em[j].zw,em[j].zhengzhi,em[j].address);

}

fclose(fp);

}

//-----------------------------------------------------------------------------

voiddel()//删除一个职工信息

{

inti=0,tag=0;

chardelname[10];

FILE*fp;

printf("要删除的人的姓名:

\n");

scanf("%s",delname);

for(i=0;i

{

if(strcmp(em[i].name,delname)==0)

{

tag=1;

total--;

for(;i

em[i]=em[i+1];

}//把删除的数据以后的数据向前移一位

}

if(tag==0){

printf("没有此员工!

\n");

getchar();

return;

}

if((fp=fopen("employee.dat","wb"))==NULL)

{

printf("打开文件错误\n");

printf("按回车键返回\n");

getchar();

return;

}

i=0;

fwrite(&em[i],sizeof(employee),total,fp);

fclose(fp);

}

//-----------------------------------------------------------------------------voidsname(){

inti,n,k,p,em1=1,em2,em3,em4;

n=load();

do{

k=-1;

printf("\n\n请输入要检索的姓名!

\n\t\t姓名:

[]\b\b");

scanf("%s",s.name);

for(i=0;i

if(strcmp(s.name,em[i].name)==0)

{

k=1;

printf_one(k);

break;

}

if(k==-1){

printf("\n\n此人员不存在!

");

printf("\n\n要继续操作吗?

\n\t\t\t1\t继续\n\t\t\t2\t取消检索并返回功能菜单\n\t\t[]\b\b");

scanf("%d",&em1);

if(em1==1)

{

sname();

break;

}

if(em1==2){

menu();

break;

}

}

}

while(k==-1&&em1==1);

em4=0;

em3=0;

if(k!

=-1)

printf("\n想要进行操作:

\n\t\t1\t检索其它员工信息\n\t\t2\t修改员工信息\n\t\t3\t删除员工信息\n\t\t4\t返回主菜单\n\t\t");

scanf("%d",&em2);

switch(em2){

case1:

sname();

break;

case2:

em3=modify_data(k);

break;

case3:

{

printf("\n确定删除吗?

\n\t\t1\t确定\n\t\t2\t取消检索并返回功能菜单\n\t\t[]\b\b");

scanf("%d",&em4);

em[p]=em[p+1];

break;

}

case4:

menu();

break;

}

if(em3==1||em4==1){

save(n);

printf("操作成功!

");

printf("\n想要进行的操作?

\n\t\t1\t检索其它员工数据\n\t\t2\t返回功能菜单\n\t\t");

scanf("%d",&em2);

}

while(em2==1);

menu();

}

modify_data(intk)

{

intc,em1,j;

do

{

printf("%s\t%s\t%d\t%s\t%s\t%d\t%d\t%s\t%s\n","\n要修改的属性:

\n\t\t1\t编号\n\t\t2\t姓名\n\t\t3\t性别\n\t\t4\t职务\n\t\t5\t年t6\t学历\n\t\t7\t入职时间\n\t\t8\t政治面貌\n\t\t9\t地址\n\t\t");

scanf("%d",&c);

if(c>10||c<1)

printf("选择要修改的内容");

getchar();

}

while(c>10||c<1);

do{

switch(c){

case1:

printf("\n已有编号为:

%s",em[j].num,"

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2