这周刚刚学完了线性表,现在就动手实践我很久就想做的事了(怎么感觉到自己懒懒的呢 额, 好像似的,因为这个系统也不算难嘛 重点在于对结构体的操作) 嗯,话不多说,现在就把代码贴出来!
/******************************************************************** 文件名:stu_info_man.cpp 描述: 这个程序用于统计学生的学号,姓名,年龄,性别,专业,班级, 绩点,证书信息,并实现对其的浏览,查找,排序,增加,删除等 基本功能 作者: Anka9080 完成日期: 2014/3/22 ********************************************************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAXSIZE 1000 /* 结构体Datatype用来存放每个学生的各种信息 */ typedef struct { int num; char name[10]; int age; char sex[3]; char course[15]; char cla[5]; float point; char cert[20]; } Datatype; /* 结构体List可看作一张存放许多学生信息的表,后面主要对这张表进行操作 */ typedef struct { Datatype data[MAXSIZE]; int len; /* 记录学生人数 */ }List; /*录入学生信息*/ void input_stu(List *L) { int i; printf("请输入学生人数:"); scanf("%d",&L->len); printf("请依次输入\n\n"); printf("学号 姓名 年龄 性别 专业 班级 绩点 证书\n"); for(i=0;i<L->len;i++) { scanf("%d%s%d%s%s%s%f%s",&L->data[i].num,L->data[i].name, &L->data[i].age,L->data[i].sex,L->data[i].course, L->data[i].cla,&L->data[i].point,L->data[i].cert); } } /* 打印学生信息 */ void print_stu(List *L,int i) { printf("%8d%8s%10d%10s%8s%8s%8.2f %s\n",L->data[i].num,L->data[i].name, L->data[i].age,L->data[i].sex,L->data[i].course, L->data[i].cla,L->data[i].point,L->data[i].cert); } /* 报错显示 */ void err_stu(void) { printf("\n操作不合法,请重新操作!\n\n"); } /* 浏览学生信息 */ void display_stu(List *L) { int i; printf("学号 姓名 年龄 性别 专业 班级 绩点 证书\n"); for(i=0;i<L->len;i++) { print_stu(L,i); } } /* 查找学生信息 */ void search_stu(List *L) { int sech,num; char name[20]; printf("按学号查找请输入1,按姓名查找请输入2:"); scanf("%d",&sech); if(sech==1) { printf("\n请输入学号:"); scanf("%d",&num); for(int i=0;i<L->len;i++) { if(num==L->data[i].num) { print_stu(L,i); } } } if(sech==2) { printf("\n请输入姓名:"); scanf("%s",name); for(int j=0;j<L->len;j++) { if(strcmp(name,L->data[j].name)==0); { print_stu(L,j); } } } if(sech!=1&&sech!=2) { err_stu(); } } /* 排序 */ void sort_stu(List *L) { int ran; printf("按学号绩点请输入1,按学号删除请输入2:"); scanf("%d",&ran); if(ran==1) { printf("按绩点从高到低排序如下:\n\n"); Datatype temp; for(int i=0;i<L->len-1;i++) /* 冒泡法对元素point进行排序 */ { for(int j=0;j<(L->len-1)-i;j++) { if(L->data[j].point < L->data[j+1].point) { temp=L->data[j]; L->data[j]=L->data[j+1]; L->data[j+1]=temp; } } } display_stu(L); /* 调用浏览函数对整张表打印输出 */ } if(ran==2) { printf("按学号从低到高排序如下:\n\n"); Datatype temp; for(int i=0;i<L->len-1;i++) /* 冒泡法对元素point进行排序 */ { for(int j=0;j<(L->len-1)-i;j++) { if(L->data[j].num > L->data[j+1].num) { temp=L->data[j]; L->data[j]=L->data[j+1]; L->data[j+1]=temp; } } } display_stu(L); /* 调用浏览函数对整张表打印输出 */ } if(ran!=1&&ran!=2) { err_stu(); } } /* 插入学生信息 */ void add_stu(List *L) { Datatype temp; int temp_num,t=-1; printf("请输入该学生各项信息:\n"); printf("学号 姓名 年龄 性别 专业 班级 绩点 证书\n"); scanf("%d%s%d%s%s%s%f%s",&temp.num,temp.name, &temp.age,temp.sex,temp.course, temp.cla,&temp.point,temp.cert); printf("若插入A同学前面,请输入A同学的学号:"); scanf("%d",&temp_num); for(int i=0;i<L->len;i++) { if(temp_num==L->data[i].num) { t=i; } } if(t==-1) { err_stu(); } for(int j=L->len-1;j>=t;j--) { L->data[j+1]=L->data[j]; } L->data[t]=temp; L->len++; } /* 删除学生信息 */ void del_stu(List *L) { int del,num,t=-1; char name[20]; printf("按学号删除请输入1,按姓名删除请输入2:"); scanf("%d",&del); if(del==1) { printf("请输入学号:"); scanf("%d",&num); for(int i=0;i<L->len;i++) { if(num==L->data[i].num) { t=i; } } } if(del==2) { printf("请输入姓名:"); scanf("%s",name); for(int j=0;j<L->len;j++) { if(strcmp(name,L->data[j].name)==0); { t=j; } } } if(del!=1&&del!=2) { err_stu(); } if(t==-1) { err_stu(); } for(int k=t;k<L->len-1;k++) { L->data[k]=L->data[k+1]; } L->len--; } /* 菜单 */ void menu_stu() { 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"); } int main() { List *L; int choice; L=(List *)malloc(sizeof(List)); L->len=0; printf(" 欢迎使用大学生信息查询系统 \n"); do { menu_stu(); printf("\n请输入你的选择:"); scanf("%d",&choice); switch(choice) { case 1:printf("\n你选择了录入学生信息\n\n"); input_stu(L); break; case 2:printf("\n你选择了浏览学生信息:\n\n"); display_stu(L); break; case 3:printf("\n你选择了查找学生信息\n\n"); search_stu(L); break; case 4:printf("\n你选择了对学生进行排序:\n\n"); sort_stu(L); break; case 5:printf("\n你选择了插入学生信息\n\n"); add_stu(L); break; case 6:printf("\n你选择了删除学生信息\n\n"); del_stu(L); break; default: err_stu(); } } while(choice!=0); free(L); printf("感谢你的使用,祝你生活愉快!o(^▽^)o ~~\n"); return 0; }
下面截张 程序 起始画面:
总共273行 第一次写到这个长度 作为渣渣的我要继续加油哈!
本文出自 “大熊猫也要彩色照” 博客,请务必保留此出处http://anka9080.blog.51cto.com/8678891/1381565
一个简单学生信息管理系统的编程,布布扣,bubuko.com
原文:http://anka9080.blog.51cto.com/8678891/1381565