C语言实训报告.docx

上传人:b****4 文档编号:3583516 上传时间:2022-11-24 格式:DOCX 页数:27 大小:199.26KB
下载 相关 举报
C语言实训报告.docx_第1页
第1页 / 共27页
C语言实训报告.docx_第2页
第2页 / 共27页
C语言实训报告.docx_第3页
第3页 / 共27页
C语言实训报告.docx_第4页
第4页 / 共27页
C语言实训报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C语言实训报告.docx

《C语言实训报告.docx》由会员分享,可在线阅读,更多相关《C语言实训报告.docx(27页珍藏版)》请在冰豆网上搜索。

C语言实训报告.docx

C语言实训报告

实训报告

 

题目:

职工管理系统

院系:

信息科技学院

专业:

通信工程

姓名:

学号:

指导教师:

日期:

2009.09.18

 

桂林电子科技大学信息科技学院

目录

1问题定义………………………………………………………………………3

2系统设计………………………………………………………………3

2.1总体设计…………………………………………………………………………3

2.2详细设计…………………………………………………………………………4

2.2.1数据结构设计……………………………………………………4

2.2.2主控流程……………………………………………………………………5

2.2.3修改职工信息………………………………………………………………6

2.2.4浏览添加信息…………………………………………………….……6

2.2.5退出系统……………………………………………………………………6

2.2.6函数功能描述……………………………………………….……………6

3系统实现………………………………………………………………7

3.1编码…………………………………………………………………7

3.1.1程序预处理……….………………………………………………………7

3.1.2主菜单函数menu()……….……………………………………………8

3.1.3录入职工信息………….…………………………………………………10

3.1.4浏览职工信息…….…………………………………………………………11

3.1.5添加职工信息…….…………………………………………………………11

3.1.6查询职工信息……….……………………………………………………12

3.1.7修改职工信息………….……………………………………………………14

3.1.8保存职工信息………….…………………………………………………15

3.1.9主函数main()………….……………………………………………………17

3.2测试与调试…………………………………………………………………17

3.2.1概述………….………………………………………………………17

3.2.2程序测试………….………………………………………………………18

4系统维护…………………………………………………………………21

5归纳总结………………………………………………………………21

5.1开发经验…………………………………………………………………21

5.2实训中遇到的问题及解决方法…………………………………………22

5.3设计中的不足之处………………………………………………………………22

5.4感想和心得体会………………………………………………………………22

6参考资料………………………………………………………………22

 

职工管理系统

本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的基本操作。

本课程设计是一个实用的小型职工管理系统程序,它要求用数组和指针共同完成,以实现职工信息的录入、修改、查询、浏览、添加等操作;使学生能对C语言的操作有一个更深刻的了解,为进一步学好编程打下坚实的基础。

1、问题定义

创建一个职工管理系统,并通过密码进入系统。

假设系统中每个员工记录包括职工号,姓名,性别,年龄、学历、工资、住址、电话等信息。

及职工信息的录入、修改、查询、浏览、添加等程序的运行效果如下图所示,选择任意菜单后,实现相应功能。

在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。

2、系统设计

2.1总体设计

采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。

需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。

从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。

图2.1职工管理系统功能选项图

如图2.1所示,它的组成如下:

●录入职工信息。

完成将职工信息的存入。

从键盘逐个输入学生记录。

职工记录由职工的基本信息字段构成。

●修改职工信息。

完成职工基本信息的修改与保存。

●查询职工信息。

完成对职工信息的查找。

可按职工姓名和职工号查询。

●浏览信息。

完成所有职工信息的浏览,以列表形式显示。

●添加信息。

完成新员工信息的添加。

●退出系统。

2.2详细设计

2.2.1数据结构设计

●定义数据结构体

structpeople/*定义数据结构*/

{

charnum[100];

charname[15];

charsex[20];

charage[20];

charxueli[20];

chargongzhi[20];

charaddress[20];

chartelephone[20];

}people[N];

