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.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...
随机推荐
- LeetCode 443. String Compression (压缩字符串)
题目标签:String 这一题需要3个pointers: anchor:标记下一个需要存入的char read:找到下一个不同的char write:标记需要存入的位置 让 read指针 去找到下一个 ...
- 微软将支持.net开源并跨平台,新特性会体现于VS2015
http://news.microsoft.com/2014/11/12/microsoft-takes-net-open-source-and-cross-platform-adds-new-dev ...
- [水题]4242 果实计数&&3214 采访对象
4242 果实计数 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 淘淘家有棵奇怪的苹果树,这棵树共有n+1层 ...
- sed 之 N D P
sed的N,D,P 是用于多行模式空间的命令,分别对应于n,d,p n & N: n(next)输出模式空间的内容,然后读取新的输入行,n命令不创建多行模式空间:N(Next)通过读取新的输入 ...
- Robot Framework 搭建和RIDE(GUI) 的环境
在windows x64的环境上进行安装,集成Selenium2和AutoIt的libraries,以下安装步骤在win 7,win 8.1,win 10, win 2012 R2上测试通过 1. 下 ...
- oc69--NSMutableString
// main.m // NSMutableString基本概念,NSString是不可变字符串,NSMutableString是可变字符串.NSMutableString继承NSString,所以N ...
- Java 数组的 12 个方法
1. 声明一个数组 String[] aArray = new String[5]; String[] bArray = {"a","b","c&q ...
- JavaGraphics类的绘图方法
Graphics类提供基本绘图方法,Graphics类提供基本的几何图形绘制方法,主要有:画线段.画矩形.画圆.画带颜色的图形.画椭圆.画圆弧.画多边形.画字符串等. 1. 画线段:在窗口中画一条线段 ...
- 创建APP检查更新页
本文来源及参考:Create a check for updates page for your app. 这篇文章解释了如何创建一个简单的检查更新页,检查该用户已安装的应用程序的最新版本. 简介 这 ...
- docker部署gitlab服务
docker run -d -p : -p : -p : \ --name gitlab --restart always \ --volume /home/xxx/dockerData/gitlab ...