c/c++学生信息管理系统

学生信息管理系统设计 

【功能要求】 

学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 

等。试设计一学生信息管理系统,使之能提供以下功能: 

(1)系统以菜单方式工作 

(2)学生信息录入功能(学生信息用文件保存)---输入 

(3)学生信息浏览功能---输出 

(4)查询、排序功能---算法 

按学号查询 

按姓名查询 

按性别分类排序 

按年龄分类统计 

(5)学生信息的删除与修改 

(6)采用顺序和链式两种存储方式

链表储存: 

#链表
#include<iostream>
#include<string>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<fstream>

using namespace std;
int k=1;

typedef struct {
    string name;
    string no;//学号
    string xb;
    int age;
    long long birth;//出生年月
    string add;//地址
    long long phone;//电话
    string email;//电子邮箱
} student;

typedef struct lnode {//链表的定义
    student data; //存放学生信息的数据域
    struct lnode *next = 0;// 指向下个学生信息的指针域
} lnode, *linklist;

void initlist(linklist &l) {//初始化链表
    l = new lnode;
    l->next = NULL;
}

void help() {    //帮助
    printf("\n                             0.欢迎使用系统帮助!\n");
    printf("\n                             1.初次进入系统后,请先选择增加学生信息;\n");
    printf("\n                             2.按照菜单提示键入数字代号;\n");
    printf("\n                             3.增加学生信息后,切记保存;\n");
    printf("\n                             4.谢谢您的使用!\n");
    system("pause");
    system("cls");
}


void sort(linklist &l)//对学号排序
{
    lnode *p, *k;
    p = l->next;
    string s1;
    int a;
    long long b;
    while(p){
        k=p;
        while (k->next != NULL) {
            k = k->next;
            if (p->data.no > k->data.no) {
                s1 = p->data.name;
                p->data.name = k->data.name;
                k->data.name = s1;
                s1 = p->data.no;
                p->data.no = k->data.no;
                k->data.no = s1;
                s1 = p->data.xb;
                p->data.xb = k->data.xb;
                k->data.xb = s1;
                a = p->data.age;
                p->data.age = k->data.age;
                k->data.age = a;
                b = p->data.birth;
                p->data.birth = k->data.birth;
                k->data.birth = b;
                b = p->data.phone;
                p->data.phone = k->data.phone;
                k->data.phone = b;
                s1 = p->data.add;
                p->data.add = k->data.add;
                k->data.add = s1;
                s1 = p->data.email;
                p->data.email = k->data.email;
                k->data.email = s1;
            }
        }
        p = p->next;
    }
}

int totallist(linklist &l){//学生总数
    lnode *p;
    p=l->next;
    int i=0;
    while(p){
        i++;
        p=p->next;
    }
    return i;
}

void insertlist(linklist &l){//末尾处插入学生信息
    int length=totallist(l),n;
    lnode *p,*r;
    r=l;
    int j=0;
    while(r&&j<length){
        r=r->next;
        j++;
    }
    if(r){
        cout<<"请输入增加学生个数:"<<endl;
        cin>>n;
        for (int i = 0; i < n; i++) {
            p = new lnode;
            cout << "请输入第" << i + 1 << "个学生的学号" << endl;
            cin >> p->data.no;
            cout << "请输入第" << i + 1 << "个学生的姓名" << endl;
            cin >> p->data.name;
            cout << "请输入第" << i + 1 << "个学生的年龄" << endl;
            cin >> p->data.age;
            cout << "请输入第" << i + 1 << "个学生的性别" << endl;
            cin >> p->data.xb;
            cout << "请输入第" << i + 1 << "个学生的出生年月" << endl;
            cin >> p->data.birth;
            cout << "请输入第" << i + 1 << "个学生的地址" << endl;
            cin >> p->data.add;
            cout << "请输入第" << i + 1 << "个学生的电话" << endl;
            cin >> p->data.phone;
            cout << "请输入第" << i + 1 << "个学生的email" << endl;
            cin >> p->data.email;
            p->next = NULL;
            r->next = p;
            r = p;
        }
    }
    else
        cout<<"插入失败"<<endl;
    sort(l);
}

