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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求用C语言编写一个简单的学生信息管理程序【 C++】网上之前有C 的好像相关的知识,希望对你有一定的参考价值。

求用C语言编写一个简单的学生信息管理程序和课程设计报告
求用C语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。
要求:建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。
程序运行时显示一个简单的菜单,例如:
(1)信息输入:对4个学生的信息进行输入
(2)总分统计:对每个学生的3门课程统计总分
(3)总分排序:对4个学生的总分按降序排序并显示出来
(4)查询:查询输入一个学号后,显示出该学生的有关信息
可以在改简单点吗?我初学者。。这个本来是C 的不知道C++可以实现不。菜单什么的我上课从来没用过。

# 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;

//你要的功能全部实现了~你再改改吧,有多余的功能,设计报告你就自己写写吧!能帮你的就这么多了。
参考技术A #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我,我回答问题的宗旨就是:保证优质的售后服务!(*^__^*) 嘻嘻……本回答被提问者采纳
参考技术B 实现了楼主要求功能,楼主可以参考一下,另外希望楼主采纳哦,嘿嘿嘿~~~
唉,白写这么多代码了,你都不看的,以后不来百度喽~~~
#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");
参考技术C 一个系统啊....
100元我估计会点兴趣做一下,100分就没欲望了

C语言学生信息管理系统未完成部分!

C语言的大神们,程序编译运行是没有毛病,但是用system("pause")卡住看程序地址怎么出现这样的毛病?本人新手一枚,请各位大神指点一下!谢谢。

参考技术A 这个我c语言结构与链表的作业:
#include
#include

struct staff
char num[6]; //学号
char name[20]; //姓名
double wage; //成绩
struct staff *next;
;

/**
*输入数据
*/
struct staff *create(int n)
struct staff *head=NULL;
struct staff *tail,*newnode;
char num[6],name[20];
double wage;
for(int i=0;i<n;i++)
newnode = new staff;
scanf("%s",num);
scanf("%s",name);
scanf("%lf",&wage);
strcpy(newnode->num,num);
strcpy(newnode->name,name);
newnode->wage=wage;
if(head==NULL)
head = newnode;
else
tail->next = newnode;
tail=newnode;

tail->next=NULL;
return(head);


/**
*删除数据
*/
struct staff *deln(struct staff *head,int n)
struct staff *p,*q;
int i=0;
p=head;
while(++i!=n && p->next!=NULL)
q=p;
p=p->next;

if(i==n)
if(p==head) head=p->next;
else q->next=p->next;
delete(p);
else
printf("Not been found!\n");
return(head);


/**
*显示数据
*/
void showdate(struct staff *head)
struct staff *p=head;
int i=1;
while(p!=NULL)
printf("%d| %s,%s,%.2f\n",i++,p->num,p->name,p->wage);
p=p->next;



void main()
struct staff *head;
int n;
printf("请输入初始链表结点数 ");
scanf("%d",&n);
head=create(n);
printf("删除前:\n");
showdate(head);
int m=0;
while(mn)
printf("请输入要删除的结点号:\n");
scanf("%d",&m);

head=deln(head,m);
printf("删除后:\n");
showdate(head);

以上是关于求用C语言编写一个简单的学生信息管理程序【 C++】网上之前有C 的好像的主要内容,如果未能解决你的问题,请参考以下文章

求用C语言建立通讯录管理系统

用C语言编写学生信息管理程序(给出五个主要函数就OK啦!)

用C语言编写一个学生管理系统。

关于学生信息管理的C语言编程问题求救(一定要是C语言编程,谢谢)

c语言编写学生信息管理系统

用C语言编写学生信息管理程序(给出五个主要函数就OK啦!)