求用C语言编写一个简单的学生信息管理程序【 C++】网上之前有C 的好像

求用C语言编写一个简单的学生信息管理程序和课程设计报告求用C语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。要求:建立一个4个学生的信息登记表,每个学生的... 求用C语言编写一个简单的学生信息管理程序和课程设计报告
求用C语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。
要求:建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。
程序运行时显示一个简单的菜单,例如:
(1)信息输入:对4个学生的信息进行输入
(2)总分统计:对每个学生的3门课程统计总分
(3)总分排序:对4个学生的总分按降序排序并显示出来
(4)查询:查询输入一个学号后,显示出该学生的有关信息
可以在改简单点吗?我初学者。。这个本来是C 的不知道C++可以实现不。菜单什么的我上课从来没用过。
展开
 我来答
kkdhw17
2010-12-25 · TA获得超过217个赞
知道答主
回答量:303
采纳率:100%
帮助的人:195万
展开全部
# include <iostream>
# include <fstream>
# include <string.h>
#include <conio.h>//用getch();
using namespace std;

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Student
{
public:
char name[20];
char Id[20];
int Cnum; //C课程得分
int Mnum; //数学课程得分
int Enum; //英语课程得分
int sum; //总分
Student * Next;
void Input()
{
cout<<"\t\t请输入学生的姓名:"; cin>>name;
cout<<"\t\t请输入学生的学号:"; cin>>Id;
cout<<"\t\t请输入C课程的成绩:"; cin>>Cnum;
cout<<"\t\t请输入数学课程的成绩:"; cin>>Mnum;
cout<<"\t\t请输入英语课程的成绩:"; cin>>Enum;
sum=Cnum+Mnum+Enum;
}
void ReadFile(istream & in)
{
in>>name>>Id>>Cnum>>Mnum>>Enum>>sum;
}
void Show()
{
cout<<"姓名:"<<name<<endl<<"学号:"<<Id<<endl<<"C++:"<<Cnum<<endl
<<"数学:"<<Mnum<<endl<<"外语:"<<Enum<<endl<<"总成绩:"<<sum<<endl<<endl<<endl;
}
};