void preserve(linklist &l){//将学生数据保存至文件中
    FILE* fp;
    lnode *p;
    p = l->next;
    if ((fp = fopen("学生信息管理", "w+")) == NULL) {
        printf("打开失败");
        exit(-1);
    }
    else
    {
        printf("打开save成功\n");
    }
    int length = totallist(l);
    fprintf(fp,"学生学号         学生姓名 年龄  性别  出生年月    地址             手机号码    email \n");
    for (int i = 0;i < length;i++) {
        fprintf(fp, "%6s", p->data.no.c_str());
        fprintf(fp, "%7s", p->data.name.c_str());
        fprintf(fp, "%6d", p->data.age);
        fprintf(fp, "%6s", p->data.xb.c_str());
        fprintf(fp, "%6lld", p->data.birth);
        fprintf(fp, "%6s", p->data.add.c_str());
        fprintf(fp, "%6lld", p->data.phone);
        fprintf(fp, "%6s\n", p->data.email.c_str());
        p = p->next;
    }
    printf("成功\n");
    fclose(fp);
    system("cls");
}



void refresh() {    //刷新界面
    printf("                             刷新完毕!!!");
    system("pause");
    system("cls");
}


void showlist(linklist &l){//展示所有学生信息
    lnode *p;
    p=l->next;
    int j=1;
    while(p){
        cout<<"第"<<j<<"个学生的姓名为:"<<p->data.name;
        cout<<"\n学号为:"<<p->data.no;
        cout<<"\n性别为:"<<p->data.xb;
        cout<<"\n年龄为:"<<p->data.age;
        cout<<"\n出生年月为:"<<p->data.birth;
        cout<<"\n地址为:"<<p->data.add;
        cout<<"\n电话为:"<<p->data.phone;
        cout<<"\n电子邮箱为:"<<p->data.email<<endl;
        j++;
        p=p->next;
    }
    system("pause");
    system("cls");
}


void findlist_name(linklist &l){//根据学生姓名查找
    lnode *p;
    p=l->next;
    cout<<"请输入你想要查询学生的姓名:"<<endl;
    string name;
    cin>>name;
    while(p&&p->data.name!=name){
        p=p->next;
    }
    if(p){
        cout<<"此学生姓名为:"<<p->data.name;
        cout<<"\n学号为:"<<p->data.no;
        cout<<"\n性别为:"<<p->data.xb;
        cout<<"\n年龄为:"<<p->data.age;
        cout<<"\n出生年月为:"<<p->data.birth;
        cout<<"\n地址为:"<<p->data.add;
        cout<<"\n电话为:"<<p->data.phone;
        cout<<"\n电子邮箱为:"<<p->data.email;
    }
    if(!p)
        cout<<"查无此人"<<endl;
    system("pause");
    system("cls");
}

void findlist_no(linklist &l){//根据学生学号查找
    lnode *p;
    p=l->next;
    cout<<"请输入你想要查询学生的学号:"<<endl;
    string no;
    cin>>no;
    while(p&&p->data.no!=no){
        p=p->next;
    }
    if(p){
        cout<<"此学生姓名为:"<<p->data.name;
        cout<<"\n学号为:"<<p->data.no;
        cout<<"\n性别为:"<<p->data.xb;
        cout<<"\n年龄为:"<<p->data.age;
        cout<<"\n出生年月为:"<<p->data.birth;
        cout<<"\n地址为:"<<p->data.add;
        cout<<"\n电话为:"<<p->data.phone;
        cout<<"\n电子邮箱为:"<<p->data.email;
    }
    if(!p)
        cout<<"查无此人"<<endl;
    system("pause");
    system("cls");
}


