#include<stdio.h>
#include<stdlib.h>
#define N 20
void menu();
void help();
void refresh();
void seek();
void modify();
void add();
void del();
void display();
void save();
void cprint();
void sort();
int k=1,n=0;
struct Person{
char no[10+1];
char id[18+1];
char name[10+1];
char sex[2];
int age;
char phone_num[11+1];
int health;
float temp[14];
float record_temp[2];
int flag;
}
per[N];
int main(){
while(k){
menu();
}
}
void menu(){
int num=-1;
printf("\n");
printf(" **********************************************************\n\n");
printf(" * 疫防控信息管理系统 *\n");
printf(" **********************************************************\n\n");
printf("*************************系统功能菜单***********************\n");
printf(" ------------------------- ------------------------\n");
printf(" *****************************************************\n");
printf(" * 0.系统帮助及说明 * * 1.刷新人员信息 *\n");
printf(" *****************************************************\n");
printf(" * 2.查询人员信息 * * 3.修改人员信息 *\n");
printf(" *****************************************************\n");
printf(" * 4.增加人员信息 * * 5.按编号删除信息 *\n");
printf(" *****************************************************\n");
printf(" * 6.显示当前信息 * * 7.保存当前人员信息 *\n");
printf(" *****************************************************\n");
printf(" * 8.退出系统 *\n");
printf(" **************************\n");
printf(" ------------------------- ------------------------\n");
printf("请选择菜单编号: ");
scanf("%d",&num);
switch(num){
case 0:help();break;
case 1:refresh();break;
case 2:seek();break;
case 3:modify();break;
case 4:add();break;
case 5:del();break;
case 6:display();break;
case 7:save();break;
case 8: k=0;break;
default: printf("请输入0~8的编号");
}
}
void help(){
printf("-----------------系统帮助信息-----------------\n\n");
printf("1.欢迎使用系统帮助!\n\n");
printf("2.初次进人系统后,请先刷新信息,再执行其他操作;若文件不存在或者没有内容,请选择增加人员信息。\n\n");
printf("3.按照菜单提示键入数字编号。\n\n");
printf("4.退出程序之前要保存当前信息。\n\n");
system("pause");
}
void refresh(){
FILE *fp=NULL;
int i=0,j;
char s[N*10];
fp = fopen("record.csv","r");
fscanf(fp,"%s\n",&s);
while(fscanf(fp,"%s\n",&s)!=EOF)
{
char *ptr,*retptr;
j=0;
ptr=s;
while((retptr=strtok(ptr,","))!=NULL)
{
switch(j)
{
case 0:
strcpy(per[i].no,retptr);
break;
case 1:
strcpy(per[i].name,retptr);
break;
case 2:
per[i].age=atoi(retptr);
break;
case 3:
strcpy(per[i].sex,retptr);
break;
case 4:
strcpy(per[i].id,retptr);
break;
case 5:
strcpy(per[i].phone_num,retptr);
break;
case 6:
per[i].health=atoi(retptr);
break;
}
j++;
ptr=NULL;
}
i++;
}
fclose(fp);
n=i;
display();
}
void seek(){
int i,item,flag;
char s1[N+1];
printf("----------------------\n");
printf("-----1.按编号查询-----\n");
printf("-----2.按姓名查询-----\n");
printf("-----3.按ID号查询-----\n");
printf("-----4.退出本菜单-----\n");
printf("----------------------\n");
while(1)
{
printf("请选择子菜单编号:");
scanf("%d",&item);
flag=0;
switch(item)
{
case 1:
printf("请输入要查询的人员编号:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(per[i].no,s1)==0){
flag=1;
printf(&per[i]);
break;
}
if(0==flag)
printf("该编号不存在!\n");
break;
case 2:
printf("请输入要查询的人员姓名:\n");
scanf("%s",s1);
for(i<0;i<n;i)
if(strcmp(per[i].name,s1)==0){
flag=1;
printf(&per[i]);
break;
}
}
}
}
void modify(){
int n,num=-1,i,item;
char s1[10+1];
printf("请输入要修改的人员的编号:\n ");
scanf("%s",&s1);
for(i=0;i<n;i++){
if(strcmp(per[i].no,s1)==0)
num=i;
}
if(num!=-1)
printf("--------------------\n");
printf("1.修改姓名\n");
printf("2.修改年龄\n");
printf("3.修改性别\n");
printf("4.修改身份证号码\n");
printf("5.修改手机号码\n");
printf("6.退出本菜单\n");
printf("--------------------\n");
while(1)
{
printf("请选择子菜单编号:");
scanf("%d",&item);
switch(item)
{
case 1:
printf("请输入新的姓名:\n");
scanf("%s",s1);
strcpy(per[num].name,s1);break;
case 2:
printf("请输入新的年龄:\n");
scanf("%d",&per[num].age);break;
case 3:
printf("请输入新的性别:\n");
scanf("%s",s1);
strcpy(per[num].sex,s1);break;
case 4:
printf("请输入新的身份证号:\n");
scanf("%s",s1);
strcpy(per[num].id,s1);break;
case 5:
printf("请输入新的手机号码:\n");
scanf("%s",s1);
strcpy(per[num].phone_num,s1);break;
case 6:
return;
default:
printf("请在1-6之间选择\n");
}
}
}
void add(){
int i=n,j,flag,m;
printf("请输入待增加人员数:\n");
scanf("%d",&m);
if(m>0){
do
{
flag=1;
while(flag){
flag=0;
printf("请输入第%d位人员的编号:\n",i+1);
scanf("%s",&per[i].no);
for(j=0;j<i;j++){
if(strcmp(per[i].no,per[j].no)==0){
printf("已有该编号,请检查后输入!\n");
flag=1;
break;
}
}
}
printf("请输入第%d位人员的姓名:\n",i+1);
scanf("%s",&per[i].name);
printf("请输入第%d位人员的年龄:\n",i+1);
scanf("%s",&per[i].age);
printf("请输入第%d位人员的性别:\n",i+1);
scanf("%s",&per[i].sex);
printf("请输入第%d位人员的身份证号码:\n",i+1);
scanf("%s",&per[i].id);
printf("请输入第%d位人员的手机号码:\n",i+1);
scanf("%s",&per[i].phone_num);
printf("请输入第%d位人员的当前身体状况(0-绿 1-黄 2-红):\n",i+1);
scanf("%s",&per[i].flag);
i++;
}
while(i<n+m);
n+=m;
printf("信息增加完毕!\n\n");
}
else{
printf("新增数量有限!将退回首页...\n\n");
}
system("pause");
}
void del(){
}
void display(){
int i,j;
int r_tab=9,c_tab=7;
printf("共有%d位人员信息:\n",n);
if(0!=n) {
printf("%c",' ');
for(i=0; i<r_tab*c_tab-1+13; i++) {
printf("%c",'-');
}
printf("\n");
printf("|%-8s|%-8s|%-8s|%-8s|%-18s|%-11s|%-8.1s|\n","编号","姓名","年龄","性别","身份证号","手机号码","健康状况");
printf("%c",' ');
for(i=0; i<r_tab*c_tab-1+13; i++){
printf("%c",'-');
}
printf("\n");
for(j=0; j<n; j++) {
printf("|%-8s|%-8s|%-8d|%-8s|%-18s|%-11d|%-8.1f|\n",per[j].no,per[j].name,per[j].age,
per[j].sex,per[j].id,per[j].phone_num,per[j].health);
printf("%c",' ');
for(i=0; i<r_tab*c_tab-1+13; i++){
printf("%c",'-');
}
printf("\n");
}
}
system("pause");
}
void print(struct Person *p){
int i,j;
int r_tab=9,c_tab=7;
printf("共有%d位人员信息:\n",n);
if(0!=n) {
printf("%c",' ');
for(i=0; i<r_tab*c_tab-1+13; i++) {
printf("%c",'-');
}
printf("\n");
printf("|%-8s|%-8s|%-8s|%-8s|%-18s|%-11s|%-8s|\n","编号","姓名","年龄","性别","身份证号","手机号码","健康状况");
printf("%c",' ');
for(i=0; i<r_tab*c_tab-1+13; i++){
printf("%c",'-');
}
printf("\n");
for(j=0; j<n; j++) {
printf("|%-8s|%-8s|%-8d|%-8s|%-18s|%-11d|%-8.1f|\n",per[j].no,per[j].name,per[j].age,
per[j].sex,per[j].id,per[j].phone_num,per[j].health);
printf("%c",' ');
for(i=0; i<r_tab*c_tab-1+13; i++){
printf("%c",'-');
}
printf("\n");
}
}
system("pause");
}
void save(){
FILE *fp=NULL;
int i;
fp=fopen("record.csv","w");
for(i=0;i<n;i++){
fprintf(fp,"%s,%s,%d,%s,%s,%s,%d\n",per[i].no,per[i].name,
per[i].age,per[i].sex,per[i].id,per[i].phone_num,per[i].flag);
}
fclose(fp);
printf("已经保存完成!");
system("pause");
}
void cprint(struct Person*p){
int r_tab=9,c_tab=8,i;
printf("%c",' ');
for(i=0;i<r_tab*c_tab-1+10;i++){
printf("%c",+'-');
}
printf("\n");
printf("|%-8s|%-8s|%-8s|%-8s|%-18s|%-8s|%-8s|%-8s|\n","人员编号",\
"人员姓名","年龄","性别","身份证号","健康状况","最高体温","最低体温");
printf("%c",' ');
for(i=0;i<r_tab*c_tab-1+10;i++){
printf("%c",'-');
}
printf("\n");
printf("|%8s|%8s|%8d|%8s|%18s|%8d|%8.1f|%8.1f|\n",p->no,p->name,p->age,
p->sex,p->id,p->flag,p->record_temp[0],p->record_temp[1]);
printf("%c",' ');
for(i=0;i<r_tab*c_tab-1+10;i++){
printf("%c",'-');
}
printf("\n");
system("pause");
}
void sort(){
int i,j;
struct Person p;
for(i=0;i<n-1;i++){
for(j=n-1;j>j;j--){
if(strcmp(per[j-1].no,per[j].no)>0){
p=per[j];
per[j]=per[j-1];
per[j-1]=p;
}
}
}
}