1. 课题来源

课题名称:新生基本信息统计软件
课题来源:《C++面向对象程序设计》课程设计任务书
体现面向对象的特性:类与对象的特性,封装机制,数据成员等特性。

2.任务描述

有新生来报到,要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地址,英语入学成绩。要求设计链表类来实现,并统计学生人数。

文本界面为:
 1. 新增学生信息 
 2.  删除学生信息
 3. 导入学生信息(已经保存于的文件信息)
 4. 学生信息搜索(按姓名)
 5. 学生信息统计(按专业或性别或年龄---年龄要自动计算)
 6. 按英语成绩排序
 7. 学生信息保存
 8. 退出

2.1.课题的总体结构

2.2.核心功能模块与类设计

(1)找出类 ;
(2)采用表格的形式,按照类在课题中的作用,列出核心类的功能定义和主要函数接口;

3.程序(系统)详细设计

#include<iostream>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<string>
#include<fstream>
#include<windows.h>
using namespace std;class Student {public:void Set_name(string name) {          //姓名this->name=name;}void Set_sex(string sex) {             //性别this->sex=sex;}void Set_major(string major) {          //专业this->major=major;}void Set_num(int num) {               //学号this->num=num;}void Set_age(int age) {                  //年龄this->age=age;}void Set_date(string date) {             //出生日期this->date=date;}void Set_address(string address) {       //家庭住址this->address=address;}void Set_score(int score) {               //英语入学成绩this->score=score;}void Set_next(Student *next) {            //next指针this->next=next;}string get_name() {return name;}string get_sex() {return sex;}string get_major() {return major;}int get_num() {return num;}int get_age() {return age;}string get_date() {return date;}string get_address() {return address;}int get_score() {return score;}Student *get_next() {return next;}private:string name,sex,date,address,major;int num,score,age;Student *next;
};class List {public:List();void insert_list();                 //添加新生的信息void delete_list();                    //删除新生的信息void update_list();                    //修改新生的信息void charu();                      //插入新生的信息void look_name();                  //按姓名查询新生信息void paixu_list();                   //按英语入学成绩排序void count();                        //按性别统计新生个数void print_all();                    //查看全部新生的信息void save();                     //保存新生的信息void read();                       //读取新生的信息private:Student *head;
};List::List() {                                 //建立头结点head=new Student();if(head==NULL) {cout<<"链表创建失败"<<endl;exit(0);}head->Set_next(NULL);
}void List::insert_list() {             //添加新生的信息string name,sex,date,address,major;int  num,score,age;int x=1;Student *p1,*r;r=head;while(r->get_next()!=NULL) { //使结点循环到最后r=r->get_next();}while(x) {p1=head;int y=1;Student *p=new Student;if(p==NULL) {cout<<"链表创建失败"<<endl;exit(0);}cout<<"请输入你要添加的学生学号:";cin>>num;while(p1->get_next()) {if(p1->get_next()->get_num()==num) {y=2;cout<<"已经有此学生的信息,请重新输入\n\n";break;}p1=p1->get_next();}if(y==2) {continue;} else {p->Set_num(num);cout<<"请输入你要添加的学生姓名:";cin>>name;p->Set_name(name);cout<<"请输入你要添加的学生性别:";cin>>sex;p->Set_sex(sex);cout<<"请输入你要添加的学生年龄:";cin>>age;p->Set_age(age);cout<<"请输入你要添加的学生的出生日期:";cin>>date;p->Set_date(date);cout<<"请输入你要添加的学生的家庭住址:";cin>>address;p->Set_address(address);cout<<"请输入你要添加的学生专业:";cin>>major;p->Set_major(major);cout<<"请输入你要添加的学生的英语入学成绩:";cin>>score;p->Set_score(score);r->Set_next(p); //和前结点连接r=p;cout<<endl;cout<<"此学生的信息添加成功!请问是否还要继续添加?"<<endl;cout<<"输入0则结束,继续添加请输入其它任意数字键:";cin>>x;system("CLS");}r->Set_next(NULL);//尾结点指向空}
}void List::delete_list() {            //删除新生的信息int x=1,num2;Student *p;while(x) {int y=1;p=head;cout<<"请输入你要删除的学生的学号:";cin>>num2;while(p->get_next()!=NULL) {if(p->get_next()->get_num()==num2) {y=2;Student *q=NULL;q=p->get_next();p->Set_next(q->get_next());delete q;q=NULL;break;}p=p->get_next();}if(y==1) {cout<<"无此学号!"<<endl<<endl<<endl;}if(y==2) {cout<<endl;cout<<"此学生的信息删除成功!请问是否还要继续删除?"<<endl;}cout<<"输入0则结束,继续删除请输入其它任意数字键:";cin>>x;cout<<endl;}
}void List::look_name() {                 //按姓名查询新生信息int x=1;string name2;Student *p;while(x) {int y=1;p=head;cout<<"请输入要查询学生的姓名:";cin>>name2;cout<<endl;while(p->get_next()!=NULL) {if(p->get_next()->get_name()==name2) {y=0;cout<<"姓名:"<<p->get_next()->get_name()<<endl;cout<<"学号:"<<p->get_next()->get_num()<<endl;cout<<"性别:"<<p->get_next()->get_sex()<<endl;cout<<"年龄:"<<p->get_next()->get_age()<<endl;cout<<"出生日期:"<<p->get_next()->get_date()<<endl;cout<<"家庭住址:"<<p->get_next()->get_address()<<endl;cout<<"专业:"<<p->get_next()->get_major()<<endl;cout<<"英语入学成绩:"<<p->get_next()->get_score()<<endl;}p=p->get_next();}if(y==1) {cout<<"无此姓名!"<<endl<<endl<<endl;}cout<<endl;cout<<"此学生的信息查询成功!请问是否还要继续查询?"<<endl;cout<<"输入0则结束,继续查询请输入其它任意数字键:";cin>>x;cout<<endl;}
}void List::update_list() {          //按学号修改新生信息string name,sex,date,major,address;int  num,score,age;int x=1,num2;Student *p;while(x) {int y=1;p=head;cout<<"请输入你要修改的学生的学号:";cin>>num2;cout<<"\n"<<endl;while(p->get_next()!=NULL) {if(p->get_next()->get_num()==num2) {y=0;cout<<"请输入你要修改的学生的姓名:";cin>>name;p->get_next()->Set_name(name);cout<<"请输入你要修改的学生的学号:";cin>>num;p->get_next()->Set_num(num);cout<<"请输入你要修改的学生的性别:";cin>>sex;p->get_next()->Set_sex(sex);cout<<"请输入你要修改的学生的年龄:";cin>>age;p->get_next()->Set_age(age);cout<<"请输入你要修改的学生的出生日期:";cin>>date;p->get_next()->Set_date(date);cout<<"请输入你要修改的学生的家庭住址:";cin>>address;p->get_next()->Set_address(address);cout<<"请输入你要修改的学生的专业:";cin>>major;p->get_next()->Set_major(major);cout<<"请输入你要修改的学生的英语入学成绩:";cin>>score;p->get_next()->Set_score(score);break;}p=p->get_next();}if(y==1) {cout<<"无此学号!"<<endl<<endl<<endl;}cout<<endl;cout<<"此学生的信息修改成功!请问是否还要继续修改?"<<endl;cout<<"输入0则结束,继续修改请输入其它任意数字键:";cin>>x;cout<<endl;}
}void List::charu() {                     //按学号插入新生信息string name,sex,date,address,major;int  num,score,age;int x=1,num2;Student *r,*p;while(x) {int y=1;p=head;Student *p1=new Student;cout<<"请输入你要插入哪个学号后面:"<<endl;cin>>num2;while(p->get_next()!=NULL) {if(p->get_next()->get_num()==num2) {   //判断是否有此学号y=2,r=head;cout<<"请输入你要插入的学生的学号:";cin>>num;while(r->get_next()) {if(r->get_next()->get_num()==num) {y=3;cout<<"已经有此学号,请重新输入学号:"<<endl;}r=r->get_next();}if(y==3) {continue;}p1->Set_num(num);cout<<"请输入你要插入的学生的姓名:";cin>>name;p1->Set_name(name);cout<<"请输入你要插入的学生的性别:";cin>>sex;p1->Set_sex(sex);cout<<"请输入你要插入的学生的年龄:";cin>>age;p1->Set_age(age);cout<<"请输入你要插入的学生的出生日期:";cin>>date;p1->Set_date(date);cout<<"请输入你要插入的学生的家庭住址:";cin>>address;p1->Set_address(address);cout<<"请输入你要插入的学生的专业:";cin>>major;cout<<"请输入你要插入的学生的英语入学成绩:";cin>>score;p1->Set_score(score);p1->Set_next(p->get_next()->get_next());p->get_next()->Set_next(p1);break;}p=p->get_next();}if(y==1) {cout<<"无此学号!"<<endl;}if(y==2) {cout<<endl;cout<<"此学生的信息插入成功!请问是否还要继续插入?"<<endl;}cout<<"输入0则结束,继续插入请输入其它任意数字键:";cin>>x;cout<<endl;}
}void List::paixu_list() {               //按英语入学成绩排序int x,y,z;string a,b,c,d,e;Student *p=head;Student *p1;Student *p2;while(p->get_next()!=NULL) {p1=p->get_next();p2=p1->get_next();while(p2!=NULL) {if(p1->get_score()<p2->get_score()) {x=p1->get_score();p1->Set_score(p2->get_score());p2->Set_score(x);y=p1->get_age();p1->Set_age(p2->get_age());p2->Set_age(y);z=p1->get_num();p1->Set_num(p2->get_num());p2->Set_num(z);a=p1->get_name();p1->Set_name(p2->get_name());p2->Set_name(a);b=p1->get_sex();p1->Set_sex(p2->get_sex());p2->Set_sex(b);c=p1->get_major();p1->Set_major(p2->get_major());p2->Set_major(c);d=p1->get_date();p1->Set_date(p2->get_date());p2->Set_date(d);e=p1->get_address();p1->Set_address(p2->get_address());p2->Set_address(e);}p2=p2->get_next();//选择排序}p=p->get_next();}
}void List::count() {                    //按性别统计新生个数Student *p=head;int sum=0,i=0,j=0;while(p->get_next()) {if(p->get_next()->get_sex()=="男") {i++;} else if(p->get_next()->get_sex()=="女") {j++;}p=p->get_next();}sum=i+j;cout<<"学生的数量为:"<<sum<<endl;cout<<"男生数量为:"<<i<<endl;cout<<"女生数量为:"<<j<<endl;system("pause");
}void List::print_all() {               //查看全部新生的信息Student *p=head;while(p->get_next()) {cout<<"姓名:"<<p->get_next()->get_name()<<"\t"<<"学号:"<<p->get_next()->get_num()<<"\t"<<"性别:"<<p->get_next()->get_sex()<<"\t"<<"年龄:"<<p->get_next()->get_age()<<"\t"<<"出生日期:"<<p->get_next()->get_date()<<"\t"<<"家庭住址:"<<p->get_next()->get_address()<<"\t"<<"专业:"<<p->get_next()->get_major()<<"\t"<<"英语入学成绩:"<<p->get_next()->get_score()<<endl;p=p->get_next();}system("pause");
}void List::save() {                     //保存新生的信息Student *p=head->get_next();ofstream outfile;outfile.open("新生信息.txt",ios::out);outfile<<p->get_name()<<"\t"<<p->get_num()<<"\t"<<p->get_sex()<<"\t"<<p->get_age()<<"\t"<<p->get_date()<<"\t"<<p->get_address()<<"\t"<<p->get_major()<<"\t"<<p->get_score();p=p->get_next();if (!outfile) {cout<<"信息保存失败 信息储存终止"<< endl;return;}while(p!=NULL) {outfile<<endl<<p->get_name()<<"\t"<<p->get_num()<<"\t"<<p->get_sex()<<"\t"<<p->get_age()<<"\t"<<p->get_date()<<"\t"<<p->get_address()<<"\t"<<p->get_major()<<"\t"<<p->get_score();p=p->get_next();}outfile.close();cout<<"新生信息保存成功"<<endl;cout<<"正在为您跳转到主菜单,请稍等..."<<endl;Sleep(1000);
}void List::read() {                     //读取新生的信息Student *r=head;ifstream infile;int num,age,score;string name,sex,date,address,major;infile.open("新生信息.txt",ios::in);if(!infile) {return;}while(infile>>name>>num>>sex>>age>>date>>address>>major>>score) {Student *p=new Student;p->Set_name(name);p->Set_num(num);p->Set_sex(sex);p->Set_age(age);p->Set_date(date);p->Set_address(address);p->Set_major(major);p->Set_score(score);r->Set_next(p); //和前结点连接p->Set_next(NULL);r=p;}infile.close();cout<<"新生信息已导入"<<endl;cout<<"正在为您跳转到主菜单,请稍等..."<<endl;Sleep(1000);
}class menu {public:void begin();void menu1();void yincang(char *p);void prove();void menu2();void end();
};void menu::begin() {cout<<"\n\n\n";cout<<"\t\t*************************************************"<<endl;cout<<"\t\t******                                     ******"<<endl;cout<<"\t\t******     欢迎来到新生基本信息统计系统    ******"<<endl;cout<<"\t\t******           使用请先登录账号          ******"<<endl;cout<<"\t\t******                                     ******"<<endl;cout<<"\t\t*************************************************"<<endl;cout<<"\n\n\n";
}void menu::menu1() {begin();char a[20]= {"dudu"};char b[20]= {"666666"};char x[20];char y[20];while(1) {cout<<"请输入您的用户名:";cin>>x;if(strcmp(a,x)==0) {cout<<"请输入您的密码:";yincang(y);if(strcmp(b,y)==0) {prove();system("cls");menu2();break;} elsecout<<"您输入的密码错误!"<<endl;} elsecout<<"您输入的用户名错误!"<<endl;}
}void menu::yincang(char *p) {                                   //隐藏密码展现***int i=0;char ch;while(1) {ch=getch();if(ch!=8&&ch!=13) {p[i]=ch;cout<<"*";i++;} else if(ch==8) {if(i!=0) {cout<<"\b \b";p[i]='\0';i--;}} else if(ch==13) {cout<<"\n";break;}}
}void menu::prove() {                                       //登录随机数字验证int u,v;srand(time(0));while(1) {u=rand()%10000+1000;cout<<"验证码为:"<<u;cout<<endl;cout<<"请输入验证码:";cin>>v;if(v==u) {break;} else {cout<<"验证码错误!请重新输入:";u=rand()%10000+1000;cout<<"验证码为:"<<u;cout<<endl;cout<<"请输入验证码:";cin>>v;if(v==u) {cout<<"恭喜您登录成功!";break;}}}
}void menu::menu2() {List C;C.read();system("CLS");while(1) {system("date/t");system("time/t");cout<<" =============================================================================\n";cout<<"||                         新生基本信息统计系统                               ||\n";cout<<"||============================================================================||\n";cout<<"||============================================================================||\n";cout<<"||                【1】--添加新生的信息                                       ||\n";cout<<"||                【2】--删除新生的信息                                       ||\n";cout<<"||                【3】--修改新生的信息                                       ||\n";cout<<"||                【4】--插入新生的信息                                       ||\n";cout<<"||                【5】--按姓名查询新生信息                                   ||\n";cout<<"||                【6】--按入学英语成绩排序                                   ||\n";cout<<"||                【7】--按性别统计新生个数                                   ||\n";cout<<"||                【8】--查看全部新生的信息                                   ||\n";cout<<"||                【9】--读取新生的信息                                       ||\n";cout<<"||                【0】--保存后退出系统                                       ||\n";cout<<" ==============================================================================\n";cout<<"请输入数字来选择对应的服务种类:";int n;if(!(cin>>n)) {system("CLS");cout<<"输入格式错误,请重新输入!"<<endl;cin.clear();cin.sync();cin.ignore();       //清空缓存区//fflush(stdin);  //清空缓存区} else {switch(n) {case 1 :system("CLS");C.insert_list();C.save();system("CLS");break;case 2 :system("CLS");C.delete_list();C.save();system("CLS");break;case 3 :system("CLS");C.update_list();C.save();system("CLS");break;case 4 :system("CLS");C.charu();C.save();system("CLS");break;case 5 :system("CLS");C.look_name();system("CLS");break;case 6 :system("CLS");C.paixu_list();C.print_all();system("CLS");break;case 7 :system("CLS");C.count();system("CLS");break;case 8 :system("CLS");C.print_all();system("CLS");break;case 9 :system("CLS");C.read();system("CLS");break;case 0 :system("CLS");C.save();end();break;default:system("CLS");cout<<"输入错误!没有此服务!请重新输入!"<<endl;}}}
}void menu::end() {cout<<"\n\n\n\n\n";cout<<"\t\t*************************************************"<<endl;cout<<"\t\t******                                     ******"<<endl;cout<<"\t\t******    谢谢使用新生基本信息统计系统     ******"<<endl;cout<<"\t\t******           欢迎下次使用              ******"<<endl;cout<<"\t\t******                                     ******"<<endl;cout<<"\t\t*************************************************"<<endl;exit(0);
}int main() {system("color 3F");menu mu;mu.menu1();return 0;
}

【C++课程设计】新生基本信息统计软件相关推荐

  1. c语言编写词库_C语言课程设计--电子生词库软件

    C语言课程设计--电子生词库软件 程序设计基础实训任务书程序设计基础实训任务书 题目电子生词库软件 学生姓名 学号 班级 题目类型软件工程(R) 指导教师 一.设计目的一.设计目的 1.进一步掌握和利 ...

  2. java课程设计打字训练测试软件_打字训练测试软件-Java课程设计

    打字训练测试软件-Java课程设计 <程序设计实践>题目: 打字训练测试软件 学校:陕西工业学院 学院:信息学院 班级:信管 12-2 学号: 201213156619 姓名:刘克豪 20 ...

  3. 数学测试软件c语言,C语言课程设计小学生数学测试软件.doc

    C语言课程设计报告 PAGE PAGE 1 第 PAGE 1 页 共 NUMPAGES 11 页 <C语言课程设计报告> 标题:小学生数学测试软件 学号: 姓名: 同组人员: 年级专业:0 ...

  4. 基于Android Studio的安卓课程设计(Keep运动软件)

    一.开发环境 1.系统环境:Windows.Mac等 2.集成开发环境:Android Studio.虚拟机版本为Android 7.0(Nexus 5 API 24型号) 数据库系统:Android ...

  5. Java课程设计-家庭财政管理软件

    [摘要] 家庭理财管理系统是通过信息管理系统的方式记录和管理家庭日常的收入.支出和理财明细,能科学有效的管理家庭的财政情况.随着家庭平均消费水平的增加,很多家庭都面临的财务紧张的问题,如不能合理有效的 ...

  6. 课程设计-天天象棋作弊软件判别

    目录 1.作弊开挂可能迹象 2.设计作弊检测系统灵感 3.设计作弊检测系统思路 3.1反作弊系统应对策略框架 4.感想体悟 1.作弊开挂可能迹象 1.非实名认证: 2.头像:美女: 3.名称: (1) ...

  7. java课程设计打字训练测试软件_Java版打字练习案例源码

    代码如下 import java.applet.Applet; import java.applet.AudioClip; import java.awt.Dimension; import java ...

  8. java课程设计——家庭收入记账软件

    一个简易的小东西 尚硅谷java项目一 package work1;import java.util.Scanner;public class Utility {private static Scan ...

  9. C/C++课程设计 新生入学管理系统(二)

    文章目录 案例十六 案例十七 案例十八 案例十九 案例二十 案例二十一 案例二十二 案例二十三 案例二十四 案例二十五 案例二十六 案例二十七 案例二十八 案例十六 #include<iostr ...

最新文章

  1. 阿德:工作与发财之间的秘密
  2. python script文件夹在哪_Python获取当前脚本文件夹(Script)的绝对路径方法代码
  3. 在Activiti中执行自定义查询
  4. 实战 | webmagic爬取实战之爬取保险经纪人信息
  5. date_range
  6. 从博客专栏想到的数据分析
  7. visual studio 2013 快速安全ocx(ActiveX控件)开发
  8. 罗技g402鼠标宏设置教程
  9. 因为某种原因阻止文本引擎初始化_文成县搜索引擎优化如何,神马SEO优化_万推霸屏...
  10. 单片机C52系列之(DA)TLC5615
  11. 【人物志】美团首席科学家夏华夏:不断突破边界的程序人生
  12. Admob ANE for Flash Air最新中文教程
  13. 电脑基础知识精选(硬件篇)
  14. 开机显示输入最佳预设值_电脑显示输入最佳预设值并重新开机是什么意思
  15. 第八天 Python爬虫之Rquests库打码平台的简单使用
  16. git解决拉取代码本地代码未提交
  17. 学无止境中的曙光----维伯英语
  18. Java实现随机人名抽取
  19. 2023年全国最新会计专业技术资格精选真题及答案20
  20. 科大讯飞语音转文本(极速转换和普通转换两种)

热门文章

  1. 车牌号校验--正则表达式
  2. 降维 ---- 主成分分析 (PCA)、奇异值分解 (SVD)
  3. 阿里巴巴又出成绩单!5亿人种下1亿棵树,你是5亿分之一吗?
  4. 【软件工程】02组软件工程组队项目14周工作进度汇报——课程管理小助手
  5. python英文文本词频统计_python编程:英文小说词频统计
  6. poi 自动换行与行高
  7. UTF8_Encoding
  8. 服务器不稳定降权多久会恢复,[实例]首页被降权24小时恢复手记
  9. ESP32使用Arduino环境开发摇杆
  10. 企业IP网络电话应用小故事-用3CX电话系统的黑名单功能,帮助前台MM,挡住了很多的骚扰电话。...