C++项目作业 学生管理系统
/*Student.h*/
#pragma once
#include<string.h>
using namespace std;
#include<string> class Student
{
public:
//ID age name math english sport 专业 是子类都具有的 所以就在基类中声明
int ID;
int age;
string major = "";
char name[];
float math, english, sport;
Student *next; //链表指针
//一下get函数 因为子类的专业不同 所以实现的方式不同 声明虚函数 在子类中实现
virtual float get_shi_bian_fun();
virtual float get_fan_han_fen_xi() ;
virtual float get_wei_fen_jihe();
virtual float get_zonghe_english();
virtual float get_spoken_english();
virtual float get_zu_cheng_yuanli();
virtual float get_ti_xi_jie_gou();
virtual float get_hui_bian();
virtual string get_major();
//因为每个子类遍历的东西也不同 所以遍历函数也要为虚函数 在子类中以不同的方式来实现
virtual void traverse(Student *t);
virtual float get_main_average();//取平均数也一样,返回平均成绩
virtual float get_average_score();
virtual void change(); //每个成员的科目不一样,需要修改的东西也不一样
Student();
virtual ~Student();
};
/*Student.cpp
/*Math_Student.h*/
#pragma once
#include "Student.h"
#include <string>
class Math_Student :
public Student
{
public:
//特有的科目成员 都声明为float
float shi_bian_fun;
float fan_han_fen_xi;
float wei_fen_jihe;
string major = "Math_Student";//专业直接初始化
Math_Student();
~Math_Student();
//get函数 方便在manage类里面拿到数据信息
float get_shi_bian_fun();
float get_fan_han_fen_xi() ;
float get_wei_fen_jihe() ;
float get_main_average();
float get_average_score();
string get_major();
//遍历信息
void traverse(Student *t);
void change(); //修改信息 };
/*Math_Student.cpp*/
#include "Math_Student.h" #include<iostream>
#include"string.h"
using namespace std; Math_Student::Math_Student()
{ cout << "请输入学生信息:" << endl;
cout << "age:" << endl;
cin >> age;
getchar();
cout << "name:";
cin >> name;
getchar();
cout << "ID:" << endl;
cin >> ID;
getchar();
cout << "sport_score:" << endl;
cin >>sport;
getchar();
cout << "math_score:" << endl;
cin >> math;
getchar();
cout << "english_score" << endl;
cin >> english;
getchar();
cout << "shi_bian_fun_score" << endl;
cin >>shi_bian_fun;
getchar();
cout << "fan_han_fen_xi_score" << endl;
cin >>fan_han_fen_xi;
getchar();
cout << "wei_fen_jihe_score" << endl;
cin >>wei_fen_jihe;
getchar(); cout << "录入成功!" << endl;
} Math_Student::~Math_Student()
{
} void Math_Student::change() {
cout << " 实变函数:" << endl;
cin >> shi_bian_fun;
getchar();
cout << " 泛函分析:" << endl;
cin >> fan_han_fen_xi;
getchar();
cout << " 微分几何:" << endl;
cin >> wei_fen_jihe;
getchar(); } void Math_Student::traverse(Student *t) {
//公共的信息修改 在 manage 里面 这里来到类里面来修改特有的信息
cout << "学生信息为:" << endl
<< " 学号:" << t->ID << " 姓名:" <<name << " 年龄:" <<age << " 专业:" <<major << endl
<<"公共课成绩:"<<endl
<< " 数学:" <<math << " 英语:" <<english << " 体育:" << sport << endl
<< "专业课成绩:"<<endl
<<" 实变函数:"<<t->get_shi_bian_fun()<<" 泛函分析:"<<t->get_fan_han_fen_xi()<<" 微分几何:"<<t->get_wei_fen_jihe()<<endl
<<endl;
} float Math_Student::get_main_average() { return ((math + english + sport) / 3.0);
} float Math_Student::get_average_score() {
float av = ;
av += math; av += sport; av += english, av += shi_bian_fun, av += fan_han_fen_xi, av += wei_fen_jihe;
return (av / 6.0); } float Math_Student:: get_shi_bian_fun() {
return shi_bian_fun;
} float Math_Student ::get_fan_han_fen_xi() {
return fan_han_fen_xi;
} float Math_Student::get_wei_fen_jihe() {
return wei_fen_jihe;
} string Math_Student::get_major() {
return major;
}
;
/*English_Student.h*/
#pragma once
#include "Student.h"
#include <string>
class English_Student :
public Student
{
public:
//特有成员变量
float zonghe_english;
float spoken_english;
string major = "English_Student"; English_Student();
~English_Student();
float get_zonghe_english();
float get_spoken_english();
string get_major();
float get_main_average();
void change();
void traverse(Student *t);
float get_average_score();
};
/*English_Student.cpp*/
#include "English_Student.h" #include<iostream>
#include"string.h"
using namespace std; English_Student::English_Student()
{ cout << "age:" << endl;
cin >> age;
getchar();
cout << "name:";
cin >> name;
getchar();
cout << "ID:" << endl;
cin >> ID;
getchar();
cout << "sport_score:" << endl;
cin >> sport;
getchar();
cout << "math_score:" << endl;
cin >> math;
getchar();
cout << "english_score" << endl;
cin >> english;
cout << "zonghe_english_score" << endl;
cin >> zonghe_english;
cout << "spoken_english_score" << endl;
cin >> spoken_english;
getchar();
cout << "录入成功!" << endl;
} English_Student::~English_Student()
{
} void English_Student::change() {
//公共的信息修改 在 manage 里面 这里来到类里面来修改特有的信息
cout << " 综合英语:" << endl;
cin >> zonghe_english;
cout << " 口语英语:" << endl;
cin >> spoken_english;
getchar();
} void English_Student:: traverse(Student *t) {
//因为实在 类里面 可以直接访问到数据
//输出的信息 分了 几行 便于好看
cout << "学生信息为:" << endl
<< " 学号:" << ID << " 姓名:" << name << " 年龄:" << age << " 专业:" << major << endl
<<"公共课成绩:"<<endl
<< " 数学:" << math << " 英语:" << english << " 体育:" << sport << endl
<< "专业课成绩:" <<endl
<<" 综合英语:"<< t->get_zonghe_english() << " 口语英语:" << t->get_spoken_english() <<endl
<<endl;
} float English_Student::get_average_score() {
float av = 0.0; //来求和 在类里面 可以访问到数据
av += math; av += sport; av += english;
av += zonghe_english; av += spoken_english;
return (av / 5.0) ; //返回平均分 /5.0 为float } float English_Student::get_main_average() {
//直接返回 公共课平均分 为float
return ((math + english + sport) / 3.0);
} float English_Student::get_zonghe_english() {
return zonghe_english; //返回综合英语的分
} float English_Student::get_spoken_english() {
return spoken_english;//返回口语英语的分
} string English_Student::get_major() {
return major; //返回专业 为string
}
;
/*IT_Student.h*/
#pragma once
#include "Student.h"
#include <string>
class IT_Student :
public Student
{
public:
//特有科目成员变量
float zu_cheng_yuanli;
float ti_xi_jie_gou;
float hui_bian;
string major = "IT_Student";
//一系列get函数 返回float
float get_zu_cheng_yuanli();
float get_ti_xi_jie_gou();
float get_hui_bian();
float get_average_score();
float get_main_average();
string get_major();
IT_Student();
~IT_Student();
void traverse(Student *t);
void change(); };
/*IT_Student.cpp*/
#include "IT_Student.h" #include<iostream>
#include"string.h"
using namespace std; IT_Student::IT_Student()
{
cout << "age:" << endl;
cin >> age;
getchar();
cout << "name:";
cin >> name;
getchar();
cout << "ID:" << endl;
cin >> ID;
getchar();
cout << "sport_score:" << endl;
cin >> sport;
getchar();
cout << "math_score:" << endl;
cin >> math;
getchar();
cout << "english_score" << endl;
cin >> english;
cout << "zu_cheng_yuanli_score" << endl;
cin >> zu_cheng_yuanli;
cout << "ti_xi_jie_gou_score" << endl;
cin >> ti_xi_jie_gou;
cout << "hui_bian_score" << endl;
cin >> hui_bian;
getchar();
cout << "录入成功!" << endl;
} IT_Student::~IT_Student()
{
} void IT_Student::change() {
//公共的信息修改 在 manage 里面 这里来到类里面来修改特有的信息
cout << " 组成原理:" << endl;
cin >> zu_cheng_yuanli;
cout << " 体系结构:" << endl;
cin >> ti_xi_jie_gou;
cout << " 汇编语言:" << endl;
cin >> hui_bian;
getchar();
} float IT_Student::get_main_average() {
return ((math + english + sport) / 3.0);
} void IT_Student::traverse(Student *t) {
//因为实在 类里面 可以直接访问到数据
//输出的信息 分了 几行 便于好看
cout << "学生信息为:" << endl
<< " 学号:" << ID << " 姓名:" << name << " 年龄:" << age << " 专业:" << major << endl
<<"公共课成绩:"<<endl
<< " 数学:" <<math << " 英语:" << english << " 体育" << sport << endl
<< "专业课成绩: "<<endl
<<" 组成原理:"<< t->get_zu_cheng_yuanli() << " 体系结构:" << t->get_ti_xi_jie_gou() <<" 汇编语言:"<<t->get_hui_bian()<< endl
<<endl;
} float IT_Student::get_average_score() {
float av = ;
av += math; av += sport; av += english;
av += zu_cheng_yuanli; av += ti_xi_jie_gou; av += hui_bian;
return (av / 6.0); } float IT_Student::get_zu_cheng_yuanli() {
return zu_cheng_yuanli;
}
/*main.cpp*/
**#include "manage_student.h"
#include "Student.h"
#include<iostream>
#include "Math_Student.h"
#include "IT_Student.h"
#include "English_Student.h"
using namespace std; /*void traverse(Student *head) {
int index = 1; // 用于计数第几个学生
Student *temp = head;
while (temp != NULL) { //同样一直到后面没有地址结束
cout << temp->math;
temp = temp->next;
}
}*/ void menu(Student *head,manage_student Chead) {
int m = ;
int ID = ;
int conter = ;
while () {
cout << " ***************请选择您需要的操作:****************" << endl;
cout << " * 1. 增加学生信息 *" << endl;
cout << " * 2. 删除学生信息 *" << endl;
cout << " * 3. 修改学生信息 *" << endl;
cout << " * 4. 按学号ID查询 *" << endl;
cout << " * 5. 查询某位学生的平均分 *" << endl;
cout << " * 6. 某个学生的三科平均成绩 *" << endl;
cout << " * 7. 按公共课平均分从高到低排序 *" << endl;
cout << " * 8. 遍历学生信息 *" << endl;
cout << " * 9. 结束功能并把信息写入文件中 *" << endl;
cout << " * 0. 退出程序 *" << endl;
cout << " ***************************************************" << endl;
rewind(stdin);
cin >> m;
if (m >= && m < ) {
switch (m) {
case : Chead.append_student(head); break;
case : {cout << "要删除学生信息的学号:";
cin >> ID;
head = Chead.delete_student(head, ID, Chead.getlength(head)); }break;
case : {cout << "需要修改学生信息的同学ID:";
cin >> ID;
Chead.change_message(head, ID); }break;
case : {cout << "按学号查询 请输入需要查询的同学的ID为:";
cin >> ID;
Chead.search(head, ID); }break;
case : {
cout << "请输入您需要查询学生的平均成绩的ID:";
cin >> ID;
Chead.get_average_score(head,Chead.getlength(head),ID );
}break;
case : {
cout << "请输入您需要查询学生的平均成绩的ID:";
cin >> ID;
Student *t = head;
while (t != NULL) {
if (t->ID == ID) {
cout << "该同学的公共课平均成绩为:" << t->get_main_average() << endl;
}t = t->next;
}
break;
} case : {
Chead.rank_average_score(head, Chead.getlength(head));
cout << "排序成功!"; break;
}
case : {
Student *t = head;
while (t != NULL) {
t->traverse(t);
t=t->next;
}break;
}
case : {
Chead.openfile(head, Chead.getlength(head));
cout << "写入文件成功!"; break;
}
case : {
Chead.release(head);//结束之前free掉链表
return; }
}
}
else cout << "输入有错误 请输入0-9的整数"; continue;
}
/*manage_student.h*/
#pragma once
#include<iostream>
#include "Student.h" class manage_student
{
public:
//存入文件 传入头指针和长度
void openfile(Student *head, int len);
//成绩排序 传入头指针和长度
void rank_average_score(Student *head,int len);
//修改信息 指定ID找到学生信息 修改 传入头 和 ID
void change_message(Student *head, int ID);
//增加信息 传入头就可以
void append_student(Student *head);
//删除学生信息 传入头 需要删除学生信息的ID 链表长度
Student * delete_student(Student *head,int ID,int len);
//创建链表
Student * create();
//搜索查询学生信息 根据ID搜索
void search(Student *head, int ID);
//得到链表的长度 传入头 返回链表长度
int getlength(Student *head);
//得到平均分 显示平均分
void get_average_score(Student *head, int len,int ID);
void release(Student *head); manage_student();
~manage_student();
};
/*manage_student.cpp*/
#include "manage_student.h"
#include "Student.h"
#include<iostream>
#include "Math_Student.h"
#include "IT_Student.h"
#include "English_Student.h"
#include<string.h>
using namespace std; #include<fstream>
#include<iomanip> manage_student::manage_student()
{
} manage_student::~manage_student()
{ } Student * manage_student:: create() {
int num = ; //来计数 输入的第几个学生
int temp; //用来输入选择初始化的学生的专业
int len = ; //表示链表的长度
cin >> len; //也就是初始输入需要添加的学生数目
Student stu;//用来初始化指针
Student *pre = &stu;
Student *c = &stu;
Student *Head = &stu; //最后要返回的头指针
while (num < len) {
cout << "************您需要添加此学生的专业是? 1:数学系 2:英语系 3:计算机系" << endl;
cin >> temp;
if (temp == ) {
c = new Math_Student; //一定要new一个**********不然会覆盖之前的
if (num == ) { // 千万不能 Math_Student c 这个错误调了几天!!!!!!
Head = c; // 头指针的地址
Head->next = NULL; //第一个的尾给空
pre = Head; //pre指向 前一个 也就是头
}
if (num) {
pre->next = c; //前一个的尾接到下一个的地址
pre = pre->next; //pre 指向next指针
pre->next = NULL; //next指针指向的 弄为空
}
++num;
continue;
}
else if (temp == ) {
c = new English_Student;
if (num == ) {
Head = c; // 头指针的地址
Head->next = NULL; //第一个的尾给空
pre = Head; //pre指向 前一个 也就是头
}
if (num) {
pre->next = c; //前一个的尾接到下一个的地址
pre = pre->next; //pre 指向next指针
pre->next = NULL; //next指针指向的 弄为空
}
++num;
continue;
}
else if (temp == ) {
c = new IT_Student;
if (num == ) {
Head = c; // 头指针的地址
Head->next = NULL; //第一个的尾给空
pre = Head; //pre指向 前一个 也就是头
}
if (num) {
pre->next = c; //前一个的尾接到下一个的地址
pre = pre->next; //pre 指向next指针
pre->next = NULL; //next指针指向的 弄为空
}
++num;
continue;
}
else {
cout << "输入有误!请重新输入" << endl; continue;
}
}
return Head; //把头指针返回到main里 便于取用
} int manage_student::getlength(Student * head)
{
int num = ; //=0 或者 =1 取决于while的判断条件
Student *t=head;
while (t->next != ) { //当head指向后面没有了 它就是NULL 结束
++num;
t = t->next; //如果head 不是NULL ++num后要把head指针指向最后
}
return num; //返回int长度
} void manage_student::search(Student *head,int ID) {
Student *t = head; //用*t来遍历
while (t != NULL) { //只要t不是空 就进入
if (t->ID == ID) { //如果匹配到 ID
t->traverse(t); //用基类的指针调用子类的遍历方法
}t = t->next;
}
}
void manage_student::release(Student *head) {
Student *n; //需要一个指针存着下一个地址
while (head != NULL) {
n = head->next; //把n指向下一块要释放的地址
free(head);
head = n; //然后再把head从前一个地址移到下一个地址
}
}
void manage_student::append_student(Student *head) {
Student *c = head; //都用基类的指针来操作
Student *t = head;
int temp;
while (t->next != NULL) {
t = t->next; //把t移动到最后一块链表
}
cout << "************您需要添加此学生的专业是? 1:数学系 2:英语系 3:计算机系" << endl;
cin >> temp;
if (temp == ) {
c = new Math_Student; //一定要new一个
t->next = c; //前一个的尾接到下一个的地址
t = t->next; //pre 指向next指针
t->next = NULL; //next指针指向的 弄为空
}
else if (temp == ) {
c = new English_Student; //一定要new一个
t->next = c; //前一个的尾接到下一个的地址
t = t->next; //pre 指向next指针
t->next = NULL; //next指针指向的 弄为空
}
else if (temp == ) {
c = new IT_Student; //一定要new一个
t->next = c; //前一个的尾接到下一个的地址
t = t->next; //pre 指向next指针
t->next = NULL; //next指针指向的 弄为空
}
else {
cout << "输入有误!请重新输入" << endl;
}
} Student * manage_student::delete_student(Student *head, int ID,int len)
{
//用*t来遍历
Student *t = head;
Student *temp;//临时指针
for (int i = ; i < (len - ); ++i) {
if (i == ) { //如果就是第一块链表 需要特殊处理 因为头Head会变
if (head->ID == ID) { head = head->next; delete t; return head; } //一定要返回一个新的头Head
if ((t->next)->ID == ID) { //如果是第二块链表匹配
temp = t->next; //把第一块跟第三块连接起来
t->next = (t->next)->next;
delete temp; return head; //delete调 第二块 返回头Head
}
}
if (i != ) {
if ((t->next)->ID == ID) { //如果遍历的不是第一块了,操作都一样
temp = t->next; //前一块的next
t->next = (t->next)->next; //前后连接
delete temp; return head; //删掉中间
}t = t->next;
}
}cout << "删除成功!" << endl; return head; //返回头指针
} void manage_student::change_message(Student *head, int ID) {
Student *t = head;
while (t!= NULL) {
if (t->ID == ID) {//ID匹配 进入
// 匹配属于数学系
if (t->get_major() == "Math_Student") {
//在此处修改公共的信息
cout << "*******请输入要修改的学生信息:" << endl;
cout << " ID:" << endl;
cin >> t->ID;
cout << " 姓名:" << endl;
cin >> t->name;
cout << " 年龄:" << endl;
cin >> t->age;
cout << " 数学:" << endl;
cin >> t->math;
cout << " 英语:" << endl;
cin >> t->english;
cout << " 体育:" << endl;
cin >> t->sport;
t->change(); //然后再去子类里面调用change修改特有的成员变量
}
if (t->get_major() == "English_Student") {
cout << "*******请输入要修改的学生信息:" << endl;
cout << " ID:" << endl;
cin >> t->ID;
cout << " 姓名:" << endl;
cin >> t->name;
cout << " 年龄:" << endl;
cin >> t->age;
cout << " 数学:" << endl;
cin >> t->math;
cout << " 英语:" << endl;
cin >> t->english;
cout << " 体育:" << endl;
cin >> t->sport;
t->change();
}
if (t->get_major() == "IT_Student") {
cout << "*******请输入要修改的学生信息:" << endl;
cout << " ID:" << endl;
cin >> t->ID;
cout << " 姓名:" << endl;
cin >> t->name;
cout << " 年龄:" << endl;
cin >> t->age;
cout << " 数学:" << endl;
cin >> t->math;
cout << " 英语:" << endl;
cin >> t->english;
cout << " 体育:" << endl;
cin >> t->sport;
t->change();
} cout << "信息修改完成!"<<endl; return;
} t = t->next;
}
cout << "对不起!查无此人,请重新确认学号是否输入正确,谢谢!"<<endl;
} void manage_student::rank_average_score(Student *head,int len) {
Student *t = head; //用*t来 遍历
Student *pre = head;//把前面的存着 来跟后面的比较
t = t->next; //t往后移动一个
int ID;
char name[];
float math, english, sport;
for (int i = ; i < (len - ); ++i) {
while (t != NULL) {
//如果后面的平均分比前面的平均分高 就进入
if ( t->get_average_score() >pre->get_average_score() ){
strcpy_s(name, t->name); strcpy_s(t->name, pre->name); strcpy_s(pre->name, name);
ID = t->ID; t->ID = pre->ID; pre->ID = ID;
math = t->math; t->math = pre->math; pre->math = math;
sport = t->sport; t->sport = pre->sport; pre->sport = sport;
english = t->english; t->english = pre->english; pre->english = english;
}
t = t->next;
//t每次循环完了之后 就把pre后移一个 t接在pre的后面
}pre = pre->next; t = pre->next;
}
} void manage_student::openfile(Student *head, int len) {
//同样用t遍历
Student *t = head;
ofstream ofile; //定义输出文件
ofile.open("D:\\学生信息"); //作为输出文件打开
//for循环把链表 里面的信息写入文件
for (int i = ; i < len; ++i) {
//判断系别 因为每个专业的成员不一样
if (t->get_major() == "Math_Student") {
ofile << "录入的各学生的信息如下: " << endl;
ofile << " 基本信息:" << " 学号" << t->ID << " 姓名:" << t->name << " 年龄:" << t->age << " 专业:" << t->get_major() << endl
<< " 公共课成绩:" << " 数学:" << t->math << " 英语:" << t->english << " 体育:" << t->sport << endl
<< " 专业课成绩:" << " 实变函数" << t->get_shi_bian_fun() << " 泛函分析:" << t->get_fan_han_fen_xi() << " 微分几何" << t->get_wei_fen_jihe() << endl;
t = t->next; continue;
}
if (t->get_major() == "English_Student") {
ofile << "录入的各学生的信息如下: " << endl;
ofile << " 基本信息:" << " 学号" << t->ID << " 姓名:" << t->name << " 年龄:" << t->age << " 专业:" << t->get_major() << endl
<< " 公共课成绩:" << " 数学:" << t->math << " 英语:" << t->english << " 体育:" << t->sport << endl
<< " 专业课成绩:" << " 综合英语:" << t->get_zonghe_english() << " 口语英语:" << t->get_spoken_english() << endl;
t = t->next; continue;
}
if (t->get_major() == "IT_Student") {
ofile << "录入的各学生的信息如下: " << endl;
ofile << " 基本信息:" << " 学号" << t->ID << " 姓名:" << t->name << " 年龄:" << t->age << " 专业:" << t->get_major() << endl
<< " 公共课成绩:" << " 数学:" << t->math << " 英语:" << t->english << " 体育:" << t->sport << endl
<< " 专业课成绩:" << " 组成原理:" << t->get_zu_cheng_yuanli() << " 体系结构:" << t->get_ti_xi_jie_gou() << " 汇编语言:" << t->get_hui_bian() << endl;
t = t->next; continue;
}
}
ofile.close();
return ;
} void manage_student::get_average_score(Student *head, int len,int ID) {
Student *t = head; //用t遍历
for (int i = ; i < len; ++i) {
if (t->ID == ID) {
//用基类的指针调用子类的函数 返回平均分 输出
cout << "该学生的平均成绩为:" << t->get_average_score() << endl; return;
}
t = t->next;
}
cout << "请确认您输入的ID是否有误" << endl;
}
;
} void main() {
cout << "欢迎进入学生管理系统!请输入需要添加的学生数: "<<endl;
Student temp; //用来初始化指针
Student *Head=&temp;
Student *t=&temp;
int len;
manage_student Chead;
Head=Chead.create();//把头地址传回来给Head 指向的是第一个类stu menu(Head, Chead); //调用菜单函数 system("pause");
return;
}
float IT_Student::get_ti_xi_jie_gou() {
return ti_xi_jie_gou;
} float IT_Student::get_hui_bian() {
return hui_bian;
} string IT_Student::get_major() {
return major;
}
;
*/
#include "Student.h"
#include<iostream> Student::Student()
{
} Student::~Student()
{
} //这些函数都是假的 真正实现在子类里面
float Student::get_average_score() {
return ;
} float Student::get_main_average() {
return ;
} void Student::traverse(Student *t) {
cout << "我在Student 里面" << endl;
} float Student:: get_shi_bian_fun() {
return ;
} float Student::get_fan_han_fen_xi() {
return ;
} float Student::get_wei_fen_jihe() {
return ;
} float Student::get_zonghe_english() {
return ;
} float Student::get_spoken_english() {
return ;
} float Student::get_zu_cheng_yuanli() {
return ;
} float Student::get_ti_xi_jie_gou() {
return ;
} float Student::get_hui_bian() {
return ;
} string Student::get_major() {
return ;
} void Student::change() { }
;
C++项目作业 学生管理系统的更多相关文章
- #006 C语言大作业学生管理系统第三天
还差最后两部分 读取文件 恢复删除的学生信息 先学会处理文件的 知识点,再继续跟着视频做这个作业. 应该明天周六能把视频里手把手教的学生管理系统敲完 第二周尽量自己能完成C语言课本最后面那道学生管理系 ...
- #004 C语言大作业学生管理系统试着做
链表不会用 文件不会使 在这种情况下就边写边做 希望这个月能做完这个作业 #include<stdio.h> #include<stdlib.h> #include<st ...
- #007 C语言大作业学生管理系统第四天
第四天还差恢复已删除学生功能 对于我来说,已经开始很复杂了. 小细节太重要了,边写边出错 1 #include<stdio.h> #include<stdlib.h> #inc ...
- JAVA初学练手项目,学生管理系统
github地址:https://github.com/qscqesze/StudentManager 简单描述一下: UI层面用于接受用户的处理信息,然后移交给StudentDao去处理数据. 其中 ...
- Java学生管理系统项目案例
这是一个不错的Java学生管理系统项目案例,希望能够帮到大家的学习吧. 分代码如下 package com.student.util; import java.sql.Connection; impo ...
- C语言项目:学生成绩管理系统
C语言项目:学生成绩管理系统 1.数据结构:学生信息:学号.姓名.年龄.性别.3课成绩 2.功能: (1)增加学生记录 (2) 删除学生记录 (3) 查找学生信息(学号 ...
- 【C】C语言大作业——学生学籍管理系统
文章目录 学生管理系统 界面 主界面 登陆界面 注册界面 管理界面 学生界面 退出界面 链接 注意 学生管理系统 学C语言时写的一个大作业,弄了一个带图形界面的,使用的是VS配合EasyX图形库进行实 ...
- Mybatis高级:Mybatis注解开发单表操作,Mybatis注解开发多表操作,构建sql语句,综合案例学生管理系统使用接口注解方式优化
知识点梳理 课堂讲义 一.Mybatis注解开发单表操作 *** 1.1 MyBatis的常用注解 之前我们在Mapper映射文件中编写的sql语句已经各种配置,其实是比较麻烦的 而这几年来注解开发越 ...
- 【IOS开发笔记02】学生管理系统
端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...
随机推荐
- 【UI自动化方面】
1.自动化执行失败如何排查故障. 答:1).查看log,错误原因.[log不详细的话,可以优化] 2).排查是否真的有bug,若不是bug查看是否是新版本引入了新的变更. 3).调试脚本看自己脚本是不 ...
- 可设置指定时间自己主动消失的 MessageBox实现
本文主要是讲怎样实现可设置指定时间自己主动消失的 MessageBox提示框ShowMessageBoxTimeout实现: 在开发client应用程序的时候.经经常使用得WinForm中Messag ...
- java文件和目录的增删复制
在使用java进行开发时常常会用到文件和目录的增删复制等方法.我写了一个小工具类.和大家分享,希望大家指正: package com.wangpeng.utill; import java.io.Fi ...
- U4699 鸡蛋
U4699 鸡蛋 0通过 37提交 题目提供者飞翔 标签 难度尚无评定 提交 最新讨论 暂时没有讨论 题目背景 调皮的kkk准备恶搞他的同学兼朋友——你! 题目描述 kkk准备从楼上扔鸡蛋下来砸在lz ...
- Silverlight 2学习笔记二:三个基本布局控件(Canvas、StackPanel、Grid )
这篇文章主要是翻译了ScottGu博客的文章:Silverlight Tutorial Part 2: Using Layout Management.虽然是翻译,但通过笔记记录,我发现对这三个布局控 ...
- P2120 [ZJOI2007]仓库建设 斜率优化dp
好题,这题是我理解的第一道斜率优化dp,自然要写一发题解.首先我们要写出普通的表达式,然后先用前缀和优化.然后呢?我们观察发现,x[i]是递增,而我们发现的斜率也是需要是递增的,然后就维护一个单调递增 ...
- 路一直都在——That's just life
分享一首很喜欢的歌,有时候歌词写得就是经历,就是人生... 穿过人潮汹涌灯火栏栅 没有想过回头 一段又一段走不完的旅程 什么时候能走完 我的梦代表什么 又是什么让我们不安 That's just li ...
- 父页面调用子页面js的方法
iframe子页面调用父页面javascript函数的方法今天遇到一个iframe子页面调用父页面js函数的需求,解决起来很简单,但是在chrome浏览器遇到一点小问题.顺便写一下iframe的父页面 ...
- HTTP Status 500 - Could not write content: could not initialize proxy - no Session
分析出现no Session错误的原因以及给出解决方案: 使用SpringMVC + JSON数据返回时,经常会出现no Session的错误: 报错原因:因为懒加载在提取关联对象的属性值的时候发现E ...
- Spark SQL入门案例之人力资源系统数据处理
通过该案例,给出一个比较完整的.复杂的数据处理案例,同时给出案例的详细解析. 人力资源系统的管理内容组织结构图 1) 人力资源系统的数据库与表的构建. 2) 人力资源系统的数据的加载. 3) 人力资源 ...