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

2025-10-10 03:22:28

1、本学生籍贯信息管理系统采用Visual C++6.0作为开发环境,处理对象为学生,主要功能对学生籍贯信息进行录入、删除、查找、修改、显示输出等。本系统给用户提供了一个简易的操作界面,以便根据提示输入操作项,调用相应函数来完成系统提供的各项管理功能。

2、人机操控平台:用户通过选择不同选项来操作系统,包括退出系统,导入学生信息,删除学生信息,查询学生信息,修改学生信息,游览学生信息以及作者信息。

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

3、导入学生信息:用户根据提示输入学生的学号、姓名、性别、出生日期、手机号码、籍贯等信息。本系统一次只录入一个联系人信息,当需要录入多个学生信息时,可采用多次添加方式。

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

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

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

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

4、删除学生信息:根据系统提示,用户输入要删除的学生信息的学号,系统根据用户的输入进行查找,若没有查找到相关记录,则提示“此联系人不存在”;否则,系统将直接删除该联系人的全部信息。

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

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

5、查询学生信息:本系统提供三种查找学生信息的方式,即按学号查找、按姓名查找和按籍贯查找。用户根据系统提示选择相应的查找方式,若选择按学号查找,则需要输入相应学生的学号以完成信息查找;若选择按姓名查找,则需要输入相应学生的姓名以完成信息查找;若选择按籍贯查找,则需要输入想要查找的机关。系统中若存在待查找的联系人,则输出该联系人的信息;否则提示“此联系人不存在”。

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

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

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

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

6、修改学生信息:根据系统提示,用户输入待修改学生信息的学号,若没有查到相关记录,则提示“此学生不存在”;否则提示用户逐一输入修改后的姓名、性别、出生日期、手机号码、籍贯等信息。

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

7、游览学生信息:若系统中存在学生记录,则逐一输出所有学生信息;否则输出“该系统中无学生信息”。

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

1、//文件包含

#include<stdio.h>               //标准输入输出函数库

#include<stdlib.h>              //标准函数库

#include<string.h>              //字符串函数库

#include<conio.h>               //控制台输入输出函数库

//学生信息长度宏定义

#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();

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