编程-学生学籍成绩管理系统 《求一个保存 帮忙插入一下的呢 ,谢谢大家 保存在txt,可以提取显示》

问题描述

学生学籍成绩管理系统 《求一个保存 帮忙插入一下的呢 ,谢谢大家 保存在txt,可以提取显示》

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;

struct student
{

char name[12]; /// 姓名
char id[10]; /// 学号
float Cppnum; /// c++分数
float Snum; /// 数学分数
float Enum; /// 英语分数
float tiyu;

float number; /// 总分
float average; ///平均分
student *next;
};
///////////-------定义类-----------------------////////////
class stud{

student *p1,*p2,*head;
public:
~stud()/////----析构函数------------------------
{
while(head){
p1=head->next;
delete head;
head=p1;
}
}
///------------成员函数------------

void output(student head); // 输出学生成绩
student * input(student *head); // 增加学生记录
student
del(student head, char*p); // 删除记录
student
find(student head,char *p,int &n); // 查找学生记录(可查找多个同名数据)
student
stat(student head); //排序统计学生总分
friend void total(student*head);//统计学生总分
friend void pingjun(student*head);//统计平均分
student
insert(student head); //按学生总分插入记录
student
clear(student *head); // 删除当前表
void Inputs(student *p); //用于添加数据的子函数
};//----------------------------------------------------

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
stud::Studentmassage()
{
cin=new Student;
cin->Next=new Student;
End=Head->Next;
in.open("sort.txt");
if(!in)
cout<<"这是一个新系统,无学生信息。请先输入。"<
else
{
while(!in.eof())
{
End->ReadFile(in);
if(End->name[0]=='')break;
End->Next=new Student;
End=End->Next;
}
in.close();
cout<<"tt读取学生信息成功!"<<endl;
}
}

////---------用于添加数据的子函数-------///////
void stud::Inputs(student*p)
{
cout<
cin>>p->name >>p->id;
cin >>p->Cppnum;
while(cin.fail()){
cerr<<"您的输入有误,请重新输入"<
cin.clear ();
cin.sync ();
cin>>p->Cppnum;
}

cin>>p->Snum;

while(cin.fail()){

cerr<<"您的输入有误,请重新输入"<
cin.sync ();
cin.clear ();
cin>>p->Snum;
}
cin>>p->Enum;
while(cin.fail()){

cerr<<"您的输入有误,请重新输入"<
cin.clear ();
cin.sync ();
cin>>p->Enum;
}

cin>>p->tiyu ;
while(cin.fail()){

cerr<<"您的输入有误,请重新输入"<
cin.clear ();
cin.sync ();
cin>>p->tiyu ;
}

total(p); //计算出总分

pingjun(p);//计算平均分
}
////////-----输出学生成绩-----------------/////////////////////
void stud::output (student head)
{
p1=head;
while(p1!=NULL){
cout<name<id<Cppnum<Snum <Enum<tiyu <number<average<
p1=p1->next ;
}
}
/////////------------插入学生成绩记录--------////////////////
student
stud::insert(student head)
{

p1=new student;
Inputs(p1); //调用子函数 增加数据
p2=head;
student
p3=NULL;
while((p2->number < p1->number ) && p2->next !=NULL){

p3=p2;
p2=p2->next;
}
if(p2->number > p1->number){

p1->next=p2;
if(p3==NULL) // 若当前值是最小的
return p1;
p3->next =p1;
return head;
}
else {
p2->next=p1;
p1->next=NULL;
return head;
}

}
//////----------清空数据------------/////////////
student* stud::clear(student*head)
{
while(head){

p1=head->next ;
delete head;
head=p1;
}
return head;
}
//////////-----------排序统计函数-----------/////////////////
student *stud::stat(student *head)
{
p2=head;
p1=p2->next;
while(p2->next){ //冒泡泡法, 呵呵`~~~

if(p2->number > p1->number){ // 把头指针指向当前比较小的节点
p2->next=p1->next;

p1->next=head;

head=p1; // 把用于比较的两个指针复位

//p2=head;

p1=p2->next ;
}
else{ // 指向下一个节点
p2=p2->next ;
p1=p2->next ;
}//-------------------------------------------
}
cout<<"当前表以按学生总分排序成功"<<endl;

return head;
}
/////-----------删除记录-----------//////////////////////
student* stud::del (student *head,char *p)
{
p1=head;
p2=NULL;

while(strcmp(p1->name ,p)&& p1->next !=NULL){
p2=p1;
p1=p1->next ;
}

if(!strcmp(p1->name ,p)){

if(p1==head)
head=p1->next;
else
p2->next=p1->next ;
cout<<"删除成功,OK"<<endl;
delete p1;
}
else
cout<<" 没找到姓名"<<p<<"的学生.n"; //结点没找到

return head ;
}
///////----------统计总分---------------///////////////
void total(student *p)
{

p->number = p->Cppnum + p->Snum + p->Enum+p->tiyu;

}
//////---------计算平均分-------------////////////////
void pingjun(student *p)
{
p->average=(p->Cppnum+p->Snum+p->Enum+p->tiyu)/3;
}

