ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:199.26KB ,
资源ID:3583516      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3583516.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言实训报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言实训报告.docx

1、C语言实训报告实训报告题 目: 职工管理系统院 系: 信息科技学院专 业: 通信工程姓 名: 学 号: 指导教师: 日 期: 2009.09.18 桂林电子科技大学信息科技学院目 录1 问题定义 32 系统设计 321 总体设计 322 详细设计 42.2.1 数据结构设计 42.2.2 主控流程 52.2.3 修改职工信息 62.2.4 浏览添加信息 .62.2.5 退出系统 62.2.6函数功能描述 . 63 系统实现 73.1 编码 73.1.1 程序预处理 .73.1.2 主菜单函数menu() .83.1.3 录入职工信息 .103.1.4 浏览职工信息.113.1.5 添加职工信息

2、.113.1.6 查询职工信息 . 123.1.7 修改职工信息.143.1.8 保存职工信息 . 153.1.9 主函数main().173.2 测试与调试 173.2.1 概述 . 173.2.2 程序测试 . 184 系统维护 215 归纳总结 215.1 开发经验 215.2 实训中遇到的问题及解决方法 225.3 设计中的不足之处 225.4 感想和心得体会 226 参考资料 22职工管理系统本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的基本操作。本课程设计是一个实用的小型职工管理系统程序,它要求用数组和指针共同完成,以实现职工信息的录入、修改、查询

3、、浏览、添加等操作;使学生能对C语言的操作有一个更深刻的了解,为进一步学好编程打下坚实的基础。1、问题定义创建一个职工管理系统,并通过密码进入系统。假设系统中每个员工记录包括职工号,姓名,性别,年龄、学历、工资、住址、电话等信息。及职工信息的录入、修改、查询、浏览、添加等程序的运行效果如下图所示,选择任意菜单后,实现相应功能。在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。2、系统设计21 总体设计采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容

4、易理解。从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。 图2.1 职工管理系统功能选项图如图2.1所示,它的组成如下: 录入职工信息。完成将职工信息的存入。从键盘逐个输入学生记录。职工记录由职工的基本信息字段构成。 修改职工信息。完成职工基本信息的修改与保存。 查询职工信息。完成对职工信息的查找。可按职工姓名和职工号查询。 浏览信息。完成所有职工信息的浏览,以列表形式显示。 添加信息。完成新员工信息的添加。 退出系统。 2.2 详细设计2.2.1数据结构设计 定义数据结构体struct people /*定义数据结构*/ char num100; char name1

5、5; char sex20; char age20; char xueli20; char gongzhi20; char address20; char telephone20; peopleN;这样就定义了一个单链表的结构,结构体struct people将用于存储职工的基本信息,它将作为单链表的数据结构。2.2.2 主控main()函数执行流程本职工管理系统执行主流程如图2.2所示。先执行显示主菜单和进入主循环操作,调用menu函数,先输入密码,若密码正确则进入下一个程序;若密码不正确则继续输入,但是只能输入3次。输入正确密码后,进行按键判断。在判断键值时,有效的输入为本1至6之间的任意

6、数值,其他输入都被视为错误按键。若输入为1,它会继续判断,调用enter()函数,进入录入职工信息界面,录入完毕,系统会自动进行存盘操作后再根据用户选择执行浏览信息或是返回主菜单操作界面。若输入为2,则调用modify()函数,执行修改职工信息操作;若输入为3,则调用search()函数,执行查询职工信息操作,可按姓名和职工号来进行相应的查询;若输入为4,则调用browse()函数,执行浏览职工信息的操作;若输入为5,则调用add()函数,执添加职工信息操作;若输入为6,则退出职工管理系统,输入记录模块输入记录模块主要实现将数据存入单链表中。若该文件中没有数据,系统会提示单链表为空,没有任何职

7、工信息记录可操作,此时,用户应选择1,调用enter()函数,进行职工信息的输入,即完成在单链表l中添加记录的操作。值得一提的是,这里的字符串和数值的输入分别采用了函数来实现,在函数中完成输入数据任务,并对数据进行条件判断,直到满足条件为止,这样一来,大大减少了代码的重复和冗余,符合模块化程序设计的特点。2.2.3 修改职工信息此模块主要实现了对职工信息的修改。可以选择用户所需要修改的基本信息,查询职工信息查询记录模块主要实现了在单链表中按职工姓名和学号查找满足相关条件的职工信息。在用户选择3,调用查询函数search()。2.2.4 浏览添加信息 输入或修改完毕后可对所有职工信息进行浏览。输

