c语言职工信息管理系统
c语言课程设计职工信息管理系统

c语言课程设计职工信息管理系统一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握基本数据类型、运算符、控制语句的使用;2. 学会使用C语言进行模块化编程,了解函数的定义、调用和参数传递;3. 了解结构体类型及其应用,掌握结构体数组的创建和使用;4. 理解文件操作的基本概念,掌握文件的读写方法。
技能目标:1. 能够运用C语言设计并实现一个职工信息管理系统,具备基本的编程能力;2. 能够运用结构体和文件操作,实现数据的存储和读取;3. 能够通过模块化编程,提高代码的可读性和可维护性;4. 学会使用调试工具,分析和解决程序中的错误。
情感态度价值观目标:1. 培养学生主动探究、积极思考的学习态度,增强解决问题的信心和兴趣;2. 培养学生的团队合作意识,学会与他人共同分析和解决问题;3. 通过编程实践,使学生认识到计算机编程在现实生活中的应用价值,激发学习计算机科学的兴趣。
本课程针对高年级学生,他们已具备一定的编程基础,能理解较为复杂的概念。
课程性质为实践性较强的学科,要求学生通过动手实践,将理论知识应用于实际项目中。
课程目标旨在培养学生具备独立设计、编程和调试程序的能力,提高学生的编程水平和实际问题解决能力。
通过本章节学习,学生将能够掌握C语言在实际项目中的应用,为后续深入学习计算机科学奠定基础。
二、教学内容1. C语言基本语法与结构复习:回顾数据类型、变量、常量、运算符、控制语句(包括循环和分支)等基本概念,巩固学生的语法基础。
相关教材章节:第一章至第四章2. 函数与模块化编程:介绍函数的定义、声明、调用,参数传递,以及模块化编程思想。
相关教材章节:第五章3. 结构体与结构体数组:讲解结构体的定义和使用,结构体数组的创建和管理。
相关教材章节:第六章4. 文件操作:阐述文件的概念,文件的打开、读写、关闭等基本操作。
相关教材章节:第十章5. 职工信息管理系统设计:a. 需求分析:明确系统功能,包括职工信息的增加、删除、修改和查询等。
c语言职工信息管理系统

目录一、课程设计目的 (3)二、设计题目分析 (3)2.1题目简介 (3)2.2设计要求 (3)三、课程设计内容 (3)3.1总体设计 (3)3.2详细设计 (4)3.3调试与测试 (12)四、设计心得与总结: (13)五、附录(完整源程序清单) (14)一、课程设计目的通过亲自设计程序,可以令我们熟悉c语言操作,更熟练的掌握c语句。
初步体会编程的过程,为将来的程序深入学习打下基础和培养兴趣。
二、设计题目分析2.1 题目简介可以向文件中写入、删除、添加职工信息,也可以从文件中导出来浏览2.2 设计要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计职工信息管理系统,使之能提供以下功能:系统以菜单方式工作。
职工信息录入功能(职工信息用文件保存)--输入职工信息浏览功能--输出查询和排序功能:(至少一种查询方式) --算法按职工号查询按学历查询等职工信息删除、添加功能三、课程设计内容3.2 详细设计:1、主函数:main()显示系统工作菜单,罗列该系统所有功能。
先声明所有将会调用到的函数名。
再运用选择函数switch即可根据使用者所输入的功能代号进入对应的功能程序。
亮点:定义一个全局指针变量*p和全局变量a。
其中a表示当前系统中职工人数,p指向a的地址,追踪人数变化,这样在添加或者删除导致人数变化后,浏览函数display()能够正确显示出当前人数的职工信息。
宏定义define N指定首次输入的职工人数,可根据不同需要随时更改。
3、保存函数:void save(int m)定义文件指针fp,用fopen"只写"打开指定在D盘的“d://bbb.txt”文本文件。
首先用if语句判断文件是否打开成功,若fopen返回值不为0,则可继续下面操作。
用for循环通过fprintf语句将结构数组em中的内容写入保存在D盘的文本文件里面。
形参m指需要写入文件的职工人数。
职工信息管理系统c语言

