本篇文章主要探讨了使用C语言进行职工签到系统的设计。课程设计的核心目标是通过编程实现一个功能模块,允许职工在系统中进行签到操作,并且能够记录员工的基本信息。以下是文章中关键知识点的详细说明: 1. **结构体定义**: 文章首先定义了一个名为`struct emp`的结构体,包含四个成员:`int number`用于存储员工编号,`char name[MAX_NAME]`存储员工姓名,`int isSign`表示签到状态(可能包括0表示未签到,1表示已签到),以及指向下一个元素的指针`struct emp* next`。这为后续处理员工列表和数据管理提供了基础。 2. **动态内存管理**: `#include<malloc.h>`和`#include<stdlib.h>`表明程序会使用动态内存分配函数,如`malloc()`和`calloc()`,以灵活地创建和管理结构体数组或链表,避免固定大小数组导致的内存浪费。 3. **全局变量和指针**: `head`和`tail`被定义为结构体`emp`类型的指针,分别代表员工信息的链表头和尾。初始值设为`NULL`,表示链表为空。 4. **菜单功能**: `menu()`函数负责显示用户界面,提供基本操作选项,如查看信息、添加新员工、删除员工等。这个函数展示了C语言中的控制台输入输出和条件语句应用。 5. **读取员工信息**: `readInEmpInfo()`函数用于从文本文件`C:\\file.txt`中读取或添加员工信息。它尝试打开文件并以追加模式写入。如果文件打开失败,会提示错误并等待用户输入。当用户输入-1时,函数结束并关闭文件。这个过程体现了文件操作和异常处理的C语言技巧。 6. **用户输入验证**: 在`scanf()`调用中,程序使用`fflush(stdin)`来清空缓冲区,确保读取到用户的直接输入,避免前一次输入的数据干扰后续操作。 7. **错误处理与提示**: 文档中强调了在遇到错误时,如文件操作失败,会通过打印特定的错误消息和使用`getch()`暂停程序执行,以便用户查看错误并采取相应措施。 通过这个C语言课程设计,学生可以学习到文件操作、链表数据结构、动态内存管理以及控制台应用开发的基础知识。同时,它也强调了在实际编程项目中处理错误和用户体验的重要性。
#include <string.h>
#include <conio.h>
#include <malloc.h>
#include <stdlib.h>
#define MAX_NAME 20
#define NULL 0
struct emp
{
int number;
char name[MAX_NAME];
int isSign;
struct emp *next;
};
struct emp *head=NULL,*tail=NULL;
void menu()
{
system("cls");
printf("*************************************\n");
printf("* 1.录入职工信息 *\n");
printf("* 2.职工签到 *\n");
printf("* 3.排序 *\n");
printf("* 4.显示所有职工信息 *\n");
printf("* 5.显示未签到职工信息 *\n");
printf("* 6.退出 *\n");
printf("*************************************\n");
printf("请输入要操作的序号:\n");
}
void readInEmpInfo()
{
int number;
char name[MAX_NAME];
FILE *f;
struct emp *p;
if((f=fopen("C:\\file.txt","a"))==NULL)
{
printf("无法向C:\\file.txt中写入信息!按任意键返回主菜单...\n");
getch();
}
while(1)
{
system("cls");
printf("**************************************************\n");
printf("* 输入职工的信息,以输入工号为-1结束输入 *\n");
printf("**************************************************\n");
printf("输入职工工号:");
fflush(stdin);
scanf("%d",&number);
if(number==-1)
{
fclose(f);
printf("**************************************************\n");
printf("输入结束,职工信息文件已更新。按任意键返回主菜单...\n");
getch();
return;
}
剩余7页未读,继续阅读
- 粉丝: 39
- 资源: 30
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 深入理解23种设计模式
- 制作与调试:声控开关电路详解
- 腾讯2008年软件开发笔试题解析
- WebService开发指南:从入门到精通
- 栈数据结构实现的密码设置算法
- 提升逻辑与英语能力:揭秘IBM笔试核心词汇及题型
- SOPC技术探索:理论与实践
- 计算图中节点介数中心性的函数
- 电子元器件详解:电阻、电容、电感与传感器
- MIT经典:统计自然语言处理基础
- CMD命令大全详解与实用指南
- 数据结构复习重点:逻辑结构与存储结构
- ACM算法必读书籍推荐:权威指南与实战解析
- Ubuntu命令行与终端:从Shell到rxvt-unicode
- 深入理解VC_MFC编程:窗口、类、消息处理与绘图
- AT89S52单片机实现的温湿度智能检测与控制系统