//********************************************************************* /* *Copyright(c) 2015,烟台大学计算机与控制工程学院 *All rights reserved. *项目名称:学生成绩管理系统 *作 者:徐群壮 *完成日期:2015.12.25 *版 本 号:v1.0 *描述:
<span style="white-space:pre"> </span>学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量大,本项目是对学生成绩管理的简单模拟,用菜单选择的方式完成下列功能:输入学生数据,输出学生数据,学生数据查询,添加学生数据,修改学生数据,删除学生数据。
<span style="white-space:pre"> </span>本项目的实质是完成对学生成绩信息的建立、查找、插入、修改、删除等功能,可以首先定义项目的数据结构,然后将各个功能写成一个函数完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果 */ //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mian.cpp代码如下:
#include "main.h" void add_stu() //学生信息录入函数 { char sign='y'; //首先定义sing='y' 是否继续添加 system("cls"); //清屏函数 系统中调用,更好的视觉体验 while(sign!='n'&&sign!='N') //其实只有当输入N或n时才跳出循环 { cout<<" ----学生纪录添加----"<<endl; //以下录入学生信息 cout<<"学号"<<endl; cin>>per[i].num; cout<<"姓名"<<endl; cin>>per[i].name; cout<<"年龄"<<endl; cin>>per[i].age; cout<<"英语成绩"<<endl; cin>>per[i].en; cout<<"计算机成绩"<<endl; cin>>per[i].ji; cout<<"是否继续添加?(y/n)"<<endl; cin>>sign; n++; i++; system( "cls "); //清屏函数 系统中调用,更好的视觉体验 } } //*********************************************************************// //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^// void scan_stu() //显示记录 系统的进行学生信息的浏览 { system("cls"); //清屏函数 系统中调用,更好的视觉体验 char sign='y'; cout<<"**************************************************************"; cout<<endl; cout<<endl; cout<<" 学号 姓名 年龄 英语 计算机"; cout<<endl; cout<<endl; cout<<"**************************************************************"; cout<<endl; for(int a=0; a<n; a++) //依次输出学生的信息。 { cout<<" "<<per[a].num<<" "; cout<<" "<<per[a].name<<" "; cout<<" "<<per[a].age<<" "; cout<<" "<<per[a].en<<" "; cout<<" "<<per[a].ji<<" "; cout<<endl; } cout<<"是否需要修改?(y/n)"<<endl; cin>>sign; if(sign!='n'&&sign!='N') //选择是否在浏览后进行修改// change_stu(); system("pause"); //系统等待,更好的用户操作 } //*********************************************************************// //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^// //数据查询模块// void que_stu() //不同方式下的系统查询功能。 { int m; //定义选择查询的方式 system("cls"); //清屏函数。 cout<<"请选择查询方式:"; cout<<endl; cout<<endl; cout<<" 1------姓名 "<<endl; cout<<" 2------学号 "<<endl; cout<<" 3------返回 "<<endl; cout<<endl; cout<<"请输入你要查询的方式"<<endl; cin>>m; while(m!=1&&m!=2&&m!=3) // 当输入不符合要求时,需要提示信息,重新输入 { cout<<"输入错误请重新查询"<<endl; cin>>m; } if(m==1) //姓名查询 { char s[20]; //定义一个存放名字信息的数组 int i; system("cls"); //系统调用功能 cout<<"请输入想查询的姓:"<<endl; scanf("%s",s); //输入要查询的姓名 for(i=0; i<n; i++) //在已经有的结构体数组里挨个寻找 { if(per[i].name[0]==s[0]&&per[i].name[1]==s[1]) //比较per[i].name与所输入的前俩个字符是否相同// { cout<<"学号: "<<per[i].num<<endl; cout<<"姓名: "<<per[i].name<<endl; cout<<"年龄: "<<per[i].age<<endl; cout<<"英语: "<<per[i].en<<endl; cout<<"计算机:"<<per[i].ji<<endl; cout<<endl; } } } if(m==2) //采用学号的方式查询 { char s[15]; // 存放学号的临时数组,用于和结构体数组里的学号进行比对 int i=0; printf("请输入想查询的学号:"); scanf("\t%s",s); //输入要查询的学号 while(strcmp(per[i].num,s)!=0&&i<n)i++; //比较per[i].name与所输入学号是否相同// if(i==n) // 如果一直循环查找到最后,都没有这个人,执行此功能 { cout<<"通讯录里没有此人"; cout<<endl; system("pause"); return; } //如果找到此人的话,输出该学生的信息及成绩 cout<<"学号: "<<per[i].num<<endl; cout<<"姓名: "<<per[i].name<<endl; cout<<"年龄: "<<per[i].age<<endl; cout<<"英语: "<<per[i].en<<endl; cout<<"计算机:"<<per[i].ji<<endl; cout<<endl; } if(m==3) //用户选择退出选项 { cout<<"正在退出"; cout<<endl; int p; int o; for(p=0; p<5; p++) { for(o=0; o<100000000; o++); { cout<<"."; } } } system("pause"); //系统等待,更好的感觉 } //*********************************************************************// //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^// //数据排序功能 void sort_stu() { struct person temp; //定义临时数组用于交换时存放数组信息用于后面的交换// int sum; //总分=英语+计算机 int s[100]; // 用来存放每个学生总分的数组 //int i=0,n=0; int j,k,t; int m; // 要输入的选择方式 system("cls"); cout<<"选择排序方式:"<<endl; cout<<endl; cout<<" 1------英语 "<<endl; cout<<" 2----计算机 "<<endl; cout<<" 3---- 总分 "<<endl; cout<<" 4------返回 "<<endl; cout<<endl; cout<<"请输入你要排序的方式"<<endl; cin>>m; // 输入排序方式 system("cls"); // 清屏功能。 while(m!=1&&m!=2&&m!=3&&m!=4) // 如果输入的排序方式不符合要求需要重新输入 { printf("输入错误请重新输入\n"); scanf("%d",&m); } //按照英语成绩的高低排序 if(m==1) { for(i=0; i<n-1; i++) //采用冒泡法进行排序// { k=i; for(j=i+1; j<n; j++) if(per[j].en>per[k].en) //排序//比较大小// k=j; temp=per[k]; per[k]=per[i]; per[i]=temp; //当符合条件时进行数据交换// } cout<<"**************************************************************"; cout<<endl; cout<<endl; cout<<" 学号 姓名 年龄 英语 计算机"; cout<<endl; cout<<endl; cout<<"**************************************************************"; cout<<endl; for(i=0; i<n; i++) //输入经过排序好了之后的内容 { cout<<" "<<per[i].num<<" "; cout<<" "<<per[i].name<<" "; cout<<" "<<per[i].age<<" "; cout<<" "<<per[i].en<<" "; cout<<" "<<per[i].ji<<" "; cout<<endl; } cout<<"**************************************************************"; cout<<endl; } if(m==2) // 采用学号进行排序 { for(i=0; i<n-1; i++) // 使用冒泡排序 ,经典算法 { k=i; for(j=i+1; j<n; j++) if(per[j].ji>per[k].ji) k=j; temp=per[k]; per[k]=per[i]; per[i]=temp; } cout<<"**************************************************************"; cout<<endl; cout<<endl; cout<<" 学号 姓名 年龄 英语 计算机"; cout<<endl; cout<<endl; cout<<"**************************************************************"; cout<<endl; for(i=0; i<n; i++) // 输入按照学号高低排序之后的学生的信息 { cout<<" "<<per[i].num<<" "; cout<<" "<<per[i].name<<" "; cout<<" "<<per[i].age<<" "; cout<<" "<<per[i].en<<" "; cout<<" "<<per[i].ji<<" "; cout<<endl; } cout<<"**************************************************************"; cout<<endl; } if(m==3) // 按照学生的总分进行排序。 { for(i=0; i<n; i++) { sum=0; sum=per[i].en+per[i].ji; s[i]=sum; // 第一个数组用于数组间信息操作 } for(i=0; i<n-1; i++) { k=i; for(j=i+1; j<n; j++) if(s[j]>s[k]) k=j; t=s[k]; s[k]=s[i]; s[i]=t; //按照总分大小进行排序// temp=per[k]; per[k]=per[i]; per[i]=temp; //随之使其数组相应顺序随总分大小一起排序// } cout<<"**************************************************************"; cout<<endl; cout<<endl; cout<<" 学号 姓名 年龄 英语 计算机"; cout<<endl; cout<<endl; cout<<"**************************************************************"; cout<<endl; for(i=0; i<n; i++) // 输出按照总分排序好的学生的信息。 { cout<<" "<<per[i].num<<" "; cout<<" "<<per[i].name<<" "; cout<<" "<<per[i].age<<" "; cout<<" "<<per[i].en<<" "; cout<<" "<<per[i].ji<<" "; cout<<endl; } cout<<"**************************************************************"; cout<<endl; } system("pause"); // 系统等待,用户更好的体验 } //*********************************************************************// //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^// // 学生信息修改功能 void change_stu() // 用于学生信息修改的功能模块 { int m; // 定义要选择的方式的变量 cout<<"请选择修改方式:"<<endl; cout<<endl; cout<<" 1------姓名 "<<endl; cout<<" 2------学号 "<<endl; cout<<" 3------返回 "<<endl; cout<<endl; cout<<"请输入你要修改的方式"; cin>>m; // 输入要选择的方式 while(m!=1&&m!=2&&m!=3) // 如果输入有误的要继续输入。 { cout<<"您的输入有误,请重新输入"<<endl; cin>>m; } if(m==1) // 选择用查询姓名的方式进行修改 { char s[20]; // 定义一个临时的用来修改的姓名数组 int i=0; cout<<"请输入想修改的姓名:"<<endl; scanf("\t%s",s); // 输入要修改的姓名 while(strcmp(per[i].name,s)!=0&&i<n) i++; //进行比较 找到所需要的信息 if(i==n) // 比较到最后,都没有发现相匹配的内容 { cout<<"通讯录中没有此人!"<<endl; return; } else // 成功找到后 { // 用于重新修改该学生的信息 cout<<"学号"<<endl; cin>>per[i].num; cout<<"姓名"<<endl; cin>>per[i].name; cout<<"年龄"<<endl; cin>>per[i].age; cout<<"英语成绩"<<endl; cin>>per[i].en; cout<<"计算机成绩"<<endl; cin>>per[i].ji; } } if(m==2) // 选择用查询学号的方式来修改学生的信息 { char s[15]; // 定义一个临时存取学号 int i=0; printf("请输入想修改的学号:"); scanf("\t%s",s); //输入要修改的学生的学号 while(strcmp(per[i].num,s)!=0&&i<n)i++; // 进行一一的比对 if(i==n) // 找到最后,依然没有找到该学生的学号 { cout<<"通讯录中没有此人!"<<endl; return; } else // 成功找到后 { // 重新输入该学生的信息,达到修改的目的 cout<<"学号: "<<endl; cin>>per[i].num; cout<<"姓名: "<<endl;; cin>>per[i].name; cout<<"年龄: "<<endl; cin>>per[i].age; cout<<"英语: "<<endl; cin>>per[i].en; cout<<"专业: "<<endl; cin>>per[i].ji; } } } //*********************************************************************// //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^// //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^// //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^// //运用switch语句进行菜单选择// int main() { int n=0; logon(); //开始界面 while(1) //循环使用主界面直到遇到结束命令 { switch(menu_select()) // 函数的调用// { case 1: cout<<" 学生记录添加 "<<endl; cout<<endl; add_stu(); break; case 2: cout<<" 学生信息浏览 "<<endl; scan_stu(); break; case 3: cout<<" 学生信息查询 "<<endl; que_stu(); break; case 4: cout<<" 排序功能 "<<endl; sort_stu(); break; case 5: cout<<" 数据修改 "<<endl; change_stu(); break; case 6: cout<<" 学生信息插入 "<<endl; add_stu(); cout<<endl; break; case 0: cout<<" 谢谢使用,再见! "<<endl; cout<<endl; system("pause"); exit(0); } } system("pause"); return 0; }main.h代码如下:
#ifndef MAIN_H_INCLUDED #define MAIN_H_INCLUDED #include<stdio.h> #include<stdlib.h> #include<string.h> #include<iostream> using namespace std; typedef struct person //定义结构体 { char num[20]; //学号 char name[15]; //姓名 int age; //年龄 int en; //英语成绩 int ji; //计算机成绩 } person; person per[100]; //定义100 int i=0;//n作为实际的用量 int n=0; void change_stu(); // 修改学生数据的函数 void cycle()//登录循环界面的体现 { int i; int j; for(i=0; i<5; i++) { for(j=0; j<300000000; j++); { cout<<"."; } } } void logon() //登陆函数 使系统更显完善 { cout<<"***************************************************************"<<endl; cout<<"* *"<<endl; cout<<"* *"<<endl; cout<<"* 学生信息管理系统 *"<<endl; cout<<"* *"<<endl; cout<<"* *"<<endl; cout<<"* 烟台大学计算机与控制工程学院 *"<<endl; cout<<"* *"<<endl; cout<<"* 徐群壮 *"<<endl; cout<<"* 版本号:v1.0 *"<<endl; cout<<"* 最后修改时间:15.12.25 *"<<endl; cout<<"* *"<<endl; cout<<"* *"<<endl; cout<<"***************************************************************"<<endl; cout<<endl; string user,passwd; //用户登录账户和密码(已经设定好 账号:user 密码:123) while(1) // 账户登录 验证 { cout<<"账户"<<endl; cin>>user; cout<<"密码"<<endl; cin>>passwd; if((user=="user")&&(passwd=="123")) { cout<<"用户登录中,请稍后"<<endl; cycle(); break; } else cout<<"账户或密码输入有误请重新输入"<<endl; } } //*********************************************************************// //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^// int menu_select() //菜单选择系统函数 { int choice; system("cls"); cout<<"*********************************************************"; cout<<endl; cout<<endl; cout<<" 学生信息管理系统"<<endl; cout<<"*********************************************************"; cout<<endl; cout<<endl; cout<<" 1. 添加学生数据 2. 显示学生数据 "<<endl; cout<<endl; cout<<" 3. 查询学生数据 4. 数据排序 "<<endl; cout<<endl; cout<<" 5. 修改学生数据 6. 插入学生数据"<<endl; cout<<endl; cout<<" 0. 退出程序"<<endl; cout<<endl; cout<<"请输入您的选择(0-6)"<<endl; cin>>choice; return choice; } #endif // MAIN_H_INCLUDED
用户选择界面:
添加信息模块:
显示模块:
查询界面:
查询模块:
用学号查询:
排序模块:
修改模块:
插入模块(尾插法):