这样就定义了一个单链表的结构,结构体structpeople将用于存储职工的基本信息,它将作为单链表的数据结构。

2.2.2主控main()函数执行流程

 

 

本职工管理系统执行主流程如图2.2所示。

先执行显示主菜单和进入主循环操作,调用menu函数,先输入密码,若密码正确则进入下一个程序;若密码不正确则继续输入,但是只能输入3次。

输入正确密码后,进行按键判断。

在判断键值时,有效的输入为本1至6之间的任意数值,其他输入都被视为错误按键。

若输入为1,它会继续判断,调用enter()函数,进入录入职工信息界面,录入完毕,系统会自动进行存盘操作后再根据用户选择执行浏览信息或是返回主菜单操作界面。

若输入为2,则调用modify()函数,执行修改职工信息操作;

若输入为3,则调用search()函数,执行查询职工信息操作,可按姓名和职工号来进行相应的查询;

若输入为4,则调用browse()函数,执行浏览职工信息的操作;

若输入为5,则调用add()函数,执添加职工信息操作;

若输入为6,则退出职工管理系统,输入记录模块

输入记录模块主要实现将数据存入单链表中。

若该文件中没有数据,系统会提示单链表为空,没有任何职工信息记录可操作,此时,用户应选择1,调用enter()函数,进行职工信息的输入,即完成在单链表l中添加记录的操作。

值得一提的是,这里的字符串和数值的输入分别采用了函数来实现,在函数中完成输入数据任务,并对数据进行条件判断,直到满足条件为止,这样一来,大大减少了代码的重复和冗余,符合模块化程序设计的特点。

2.2.3修改职工信息

此模块主要实现了对职工信息的修改。

可以选择用户所需要修改的基本信息,查询职工信息

查询记录模块主要实现了在单链表中按职工姓名和学号查找满足相关条件的职工信息。

在用户选择3,调用查询函数search()。

2.2.4浏览添加信息

输入或修改完毕后可对所有职工信息进行浏览。

输入5可选择添加职工信息。

完善更多的职工信息。

2.2.5退出系统

所有操作完毕即可选择退出系统操作。

2.2.6函数功能描述

●voidbrowse()

在该程序中用于对职工信息的浏览。

●voidadd()

在该函数中用于添加新的职工信息。

●voidsearch()

在该函数中用于查找职工的职工号和姓名,从而找到该员工的基本信息。

●voidmodify

在该函数中用于修改职工的基本信息。

●save(intn)

在该函数中用于保存职工的基本信息。

●voidchack_No(inti)

在该函数中用于检查所输入职工号是否存在。

●intload()

在该函数中用于读入职工信息。

●voidmenu

主菜单界面。

●主函数main()

整个职工管理系统控制部分。

完成在上述系统设计后,即可着手进行系统实现的工作,开始程序代码的编写。

3、系统实现

3.1编码

3.1.1程序预处理

包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。

#include/*字符串函数*/

#include/*标准输入输出函数库*/

#include/*标准函数库*/

#include/*屏幕操作函数*/

#include/*标准输入输出流偷文件*/

#defineN100/*宏定义*/

structpeople/*定义数据结构*/

{

charnum[100];

charname[15];

charsex[20];

charage[20];

charxueli[20];

chargongzhi[20];

charaddress[20];

chartelephone[20];

}people[N];

voidinput(inti);

voidenter();

voidbrowse();

voidadd();

voidsearch();

voidmodify();

voidsave(intn);

intload();

intmodify_data(inti);

voidprintf_face();

voidprintf_back();

voidprintf_one(inti);

voidmenu();

voidchack_No(inti);

3.1.2主菜单界面menu()

menu()函数主要实现了对整个程序的运行控制,以及相关功能模块的调用。

用户进入成绩管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。

此代码被main()函数调用。

详细分析可参考图2。

voidmenu()/*界面*/