职工信息管理系统c语言职工信息管理系统C语言职工信息管理系统是一种用于管理企业职工信息的软件系统。
它可以帮助企业管理者更好地管理职工信息,包括职工的个人信息、工作信息、薪资信息等。
C语言是一种广泛应用于系统开发的编程语言,因此在开发职工信息管理系统时,C语言是一种非常适合的编程语言。
职工信息管理系统的开发需要考虑以下几个方面:1. 界面设计职工信息管理系统需要有一个良好的界面设计,使得用户可以方便地使用系统。
界面设计需要考虑到用户的使用习惯和操作习惯,使得用户可以快速地完成各种操作。
2. 数据库设计职工信息管理系统需要有一个数据库来存储职工信息。
数据库设计需要考虑到数据的完整性和安全性,以及数据的查询和统计功能。
3. 功能设计职工信息管理系统需要具备一些基本的功能,如添加、删除、修改、查询职工信息等。
此外,还需要具备一些高级功能,如薪资计算、考勤管理等。
4. 安全性设计职工信息管理系统需要具备一定的安全性,以防止数据泄露和非法操作。
安全性设计需要考虑到用户权限管理、数据备份和恢复等方面。
在使用C语言开发职工信息管理系统时,需要注意以下几个方面:1. 代码规范C语言是一种底层语言,代码的规范性对于系统的稳定性和可维护性非常重要。
因此,在开发过程中需要遵循一定的代码规范,如变量命名规范、代码缩进规范等。
2. 内存管理C语言需要手动管理内存,因此在开发过程中需要注意内存的分配和释放,以防止内存泄露和内存溢出等问题。
3. 错误处理C语言开发过程中可能会出现各种错误,如语法错误、运行时错误等。
因此,在开发过程中需要注意错误的处理,以保证系统的稳定性和可靠性。
总之,职工信息管理系统是一种非常实用的软件系统,可以帮助企业管理者更好地管理职工信息。
C语言是一种非常适合开发职工信息管理系统的编程语言,但在开发过程中需要注意代码规范、内存管理和错误处理等方面。
c语言-职工信息管理系统

