一、系统设计的目的
我国人口众多,考编数目庞大,要进行信息化管理就需要建立合适的信息管理系统,在实现基础的管理功能的同时做好数据的整理、安全功能。通过使用信息管理系统,可以极大提高工作效率。
二、系统总体设计
主函数
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号即可查询该人物所有的信息。
设置初始密码值为1147808,当输入错误时,提示输入错误,当输入正确密码时,进入系统








635

被折叠的 条评论
为什么被折叠?