{

intw1;

charpassword[7]="123456";/*密码检验*/

chars[7];

intflag=0;

intn=3;

do

{

printf("请你输入密码:

\n");

scanf("%s",s);

if(!

strcmp(s,password))

{

printf("恭喜你成功登陆了\n\n\n");

flag=1;

break;

}

else

{

printf("输入有错误请重新输入:

\n");

n--;

}

}while(n>0);

if(!

flag)

{

printf("你的输入次数已到再见\n");

}

do

{

printf("\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");

printf("\t\n");

printf("\t******您好,欢迎进入职工管理系统******\n");

printf("\t☆0851100307刘静☆\n");

printf("\t\n");

printf("\t*******************************************************\n");

printf("\t1录入职工信息\n");

printf("\t2修改职工信息\n");

printf("\t3查询职工信息(姓名/职工号)\n");

printf("\t4浏览信息\n");

printf("\t5添加信息\n");

printf("\t6退出系统\n");

printf("\t\n");

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

printf("\t请选择(1-6):

[]\b\b");

scanf("%d",&n);

if(n<1||n>6)

w1=1;

elsew1=0;

}

while(w1==1);

switch(n)

{

case1:

enter();break;

case2:

modify();break;

case3:

search();break;

case4:

browse();break;

case5:

add();break;

case6:

exit(0);/*结束程序*/

}

}

voidchack_No(inti)/*检查输入职工号是否存在*/

{

if(i>0)

{

for(intk=0;k

{

if(strcmp(people[k].num,people[i].num)==0)

{

cout<<"您输入的职工号已存在,请更换号码!

"<

cout<<"职工号:

";

cin>>people[i].num;

chack_No(i);

break;

}

}

}

}

3.1.3录入职工信息

voidinput(inti)

{

printf("职工号:

");

scanf("%s",people[i].num);

chack_No(i);

printf("姓名:

");

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

printf("性别:

");

scanf("%s",people[i].sex);

printf("年龄:

");

scanf("%s",people[i].age);

printf("学历:

");

scanf("%s",people[i].xueli);

printf("工资:

");

scanf("%s",people[i].gongzhi);

printf("住址:

");

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

printf("电话:

");

scanf("%s",people[i].telephone);

}

voidenter()

{

inti,n;

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

",N-1);

scanf("%d",&n);

printf("\n录入信息\n");

for(i=0;i

{

printf("\n请输入第%d个人的信息.",i+1);

input(i);

}

if(i!

=0)save(n);

printf_back();

}

3.1.4浏览职工信息

voidbrowse()

{

inti,n;

n=load();

printf_face();

for(i=0;i

{

if((i!

=0)&&(i%10==0))

{

printf("\n\n按任意键继续....");

getch();

puts("\n\n");

}

printf_one(i);

}

printf("\t共有%d条记录.\n",n);

printf("\n按任意键继续...");

getch();

menu();

}

3.1.5添加职工信息

voidadd()

{

inti,n,m,k;

FILE*fp;

n=load();

printf("你想添加的人数为(0-%d):

",N-1-n);

scanf("%d",&m);

k=m+n;

for(i=n;i

{

printf("\n输入第%d个人的信息.",i-n+1);

input(i);

}

if((fp=fopen("Pro.txt","ab"))==NULL)

{

printf("文件打开失败!

\n");

}

for(i=n;i

if(fwrite(&people[i],sizeof(structpeople),1,fp)!

=1)

printf("文件写入失败!

\n");

fclose(fp);

printf_back();

}

3.1.6查询职工信息

voidsearch()

{

inti,n,k,w1=1,w2,w3,w4,m,a;

structpeoplep;

n=load();

do

{

printf("\n选择你要查询的方式\n\t1).按姓名2).按职工号[]\b\b");

scanf("%d",&m);

switch(m)

{

case1:

do

{

k=-1;

printf("\n\n请输入你要查询的姓名:

");

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

printf_face();

for(i=0;i

if(strcmp(p.name,people[i].name)==0)/*按姓名查询*/

{

k=i;

printf_one(k);

break;

}

if(k==-1)

{

printf("\n\n你输入的姓名不存在!

");

printf("\n\n你想继续查询吗?

\n\t1).是2).否[]\b\b");

scanf("%d",&w1);

if(w1==2)

printf_back();

}

}while(k==-1&&w1==1);

break;

case2:

do

{

k=-1;

printf("\n\n请输入你要查询的职工号:

");

scanf("%s",p.num);

printf_face();

for(i=0;i

if(strcmp(p.num,people[i].num)==0)/*按职工号查询*/

{

k=i;

printf_one(k);break;

}

if(k==-1)

{

printf("\n\n你输入的职工号不存在!

");

printf("\n\n你想继续查询吗?

\n\t1).是2).否[]\b\b");

scanf("%d",&w1);

if(w1==2)

printf_back();

}

}while(k==-1&&w1==1);

break;

}

w4=0;w3=0;

if(k!

=-1)

{

printf("\n\n请选择你要进行的操作:

\n\t1).查询2).修改3).删除4).返回主菜单[]\b\b");

scanf("%d",&w2);

switch(w2)

{

case2:

w3=modify_data(k);

break;

case3:

printf("\n你确定要删除吗?

\n\t1).是2).否[]\b\b");

scanf("%d",&w4);

if(w4==1)

for(a=k;a

{

strcpy(people[a].num,people[a+1].num);

strcpy(people[a].name,people[a+1].name);

strcpy(people[a].sex,people[a+1].sex);

strcpy(people[a].age,people[a+1].age);

strcpy(people[a].xueli,people[a+1].xueli);

strcpy(people[a].gongzhi,people[a+1].gongzhi);

strcpy(people[a].address,people[a+1].address);

strcpy(people[a].telephone,people[a+1].telephone);

}

break;

}

if(w3==1||w4==1)

{

save(n);

printf("\n\n操作成功!

^_^");

printf("\n\n请输入你要进行的操作:

\n\t1).继续查询2).返回上一级[]\b\b");

scanf("%d",&w2);

}

}

}

while(w2==1);

menu();

}

3.1.7修改职工信息

voidmodify()/*修改数据函数*/

{

structpeoplep;

inti,n,k,w0=1,w1,w2=0;

n=load();

do

{

k=-1;

printf_face();

for(i=0;i

{if((i!

=0)&&(i%10==0))

{printf("\n\n请记着你要修改的职工号。

按任意键继续...");

getch();

puts("\n\n");

}

printf_one(i);

}

do

{printf("\n\n请输入你要修改的职工信息的职工号:

");

scanf("%s",p.num);

for(i=0;i

if(strcmp(p.num,people[i].num)==0)

{k=i;

p=people[i];

}

if(k==-1)printf("\n\n你的输入有误,请从新输入");

}while(k==-1);

printf_face();

printf_one(k);

w1=modify_data(k);

if(w1==1)

{printf("\n操作成功!

^_^.\n是否继续修改?

\n\n\t1).是2).否\t[]\b\b");

scanf("%d",&w0);

w2=1;

}

else

{w0=0;

if(w2==1)

people[k]=p;

}

if(w0!

=1&&w2==1)

save(n);

}while(w0==1);

menu();

}

3.1.8保存职工信息到文件

voidsave(intn)

{FILE*fp;

inti;

if((fp=fopen("Pro.txt","wb"))==NULL)/*打开文件*/

{printf("\n文件打开失败!

\n");

}

for(i=0;i

if(people[i].num!

=0)

if(fwrite(&people[i],sizeof(structpeople),1,fp)!

=1)

printf("文件写入失败!

\n");

fclose(fp);/*关闭文件*/

}

intload()/*读入函数*/

{FILE*fp;

inti;

if((fp=fopen("Pr

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

当前位置:首页 > 求职职场 > 简历

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

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