手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

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

时间:2024-10-12 01:11:45

编制一个学生籍贯信息管理系统,用于记录每个学生的籍贯信息,包括学号、姓名、出生年月、籍贯、联系电话等。

工具/原料

Visual C++6.0

电脑

需求分析

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,不存在返回0int 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();}

© 手抄报圈