8、入5可选择添加职工信息。完善更多的职工信息。2.2.5 退出系统 所有操作完毕即可选择退出系统操作。2.2.6 函数功能描述 void browse()在该程序中用于对职工信息的浏览。 void add()在该函数中用于添加新的职工信息。 void search()在该函数中用于查找职工的职工号和姓名,从而找到该员工的基本信息。 void modify在该函数中用于修改职工的基本信息。 save(int n)在该函数中用于保存职工的基本信息。 void chack_No(int i)在该函数中用于检查所输入职工号是否存在。 int load()在该函数中用于读入职工信息。 void menu主

9、菜单界面。 主函数main()整个职工管理系统控制部分。完成在上述系统设计后,即可着手进行系统实现的工作,开始程序代码的编写。3、系统实现31 编码3.1.1 程序预处理包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。#include /*字符串函数*/#include /*标准输入输出函数库*/#include /*标准函数库*/#include /*屏幕操作函数*/#include /*标准输入输出流偷文件*/#define N 100 /*宏定义*/struct people /*定义数据结构*/ char num100; char name15; char sex20;

10、 char age20; char xueli20; char gongzhi20; char address20; char telephone20; peopleN;void input(int i);void enter();void browse();void add();void search();void modify(); void save(int n);int load(); int modify_data(int i); void printf_face(); void printf_back(); void printf_one(int i); void menu();

11、void chack_No(int i);3.1.2 主菜单界面menu()menu()函数主要实现了对整个程序的运行控制,以及相关功能模块的调用。用户进入成绩管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。此代码被main()函数调用。详细分析可参考图2。void menu() /*界面*/ int w1; char password7=123456; /*密码检验*/ char s7; int flag=0; int n=3; do printf(请你输入密码:n); scanf(%s,s); if(!strcmp(s,password) printf(恭喜你成功登陆了nnn)

12、; flag=1; break; else printf(输入有错误请重新输入:n); n-; while(n0); 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(t 1 录入职工信息 n); printf(t 2 修改职工信息 n); printf(t 3 查询职工信息(姓名/职工号) n); printf(t 4 浏览信息 n); printf(t 5

13、 添加信息 n); printf(t 6 退出系统 n); printf(t n); printf(t *谢谢您的使用*n); printf(t请选择(1-6): bb); scanf(%d,&n); if(n6) w1=1; else w1=0; while(w1=1); switch(n) case 1:enter();break; case 2:modify();break; case 3:search();break; case 4:browse();break; case 5:add();break; case 6:exit(0); /*结束程序*/ void chack_No(in

14、t i) /*检查输入职工号是否存在*/if(i0) for(int k=0;ki;k+) if(strcmp(peoplek.num,peoplei.num)=0) cout您输入的职工号已存在,请更换号码!endl; coutpeoplei.num; chack_No(i); break; 3.1.3录入职工信息 void input(int i) printf(职工号:); scanf(%s,peoplei.num); chack_No(i);printf(姓名:); scanf(%s, peoplei.name) ; printf(性别:); scanf(%s,peoplei.sex)

15、; printf(年龄:); scanf(%s,peoplei.age); printf(学历:); scanf(%s,peoplei.xueli); printf(工资:); scanf(%s,peoplei.gongzhi); printf(住址:); scanf(%s,peoplei.address); printf(电话:); scanf(%s,peoplei.telephone); void enter() int i,n; printf(请输入人数(0-%d) :,N-1); scanf(%d,&n); printf(n 录入信息n); for(i=0;in;i+) printf(

16、n 请输入第%d个人的信息.,i+1); input(i); if(i!=0)save(n); printf_back(); 3.1.4浏览职工信息void browse() int i,n; n=load(); printf_face(); for(i=0;in;i+) if(i!=0)&(i%10=0) printf(nn按任意键继续.); getch(); puts(nn); printf_one(i) ; printf(t共有%d条记录.n,n); printf(n按任意键继续.); getch(); menu(); 3.1.5 添加职工信息void add() int i,n,m,k

17、; FILE*fp; n=load(); printf(你想添加的人数为(0-%d):,N-1-n); scanf(%d,&m); k=m+n; for(i=n;ik;i+) printf(n输入第%d个人的信息.,i-n+1 ); input(i); if(fp=fopen(Pro.txt,ab)=NULL) printf(文件打开失败!n); for(i=n;ik;i+) if(fwrite(&peoplei,sizeof(struct people),1,fp)!=1) printf(文件写入失败!n); fclose(fp); printf_back(); 3.1.6 查询职工信息vo

18、id search() int i,n,k,w1=1,w2,w3,w4,m,a; struct people p; n=load(); do printf(n选择你要查询的方式 nt1).按姓名 2).按职工号 bb); scanf(%d,&m); switch(m) case 1: do k=-1; printf(nn请输入你要查询的姓名:); scanf(%s,p.name); printf_face(); for(i=0;in;i+) if(strcmp(p.name,peoplei.name)=0) /*按姓名查询*/ k=i; printf_one(k); break; if(k=-

19、1) printf(nn你输入的姓名不存在!); printf(nn你想继续查询吗?nt 1).是 2).否 bb); scanf(%d,&w1); if(w1=2) printf_back(); while(k=-1&w1=1); break; case 2: do k=-1; printf(nn请输入你要查询的职工号:); scanf(%s,p.num); printf_face(); for(i=0;in;i+) if(strcmp(p.num,peoplei.num)=0) /*按职工号查询*/ k=i; printf_one(k);break; if(k=-1) printf(nn你

20、输入的职工号不存在!); printf(nn你想继续查询吗?nt1).是 2).否 bb); scanf(%d,&w1); if(w1=2) printf_back(); while(k=-1&w1=1); break; w4=0;w3=0; if(k!=-1) printf(nn请选择你要进行的操作:nt 1).查询 2).修改 3).删除 4).返回主菜单 bb); scanf(%d,&w2); switch(w2) case 2: w3=modify_data(k); break; case 3: printf(n你确定要删除吗?nt 1).是 2).否 bb); scanf(%d,&w

21、4); if(w4=1) for(a=k;an;a+) strcpy(peoplea.num,peoplea+1.num); strcpy(peoplea.name,peoplea+1.name); strcpy(peoplea.sex,peoplea+1.sex); strcpy(peoplea.age,peoplea+1.age); strcpy(peoplea.xueli,peoplea+1.xueli); strcpy(peoplea.gongzhi,peoplea+1.gongzhi); strcpy(peoplea.address,peoplea+1.address); strcp

