700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 学生籍贯信息管理系统java_用C语言编程学生籍贯管理系统

学生籍贯信息管理系统java_用C语言编程学生籍贯管理系统

时间:2021-02-20 03:34:12

相关推荐

学生籍贯信息管理系统java_用C语言编程学生籍贯管理系统

//文件包含

#include //标准输入输出函数库

#include //标准函数库

#include //字符串函数库

#include //控制台输入输出函数库

//学生信息长度宏定义

#define MAX_ID 12//学号最大长度

#define MAX_NAME 11//姓名最大长度

#define MAX_SEX 3//性别最大长度

#define MAX_BIRTH 11//出生年月日最大长度

#define MAX_ADDR 101 //籍贯最大长度

#define MAX_TEL 12//手机号码最大长度

//系统菜单选项宏定义

#define EXIT 0//退出系统

#define INPUT 1//导入学生信息

#define DELETE 2//删除学生信息

#define SEARCH 3//查询学生信息

#define UPDATE 4//修改学生信息

#define OUTPUT 5//游览学生信息

#define ABOUT 6//关于作者

//学生籍贯信息查找方式宏定义

#define SEARCH_ID 1//按学号查找

#define SEARCH_NAME 2//按姓名查找

#define SEARCH_ADDR 3//按籍贯查找

//学生籍贯信息结构体

typedef struct _StuInfo

{

char id[MAX_ID];//学号

char name[MAX_NAME]; //姓名

char sex[MAX_SEX];//性别

char birth[MAX_BIRTH]; //出生年月

char addr[MAX_ADDR]; //籍贯

char tel[MAX_TEL];//手机号码

}StuInfo;

//学生籍贯信息单链表结构体

typedef struct _StuNode //链表结点

{

StuInfo stu;

struct _StuNode *next;

}StuNode;

typedef StuNode* StuList; //链表

//全局变量定义,用于保存所有联系人信息的单链表

StuList student=NULL;//初始化链表为空

//人机界面操作函数列表

void ShowMenu(); //人机界面函数

void AddStu(); //导入学生信息

void DeleteStu(); //删除学生信息

void SearchStu(); //查询学生信息

void SearchStuID();//按学号查找

void SearchStuName();//按姓名查找

void SearchStuAddr();//按籍贯查找

void UpdateStu(); //修改学生信息

void OutputStu(); //游览学生信息

void Exit();//退出系统

void About(); //作者信息

//辅助函数列表

void ReadFile(); //从文件读出学生信息

void WriteFile(); //将学生信息写入文件

//查找学生在系统是否存在,存在返回1,不存在返回0

int FindStu(char* id);

void ShowMenu()

{

int typeID=0;

ReadFile(); //启动程序前从文件student.txt读出通讯录中联系人信息

while(1)

{

system("cls");//清屏

printf("******************************\n");

printf("* 学生籍贯信息管理系统 *\n");

printf("******************************\n");

printf("** 0 - 退出系统 **\n");

printf("** 1 - 导入学生信息 **\n");

printf("** 2 - 删除学生信息 **\n");

printf("** 3 - 查询学生信息 **\n");

printf("** 4 - 修改学生信息 **\n");

printf("** 5 - 游览学生信息 **\n");

printf("** 6 - 关于作者 **\n");

printf("******************************\n");

printf("->请选择操作:");

scanf("%d",&typeID);

if(typeID == EXIT)

{

WriteFile(); //程序退出前将学生籍贯信息导入文件

Exit();//退出系统

break;

}

switch(typeID)

{

case INPUT:

system("cls");

AddStu();//导入学生信息

system("pause"); //程序暂停

break;

case DELETE:

system("cls");

DeleteStu(); //删除学生信息

system("pause");

break;

case SEARCH:

SearchStu(); //查询学生信息

break;

case UPDATE:

system("cls");

UpdateStu(); //修改学生信息

system("pause");

break;

case OUTPUT:

system("cls");

OutputStu(); //游览学生信息

system("pause");

break;

case ABOUT:

system("cls");

About();//作者信息

system("pause");

break;

default:

printf("输入有误!\n");

system("pause");

break;

}

}

}

void AddStu()

