采访记录路人信息

#include "../include/staff.h"


int main(int argc, const char *argv[])
{
	//创建哈系表 
	Hash *pHash = NULL;
	if(HashCreate(&pHash) < 0)
	{
		return ERROR;
	}
	printf("创建哈系表成功!\n");

	//一旦创建哈系表成功之后,立即导入文件中的内容至哈系表中
	//文件操作---》选取文件IO ---》read,write
	//打开一个指定需要读取的文件
	int fr = open("Message.txt", O_RDONLY);
	if(fr < 0)
	{
		perror("open_read error");
		//不敢退出!!!
	}
	else
	{
		printf("打开存储路人信息的文件成功!\n");
		//读取 
		//定义一个可以存储每一个路人信息的变量
		data_type OneData;
		while(1)
		{
			int MyRead = read(fr, &OneData, sizeof(OneData));
			if(MyRead < 0)
			{
				perror("读取路人信息失败");
				close(fr);
				DestroyHash(&pHash);
				return ERROR;
			}
			else if(0 == MyRead)
			{
				//到达文件末尾
				printf("导入路人信息完毕!\n");
				break;
			}
			else
			{
				//证明读取路人的信息已经OK,此时应该将存储读取
				//到信息的变量OneData进行登记
				if(AddStaffMessageToHash(pHash, OneData) < 0)
				{
					DestroyHash(&pHash);
					close(fr);
					return ERROR;
				}
				printf("已经导入一个路人的信息!\n");
				//更新LastID 的值
				pHash->LastID = OneData.ID; 
			}
		}
	}


	//定义变量保存新路人的数据
	data_type Data;

	//定义保存路人ID 的变量
	int ID;
	char op[20];

	//定义一个保存路人信息的变量
	data_type LeaveData;
	while(1)
	{
		printf("请输入需要进行的操作:Add, Delete, Alter, Search...\n");
		scanf("%s",op);
		if(0 == strcmp("Quit", op))
		{
			printf("退出啦!\n");
			break;
		}
		if(0 == strcmp(op, "Add"))
		{
			//登记 
			printf("记录信息中......\n");
			printf("请输入路人的姓名:\n");
			scanf("%s",Data.Name);
			//自动生成ID 
			Data.ID = pHash->LastID + 1;
			printf("请输入路人的职位:\n");
			scanf("%s",Data.Position);
			printf("请输入路人的薪资:\n");
			scanf("%d",&Data.Salary);
			printf("请输入路人的婚姻状态:\n");
			scanf("%s",Data.Status);

			//调用接口
			if(AddStaffMessageToHash(pHash,Data) < 0)
			{
				DestroyHash(&pHash);
				return ERROR;
			}
			printf("%d号新路人记录成功!\n",Data.ID);
			//更新LastID的值 
			pHash->LastID = Data.ID;
		}

		else if(0 == strcmp(op, "Search"))
		{
			//查找所有路人或者指定的路人信息
			printf("请输入需要查找的路人ID:\n");
			scanf("%d",&ID); //0 ---》查看所有路人  非0,查看指定的路人信息
			if(SearchStaffMessage(pHash, ID, NULL) < 0)
			{
				DestroyHash(&pHash);
				return ERROR;
			}
			printf("查找成功!\n");
		}

		else if(0 == strcmp(op, "Delete"))
		{
			//删除指定的路人
			printf("删除信息中......\n");
			printf("请输入需要删除信息的路人ID:\n");
			scanf("%d",&ID);

			//调用接口
			if(LeaveStaffFromHash(pHash, ID, &LeaveData) < 0)
			{
				DestroyHash(&pHash);
				return ERROR;
			}
			printf("%d号路人删除信息完毕!",ID);
			printf("已删除路人的信息如下:\n");

			printf("***********删除路人**************\n");
			printf("姓名:%s\n",LeaveData.Name);
			printf("ID:%d\n",LeaveData.ID);
			printf("职位:%s\n",LeaveData.Position);
			printf("薪资:%d\n",LeaveData.Salary);
			printf("婚姻状态:%s\n",LeaveData.Status);
			printf("********** 显示完毕**************\n");
		}

		else if(0 == strcmp(op, "Alter"))
		{
			//修改路人的信息
			printf("请输入需要修改信息的路人ID :\n");
			scanf("%d",&ID);
			printf("%d号路人的信息修改中......\n",ID);
			data_type SourseData;
			if(SearchStaffMessage(pHash, ID, &SourseData) < 0)
			{
				DestroyHash(&pHash);
				return ERROR;
			}

			printf("需要修改的路人%d号的信息已找到!\n",ID);
			printf("请重新输入职位:\n");
			scanf("%s",SourseData.Position);
			printf("请输入对应的薪资!\n");
			scanf("%d",&SourseData.Salary);
			//调用修改接口
			if(AlterStaffMessage(pHash, SourseData) < 0)
			{
				DestroyHash(&pHash);
				return ERROR;
			}
			printf("修改%d号路人的信息成功.信息如下:\n",ID);
			SearchStaffMessage(pHash, ID, NULL);
		}
	}

	//自动保存路人的信息
	int fw = open("Message.txt", O_WRONLY | O_CREAT | O_TRUNC, 0664);
	if(fw < 0)
	{
		perror("open_write error");
		close(fr);
		DestroyHash(&pHash);
		return ERROR;
	}
	printf("打开保存信息的文件成功,即将保存所有的路人信息!\n");
	int i;
	for(i=0;i<pHash->LastID;i++)
	{
		HashNode *pTemp = pHash->HashArr[i];
		while(NULL != pTemp)
		{
			//准备写入文件
			int MyWrite = write(fw, &pTemp->data, sizeof(pTemp->data));
			if(MyWrite < 0)
			{
				perror("write error");
				close(fr);
				close(fw);
				DestroyHash(&pHash);
				return ERROR;
			}
			else if(0 == MyWrite)
			{
				printf("没有内容被写入!\n");
				close(fr);
				close(fw);
				DestroyHash(&pHash);
				return ERROR;
			}
			else
			{
				printf("写入一个路人信息至文件OK!\n");
			}
			//更新pTemp的指向
			pTemp = pTemp->pNext;
		}
	}
	//销毁hash表
	if(DestroyHash(&pHash) < 0)
	{
		printf("销毁哈系表失败!\n");
		return ERROR;
	}
	printf("销毁哈系表成功!\n");
	//关闭打开的所有文件描述符
	close(fr);
	close(fw);
	return 0;
}

Spring MVC是Spring Framework的一部分,用于构建Web应用程序的全功能MVC模块。它已经被融合在Spring Web Flow中,并在Spring MVC4中有了进一步的提升。 在Spring MVC中,路人甲(也可以称为普通用户)可以通过调用@Controller中标注了@RequestMapping的方法来处理请求。具体来说,通过调用org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod#invokeAndHandle方法来实现。 为了启用Spring MVC的注解配置功能,需要在配置类上标注@EnableWebMvc注解。这样,Spring MVC容器才会自动调用WebMvcConfigurer接口中的方法,进行相应的配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [精通Spring MVC 4](https://download.csdn.net/download/wuhongshen/10103859)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [万字长文,深度解析SpringMVC 源码,让你醍醐灌顶!!](https://blog.csdn.net/likun557/article/details/120299993)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [一文搞懂:SpringMVC全注解方式及原理](https://blog.csdn.net/likun557/article/details/120148045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值