void sortsex(linklist &l) {//根据学生性别分类排序
    lnode *p;
    p = l->next;
    int j;
    j = 1;
    while (p) {
        if (p->data.xb == "男") {
            cout << "第" << j << "个男性学生的姓名为:" << p->data.name;
            cout << "\n学号为:" << p->data.no;
            cout << "\n性别为:" << p->data.xb;
            cout << "\n年龄为:" << p->data.age;
            cout << "\n出生年月为:" << p->data.birth;
            cout << "\n地址为:" << p->data.add;
            cout << "\n电话为:" << p->data.phone;
            cout << "\n电子邮箱为:" << p->data.email<<endl;
            j++;
        }
        p = p->next;
    }
    p=l->next;
    j = 1;
    while (p) {
        if (p->data.xb == "女") {
            cout << "第" << j << "个女性学生的姓名为:" << p->data.name;
            cout << "\n学号为:" << p->data.no;
            cout << "\n性别为:" << p->data.xb;
            cout << "\n年龄为:" << p->data.age;
            cout << "\n出生年月为:" << p->data.birth;
            cout << "\n地址为:" << p->data.add;
            cout << "\n电话为:" << p->data.phone;
            cout << "\n电子邮箱为:" << p->data.email<<endl;
            j++;
        }
        p = p->next;
    }
    system("pause");
    system("cls");
}


void sortage(linklist &l){//根据学生年龄分类统计
    int ag[100]={0};
    lnode *p;
    p=l->next;
    while(p){
        ag[p->data.age]++;
        p=p->next;
    }
    for(int age=1; age<100; age++){
        p=l->next;
        int j=1;
        while(p){
            if(ag[age]!=0&&p->data.age==age){
                cout << "第" << j << "个年龄为" << age << "的学生的姓名为:" << p->data.name;
                cout << "\n学号为:" << p->data.no;
                cout << "\n性别为:" << p->data.xb;
                cout << "\n年龄为:" << p->data.age;
                cout << "\n出生年月为:" << p->data.birth;
                cout << "\n地址为:" << p->data.add;
                cout << "\n电话为:" << p->data.phone;
                cout << "\n电子邮箱为:" << p->data.email<<endl;
                j++;
            }
            p = p->next;
        }
    }
    system("pause");
    system("cls");
}

void modify(linklist &l) {    //修改信息
    lnode *p;
    p=l->next;
    int item,num=0;
    string name;
    string no;//学号
    string xb;
    int age;
    long long birth;//出生年月
    string add;//地址
    long long phone;//电话
    string email;//电子邮箱
    printf("请输入要修改的学生的学号:\n");
    cin>>no;
    while(p) {
        if(p->data.no==no) {     //比较字符串是否相等
            num=1;
            break;
        }
        p=p->next;
    }
    if(num) {
        printf("                             ----------------------------\n");
        printf("                             ---------1.修改姓名---------\n");
        printf("                             ---------2.修改年龄---------\n");
        printf("                             ---------3.修改性别---------\n");
        printf("                             ---------4.修改生日---------\n");
        printf("                             ---------5.修改地址---------\n");
        printf("                             ---------6.修改电话---------\n");
        printf("                             ---------7.修改邮箱---------\n");
        printf("                             ---------8.退出本菜单-------\n");
        printf("                             ----------------------------\n");
        while(1) {
            printf("                             请选择子菜单编号:");
            scanf("%d",&item);
            switch(item) {
                case 1:
                    printf("                             请输入新的姓名:\n");
                    cin>>name;
                    p->data.name=name;
                    break;
                case 2:
                    printf("                             请输入新的年龄:\n");
                    cin>>age;
                    p->data.age=age;
                    break;
                case 3:
                    printf("                             请输入新的性别:\n");
                    cin>>xb;
                    p->data.xb=xb;
                    break;
                case 4:
                    printf("                             请输入新的生日:\n");
                    cin>>birth;
                    p->data.birth=birth;
                    break;
                case 5:
                    printf("                             请输入新的地址:\n");
                    cin>>add;
                    p->data.add=add;
                    break;
                case 6:
                    printf("                             请输入新的电话:\n");
                    cin>>phone;
                    p->data.phone=phone;
                    break;
                case 7:
                    printf("                             请输入新的邮箱:\n");
                    cin>>email;
                    p->data.email=email;
                    break;
                case 8:
                    system("cls");
                    return;
                default:
                    printf("                             请在1-8之间选择\n");
            }
        }
    } else {
        printf("                             该学生不存在,请重新输入:\n");
    }
}