22、y(peoplea.telephone,peoplea+1.telephone); break; if(w3=1|w4=1) save(n); printf(nn操作成功! _ ); printf(nn请输入你要进行的操作: nt 1).继续查询 2).返回上一级 bb ); scanf(%d,&w2); while(w2=1); menu(); 3.1.7 修改职工信息void modify() /*修改数据函数*/struct people p; int i,n,k,w0=1,w1,w2=0; n=load(); do k=-1; printf_face(); for(i=0;in;i+)

23、 if(i!=0)&(i%10=0) printf(nn请记着你要修改的职工号。按任意键继续 .); getch(); puts(nn); printf_one(i); do printf(nn请输入你要修改的职工信息的职工号:); scanf(%s,p.num); for(i=0;in;i+) if(strcmp(p.num,peoplei.num)=0) k=i; p=peoplei; if(k=-1)printf(nn你的输入有误,请从新输入); while(k=-1); printf_face(); printf_one(k); w1=modify_data(k);if(w1=1) p

24、rintf(n操作成功! _.n是否继续修改?nnt 1).是 2).否t bb); scanf(%d,&w0); w2=1; else w0=0; if(w2=1) peoplek=p; if(w0!=1&w2=1) save(n); while(w0=1); menu(); 3.1.8保存职工信息到文件void save(int n) FILE *fp; int i; if(fp=fopen(Pro.txt,wb)=NULL) /*打开文件*/printf(n文件打开失败!n); for(i=0;in;i+) if(peoplei.num!=0) if(fwrite(&peoplei,sizeof(struct people),1,fp)!=1) printf(文件写入失败!n); fclose(fp); /*关闭文件*/int load() /*读入函数*/FILE *fp; int i; if(fp=fopen(Pr

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

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