{

//分配存储空间

StuNode *p = (StuNode*)malloc(sizeof(StuNode));

printf("****************************************\n");

printf("**请输入学生籍贯信息 **\n");

printf("@请输入学号(最大长度为%d个字符)\n->",MAX_ID-1);

scanf("%s",p->stu.id);

while(FindStu(p->stu.id)==1)

{

printf("@此学生信息已经存在,请重新输入\n->");

scanf("%s",p->stu.id);

}

printf("@请输入姓名(最大长度为%d个字符)\n->",MAX_NAME-1);

scanf("%s",p->stu.name);

printf("@请输入性别(男或女)\n->");

scanf("%s",p->stu.sex);

printf("@请输入出生日期(格式为1984-01-10)\n->");

scanf("%s",p->stu.birth);

printf("@请输入籍贯(最大长度为%d个字符)\n->",MAX_ADDR-1);

scanf("%s",p->stu.addr);

printf("@请输入手机号码\n->");

scanf("%s",p->stu.tel);

p->next = student;

student = p;

printf("** 学生籍贯信息添加成功! **\n");

printf("**************************************\n");

}

void DeleteStu()

{

StuNode *pre=student; //前一结点

StuNode *p=student;//当前结点

char id[MAX_ID];

printf("*******************************\n");

printf("**请输入要删除学生的学号:\n->");

scanf("%s",id);

while(p) //查找待删除结点

{

if(strcmp(p->stu.id,id)==0)

break;

pre=p;

p=p->next;

}

if(!p)

printf("** 此学生不存在! **\n");

else

{

if(p==student) student=p->next;

else pre->next=p->next;

free(p);

printf("** 删除成功! **\n");

}

printf("****************************************\n");

}

void SearchStu()

{

int type,flag=1;

while(flag)

{

system("cls");

printf("****************************\n");

printf("* 1 - 按学号查找 *\n");

printf("* 2 - 按姓名查找 *\n");

printf("* 3 - 按籍贯查找 *\n");

printf("->选择查找方式:");

printf("****************************\n");

scanf("%d",&type);

switch(type)

{

case SEARCH_ID:

system("cls");

SearchStuID(); //按学号查找

flag=0;

break;

case SEARCH_NAME:

system("cls");

SearchStuName(); //按姓名查找

flag=0;

break;

case SEARCH_ADDR:

system("cls");

SearchStuAddr(); //按籍贯查找

flag=0;

break;

default:

printf("输入有误!\n");

break;

}

system("pause");

}

}

void SearchStuID()

{

StuNode *p=student;

char id[MAX_ID];

printf("****************************\n");

printf("**请输入要查找学生的学号 :\n->");

scanf("%s",id);

while(p)//检查待查找学生是否存在

{

if(strcmp(p->stu.id,id)==0)

break;

p=p->next;

}

if(!p)

{

printf("** 此学生不存在! **\n");

printf("*******************************\n");

}

else //待查找学生存在则输出信息

{

printf("****************************\n");

printf("* 学生籍贯信息 *\n");

printf("****************************\n");

printf("$学 号 :%s\n",p->stu.id);

printf("$姓 名 :%s\n",p->stu.name);

printf("$性 别 :%s\n",p->stu.sex);

printf("$出生日期:%s\n",p->stu.birth);

printf("$籍 贯 :%s\n",p->stu.addr);

printf("$手机号码:%s\n",p->stu.tel);

printf("****************************\n");

}

}

void SearchStuName()

{

StuNode *p=student;

char name[MAX_NAME];

printf("****************************\n");

printf("**请输入要查找学生的姓名 :\n->");

scanf("%s",name);

while(p)//检查待查找学生是否存在

{

if(strcmp(p->stu.name,name)==0)

break;

p=p->next;

}

if(!p)

{

printf("** 此学生不存在! **\n");

printf("*******************************\n");

}

else //待查找学生存在则输出信息

{

printf("****************************\n");

printf("* 学生籍贯信息 *\n");

printf("****************************\n");

printf("$学 号 :%s\n",p->stu.id);

printf("$姓 名 :%s\n",p->stu.name);

printf("$性 别 :%s\n",p->stu.sex);

printf("$出生日期:%s\n",p->stu.birth);

printf("$籍 贯 :%s\n",p->stu.addr);

printf("$手机号码:%s\n",p->stu.tel);

printf("****************************\n");

}

}

void SearchStuAddr()