void deletelist(linklist &l){//删除某学生信息
    string s1;
    cout<<"请输入你想删除学生的学号:"<<endl;
    cin>>s1;
    lnode *p,*q;
    p=l;
    int flag=0;
    while(p->next!=NULL){
        q=p->next;
        if(q->data.no==s1){
            if(q->next!=NULL){
                p->next = q->next;
                delete q;
                flag=1;
            }
            else{
                delete q;
                p->next = NULL;
                flag=1;
            }
        }
        p=p->next;
        if(flag)
            break;
    }
    sort(l);
    if(!flag)
        cout<<"查无此人"<<endl;
    else
        cout<<"删除成功"<<endl;
    system("pause");
    system("cls");
}


void menu(linklist &l) {    //学生信息管理系统界面
    int num;
    printf(" \n\n                    \n\n");
    system("cls");
    printf("                               ******************************************************\n\n");
    printf("                               *                学生信息管理系统                    *\n \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.排序分类信息    * *  9.退出系统        *                   \n");
    printf("                                  ********************** **********************             \n");
    printf("                                  ----------------------   ----------------------                           \n");
    printf("                             请选择菜单编号:");
    scanf("%d",&num);
    switch(num) {
        case 0:
            system("cls");
            help();
            break;
        case 1:
            system("cls");
            refresh();
            break;
        case 2:
            int i;
            system("cls");
            printf("\n\n\n\n\n\n\n\n\n\n");
            printf("                                   ----------------------\n");
            printf("                                   -----1.按学号查询-----\n");
            printf("                                   -----2.按姓名查询-----\n");
            printf("                                   -----3.退出本菜单-----\n");
            printf("                                   ----------------------\n");
            cin>>i;
            switch (i) {
                case 1:
                    findlist_no(l);break;
                    break;
                case 2:
                    findlist_name(l);break;
                case 3:
                    system("cls");
                    return;
            }
            break;
        case 3:
            system("cls");
            modify(l);
            break;
        case 4:
            system("cls");
            insertlist(l);
            break;
        case 5:
            system("cls");
            deletelist(l);
            break;
        case 6:
            system("cls");
            showlist(l);
            break;
        case 7:
            system("cls");
            preserve(l);
            break;
        case 8:
            system("cls");
            printf("                      -------------------------------------------------------------------------------------\n");
            printf("                             ------------------------1.按性别分类排序-----------------------\n");
            printf("                             ------------------------2.按年龄分类统计-----------------------\n");
            printf("                             ------------------------3.退出本菜单    -----------------------\n");
            printf("                      -------------------------------------------------------------------------------------\n");
            cin>>i;
            switch (i) {
                case 1:
                    sortsex(l);
                    break;
                case 2:
                    sortage(l);
                    break;
                case 3:
                    system("cls");
                    return;
            }
            break;
        case 9:
            system("cls");
            k=0;
            break;
        default:
            printf("                             请在0-9之间选择\n");
    }
}


int main(){
    linklist l;
    initlist(l);
    while(k){
        menu(l);
    }
    system("pause");
    return 0;
}

 顺序储存:

#顺序表
#include<stdio.h>	/*I/O函数*/
#include<stdlib.h>	/*其它说明*/
#include<string.h>	/*字符串函数*/
#define LEN 15
#define N 50
int k=1,n=0, m=0;	//n表示当前记录的学生人数
struct student {
	char code[LEN];  //学号
	char name[LEN];  //姓名
	int age;			//年龄
	char sex[N];		//性别
	char chushen[LEN];   //出生年月
	char dizhi[LEN];	//地址
	char phone[LEN];	//手机号
	char email[LEN]; 	//邮箱
};
struct student stu[N];
void help() {	//帮助
	printf("\n                             0.欢迎使用系统帮助!\n");
	printf("\n                             1.初次进入系统后,请先选择增加学生信息;\n");
	printf("\n                             2.按照菜单提示键入数字代号;\n");
	printf("\n                             3.增加学生信息后,切记保存;\n");
	printf("\n                             4.谢谢您的使用!\n");
		system("pause");
		system("cls");
}