///////-------------查找函数----------///////////////////
student* stud::find (student *head,char *p,int& n)
{
p2=head;
while(strcmp(p2->name ,p) !=0 && p2->next !=NULL)
p2=p2->next ;
if(0==strcmp(p2->name,p)){
cout<name<id<Cppnum<Snum <Enum <number <average<<endl;
n++;
return p2;
}
else if(n==0){
system("cls");
cout<<"对不起,没有您要查找的学生数据"<<endl;
}

return NULL;

}
///////----------------增加学生记录-----------////////////////////////////
student *stud::input (student *head)
{
p1=new student;
p2=head;
Inputs(p1); //调用子函数 增加数据

if(head ==NULL){
head=p1;
p1->next =NULL;
return head;
}

while(p2->next !=NULL)
p2=p2->next;
p2->next=p1;
p1->next=NULL;
return head;
}
//----------- 输出错误 -----------//////////
void error()
{
cout<<"错误,这还是一张空表,请输入数据"<<endl;
getch();
}

///////////////////------------main函数--------//////////////////-----------
int main()
{
stud stus;
student *head=NULL;
student *pd; //临时指针, 用于查找函数
char choice; //用于存放用户的选择项
char name[10]; //查找,删除记录的 key

while(1){
system("cls");
cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓";
cout<<"┃**************** ☆ 学 生 学 籍 成 绩 管 理 系 统 ☆ **************┃";
cout<<"┃********** ★★★★★ ★★★★★★★ ★★★★★ *********** ┃";
cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫";
cout<<"┃****************★ ☆ 1.增加学生成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 2.显示学生成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 3.排序统计成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 4.查找学生成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 5.删除学生成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 6.插入学生成绩 ☆ ★****************┃";
cout<<"┃****************★ ☆ 7.清空所有数据 ☆ ★****************┃";
cout<<"┃****************★ ☆ 8.安全退出系统 ☆ ★****************┃";

cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛";
cout<<" 请输入您的选择(0--8):";
cout<<endl;

int n=0; //计数器,用于在查找时计算有没有同名学生
cin>>choice;
fflush(stdin); //清空缓冲区

if(choice=='8'){ //安全退出
cout<<"谢谢使用,再见"<
exit(0);
}//------------------------------------------------
switch(choice){
case '1':
head=stus.input (head);
break;//------------------------------------------------
case '2':
if(head==NULL){
error();
break;
}
cout
stus.output (head);
getch();
break;//------------------------------------------------
case '3':
if(head==NULL){
error();
break;
}
head=stus.stat(head);
getch();
break;//------------------------------------------------
case '4':
if(head ==NULL){
error(); //调用函数输出错误信息
break;
}
cout
cin>>name;
pd=head;
cout<
while(pd){ // 循环调用函数, 用于输出多个的同名学生成绩
pd=stus.find (pd,name,n);
if(pd==NULL)
break;
pd=pd->next ; //指针指向当前以找到的下一个节点,用于查找多个同名学生
}
getch();
break;//------------------------------------------------
case '5':
if(head==NULL){
error();
break;
}
cout<<"请输入想要删除学生姓名"<
cin>>name;
head=stus.del(head,name);
getch();
break;//------------------------------------------------
case '6':
if(head==NULL){
error();
break;
}
head=stus.stat (head);
head=stus.insert(head);
break;//-----------------------------------------------
case '7':
if(head==NULL){
error();
break;
}
head=stus.clear(head);
cout<<"删除表成功~"<<endl;
getch();
break;//-----------------------------------------------
default :
cout<<" 对不起,您的输入有误,请重新输入。n";
getch();
break;
}//------------------------------------------------------
}
getch();
return 0;
}

解决方案

参考下,这个很完整
http://wenku.baidu.com/view/9121dc43be1e650e52ea9922.html

解决方案二:

干嘛呢,晒代码啊,我也晒
http://blog.csdn.net/bdmh/article/details/6112631

解决方案三:

求一个保存 帮忙插入一下的呢 ,谢谢大家

解决方案四:

我给你的链接里就有保存和读取

解决方案五:

但是需要保存在txt当中哎,刚才我看那个代码,很强大,但是我用到的好少哎。

时间: 2024-10-21 12:19:17

编程-学生学籍成绩管理系统 《求一个保存 帮忙插入一下的呢 ,谢谢大家 保存在txt,可以提取显示》的相关文章

我是菜鸟,在c++编程中遇到问题,求大神帮忙

问题描述 我是菜鸟,在c++编程中遇到问题,求大神帮忙 对于这个题目: 定义一个基类Person,数据成员包含字符指针类型变量Name用于保存姓名, 函数成员包括默认构造函数.带形参构造函数用于初始化数据成员.输出 姓名的成员函数PrintName().从Person类派生出Student类,增加长整型 数据成员Number用于保存学号,派生类的函数成员包括带形参构造函数用 于初始化数据成员,输出学生信息的成员函数PrintInfo(). 要求:在函数PrintInfo()中需要调用基类的成员函

android-小白求助,求大神帮忙解释下加点注释~谢谢

问题描述 小白求助,求大神帮忙解释下加点注释~谢谢 package com.hanway.oa.activity; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.

spring 注入 多线程-spring多线程注入报错,求大神帮忙解决一下。。谢谢!!

问题描述 spring多线程注入报错,求大神帮忙解决一下..谢谢!! Error creating bean with name 'transactionManager': Singleton bean creation not allowed while the singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implement

struct-中缀表达式转换成后缀表达式,求大神帮忙找下错误,谢谢

问题描述 中缀表达式转换成后缀表达式,求大神帮忙找下错误,谢谢 #include #include typedef struct huozhui{ char c; struct huozhui next; }huozhui; void push(huozhui *L,char x) { huozhui *p=(huozhui *)malloc(sizeof(huozhui)); p->c=x; p->next=L->next; L->next=p; } int isoperator

学生成绩管理系统-求改正,不知道为什么导不出文件

问题描述 求改正,不知道为什么导不出文件 #include #include #include #include #include #include #include typedef struct student { char name[10]; int schoolnumber; int classnumber; float score[10]; struct student next; } stu,*stupt; stupt st=NULL;//学生信息的头指针 stupt qt=NULL;

asp net 管理系统-求一个简单的asp的web页面管理系统,只要求实现增删改查就行

问题描述 求一个简单的asp的web页面管理系统,只要求实现增删改查就行 求大神发一个初学者的管理给我,顺带讲解讲解,实在做不出来....................qq:732796124

求大神帮忙-ViewPager滑动加载图片时,中间的图片正常显示,两侧的图片添加阴影效果,这个怎么实现啊????

问题描述 ViewPager滑动加载图片时,中间的图片正常显示,两侧的图片添加阴影效果,这个怎么实现啊???? 解决方案 感觉应该用gallery,然后在修饰边框透明度 解决方案二: 可以参考下这个https://github.com/TangKe/SlideMenu 里边有滑动加阴影的部分 解决方案三: css样式实现给图片添加阴影效果

编程c语言-求c++编写学生成绩管理系统

问题描述 求c++编写学生成绩管理系统 求c++编写学生成绩管理系统,要求可以增加,删除,修改查询,,功能 解决方案 http://www.doc88.com/p-698583418612.html 解决方案二: http://blog.csdn.net/sdliujiangbo/article/details/7693269http://wenku.baidu.com/link?url=CjxxWkRyzIFRCDHKjZnbxsv6O3GrmOb15SBHLP1ccXEdmuc7A6Ou05

mfc-编程问题,小白女子求大神帮忙【哭】着急,在线等,感激不尽

问题描述 编程问题,小白女子求大神帮忙[哭]着急,在线等,感激不尽 有一个MFC工程,我用VS编译通过但是没有窗口,而用VC编译不能通过%>_<%求大神帮忙把程序运行起来····· 好人一生平安······跪求时间充裕有耐心的大神帮忙[跪]~ 解决方案 看看是sln/vcproj还是dsp/dsw,前者用VS,后者用VC 解决方案二: 问题本身就不清楚 解决方案三: 问题本身就不清楚 解决方案四: 没法帮你,能不能详细一点, 解决方案五: 你的程序是用 VC++开发的?开发环境是VS2010?