{

StuNode *p=student;

char addr[MAX_NAME];

printf("****************************\n");

printf("**请输入要查找学生的籍贯 :\n->");

scanf("%s",addr);

while(p)//检查待查找学生是否存在

{

if(strcmp(p->stu.addr,addr)==0)

break;

p=p->next;

}

if(!p)

{

printf("** 此学生不存在! **\n");

printf("*******************************\n");

}

else //待查找学生存在则输出信息

{

printf("****************************\n");

printf("* 学生籍贯信息 *\n");

printf("****************************\n");

printf("$学 号 :%s\n",p->stu.id);

printf("$姓 名 :%s\n",p->stu.name);

printf("$性 别 :%s\n",p->stu.sex);

printf("$出生日期:%s\n",p->stu.birth);

printf("$籍 贯 :%s\n",p->stu.addr);

printf("$手机号码:%s\n",p->stu.tel);

printf("****************************\n");

}

}

void UpdateStu()

{

StuNode *p=student;

char id[MAX_ID];

printf("****************************\n");

printf("**请输入要更新学生的学号 :\n->");

scanf("%s",id);

while(p)//查找待修改结点

{

if(strcmp(p->stu.id,id)==0)

break;

p=p->next;

}

if(!p)

{

printf("** 此学生不存在! **\n");

printf("*******************************\n");

}

else

{

printf("-$原姓名:%s\n",p->stu.name);

printf("->新姓名:");

scanf("%s",p->stu.name);

printf("-$原性别:%s\n",p->stu.sex);

printf("->新性别:");

scanf("%s",p->stu.sex);

printf("-$原出生日期:%s\n",p->stu.birth);

printf("->新出生日期:");

scanf("%s",p->stu.birth);

printf("-$原联系地址:%s\n",p->stu.addr);

printf("->新联系地址:");

scanf("%s",p->stu.addr);

printf("-$原手机号码:%s\n",p->stu.tel);

printf("->新手机号码:");

scanf("%s",p->stu.tel);

printf("**修改成功! **\n");

printf("*******************************\n");

}

}

void OutputStu()

{

int i=0;

StuNode *p=student;

if(!p)//链表为空

{

printf("****************************\n");

printf("** 系统中无学生人记录 **\n");

printf("****************************\n");

return;

}

while(p)

{

printf("**********************************\n");

printf("* 学生%d信息 *\n",++i);

printf("**********************************\n");

printf("****************************\n");

printf("* 学生籍贯信息 *\n");

printf("****************************\n");

printf("$学 号 :%s\n",p->stu.id);

printf("$姓 名 :%s\n",p->stu.name);

printf("$性 别 :%s\n",p->stu.sex);

printf("$出生日期:%s\n",p->stu.birth);

printf("$籍 贯 :%s\n",p->stu.addr);

printf("$手机号码:%s\n",p->stu.tel);

printf("****************************\n");

p=p->next;

}

}

void Exit()

{

StuNode *p=student;

while(p)//释放通讯录每一个结点内存空间

{

student=p->next;

free(p);

p=student;

}

}

void ReadFile()

{

StuNode *p;

char id[MAX_ID];

FILE *pf=fopen("student.txt","r"); //以读方式打开文件

if(!pf) return; //打开文件失败

//从文件中逐一读出每一联系人信息

while(fscanf(pf,"%s",id)!=EOF)

{

p=(StuNode*)malloc(sizeof(StuNode));

strcpy(p->stu.id,id);

fscanf(pf,"%s",p->stu.name);

fscanf(pf,"%s",p->stu.sex);

fscanf(pf,"%s",p->stu.birth);

fscanf(pf,"%s",p->stu.addr);

fscanf(pf,"%s",p->stu.tel);

//每一联系人加入到链表中

p->next=student;

student=p;

p=NULL;

}

fclose(pf);//关闭文件

}

void WriteFile()

{

StuNode *p=student;

FILE *pf=fopen("student.txt","w"); //以写方式打开文件

if(!pf) return; //打开文件失败

while(p)//将链表中的每一结点写入文件

{

fprintf(pf,"%s",p->stu.id);

fscanf(pf,"%s",p->stu.name);

fscanf(pf,"%s",p->stu.sex);

fscanf(pf,"%s",p->stu.birth);

fscanf(pf,"%s",p->stu.addr);

fscanf(pf,"%s",p->stu.tel);

p=p->next;

}

fclose(pf); //关闭文件

}

int FindStu(char* id)

{

StuNode *p=student;

while(p)//在链表中以学号方式查找某一联系人是否存在

{

if(strcmp(id,p->stu.id)==0)

return 1; //存在则返回1

p=p->next;

}

return 0;//不存在则返回0

}

void About()

{

printf("********************************\n");

printf("**\n");

printf("*作者:依筱糯流 *\n");

printf("**\n");

printf("********************************\n");

system("pause");

}

void main()

{

ShowMenu();

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。