课程设计: 学生信息管理系统
2016-12-29 16:09
423 查看
/***************************************************** * 版权所有(C)2016,姜孝龙 * *文件名称:A.C 学生信息管理系统 *文件标识:无 *内容摘要: *其他说明:无 *当前版本:V1.0 *作者:姜孝龙 *完成日期:2016.12.29 * ******************************************************/ #include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h> #define MaxSize 200 typedef struct//定义结构体 { int num; char name[20]; char sex[10]; char age[10]; char jg[20]; char kaoshi[20]; }student; typedef struct { student data[MaxSize]; int length;//int型变量 } SqList; void InitList(SqList *&L)//指针的引用顺序表创建 { L=(SqList *)malloc(sizeof(SqList));//分配空间 L->length=0;//初始化顺序表 } int system(const char *string); //清屏函数 /********************************************************* * 功能描述: 增加新的学生 * 输入描述: 新增的学生相关信息 * 输出描述: 此生存在会输出"该生已存在" * 返回值 : 无 * 其它说明: ************************************************************/ void creatlist1(SqList *&L) //1.添加报考学生信息 { int i=0; if(L->length==0) //为空直接添加 { printf("请添加(学号为整形) :\n"); printf("学号 姓名 性别 年龄 籍贯 考试类别\n"); scanf("%d%s%s%s%s%s",&L->data[L->length].num,L->data[L->length].name,L->data[L->length].sex,L->data[L->length].age,L->data[L->length].jg,L->data[L->length].kaoshi ); L->length++; printf("添加成功!\n"); } else//不为空,判断重号 { int c; int a=0; while(1) { c=1; printf(" 请添加(学号为整形) :\n"); printf(" 学号 姓名 性别 年龄 籍贯 考试类别\n"); scanf("%d%s%s%s%s%s",&L->data[L->length].num,L->data[L->length].name,L->data[L->length].sex,L->data[L->length].age,L->data[L->length].jg,L->data[L->length].kaoshi ); for( i=0;i<L->length;i++) { if(L->data[i].num==L->data[L->length].num)//学号重复 { c=0; if(strcmp(L->data[i].name,L->data[L->length].name)==0&&strcmp(L->data[i].sex,L->data[L->length].sex)==0&&strcmp(L->data[i].age,L->data[L->length].age)==0&&strcmp(L->data[i].jg,L->data[L->length].jg)==0) { if(strcmp(L->data[i].kaoshi,L->data[L->length].kaoshi)!=0)//学科不重复 { a=0; L->length++; printf(" 添加成功\n"); printf(" 添加的所有成员有:\n"); printf("\t学号\t姓名\t性别\t年龄\t籍贯\t考试类别\n"); for(i=0;i<L->length;i++) printf("\t%d\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg,L->data[i].kaoshi ); return; } else//学科重复 { printf(" 这门课程该考生已报考!\n"); return ; } } else a=1; //学号重复 printf(" 学号已使用!\n"); } } if(c==1) { L->length++; printf("添加成功!\n"); return; } } } } /********************************************************* * 功能描述: 查找学生信息 * 输入描述: 要查找学生的学号 * 输出描述: 此生不存在时会输出“此生不存在” 存在会输出该生的相应修改信息 * 返回值 : 无 * 其它说明: ************************************************************/ void checklist1(SqList *&L) //2.按考号查询 { if(L->length==0) printf(" 没有考生报考!\n"); else { int num, c=0; int m=0; int i; printf(" 请输入查找学生的学号(学号为整形):"); scanf("%d",&num); for(i=0;i<L->length;i++) { if(L->data[i].num==num) { if(m==0) { printf(" 结果是\n"); printf("\t学号\t姓名\t性别\t年龄\t籍贯\t考试类别\n"); } m++; c=1;//找到 printf("\t%d\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg,L->data[i].kaoshi ); } } if(c==0) printf(" 查无此学生!\n"); } } ////////////////////////////////////////////////////////////////////////////// void checklist2(SqList *&L) //3.按考试类别查询 { if(L->length==0) printf(" 没有考生报考!\n"); else { char kaoshi[20]; int c=0; int m=0; int i; printf(" 请输入查找学生的考试类别:"); scanf("%s",kaoshi); for(i=0;i<L->length;i++) { if(strcmp(L->data[i].kaoshi,kaoshi)==0) //考试类别相同 { if(m==0) { printf(" 结果是\n"); printf("\t学号\t姓名\t性别\t年龄\t籍贯\t考试类别\n"); } c=1; m++; printf("\t%d\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg,L->data[i].kaoshi ); } } if(c==0) printf(" 该课程无人报考!\n"); } } void paixu1(SqList *&L) //4.按学号排序 /********************************************************* * 功能描述: 排序 * 输入描述: * 输出描述: 不存在学生时会输出"还没有学生信息,请增加学生信息" 不然就输出按成绩排序后的所有学生信息 * 返回值 : 无 * 其它说明: ************************************************************/ { if(L->length==0) printf(" 没有考生报考!\n"); else { int num; char name[20]; char sex[10]; char age[10]; char jg[20]; char kaoshi[20]; int i,j; for(j=0;j<L->length;j++) //冒泡排序法 { for(i=L->length-1;i>j;i--) if(L->data[i].num<L->data[i-1].num) { num=L->data[i].num; L->data[i].num=L->data[i-1].num; L->data[i-1].num=num; strcpy(name,L->data[i].name); strcpy(L->data[i].name,L->data[i-1].name); strcpy(L->data[i-1].name,name); strcpy(sex,L->data[i].sex); strcpy(L->data[i].sex,L->data[i-1].sex); strcpy(L->data[i-1].sex,sex); strcpy(age,L->data[i].age); strcpy(L->data[i].age,L->data[i-1].age); strcpy(L->data[i-1].age,age); strcpy(jg,L->data[i].jg); strcpy(L->data[i].jg,L->data[i-1].jg); strcpy(L->data[i-1].jg,jg); strcpy(kaoshi,L->data[i].kaoshi); strcpy(L->data[i].kaoshi,L->data[i-1].kaoshi); strcpy(L->data[i-1].kaoshi,kaoshi); } } printf("按学号升序结果是\n"); printf("\t学号\t姓名\t性别\t年龄\t籍贯\t考试类别\n"); for(i=0;i<L->length;i++) { printf("\t%d\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg,L->data[i].kaoshi); } } } /////////////////////////////////////////////////////////////////////////////////// void paixu2(SqList *&L) //5.按考试类别排序 { if(L->length==0) printf(" 没有考生报考!\n"); else { int num; char name[20]; char sex[10]; char age[10]; char jg[20]; char kaoshi[20]; int i,j; for(j=0;j<L->length;j++) //冒泡法来处理考试信息 { for(i=L->length-1;i>j;i--) if(strcmp(L->data[i].kaoshi,L->data[i-1].kaoshi)==-1) //判断条件 { num=L->data[i].num; L->data[i].num=L->data[i-1].num; L->data[i-1].num=num; strcpy(name,L->data[i].name); strcpy(L->data[i].name,L->data[i-1].name); strcpy(L->data[i-1].name,name); strcpy(sex,L->data[i].sex); strcpy(L->data[i].sex,L->data[i-1].sex); strcpy(L->data[i-1].sex,sex); strcpy(age,L->data[i].age); strcpy(L->data[i].age,L->data[i-1].age); strcpy(L->data[i-1].age,age); strcpy(jg,L->data[i].jg); strcpy(L->data[i].jg,L->data[i-1].jg); strcpy(L->data[i-1].jg,jg); strcpy(kaoshi,L->data[i].kaoshi); strcpy(L->data[i].kaoshi,L->data[i-1].kaoshi); strcpy(L->data[i-1].kaoshi,kaoshi); } } printf(" 按考试类别升序结果是\n"); printf("\t学号\t姓名\t性别\t年龄\t籍贯\t考试类别\n:"); for(i=0;i<L->length;i++) { printf("\t%d\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg,L->data[i].kaoshi); } } } /********************************************************* * 功能描述: 修改学生信息 * 输入描述: 要修改学生的学号 * 输出描述: 此生不存在时会输出“此生不存在” 存在会输出相应的修改信息的语句 * 返回值 : 无 * 其它说明: ************************************************************/ void changlist1(SqList *&L) //6.修改学生报考信息 { if(L->length==0) printf(" 没有考生报考!\n"); else { int num; char name[20]; char sex[10]; char age[10]; char jg[20]; int c=0; int i; int f=0; printf(" 请输入要修改学生的学号(学号为整形)"); scanf("%d",&num); for(i=0;i<L->length;i++) { if(L->data[i].num==num) { c=1; if(f==0) { printf(" 输入要修改的内容\n"); printf(" 姓名 性别 年龄 籍贯\n"); scanf("%s%s%s%s",name,sex,age,jg ); f++; } strcpy(L->data[i].name,name); strcpy(L->data[i].sex,sex); strcpy(L->data[i].age,age); strcpy(L->data[i].jg,jg); } if(c==1&&i==L->length-1) { printf(" 修改成功\n"); printf(" 修改后是\n"); printf("\t学号\t姓名\t性别\t年龄\t籍贯\t考试类别\n"); for(i=0;i<L->length;i++) printf("\t%d\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg,L->data[i].kaoshi ); } } if(c==0) printf(" 此表中无此学生!\n"); } } ///////////////////////////////////////////////////////////////////////////////////// void changlist2(SqList *&L) ba4d //7.修改学生考试类型 { if(L->length==0) printf(" 没有考生报考!\n"); else { int num; char kaoshi1[20]; char kaoshi2[20]; int c=0; int i; printf(" 修改前为\n"); printf("\t学号\t姓名\t性别\t年龄\t籍贯\t考试类别\n"); for(i=0;i<L->length;i++) printf("\t%d\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg,L->data[i].kaoshi ); printf(" 请输入要修改学生的学号(学号为整形)"); scanf("%d",&num); int f=0; for(i=0;i<L->length;i++) { if(L->data[i].num==num) { c=1; if(f==0) { printf(" 输入该学生的考试类别"); scanf("%s",kaoshi1 ); f++; } if(strcmp(L->data[i].kaoshi,kaoshi1)==0) { printf(" 输入新的考试类别"); scanf("%s",kaoshi2); int u=0; for(int j=0;j<L->length;j++) { if(L->data[j].num==num&&strcmp(L->data[j].kaoshi,kaoshi2)==0) { u=1; printf(" 此课程该考生已报考 修改失败!\n");return; } } if(u==0) { strcpy(L->data[i].kaoshi,kaoshi2); printf(" 修改成功!\n"); printf(" 修改后是:\n"); printf("\t学号\t姓名\t性别\t年龄\t籍贯\t考试类别\n"); for(i=0;i<L->length;i++) printf("\t%d\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg,L->data[i].kaoshi ); return; } } } if(c==1&&i==L->length-1) printf(" 该学生没报这门课!\n"); } if(c==0) printf(" 此表中无此学生!\n"); } } /********************************************************* * 功能描述: 删除学生 * 输入描述: 要删除学生的学号 * 输出描述: 此生不存在时会输出“此生不存在” 链表本身为空时会输出"还没有学生信息请增加学生信息" * 返回值 : 无 * 其它说明: ************************************************************/ void deletelist1(SqList *&L) //8.删除学生报考信息 { if(L->length==0) printf(" 没有考生报考!\n"); else { int num; char kaoshi1[20]; int c=0 ,i,j; printf(" 删除前:\n"); printf("\t学号\t姓名\t性别\t年龄\t籍贯\t考试类别\n"); for(i=0;i<L->length;i++) printf("\t%d\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg,L->data[i].kaoshi ); printf(" 输入删除的学号(学号为整形):"); scanf("%d",&num); int f=0,b=0; for (i=0;i<L->length;i++) { if(L->data[i].num==num) { c=1;//找到 if(f==0) { printf(" 输入该学生的考试类别:"); scanf("%s",kaoshi1 ); f++; } if(strcmp(L->data[i].kaoshi,kaoshi1)==0) { b=1;//考号相同 for (j=i;j<L->length-1;j++)//使被查到的后的数据前移进行覆盖从而删除查找的元素 { L->data[j]=L->data[j+1]; } L->length--; printf(" 删除成功!\n"); printf(" 删除后是:\n"); if(L->length==0) { printf(" 没有考生报考!\n"); return; } else { printf("\t学号\t姓名\t性别\t年龄\t籍贯\t考试类别\n"); for(i=0;i<L->length;i++) printf("\t%d\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg,L->data[i].kaoshi ); return; } } } if(i==L->length-1&&c==1&&b==0) printf(" 该学生没报此门课!\n"); } if(c==0) printf(" 此表中无此人!\n"); } } void tongji(SqList *&L) //9.学生信息统计 /********************************************************* * 功能描述: 浏览全部学生信息 * 输入描述: * 输出描述: 不存在学生时会输出"还没有学生信息,请增加学生信息" 不然就输出所有学生信息 * 返回值 : 无 * 其它说明: ************************************************************/ { int i; printf("\t学号\t姓名\t性别\t年龄\t籍贯\t考试类别\n"); for(i=0;i<L->length;i++) { printf("\t%d\t%s\t%s\t%s\t%s\t%s\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].age,L->data[i].jg,L->data[i].kaoshi); } } ///////////////////////////////////////////////////////////////////////////////////////// /********************************************************* * 功能描述: 功能菜单 * 输入描述: 无 * 输出描述: 无 * 返回值 : 无 * 其它说明: 输出功能菜单栏 ************************************************************/ void main() { SqList *L; InitList(L); printf("\t\t \n"); printf("\t\t 欢迎进入学生信息管理系统\n"); while(1) { int n ; 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(" 9.学生信息统计\n"); printf(" 0.退出系统\n"); printf("---------------------------------------------------------------------\n"); printf("请输入菜单选项:"); scanf("%d",&n); switch (n) { case 1: system("cls"); creatlist1(L); break; case 2: system("cls"); checklist1(L); break; case 3: system("cls"); checklist2(L); break; case 4: system("cls"); paixu1(L); break; case 5: system("cls"); paixu2(L); break; case 6: system("cls"); changlist1(L); break; case 7: system("cls"); changlist2(L); break; case 8: system("cls"); deletelist1(L); break; case 9: system("cls"); tongji(L); break; case 0: return;break; default: printf("输入有误!"); } } }
截图:
相关文章推荐
- 课程设计~学生信息管理系统代码
- 课程设计:学生信息管理系统设计
- C语言课程设计——学生信息管理系统(BUG挺多,敬请指正)
- 课程设计---学生信息管理系统
- 数据结构课程设计---学生信息管理系统
- C语言学生成绩信息管理系统课程设计报告
- 课程设计-学生信息管理系统
- 数据结构课程设计——学生信息管理系统
- 课程设计--学生信息管理系统
- 学生信息管理系统(课程设计)
- 数据结构课程设计论文--学生信息管理系统
- 学生信息综合管理系统开发记录(数据库课程设计)
- 课程设计--学生信息管理系统
- 数据结构课程设计---学生信息管理系统
- 数据结构课程设计—学生信息管理系统
- C语言课程设计-学生信息管理系统
- 数据结构课程设计-学生信息管理系统
- C语言课程设计之学生信息管理系统
- 学生信息管理系统-数据结构课程设计
- 关于c++ 课程设计(学生信息管理系统)