void seek() {	//查找
	int i,item,flag;
	char s1[21];
	system("cls");
	printf("\n\n\n\n\n\n\n\n\n\n");
	printf("                                   ----------------------\n");
	printf("                                   -----1.按学号查询-----\n");
	printf("                                   -----2.按姓名查询-----\n");
	printf("                                   -----3.退出本菜单-----\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(stu[i].code,s1)==0) {	//比较两个字符串 若s1==s2,返回0; s1>s2,返回正数; s1<s2,返回负数.
						flag=1;
						printf("                             学生学号    学生姓名  年龄   性别  出生年月	地址  	电话	email   \n");
						printf("                             --------------------------------------------------------------------\n");
						printf("                             %6s %7s %6d %6s %6s %6s %6s %6s \n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].chushen,stu[i].dizhi,stu[i].phone,stu[i].email);
					}
				if(0==flag)
					printf("                             该学号不存在!\n");
					system("pause");
				break;
			case 2:
				printf("                             请输入要查询的学生的姓名:\n");
				scanf("%s",s1);
				for(i=0; i<n; i++) {
					if(strcmp(stu[i].name,s1)==0) {
						flag=1;
						printf("                             学生学号    学生姓名  年龄   性别  出生年月	地址  	电话	email  \n");
						printf("                             --------------------------------------------------------------------\n");
						printf("                             %6s %7s %6d %6s %6s %6s %6s %6s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].chushen,stu[i].dizhi,stu[i].phone,stu[i].email);
					}
				}
				if(0==flag) {
					printf("                             该姓名不存在!\n");
					system("pause");
					break;
				}
			case 3:
				system("cls");
				return;
			default:
				printf("                             请在1-3之间选择\n");
		}
	}
}


void modify() {	//修改信息
	int i,item,num=-1;
	char sex1[N],s1[LEN+1],s2[LEN+1],s3[LEN+1],s4[LEN+1],s5[LEN+1],s6[LEN+1];
	float score1;
	printf("请输入要修改的学生的学号:\n");
	scanf("%s",s1);
	for(i=0; i<n; i++) {
		if(strcmp(stu[i].code,s1)==0) { 	//比较字符串是否相等
			num=i;
			break;
		}
	}
	if(num+1) {
		printf("                             ----------------------------\n");
		printf("                             ---------1.修改姓名---------\n");
		printf("                             ---------2.修改年龄---------\n");
		printf("                             ---------3.修改性别---------\n");
		printf("                             ---------4.修改生日---------\n");
		printf("                             ---------5.修改地址---------\n");
		printf("                             ---------6.修改电话---------\n");
		printf("                             ---------7.修改邮箱---------\n");
		printf("                             ---------8.退出本菜单-------\n");
		printf("                             ----------------------------\n");
		while(1) {
			printf("                             请选择子菜单编号:");
			scanf("%d",&item);
			switch(item) {
				case 1:
					printf("                             请输入新的姓名:\n");
					scanf("%s",s2);
					strcpy(stu[num].name,s2);
					break;
				case 2:
					printf("                             请输入新的年龄:\n");
					scanf("%d",&stu[num].age);
					break;
				case 3:
					printf("                             请输入新的性别:\n");
					gets(sex1);
					strcpy(stu[num].sex,sex1);
				case 4:
					printf("                             请输入新的生日:\n");
					scanf("%s",s3);
					strcpy(stu[num].name,s3);
					break;
				case 5:
					printf("                             请输入新的地址:\n");
					scanf("%s",s4);
					strcpy(stu[num].name,s4);
					break;
				case 6:
					printf("                             请输入新的电话:\n");
					scanf("%s",s5);
					strcpy(stu[num].name,s5);
					break;
				case 7:
					printf("                             请输入新的邮箱:\n");
					scanf("%s",s6);
					strcpy(stu[num].name,s6);
					break;
				case 8:
					system("cls");
					return;
				default:
					printf("                             请在1-8之间选择\n");
			}
		}
	} else {
		printf("                             该学生不存在,请重新输入:\n");
	}
}
void sort() {	//按学号排序
	int i,j,k,*p,*q,s;
	char temp[LEN+1],ctemp[N];
	float ftemp;
	for(i=0; i<n-1; i++) {
		for(j=n-1; j>i; j--)
			if(strcmp(stu[j-1].code,stu[j].code)>0) {
				strcpy(temp,stu[j-1].code);
				strcpy(stu[j-1].code,stu[j].code);
				strcpy(stu[j].code,temp);
				strcpy(temp,stu[j-1].name);
				strcpy(stu[j-1].name,stu[j].name);
				strcpy(stu[j].name,temp);
				strcpy(ctemp,stu[j-1].sex);
				strcpy(stu[j-1].sex,stu[j].sex);
				strcpy(stu[j].sex,ctemp);
				p=&(stu[j-1].age);
				q=&(stu[j].age);
				s=*q;
				*q=*p;
				*p=s;
			}
	}
}