1.设计目的设计目的是:1) 为了能够方便的对职工的信息进行管理,对职工信息进行输入、排序、查找、删除、修改等功能的实现。
2) 基本掌握面向过程程序设计的基本思路和方法,达到熟练掌握C语言的基本知识和技能,能够利用所学的基本知识和技能,解决简单的程序设计问题。
3) 培养了上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,掌握如何使用面向过程的计算机语言进行程序设计的基本方法,强化上机动手能力,闯过编程关,为后续各门计算机课程的学习打下坚实基础。
2.总体设计该系统包括数据录入、排序、删除、查询、修改等功能模块,每个模块在程序系统中用一个函数来实现,系统总体框图如图1所示。
图1 系统框图3.详细设计1)结构体数组struct staff:建立结构体数组来存放职工号、姓名、年龄、学历等;2)数据输出函数output:输出所输入的数据;3)数据输入函数intput:输入相关的数据;4)修改函数modify:对职工信息进行修改,然后输出;5)查询函数search:输入一个工号,输出其信息;6)删除函数delete:按输入的工号删除该职工,然后输出剩余职工的信息;7)主函数main:编辑出菜单,对各个函数进行调用,实现各项功能;4.程序调试程序调试正常。
5.源程序清单(1)源程序:#include<stdio.h>struct staff{char name[8];char num[10];char sex[10];char age[10];char record[10];char position[15];char wanges[10];char tel[15];char addr[50];}worker; /*定义一个结构体*/char filename[20]; /*文件名*/ FILE *fp;void creat(); /*定义一个创建函数*/void output(); /*定义一个输出信息的函数*/ void search(); /*定义一个查询的函数*/void append(); /*定义一个添加函数*/void modify(); /*定义一个修改函数*/void delete(); /*定义一个删除函数*/void exit();/*定义一个输出函数*/void main() /*主函数*/{int m;creat(); /*先调用creat函数*/while(1){printf("\n\n添加,请按1");printf("\n查找,请按2");printf("\n修改,请按3");printf("\n删除,请按4");printf("\n输出,请按5");printf("\n退出,请按0\n"); /*输出提示信息*/ scanf("%d",&m);if(m>=0&&m<=5){switch(m){case 1: append();break;case 2: search();break;case 3: modify();break;case 4: delete();break;case 5: output();break;case 0: exit();}printf("\n\n操作完毕,请再次选择!");}elseprintf("\n\n选择错误,请再次选择!");}}void creat() /*被调用的creat函数*/{struct staff one;printf(" ———————《职工信息管理系统》———————");printf("∣☆☆管理工程系电子商务专业☆☆∣");printf("∣→☆☆☆Maxwei☆☆☆←∣");printf(" -————————————————————————");printf("\n请输入保存员工信息的文件名:");scanf("%s",filename); /*创建一个文件的名字*/if((fp=fopen(filename,"w"))==NULL) /*打开文件,实现向文件输入数据*/{printf("\n不能建立!");exit();}fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n","姓名","工号","性别","年龄","学历","职位","工资","电话号码","住址");printf("\n请输入职工信息(以0结束)\n");printf("姓名:\n");scanf("%s",);while(strcmp(,"0")){printf("工号:\n");scanf("%s",one.num);printf("性别:\n");scanf("%s",one.sex);printf("年龄:\n");scanf("%s",one.age);printf("学历:\n");scanf("%s",one.record);printf("职位:\n");scanf("%s",one.position);printf("工资:\n");scanf("%s",one.wanges);printf("电话:\n");scanf("%s",one.tel);printf("住址:\n");scanf("%s",one.addr); /*输出职工的相关信息*/fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.num,one.sex,one.age,on e.record,one.position,one.wanges,one.tel,one.addr);scanf("%s",);}fclose(fp); /*关闭文件*/}void output() /*输出函数*/{struct staff one;if((fp=fopen(filename,"r"))==NULL) /*打开文件*/{printf("\n不能打开该文件!");exit();}printf("\n\n%20s\n","职工信息管理系统");/*向文件输入数据*/while(!feof(fp)){fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",,one.num,one.sex,one.age,one.record,one.position,o ne.wanges,one.tel,one.addr);printf("%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.num,one.sex,one.age,one.re cord,one.position,one.wanges,one.tel,one.addr);}fclose(fp);/*关闭文件*/}void append() /*添加函数*/{struct staff one;if((fp=fopen(filename,"a"))==NULL) /*打开文件*/{printf("\n不能打开该文件!");exit();}printf("\n请输入添加职工信息(姓名、工号、性别、年龄、学历、职位、工资、电话、地址)\n");/*向文件中输入数据*/scanf("%s%s%s%s%s%s%s%s%s",,one.num,one.sex,one.age,one.record,one.position,one.wan ges,one.tel,one.addr);fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.num,one.sex,one.age,on e.record,one.position,one.wanges,one.tel,one.addr);fclose(fp); /*关闭文件*/}void search() /*查询函数*/{int k=0;char namekey[8];struct staff one;printf("\n请输入您要查找的职工姓名:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/{printf("\n不能打开文件!");exit();}while(!feof(fp)){fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",,one.num,one.sex,one.age,one.record,one.position,o ne.wanges,one.tel,one.addr);if(!strcmp(namekey,)){printf("\n\n已查到,记录为:");printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.num,one.sex,one.age,one. record,one.position,one.wanges,one.tel,one.addr);k=1;}}if(!k)printf("\n\n对不起,查无此人!。
C语言程序设计-职工信息管理系统JJY

C语言程序设计题目名称职工信息管理系统学生姓名学号学院目录1.总体设计方案 (2)2. 开发平台 (6)3. 遇到的问题及解决 (7)4.使用说明及运行实例 (8)5.课程设计总结 (14)6 . 参考文献 (14)6.项目源程序代码 (15)总体设计方案一.系统的总体流程图查询函数主流程图按职工号查询流程图按学历查询流程图二. 为了方便使用结构此系统结构均为全局类型定义struct employee //定义一个职工信息的结构体{int num;char name[10];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];}em[100];三.模块的功能和实现1.按职工号查询模块可以按职工号来查询职工的相关信息,通过自己定义的void search_num()函数来实现。
2.按职工的的学历查询模块可以按职工的学历来查询职工的相关信息,通过自己定义的void search_xuelil函数来实现。
3.按职工的电话号码查询模块可以按职工的电话来查询职工的相关信息,通过自己定义的void search_tel 函数来实现。
开发平台Win7 Visual C++遇到的问题及解决1.在一些字符或字符串的定义上出项错误,如定义职工电话号码的时候,用成了float类型,而正确的应该是char类型。
2.在整个程序设计编写完成后,编译时出现了大量的错误,而且里面大部分是因为大小写问题,还有void拼错拼成viod,还有“;”没有写,后来经过程序错误查询,一一更改了过来。
3. 在编写代码时没有添加注解,降低了在调试测试时程序的可读性,同时也降低了与其他同学的交流,虽然在测试过程中我把全部的注解加上,但也延长了整个程序的开发时间。
使用说明及运行实例1.运行程序,进入职工信息管理系统的主菜单:图1:进入主菜单界面2.输入数字“1”进行录入职工信息:图2:录入职工信息3.输入“y”返回主菜单(界面同图1)。
c语言课程设计职工信息管理系统

