课程设计--学生成绩管理系统

问题描述:本系统实现了学生成绩管理的功能,具有学生成绩的输入、读取、查询、修改、插入、删除、排序,统计等功能。


代码:

头文件student.h:

#ifndef LINKLIST_H_INCLUDED


#define LINKLIST_H_INCLUDED


struct Student    //结构体
{
int term;  //学期
int num;  //学号
char name[12];  //姓名
float mark1;  //成绩1
float mark2;  //成绩2
float mark3;  //成绩3
float sum;  //总分
float average;  //平均分
};
void input(Student *r);       //输入
void output(Student *r);      //输出
void searchnum(Student *r);   //按  学号及学期  查找
void searchname(Student *r);  //按  姓名及学期  查找


void change(Student *r);      //按  学号及学期  修改信息


Student *insert(Student *r);  //插入信息


void shanchu(Student *r);     //按  学号及学期  删除信息


void maopao(Student *r);      //按数据结构降序(冒泡)排序
void xuanze(Student *r);      //按总分降序(选择)排序


void tongji(Student *r);      //统计各科总分和平均分信息
void put(int a);

#endif 

//stu.cpp:

#include <iostream.h>
#include"student.h"
#include <stdlib.h>
#include <iomanip.h>  
#include <conio.h>     
#include <stdio.h> 
int num;
void put(int a)
{
num=a;
}
void input(Student *r)
{
FILE *fp;
int n=0;
int i;
int t=0; //t为标志位,1为找到,0为未找到 

cout<<endl<<"----------> 请输入学生信息 <---------"<<endl;
for(i=0;i<num;i++)
{
cout<<"请输入学期:";
cin>>r[i].term;
cout<<"请输入第"<<i+1<<"个人的学号:";
cin>>r[i].num;  
if(i>=1)
{
for(n=0;n<i;n++)
{
if(r[n].num==r[i].num)
{   
cout<<"该学号已存在!!"<<endl;
t=1;
}
}
}
if(t==1) //表示有重复
{
i--;
t=0;
continue;
}
cout<<"请输入姓名:";
cin>>r[i].name;
cout<<"请输入 高等数学 成绩:";
cin>>r[i].mark1;
cout<<"请输入 数据结构 成绩:";
cin>>r[i].mark2;
cout<<"请输入 大学英语 成绩:";
cin>>r[i].mark3;
r[i].sum=r[i].mark1+r[i].mark2+r[i].mark3;
r[i].average=(r[i].mark1+r[i].mark2+r[i].mark3)/3;
}
fp=fopen("student.txt","w+");
if(!fp) 
{
cout<<"文件不能打开"<<endl;
exit(0); 
}


for(n=0;n<i;n++)
{
fprintf(fp,"%d   %s   %.1f   %.1f   %.1f   %d   %.1f   %.1f",r[n].num,r[n].name,r[n].mark1,r[n].mark2,r[n].mark3,
r[n].term,r[n].sum,r[n].average);
fprintf(fp,"\n");
}

fclose(fp);
cout<<"文件已经写入"<<endl;
}


//输出信息
void output(Student *r)  
{
int m;
system("cls");                   //清屏
if(num>0)
{
FILE *fp;
if((fp=fopen("student.txt","r"))==NULL) //r只读
{
cout<<"文件不能打开"<<endl;
exit(0); 
}
for(int n=0;n<num;n++)
{
fscanf(fp,"%d%s%f%f%f%d%f%f",&r[n].num,r[n].name,&r[n].mark1,&r[n].mark2,&r[n].mark3,&r[n].term,&r[n].sum,
&r[n].average);
}
fclose(fp);                            //关闭文件


cout<<"文件已经读入"<<endl;
cout<<"----------------------------> 学生信息如下 <------------------------------"<<endl;
cout<<"学号"<<setw(6)<<"姓名"<<setw(10)<<"高等数学"<<setw(10)<<"数据结构"<<setw(10) //setw(6) 设置输出宽度
<<"大学英语"<<setw(6)<<"学期"<<setw(6)<<"总分"<<setw(8)<<"平均分"<<endl;
cout<<"---------------------------------------------------------------"<<endl;
for(m=0;m<num;m++)
{
cout<<r[m].num<<setw(6)<<r[m].name<<setw(7)<<r[m].mark1<<setw(10)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值