void insert() {	//插入学生信息
	int j=n;

	printf("                             请输入待增加的学生数:\n");
	scanf("                             %d",&m);
	while(j<m+n) {
		printf("                             请输入第%d 个学生的学号:\n",j-n+1);
		scanf("                             %s",stu[j].code);
		printf("                             请输入第%d 个学生的姓名:\n",j-n+1);
		scanf("                             %s",stu[j].name);
		printf("                             请输入第%d 个学生的年龄:\n",j-n+1);
		scanf("                             %d",&stu[j].age);
		printf("                             请输入第%d 个学生的性别:\n",j-n+1);
		scanf("                             %s",stu[j].sex);
		printf("                             请输入第%d 个学生的生日:\n",j-n+1);
		scanf("                             %s",stu[j].chushen);
		printf("                             请输入第%d 个学生的地址:\n",j-n+1);
		scanf("                             %s",stu[j].dizhi);
		printf("                             请输入第%d 个学生的电话号码:\n",j-n+1);
		scanf("                             %s",stu[j].phone);
		printf("                             请输入第%d 个学生的邮箱:\n",j-n+1);
		scanf("                             %s",stu[j].email);
		j++;
	}
	n=n+m;
	printf("                             信息增加完毕!\n\n");
		system("pause");
		system("cls");
	sort();		//按学号排序
}

void del() {	//删除学生信息
	int i,j,flag=0;
	char s1[LEN+1];
	printf("                             请输入要删除学生的学号:\n");
	scanf("%s",s1);
	for(i=0; i<n; i++)
		if(strcmp(stu[i].code,s1)==0) {
			flag=1;
			for(j=i; j<n-1; j++) {
				strcpy(stu[j].code,stu[j+1].code);
				strcpy(stu[j].name,stu[j+1].name);
				stu[j].age=stu[j+1].age;
				strcpy(stu[j].sex,stu[j+1].sex);
				strcpy(stu[j].chushen,stu[j+1].chushen);
				strcpy(stu[j].dizhi,stu[j+1].dizhi);
				strcpy(stu[j].phone,stu[j+1].phone);
				strcpy(stu[j].email,stu[j+1].email);
			}

		}
	if(flag==0) {
		system("cls");
		printf("                             该学号不存在!\n");
	} else {
		n--;
		printf("                             删除成功,显示结果请选择菜单\n");
		system("pause");
		system("cls");
	}
}