c语言课程设计职工信息管理系统一、教学目标本课程的教学目标是使学生掌握C语言职工信息管理系统的基本概念、设计和实现方法。
通过本课程的学习,学生应能理解职工信息管理系统的需求分析、系统设计、编码实现和测试评估等环节,掌握C语言编程的基本技能,并培养解决实际问题的能力。
具体来说,知识目标包括:掌握职工信息管理系统的功能模块及其相互关系;理解C语言的数据类型、运算符、控制结构、函数等基本语法;了解软件工程的基本原理和方法。
技能目标包括:能够使用C语言独立完成职工信息管理系统的设计和实现;具备基本的调试和优化代码的能力;能够进行团队合作,合理分工,共同完成项目。
情感态度价值观目标包括:培养学生对计算机科学的兴趣和热情,提高他们对编程学习的自信心;培养学生具备良好的编程习惯和团队协作精神,增强他们的责任感和使命感。
二、教学内容本课程的教学内容主要包括以下几个部分:1.职工信息管理系统的基本概念和架构:介绍职工信息管理系统的功能模块,如职工信息录入、查询、修改和删除等,以及各模块之间的关系。
2.C语言基础知识:讲解C语言的数据类型、运算符、控制结构、函数等基本语法。
3.软件工程方法:介绍需求分析、系统设计、编码实现、测试评估等软件工程基本原理和方法。
4.职工信息管理系统的实现:通过实际编码,讲解如何使用C语言实现职工信息管理系统的各个功能模块。
5.调试与优化:教授如何使用调试工具对代码进行调试,以及如何对代码进行优化,提高系统性能。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:讲解C语言的基本语法和职工信息管理系统的设计原理。
2.案例分析法:分析实际案例,使学生更好地理解职工信息管理系统的实现过程。
3.实验法:安排实验课程,让学生亲自动手编写代码,实现职工信息管理系统。
4.小组讨论法:学生进行小组讨论,分享学习心得,互相答疑解惑。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:《C语言程序设计》等。
c语言课程设计职工信息管理系统

c语言课程设计职工信息管理系统一、教学目标本节课的教学目标是使学生掌握C语言编程的基本技能,能够使用C语言设计一个简单的职工信息管理系统。
具体目标如下:1.知识目标:使学生掌握C语言的基本语法、数据类型、运算符、控制结构等基本知识。
2.技能目标:使学生能够使用C语言编写程序,实现对职工信息的增删改查功能。
3.情感态度价值观目标:培养学生对计算机编程的兴趣,使学生认识到计算机编程在实际生活中的重要性。
二、教学内容本节课的教学内容主要包括以下几个部分:1.C语言基本语法和数据类型。
2.运算符和控制结构。
3.职工信息管理系统的设计与实现。
4.程序调试和优化。
三、教学方法为了达到本节课的教学目标,我们将采用以下教学方法:1.讲授法:讲解C语言的基本语法、数据类型、运算符和控制结构。
2.案例分析法:通过分析职工信息管理系统的案例,使学生掌握系统设计的方法。
3.实验法:让学生动手编写程序,实现职工信息的管理。
4.讨论法:分组讨论,引导学生思考如何优化程序。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》。
2.参考书:《C语言编程实践》。
3.多媒体资料:讲解C语言语法和程序设计的视频教程。
4.实验设备:计算机、编程环境。
5.在线编程平台:用于学生在线编写和调试程序。
五、教学评估本节课的教学评估将采取多元化评价方式,全面公正地评价学生的学习成果。
评估方式包括:1.平时表现:通过课堂参与、提问、小组讨论等环节,评估学生的学习态度和积极性。
2.作业:布置相关的编程作业,评估学生的编程能力和对知识的掌握程度。
3.考试:安排一次课程结束考试,测试学生对C语言和职工信息管理系统设计的全面理解。
4.项目展示:学生分组设计并展示自己的职工信息管理系统,评估学生的实际操作能力和团队协作能力。
评估标准将根据课程目标和教学内容制定,确保评估的客观性和公正性。
六、教学安排本节课的教学安排将根据课程目标和学生的实际情况进行设计,确保在有限的时间内达到最佳教学效果。
c语言职工信息管理系统课程设计

