基于C语言考编风云人物系统

 一、系统设计的目的

        我国人口众多,考编数目庞大,要进行信息化管理就需要建立合适的信息管理系统,在实现基础的管理功能的同时做好数据的整理、安全功能。通过使用信息管理系统,可以极大提高工作效率。

二、系统总体设计

  主函数   

  main.c

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include"password.h"
#include"menu.h"
#include"ManageSyc.h"
int main(){
	passw();
	Pre ARR={0,"0",'0',0,0};
	Node* pf=Create(ARR);
	Pre arr1={3,"川建国",22,'m',70,80};
	Pre arr2={2,"理查德",30,'w',80,90};
	Pre arr3={1,"马克",30,'m',70,90};
	tailinsert(pf,arr1);
	headInsert(pf,arr2);
	headInsert(pf,arr3);
	menu(pf);
	return 0;

函数结构体设置及函数声明

#pragma once

#define P 64
#define  SIZE  sizeof(struct node)

/*定义人物结构体*/
typedef struct {
    int ID;        /*人物ID号*/
    char name[P]; /*人物姓名*/
    int age;        /*人物年龄*/
    char sex;       /*人物性别*/
    double score;   /*人物申论*/
    double scorec;   /*人物行测*/
}Pre;
typedef struct node{

	Pre data;
	struct node* pnext;
}Node;

Node* findid(Node* const pf,const int id);
Node* Create(Pre data);
/*函数声明*/
void menu(Node* pf);		/* 菜单 */
void init(Node* pf);	/* 数据写入文件 */
void headInsert(Node*  pf,const Pre data);  /*  头插法 */
void tailinsert(Node* const pf,const Pre data);/* 尾插法 */
void showP(Node* pf);	/* 展示所有人物信息 */
void addP(Node* const pf);	 /* 添加人物信息 */
void modifyP(Node* const pf);	/* 修改人物信息 */
void alter(Node* const p);
void deleteP(Node* const pf);   /* 删除某个人物信息 */
void jindutiao(int n);/*  进度条 */
void findPre(Node* const pf);  /* 通过ID查找人物信息 */
void clearBuff();/*输入错误缓存清除*/

1.密码登陆

void passw(){
    char password[30] = {"1147808"};
    char pwstr[30];

    int a =1;
    while(a<=7){
        printf("请输入密码:\n");
        gets(pwstr);
        if(strcmp(password,pwstr)){
            printf("第%d次,密码输入错误,请重新输入\n",a);
        }
        else{
            printf("输入正确,正在登陆考编风云人物系统\n");
            sleep(3);
            break;
        }
         a++;
    }
        if(a == 7){
            printf("密码输入错误7次,请去人工处咨询");
        }
        
}   

2.界面设计

/*目录选择*/
void menu(Node* pf){
    system("clear");
    printf("--------------------------\n");
    printf("|欢迎使用考编风云人物系统|\n");
    printf("|------正在加载中--------|\n");
    sleep(1);
    printf("|1---查看所有人物信息----|\n");
    printf("|2---添加人物信息--------|\n");
    printf("|3---修改某个人物信息----|\n");
    printf("|4---删除人物信息--------|\n");
    printf("|5---查询某个人物信息----|\n");
    printf("|6---退出考编风云人物系统|\n");
    printf("--------------------------\n");
    printf("请选择(1-6):");
    int n;
    scanf("%d",&n);
    switch(n){
        case 1: showP(pf); break;
        case 2: addP(pf); break;
        case 3:	modifyP(pf); break;
        case 4: deleteP(pf); break;
        case 5:	findPre(pf);break;
        case 6: system("clear");exit(-1); break;
        default: printf("输入错误,请重新输入\n");
    }
}

3.查看所有人信息

/*1.遍历链表,查看全部人物信息*/
void showP(Node* pf){
	Node* pput = pf;
	printf("\n");
	if(NULL == pput) return ;
	pput = pput->pnext;
	while(pput){
		printf("人物ID:%d\n",	        pput->data.ID);
		printf("人物姓名:%s\n",		pput->data.name);
        printf("人物年龄:%d\n",		pput->data.age);
		printf("人物性别:%c\n",		pput->data.sex);
		printf("人物申论:%.2f\n",	    pput->data.score);
        printf("人物行测:%.2f\n",	    pput->data.scorec);
		pput = pput->pnext;
		printf("\n");
	}
	init(pf);
	jindutiao(5);
	menu(pf);
}

4.添加人物的信息  

/*2.添加人物信息*/
void addP(Node* const pf){
	system("clear");
    printf("------添加人物信息------\n");
    Pre arr;
	printf("请输入增加人物信息:\n");
	printf("人物ID: \n");
	scanf("%d",&arr.ID);
	printf("人物姓名:\n");
	scanf("%s",arr.name);
	clearBuff();
    printf("人物年龄: \n");
	scanf("%d",&arr.age);
    clearBuff();
	printf("人物性别:\n");
	scanf("%c",&arr.sex);
	printf("人物申论:\n");
	scanf("%lf",&arr.score);
    printf("人物行测:\n");
	scanf("%lf",&arr.scorec);
	tailinsert(pf,arr);
	printf("添加完毕\n");
	init(pf);
	showP(pf);
	jindutiao(5);
	menu(pf); 
}

5.修改某个人的信息

/*3.修改人物信息*/
void alter(Node* const p){
    if(NULL == p){
		printf("该人物不存在\n");
	}
    else{
		int num=0;
        printf("请输入需要修改的人物信息\n");
        printf("1.修改ID:\n");
		printf("2.修改姓名:\n");
        printf("3.修改年龄:\n");
		printf("4.修改性别:\n");
		printf("5.修改申论成绩:\n");
        printf("6.修改行测成绩:\n");
		scanf("%d",&num);
        switch(num){
		case 1:printf("输入人物的新ID\n");				
               scanf("%d",&p->data.ID);		
               printf("修改完毕\n"); break;
		case 2:printf("输入人物的新姓名\n");				
               scanf("%s",p->data.name);		
               printf("修改完毕\n"); break;
        case 3:printf("输入人物的新年龄\n");				
               scanf("%d",&p->data.age);		
               printf("修改完毕\n"); break;      
		case 4:printf("输入人物的新性别\n");	
               clearBuff();	
               scanf("%c",&p->data.sex);		
               printf("修改完毕\n"); break;
		case 5:printf("输入人物的新申论成绩\n");				
               scanf("%lf",&p->data.score);	
               printf("修改完毕\n"); break;
        case 6:printf("输入人物的新行测成绩\n");				
               scanf("%lf",&p->data.scorec);	
               printf("修改完毕\n"); break;
		default : printf("输入信息有误\n");alter(p); break;
		}
	}
}
/*3.1修改通过ID号某个人物*/
void modifyP(Node* const pf){
	system("clear");
	printf("请输入要修改人物的ID\n");
	int cid;
	scanf("%d",&cid);
	Node* pchg = findid(pf,cid);
	alter(pchg);
	init(pf);
	sleep(2);
	menu(pf);
}

  6.删除某个人的信息

/*4.通过输入人物ID来删除信息*/
void deleteP(Node* const pf){
	system("clear");
    printf("------删除人物的信息------\n");
	Node* pnode = pf;
	printf("请输入要删除人物的ID\n");
	int deleteID;
	scanf("%d",&deleteID);
	Node* pdel = findid(pf,deleteID);
	if(NULL == pdel){
		printf("没有这个人物,请重新输入人物ID\n");
	}else{
		while(pnode->pnext != pdel){
			pnode=pnode->pnext;
		}
		pnode->pnext=pdel->pnext;
		printf("删除完毕\n");
	}
	init(pf);
	jindutiao(5);
    }

7.查询某个人的信息

/* 5通过ID查找人物信息 */
void findPre(Node* const pf){
	system("clear");
	int fdid;
	printf("请输入查找人物的ID\n");
	scanf("%d",&fdid);
	Node* pfd = findid(pf,fdid);
	if(NULL == pfd){
		printf("该人物不存在\n");
	}else{
		printf("人物ID:%d\n",		pfd->data.ID);
		printf("人物姓名:%s\n",		pfd->data.name);
        printf("人物年龄:%d\n",		pfd->data.age);
		printf("人物性别:%c\n",		pfd->data.sex);
		printf("人物申论成绩:%.2f\n",	pfd->data.score);
        printf("人物行测成绩:%.2f\n",	pfd->data.scorec);
	}
	jindutiao(2);
	menu(pf);
}
/* 5.1通过ID查找人物信息 */
Node* findid(Node* const pf,const int id){
	Node* pnode = pf;
	while(pnode){
		if(pnode->data.ID == id){
			printf("找到了\n");
			return pnode;
		}
		pnode = pnode->pnext;
	}
	return NULL;
}

/*延迟*/
void jindutiao(int n){
    for(int i=0;i<n;i++){
        printf("^-^");
        fflush(stdout);
        sleep(1);
    }
	
}
/*输入错误缓存清除保障安全*/
void clearBuff(){
    char ch;
    while((ch= getchar())!='\n');
}

/*定义创建链表函数Create*/
Node* Create(Pre data){
	struct node* p=(Node*)malloc(sizeof(struct node));
	if(NULL == p) NULL;//异常处理
	memset(p,0,SIZE);
	p->data = data;
	p->pnext= NULL;
	return p;
}
/*数据插入,尾插法*/
void tailinsert(Node* const pf,const Pre data){
	Node* ptail = pf;
	Node* tail = Create(data);
	if(NULL == pf) return;
	while(ptail->pnext){
		ptail = ptail->pnext;
	}
	ptail->pnext = tail;
}

/* 数据插入,头插 */
void headInsert(Node*  pf,const Pre data){
	Node* phead = pf;
	Node* head = Create(data);
	head->pnext = phead->pnext;
	phead->pnext= head;
}

三、结果展示

1.密码登陆

设置初始密码值为1147808,当输入错误时,提示输入错误,当输入正确密码时,进入系统

2.界面目录

设置6个选项,运用swich case函数定义1-6,选择其中任意选项进入相应的界面

3.查看所有人物信息

当我们选择1时,即可进入所有人物查询界面,现在所显示的三个人物信息为定义数组运用尾插法与头插法写入。

4.添加人物信息

当我们在界面处选择2,进入人物添加界面。

5.修改某个人物信息

当我们在界面处选择3,进入人物修改界面。选择对应的选项输入需要修改的人物信息,输入完成后经过三秒等待,进入初始界面。

6.删除某个人物信息

当我们在界面处选择4,进入人物删除界面。因为设置的根据ID号删除,所以直接选择想要删除的人物对应的ID号即可删除。

7.查询某个人物信息

当我们在界面处选择5时,进入人物查找界面。输入想要查找人物的ID号即可查询该人物所有的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值