void display() {	//显示学生信息
	int i;
	system("cls");
	printf("\n\n\n\n");
	printf("                             共有%d位学生的信息:\n",n);
	if(n) {
		printf("                             学生学号     学生姓名 年龄  性别  出生年月	地址  	电话	email \n");
		printf("                             --------------------------------------------------------------------\n");
		for(i=0; i<n; i++) {
			printf("                             %6s %7s %6d %6s %6s %6s %6s %6s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].chushen,stu[i].dizhi,stu[i].phone,stu[i].email);
		}
	}
	system("pause");
	system("cls");
}
void  preserve() {	//将学生信息保存到文件中
	FILE * fpreserve;
	char ch='\n';
	int i;
	fpreserve=fopen("StudentInformation.txt","wt+");
	fprintf(fpreserve,"学生学号         学生姓名 年龄  性别  出生年月	地址             手机号码    email %c",ch);
	for(i=0; i<n; i++) {
		fprintf(fpreserve,"%6s %7s %6d %6s %6s %6s %6s %6s %c",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].chushen,stu[i].dizhi,stu[i].phone,stu[i].email,ch);
	}
	system("cls");
	printf("      \n\n\n\n\n\n\n\n\n\n\n                                                     保存完毕!!!\n");
		system("pause");
		system("cls");
	fclose(fpreserve);
}
void refresh() {	//刷新
	printf("                             刷新完毕!!!");
		system("pause");
		system("cls");
}
void paixu() {//8、排序功能
	int i,u,l,age,f;
	int ag[100]= {0};
	system("cls");
	printf("                      -------------------------------------------------------------------------------------\n");
	printf("                             ------------------------1.按性别分类排序-----------------------\n");
	printf("                             ------------------------2.按年龄分类统计-----------------------\n");
	printf("                             ------------------------3.退出本菜单    -----------------------\n");
	printf("                      -------------------------------------------------------------------------------------\n");
	while(1) {
		printf("                             请输入子菜单编号:");
		scanf("%d",&l);
		switch(l) {
			case 1:
				printf("                                          男:\n");
				printf("                             学生学号    学生姓名  年龄   性别  出生年月	地址  	电话	email \n");
				printf("                       --------------------------------------------------------------------------\n");
				for(i=0; i<=n; i++) {
					if(strcmp(stu[i].sex,"男\0")==0) {
						printf("                             %6s %7s %6d %6s %6s %6s %6s %6s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].chushen,stu[i].dizhi,stu[i].phone,stu[i].email);
					}
				}
				printf("                       --------------------------------------------------------------------------\n");
				printf("                                          女:\n");
				printf("                             学生学号    学生姓名  年龄   性别  出生年月	地址  	电话	email  \n");
				printf("                       --------------------------------------------------------------------------\n");
				for(u=0; u<=n; u++) {
					if(strcmp(stu[u].sex,"女\0")==0) {
						printf("                             %6s %7s %6d %6s %6s %6s %6s %6s\n",stu[u].code,stu[u].name,stu[u].age,stu[u].sex,stu[i].chushen,stu[i].dizhi,stu[i].phone,stu[i].email);
					}
				}
				printf("                       --------------------------------------------------------------------------\n");
				system("pause");
				break;
			case 2:
				for(f=0; f<n; f++) {
					ag[stu[f].age]++;
				}
				for(age=1; age<100; age++) {
					if(ag[age]!=0) {
						printf("                       -----------------------%d岁的同学们------------------------\n",age);                             //kon
						printf("                             学生学号    学生姓名  年龄   性别  出生年月	地址  	电话	email  \n");
						for(f=0; f<n; f++) {
							if(stu[f].age==age) {
								printf("                             %6s %7s %6d %6s %6s %6s %6s %6s\n",stu[f].code,stu[f].name,stu[f].age,stu[f].sex,stu[i].chushen,stu[i].dizhi,stu[i].phone,stu[i].email);
							}
						}
					}
				}
				system("pause");
				break;
			case 3:system("cls");
				return;
			default:
				printf("                             请在1-3之间选择\n");
		}
	}
}
void menu() {	//学生信息管理系统界面
	int num;
	printf(" \n\n                    \n\n");
	system("cls");
	printf("                               ******************************************************\n\n");
	printf("                               *                学生信息管理系统                    *\n \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.排序分类信息    * *  9.退出系统        *                   \n");
	printf("                                  ********************** **********************             \n");
	printf("                                  ----------------------   ----------------------                           \n");
	printf("                             请选择菜单编号:");
	scanf("%d",&num);
	switch(num) {
		case 0:
			system("cls");
			help();
			break;
		case 1:
			system("cls");
			refresh();
			break;
		case 2:
			system("cls");
			seek();
			break;
		case 3:
			system("cls");
			modify();
			break;
		case 4:
			system("cls");
			insert();
			break;
		case 5:
			system("cls");
			del();
			break;
		case 6:
			system("cls");
			display();
			break;
		case 7:
			system("cls");
			preserve();
			break;
		case 8:
			system("cls");
			paixu();
			break;
		case 9:
			system("cls");
			k=0;
			break;
		default:
			printf("                             请在0-9之间选择\n");
	}
}
int main(void) {//主函数

	while(k) {
		menu();
	}
	system("pause");
	return 0;
}

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值