//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Studentmassage
{
public:
Studentmassage();
~Studentmassage();
void ShowMenu();
void Find();
void Save();
void ModifyItem();
void RemoveItem();
void Swap(Student *,Student *);
void Sort();
//void Unpass();
int ListCount();
//void Average();
void Display()
{
for(Student * p=Head->Next;p!=End;p=p->Next)
p->Show();
cout<<"输入任意字符!继续……";
getch();
}
void AddItem()
{
End->Input();
End->Next=new Student;
End=End->Next;
cout<<"添加成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
private:
Student * Head,* End;
ifstream in;
ofstream out;
Student *FindItem(char * name)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p->Next->name,name))return p;
return NULL;
}
Student *FindID(char * Id)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p->Next->Id,Id))return p;
return NULL;
}
};

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

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::~Studentmassage()
{
Save();
for(Student * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ShowMenu()
{
cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 学 生 成 绩 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.显示学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序统计成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.删除学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.修改学生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;

cout<<"\n\t\t\n\t\t请选择:";
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Find()
{
char name[20] ,Id[10];
int x;
Student * p=NULL;
cout<<"\n\t\t*********************************\n";
cout<<"\t\t※ 1.按学生的姓名查找\n\t\t※ 2.按学生学号查找";
cout<<"\n\t\t*********************************\n请选择:";
cin>>x;
switch(x)
{
case 1:{cout<<"\t\t请输入要查找的学生的姓名:";cin>>name;
if(p=FindItem(name))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该姓名的学生!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
case 2:
{
cout<<"\t\t请输入要查找的学生的学号:";cin>>Id;
if(p=FindID(Id))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该学好的学生!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
}

}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ModifyItem() //修改信息
{
char name[20];
Student * p=NULL;
cout<<"\t\t请输入要修改的人的姓名:";cin>>name;
if(p=FindItem(name))
{
cout<<"\t\t已找到学生的信息,请输入新的信息!"<<endl;
p->Next->Input();
cout<<"修改成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::RemoveItem() // 删除信息
{
char name[20];
Student * p=NULL,*temp=NULL;
cout<<"\t\t请输入要删除的学生的姓名:"<<endl;cin>>name;
if(p=FindItem(name))
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"\t\t删除成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Swap(Student *p1, Student *p2)//交换两个combox变量的数据域
{
Student *temp=new Student;
strcpy(temp->name,p1->name);
strcpy(temp->Id,p1->Id);
temp->Cnum=p1->Cnum;
temp->Mnum=p1->Mnum;
temp->Enum=p1->Enum;
temp->sum=p1->sum;

strcpy(p1->name,p2->name);
strcpy(p1->Id,p2->Id);
p1->Cnum=p2->Cnum;
p1->Mnum=p2->Mnum;
p1->Enum=p2->Enum;
p1->sum=p2->sum;

strcpy(p2->name,temp->name);
strcpy(p2->Id,temp->Id);
p2->Cnum=temp->Cnum;
p2->Mnum=temp->Mnum;
p2->Enum=temp->Enum;
p2->sum=temp->sum;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int Studentmassage::ListCount()//统计当前链表的记录总数,返回一个整数
{
if(! Head)
return 0;
int n=0;
for(Student * p=Head->Next;p!=End;p=p->Next)
{
n++;
}
return n;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Sort()//对当前链表进行排序
{
cout <<"Sorting..."<<endl;
Student *p=NULL,*p1=NULL,*k=NULL;
int n=Studentmassage::ListCount();
if(n<2)
return;
for(p=Head->Next;p!=End;p=p->Next)
for(k=p->Next;k!=End;k=k->Next)
{
if(p->sum>k->sum)
{
Studentmassage::Swap(p,k);
}
}
cout <<"排序完成!"<<endl;
getch();
return;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Save()
{
out.open("sort.txt");
for(Student *p=Head->Next;p!=End;p=p->Next)
out<<p->name<<"\t"<<p->Id<<"\t"<<p->Cnum<<"\t"
<<p->Mnum<<"\t"<<p->Enum<<"\t"<<p->sum<<'\n';
out.close();
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int main()
{
int x,i=0;
bool quit=false;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t◎★★★★★★★★◎"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl;;
Studentmassage Grade;
cout<<"按任意键开始……";
getch();
while(!quit)
{
system("cls");
Grade.ShowMenu();
cin>>x;
switch(x)
{
case 0:quit=true;break;
case 1:Grade.AddItem();break;
case 2:Grade.Display();break;
case 3:Grade.Sort();break;
case 4:Grade.Find();break;
case 5:Grade.RemoveItem();break;
case 6:Grade.ModifyItem();break;
}
}
return 0;
}
//你要的功能全部实现了~你再改改吧,有多余的功能,设计报告你就自己写写吧!能帮你的就这么多了。
jayhou1986
2010-12-24 · TA获得超过1511个赞
知道小有建树答主
回答量:586
采纳率:81%
帮助的人:416万
展开全部
#include <Windows.h>
#define NUM_LEN 11
#define NAME_LEN 11
struct _stu
{
char num[NUM_LEN];
char name[NAME_LEN];
int fox;
int c;
int English;
}stu[4];

struct
{
int index;
int total;
}score[4];

void main()
{
char select;
int i, j;
memset(stu, -1, sizeof(stu));
while (true)
{
system("cls");
printf("**********欢迎使用学生信息管理程序**********\n");
printf("1.信息输入\n2.总分统计\n3.总分排序\n4.查询\n5.退出程序\n");
while ((select = getch()) < '1' || select > '5');
switch (select)
{
case '1':
{
for (i = 0; i < 4; ++i)
{
printf("请输入第%d位学生的学号(小于%d个字符):\n", i+1, NUM_LEN);
scanf("%s", stu[i].num);
printf("请输入第%d位学生的姓名(小于%d个字符):\n", i+1, NAME_LEN);
scanf("%s", stu[i].name);
printf("请输入第%d位学生的 fox 成绩:\n", i+1);
scanf("%d", &(stu[i].fox));
printf("请输入第%d位学生的 c 成绩:\n", i+1);
scanf("%d", &(stu[i].c));
printf("请输入第%d位学生的 English 成绩:\n", i+1);
scanf("%d", &(stu[i].English));
score[i].index = i;
score[i].total = stu[i].fox + stu[i].c + stu[i].English;
}
printf("输入完毕,按任意键返回!\n");
getch();
}
break;
case '2':
{
if (stu[0].c == -1)
{
printf("请先输入学生信息!\n");
break;
}
for (i = 0; i < 4; ++i)
printf("%s 的总分为:%d\n", stu[i].name, stu[i].fox + stu[i].c + stu[i].English);

system("pause");
}
break;
case '3':
{
for (i = 0; i < 3; ++i)
{
for (j = i+1; j < 4; ++j)
{
if (score[i].total < score[j].total)
{
int t = score[i].total;
score[i].total = score[j].total;
score[j].total = t;
t = score[i].index;
score[i].index = score[j].index;
score[j].index = t;
}
}
}
for (i = 0; i < 4; ++i)
printf("第%d名:学号:%s 姓名:%s 总分:%d\n", i+1, stu[score[i].index].num, stu[score[i].index].name, score[i].total);

system("pause");
}
break;
case '4':
{
if (stu[0].c == -1)
{
printf("请先输入学生信息!\n");
break;
}
char cha[NAME_LEN];
printf("请输入要查询的学号:\n");
scanf("%s", cha);
for (i = 0; i < 4; ++i)
{
if (strcmp(cha, stu[i].name) == 0)
{
printf("学号:%s 姓名:%s fox:%d c:%d English:%d\n", stu[i].num, stu[i].name, stu[i].fox, stu[i].c, stu[i].English);
break;
}
}
if (i >= 4)
printf("没有此学号的学生!\n");
system("pause");
}
break;
case '5':
printf("**********谢谢使用学生信息管理程序**********\n");
getch();
return;
}
}
}
ps:花了我将近40分钟.. 有问题或bug再hi我,我回答问题的宗旨就是:保证优质的售后服务!(*^__^*) 嘻嘻……
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
__兮情
2010-12-24 · TA获得超过206个赞
知道答主
回答量:145
采纳率:0%
帮助的人:141万
展开全部
实现了楼主要求功能,楼主可以参考一下,另外希望楼主采纳哦,嘿嘿嘿~~~
唉,白写这么多代码了,你都不看的,以后不来百度喽~~~
#include<iostream.h>
#include<stdio.h>
#include<iomanip.h>
#include<string.h>
#include<stdlib.h>
struct student
{
int number; //学号
char name[10]; //学生姓名
int common; //平时成绩
int mid; //期中成绩
int end; //期末成绩
int sum; //总成绩
}stud[50];
int menu() //菜单选项
{
char c;
cout<<"***************成绩管理系统*****************"<<endl;
cout<<"输入1输入学生成绩数据"<<endl;
cout<<"输入2显示学生成绩数据"<<endl;
cout<<"输入3查找学生成绩数据"<<endl;
cout<<"输入4显示不合格学生数据"<<endl;
cout<<"输入5排序并且评定奖学金获得情况"<<endl;
cout<<"输入0程序运行结束界面"<<endl;
cout<<"请输入编号"<<endl;
cin>>c;
do
{
cout<<"***************成绩管理系统*****************"<<endl;
cout<<"输入1输入学生成绩数据"<<endl;
cout<<"输入2显示学生成绩数据"<<endl;
cout<<"输入3查找学生成绩数据"<<endl;
cout<<"输入4显示不合格学生数据"<<endl;
cout<<"输入5排序并且评定奖学金获得情况"<<endl;
cout<<"输入0程序运行结束界面"<<endl;
}while(c>'5'||c<'0');
system("cls");
return c-'0';
}
void input(int num) //输入学生数据
{
int i;
cout<<"请输入学生数据:"<<endl;
for(i=0;i<num;i++)
{
cout<<"学号 姓名 平时成绩 期中成绩 期末成绩 "<<endl;
cin>>stud[i].number;
cin>>stud[i].name;
cin>>stud[i].common;
cin>>stud[i].mid;
cin>>stud[i].end;
}
}
void display(int num) //显示输入的数据
{
int i;
cout<<"输入的数据为:"<<endl;
for(i=0;i<num;i++)
{
cout<<"学号 姓名 平时成绩 期中成绩 期末成绩 总成绩"<<endl;
stud[i].sum=stud[i].common+stud[i].mid+stud[i].end;
cout<<setw(4)<<stud[i].number<<setw(4)<<stud[i].name;
cout<<setw(4)<<stud[i].number<<setw(4)<<stud[i].mid;
cout<<setw(4)<<stud[i].end<<setw(4)<<stud[i].sum<<endl;
}
}
void charge(int num) //补考学生数据
{
int i;
for(i=0;i<num;i++)
{
if(stud[i].mid<60||stud[i].end<60||stud[i].common<60)
cout<<"需要补考学生数据"<<endl;
cout<<"学号:"<<stud[i].number<<"姓名"<<stud[i].sum<<endl;
}
}
void search(int num) //查询一个学生的数据
{
int i;
int m;
cin>>m;
for(i=0;i<num;i++)
{
if(m==stud[i].number)
cout<<"学号"<<stud[i].number<<"姓名"<<stud[i].name<<endl;
else
cout<<"没有该生信息"<<endl;
break;
}
}
void order(int num) //排序并且评出获得奖学金的学生
{
int i,j,temp;
for(i=0;i<num-1;i++)
for(j=1;j<num;j++)
{
if(stud[i].sum<stud[j].sum)
{
temp=stud[i].sum;
stud[i].sum=stud[j].sum;
stud[j].sum=temp;
}
}
cout<<"1-2名为A等奖学金"<<endl;
cout<<"3-5名为B等奖学金"<<endl;
cout<<"6-9名为C等奖学金"<<endl;
for(i=0;i<num;i++)
{
cout<<"学生的名次为:"<<endl;
cout<<"第"<<i+1<<"名为:"<<stud[i].name<<endl;
if(i+1==2||i+1==1)
cout<<"A等奖学金"<<endl;
else
if(i+1<=5&&i+1>=3)
cout<<"B等奖学金"<<endl;
else
if(i+1<=9&&i+1>=6)
cout<<"C等奖学金"<<endl;
else
cout<<"没有获得奖学金"<<endl;
}
}
void main()
{
int num,n;
cout<<"请输入学生的人数:";
cin>>num;
menu();
for(;;)
{
switch(n=menu())
{
case 1:
input(num);
break;
case 2:
display(num);
break;
case 3:
search(num);
break;
case 4:
charge(num);
break;
case 5:
order(num);
break;
default:
cout<<"欢迎使用O(∩_∩)O"<<endl;
break;
}
}
system("pause");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tpj_wow
2010-12-24 · TA获得超过532个赞
知道小有建树答主
回答量:232
采纳率:100%
帮助的人:293万
展开全部
一个系统啊....
100元我估计会点兴趣做一下,100分就没欲望了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式