c语言职工信息管理系统课程设计一、教学目标本课程的教学目标是使学生掌握C语言职工信息管理系统的基本概念、设计与实现。
通过本课程的学习,学生应达到以下知识目标:1.理解C语言的基本语法和数据结构。
2.掌握职工信息管理系统的需求分析和系统设计。
3.学会使用C语言实现职工信息管理系统的功能。
4.能够使用C语言进行程序设计。
5.能够独立完成职工信息管理系统的需求分析和系统设计。
6.能够使用C语言实现职工信息管理系统的功能并调试程序。
情感态度价值观目标:1.培养学生对计算机科学的兴趣和热情。
2.培养学生独立思考、解决问题的能力。
3.培养学生团队协作、沟通的能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、职工信息管理系统的需求分析和系统设计,以及C语言实现职工信息管理系统的方法。
1.C语言的基本语法:数据类型、变量、运算符、表达式、语句等。
2.数据结构:数组、链表、栈、队列等。
3.职工信息管理系统的需求分析:系统功能、数据流图、实体关系图等。
4.职工信息管理系统的系统设计:模块划分、模块功能、接口设计等。
5.C语言实现职工信息管理系统:代码编写、调试与优化。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言的基本语法、数据结构和职工信息管理系统的相关知识,使学生掌握基本概念。
2.案例分析法:分析实际案例,使学生了解职工信息管理系统的需求分析和系统设计的过程。
3.实验法:让学生动手编写C语言代码,实现职工信息管理系统的功能,培养学生的实际操作能力。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的C语言教材,为学生提供系统、全面的学习资料。
2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作课件、视频等多媒体资料,提高课堂教学效果。
4.实验设备:提供计算机、编程环境等实验设备,确保学生能够进行实际操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录一、课程设计目的 (3)二、设计题目分析 (3)题目简介 (3)设计要求 (3)三、课程设计内容 (3)总体设计 (3)详细设计 (4)~调试与测试 (12)四、设计心得与总结: (13)五、附录(完整源程序清单) (14)《(…一、课程设计目的通过亲自设计程序,可以令我们熟悉c语言操作,更熟练的掌握c语句。
初步体会编程的过程,为将来的程序深入学习打下基础和培养兴趣。
二、设计题目分析2.1 题目简介可以向文件中写入、删除、添加职工信息,也可以从文件中导出来浏览2.2 设计要求$职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计职工信息管理系统,使之能提供以下功能:系统以菜单方式工作。
职工信息录入功能(职工信息用文件保存)--输入职工信息浏览功能--输出查询和排序功能:(至少一种查询方式) --算法按职工号查询按学历查询等职工信息删除、添加功能'三、课程设计内容3.2 详细设计:1、主函数:main()(显示系统工作菜单,罗列该系统所有功能。
先声明所有将会调用到的函数名。
再运用选择函数switch即可根据使用者所输入的功能代号进入对应的功能程序。
亮点:定义一个全局指针变量*p和全局变量a。
其中a表示当前系统中职工人数,p指向a的地址,追踪人数变化,这样在添加或者删除导致人数变化后,浏览函数display()能够正确显示出当前人数的职工信息。
宏定义define N指定首次输入的职工人数,可根据不同需要随时更改。
)3、保存函数:void save(int m))定义文件指针fp,用fopen"只写"打开指定在D盘的“,若fopen返回值不为0,则可继续下面操作。
用for循环通过fprintf语句将结构数组em中的内容写入保存在D盘的文本文件里面。
形参m指需要写入文件的职工人数。
最后关闭文件。
4、导出函数:void load(int b)首先判断fopen"只读"打开“,若其返回值不为零,继续下面操作。
用for循环通过fscanf 语句将文件中的职工信息取出放到em结构数组里面。
形参b指需要导出的职工人数。
最后关闭文件。
5、浏览函数void display(int a)声明整形变量i和b,其中i记录输出的职工序数,b用来接收调用浏览函数时所传递过来的实参,接着将其值传递给导出函数load(b),使得导出的职工人数与浏览的职工人数保持一致。
通过调用load函数后(即给em数组附值),用for循环输出每个职工的各种信息。
8、按姓名查询void search_name()声明整形变量i和字符形数组name[20],调用导出函数load(*p),用scanf 语句输入要查询的职工名字(字符串)放在数组name里面。
用for循环,循环主体是先判断中是否有输入的职工姓名,如果有,用printf语句输出与职工名字相对应的该职工所有信息,再跳出循环;如果没有,输出“查无此人”,并调用search()返回查询菜单。
流程图同上9、按学历查询void search_xueli()声明整形变量i,k=0,char形数组xueli[20]。
调用导出函数load(*P),用scanf 语句输入要查询的职工学历(字符串)放在数组xueli里面。
考虑到与前两种查询方式不一样的是,可能有多个职工具有相同的学历,所以循环主体较之前稍有变化。
即在判断并执行第一次后不用break,而是继续循环,直到找出所有该学历的职工。
为解决输入错误而提示“查无此人”的问题,就需要再写一段for循环代码,通过计量数k记录循环的次数,若直到循环到最后一次仍无结果输出,则表示输入错误,这时用printf输出“查无此人”,并调用search()返回查询菜单。
:流程图同上10、,删除函数void del(int *b)声明整形变量i,j,t,m,a和char形数组name[20]。
其中给a附初始值a=*b,表示当前职工人数。
首先调用浏览函数display(a),显示所有职工信息,便于使用者审阅需删除的对象。
用printf语句提示“输入要删除的职工名字”,接着用scanf 语句输入删除对象名字。
用for循环,循环主体是先判断中是否存在所输入的名字(调用字符串比较函数stecmp)。
若存在,printf语句提示是否确认删除,用scanf语句输入确认指令,再用for循环从要删除的这个职工开始,依次用后一个职工的信息覆盖前一个的。
循环结束后当前职工人数a自减1,并保存,跳出大循环;若不存在,输出“输入错误,无此人”。
再将a的新值附给*b,实参p所指的人数地址中的人数也随即改变删除后的人数。
printf提示下一步操作“继续删除请按1\n浏览信息请按2\n返回主菜单请按3”。
switch根据键盘输入的指令代号选择下一步连接的函数。
11、添加函数void add(int *a)声明整形变量i,n,m,定义文件指针fp,用追加的方式打开文件"",若打开失败,退出。
若成功,继续下面操作。
printf提示“输入要添加的人数”【scanf输入要添加的人数存放在n。
用for循环输入要添加的职工信息,再用另一个for循环将输入的新信息追加写入""文件保存。
关闭文件。
再调用switch语句选择下一步操作,并连接到相应函数。
流程图与删除函数类似。
3.3 调试与测试:。
遇到最大的问题是所有程序代码编完放在一起后,虽然能够成功运行,但使用时如果职工人数发生变化,会导致文件后部出现乱码。
若要使每次运行都正常,必须在人数改变后退出程序,修改宏定义N的值。
这样很不方便,不能够连续运行。
为解决这一大问题,最后我想到了定义一个全局指针变量,用来追踪最新的人数。
特别是删除和添加这两个会导致人数变化的函数中,全局指针变量p起了很大作用。
经过一边修改一边调试,最终可以成功的用p串联整个函数,在连续运行时,总能根据最新的人数调用各个函数。
另外在串联所有函数时,调试提示出错:有几个函数“redefinition; different basic types”解决:在函数名前加void指明类型。
【整个程序代码是分块书写的,每个函数都可以独立运行。
只有输入函数查询菜单函数写得很顺利,一次性就能够成功运行,其他函数在调试过程中或多或少都出现了问题。
1、保存函数save()在调试和链接的时候都没有出现错误提示,但在运行的时候出现了问题。
写入指定位置的文件,打开后总会有乱码。
与c语言课本上的例题对照后发现,我写的fopen("","w")没有指定文件的存储类型。
解决方法:在文件名bbb后面加上.txt后即可。
2、导出函数load()遇到两个问题。
1是为图方便直接将保存函数复制过来进行修改时,忘了修改文件的打开方式,不能运行。
经多次检查后终于发现了,解决:将只写"w"改为只读"r"。
2是用fscanf语句时,漏写地址符。
调试和链接都没问题,但点击运行后,总出现一个提示出错的蓝色小窗口。
经老师提时候发现了错误所在。
解决:在em[i].name等之前加上地址符。
¥3、浏览函数display()遇到的问题虽然不大,但解决起来很麻烦。
理想的运行结果是美观整齐。
即下面的职工信息分别与第一个printf输出的中文项目提示对齐。
解决方法:不断修改空格个数,不断运行察看效果。
4、按学历查询函数search_xueli(),要考虑输入一种学历,可能对应出很多职工,这就不能延用按姓名和职工号查询中判断是否输入错误的方法了。
为了显示出所有具有该学历的职工,就需要让for循环一直运行到最后一个为止。
这时计量数i始终会等于职工人数,不能再用i来判断是否不存在此人。
这就需要再定一个整形变量k,用来计量单独的一个循环次数。
5、删除函数del()的难点在于多次删除。
即在删除掉第一个人以后,现有职工人数发生改变,而宏定义中的N却是不变的。
最开始我想到了用static定义一个整形变量a来计量当前人数。
这在单独运行删除函数时,可以成功的连续删除。
最后所有函数串在一起时,有了更好的解决方法,全局指针。
【6、添加函数add()遇到的问题是用printf输入新职工信息后,保存到文件里面,发现原有的信息不见了。
解决:文件打开方式改用"a"追加写入。
四、设计心得与总结:经过一学期的C语言学习,我们掌握了C语言的基础知识,能够读懂别人用c 语言设计的程序。
平时的程序设计大多是以填空的形式出现,虽然有所接触,但都不完全。
而这两周的课程设计,却让我们完完全全用自己学到的知识编写一个完整的体统程序。
这是一个新的挑战,也是一种新的学习。
我们组选择的是备选题目中的第一个——职工信息管理系统。
这需要我们自己设计一个系统,可以输入信息,保存到文件里,再从文件里调出来,使之显示在屏幕上,进行删除、添加等对信息的修改。
初看到这个题目觉得很简单,但当我做到电脑前准备开始编写代码的时候才发现无从下手。
通过去图书馆查找程序设计相关的书籍,和上网参考前人编写的类似程序,我脑中才有了一个大概方向。
)终于开始着手写下了第一段输入函数的代码,因为这是我们平时课堂上用的最多最熟的printf语句,写了很长一大段,调式运行竟然成功了,顿时信心倍增。
于是我开始迫不及待的开始写第二段保存函数。
我记得第一天下来,我只写好了这两个函数,但还是很开心,因为这是我编的第一个小系统的成功的开始!接下来几天都在宿舍整个下午的对着电脑不断的编译、调试、修改,每次编好一个能够成功运行的程序,都会感到很欣慰,并增加继续下去的信心。
当然其中也有遇到困难的时候。
好几次遇到编好的程序调试没有错误,却偏偏不能运行这种情况,自己编的程序自己很难发现当中的错误,而电脑又没有提示,这时候就很受打击,也会着急。
反复检查都找不出毛病来的时候就会有想要放弃的念头。
有时候就直接关机去做别的事情,等再开始做程序的时候,才发现先前的错误所在。
这时候会有一种“柳暗花明又一村”的欣慰感觉。
总之,遇到困难,可以先放一放,让脑子休息一下,忘掉错误的记忆。
或许等过段时间再回过头来,就会很容易的发现之前的错误了。
随着编好的程序越多,累积的经验也越多,查找错误就越快了。
还有会发现很多程序有很多相似之处,可以通过复制修改的发式来编写。
虽然题目要求只需要一种查询方式,但当我编出规律之后自然就想多写两个,写完就会有很大的成就感了。
在课程设计的过程中,还有一件很倒霉的事。
7月5号早上我们有一门考试,靠前还需要复习的那种。
所以我打算4号早上写会儿程序,从下午开始就复习第二天要考的科目,结果从早上开始写删除函数的代码,一边调试,一边修改,越来越接近成功,越激动越投入,等最后终于完成的时候猛然发现已经下午4点多了。