目录: 一,设计要求 1,总体要求: 2,具体功能: 二,设计框架 三,程序代码 1,声明函数和头文件 2,声明结构体 3,声明全局变量 4,主体启动函数 5,主菜单函数 6,创建学生档案函数 7,编辑学生档案函数 8,查询学生档案函数 9,输出籍贯与专业函数 10,查询学籍变化函数 11,删除学生信息函数 四,测试代码 1,运行界面 2,创建学生档案 3,修改学生档案信息 4,查询学生档案信息 5,查询学生籍贯和专业信息 6,查询学生学籍变化 7,删除学生信息 五,设计的总结和感想
设计要求:
1,总体要求
用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
2,具体功能:
1,系统以菜单方式工作。
2,登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;
3,删除已知学号的学生信息;
4,查找已知学号的学生信息;
5,按学号,专业输出学生籍贯表。
6,查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。
程序代码:
1, 声明函数和头文件
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #define N 100 void menu(); void Student_Create(); void Student_Edit(); void Student_find(); void Student_native(); void Student_changes(); void Student_pop();
2, 声明结构体
struct Studen_book { int num; char name[20]; char sex; int age; char native[80]; //籍贯 char depart[20]; //系别 char majoy[20]; //专业 char clas[20]; //班级 char native_changes[30]; //学籍 }stu[N];
3, 声明全局变量
static int i=0;
4, 主体启动函数
int main() //启动程序 { menu(); return 0; }
5, 主菜单函数
void menu() //主菜单 { char sel='a'; while(sel!='0') { system("cls");//清屏函数 printf("|-----------------------------------------------|\n"); printf("| 学 生 学 籍 管 理 系 统 主 菜 单 |\n"); printf("|-----------------------------------------------|\n"); printf("| 1------创建学生档案信息 【欢】 |\n"); printf("| 2------修改学生档案信息 【迎】 |\n"); printf("| 3------删除学生档案信息 【使】 |\n"); printf("| 4------查询学生档案信息 【用】 |\n"); printf("| 5------查询学生籍贯信息 【本】 |\n"); printf("| 6------查询学生学籍变化 【程】 |\n"); printf("| 0------退出学籍管理系统 【序】 |\n"); printf("|-----------------------------------------------|\n"); printf("请输入选项编号(0-6):"); sel = getch(); //无需回车 switch(sel) { case '1': Student_Create(); break; case '2': Student_Edit(); break; case '3': Student_pop(); break; case '4': Student_find(); break; case '5': Student_native(); break; case '6': Student_changes(); break; case '0': break; } if(sel=='0') printf("\n Thanks for your used!"); } }
6, 创建学生档案函数
void Student_Create() //创建学生档案 { char choose; Add: system("cls"); printf("请输入学生学号:\n"); scanf("%d",&stu[i].num); printf("请输入学生姓名:\n"); scanf("%s",&stu[i].name); getchar(); printf("请输入学生性别(M或F):\n"); scanf("%c",&stu[i].sex); printf("请输入学生年龄:\n"); scanf("%d",&stu[i].age); printf("请输入学生籍贯:\n"); scanf("%s",&stu[i].native); printf("请输入学生系别:\n"); scanf("%s",&stu[i].depart); printf("请输入学生专业:\n"); scanf("%s",&stu[i].majoy); printf("请输入学生班级:\n"); scanf("%s",&stu[i].clas); printf("请输入学生学籍变化:\n"); scanf("%s",&stu[i].native_changes); i++; //输完一项++,方便下一项输入 ,同时计输入的学生总数 getchar(); //回车继续 printf("是否继续添加('Y'or'N')?"); choose=getchar(); if(choose=='Y'||choose=='y') goto Add; }
7, 编辑学生档案函数
void Student_Edit() //根据学号查找学生信息并编辑 { int t,number,n; char x; printf("\n输入学号:"); scanf("%d",&number); for(t=0;t<i;t++) { if(stu[t].num==number) n=t; } printf("\n学生的信息如下:\n"); printf("1—学号:%d\n",stu[n].num); printf("2—姓名:%s\n",stu[n].name); printf("3—性别:%c\n",stu[n].sex); printf("4—年龄:%d\n",stu[n].age); printf("5—籍贯:%s\n",stu[n].native); printf("6—系别:%s\n",stu[n].depart); printf("7—专业:%s\n",stu[n].majoy); printf("8—班级:%s\n",stu[n].clas); printf("9—学籍变化:%s\n",stu[n].native_changes); printf("0—退出编辑\n"); printf("请输入要编辑的选项(0-9):"); x=getch(); switch(x) { case '1': scanf("%d",&stu[n].num); break; case '2': scanf("%s",&stu[n].name); break; case '3': scanf("%c",&stu[n].sex); break; case '4': scanf("%d",&stu[n].age); break; case '5': scanf("%s",&stu[n].native); break; case '6': scanf("%s",&stu[n].depart); break; case '7': scanf("%s",&stu[n].majoy); break; case '8': scanf("%s",&stu[n].clas); break; case '9': scanf("%s",&stu[n].native_changes); break; case '0': return; } }
8, 查询学生档案函数
void Student_find() //根据学号查找学生信息 { char choose; int t,n,number; Find: int s=0; printf("\n请输入要查询的学号:"); scanf("%d",&number); for(t=0;t<i;t++) if(stu[t].num==number) {n=t; printf("\n【%d号】学生的信息如下:\n",number); printf("1—学号:%d\n",stu[n].num); printf("2—姓名:%s\n",stu[n].name); printf("3—性别:%c\n",stu[n].sex); printf("4—年龄:%d\n",stu[n].age); printf("5—籍贯:%s\n",stu[n].native); printf("6—系别:%s\n",stu[n].depart); printf("7—专业:%s\n",stu[n].majoy); printf("8—班级:%s\n",stu[n].clas); printf("9—学籍变化:%s\n",stu[n].native_changes); s=1; } if(s==0) printf("无此学生信息"); getchar(); printf("是否继续(Y/N)?:"); choose=getchar(); getchar(); if(choose=='y'||choose=='Y') goto Find;
9, 输出籍贯与专业函数
void Student_native() //按学号,专业输出学生籍贯表 { char choose; int number=0; int t; Native: int s=0; printf("\n输入查询的学号:"); scanf("%d",&number); for(t=0;t<i;t++) if(stu[t].num==number) { printf("【%d号】学生的信息如下:\n",number); printf("学号:%d\n",stu[t].num); printf("籍贯:%s\n",stu[t].native); printf("专业:%s\n",stu[t].majoy); s=1; } if(s==0) printf("暂无该学生信息"); getchar(); printf("是否继续(Y/N)?:"); choose=getchar(); getchar(); if(choose=='y'||choose=='Y') goto Native; }
10,查询学籍变化函数
void Student_changes() //查询学生的学籍变化 { int t; for(t=0;t<i;t++) { printf("\n%s的学籍情况如下:\n",stu[t].name); printf("%s",stu[t].native_changes); } getchar(); }
11,删除学生信息函数
void Student_pop() //删除学生信息 { int k=0,number,t; char choose; Del: system("cls"); /*清屏*/ printf("\n请输入要删除的学号:"); scanf("%d",&number); getchar(); for(t=0;t<i;t++) { if(number==stu[t].num) { k=1;break;} } if(k==1) { for(k=t;k<i-1;k++) { stu[k]=stu[k+1]; } i--; //删除一项 总数对应减少 printf("已删除\n\n"); } else { printf("找不到要删除的记录!\n"); printf("按回车键返回:"); getchar(); } printf("是否继续(Y/N)?:"); choose=getchar(); getchar(); if(choose=='y'||choose=='Y') goto Del; }
主菜单界面: