学生管理评测系统源码完整版

# include<stdio.h>//包含文件
# include "stdlib.h" 
# include "string.h" 
#include <iostream>
using namespace std;
int count;
void info_daoru();//学生信息导出文件函数
void info_xieru();//学生信息写入文件函数
void info_del();//学生信息删除文件函数
void info_xiugai();//学生信息修改文件函数
void data_xieru();//导入数据
void data_daoru();//写入数据
void data_xiugai();//删除数据
void data_chaxun();//查询数据
void data_input();//输入数据
void shuchu();//学生综合信息输出
struct student{ //定义学生信息结构数组
double number;
char name[11];
char sex[4];
char adds[15];
char phone[14];
}p,info[100],w={0," "," "," "," ",};


struct data{ //定义学生数据结构数组
    double number;
char name[11];
char sex[4];
char adds[15];
char phone[14];
int chinese,math,english,stu,ksmc,pinde,teacher;
float aver,ceping;
}data[100];


int main()    //主函数
{
system("color 9e");
void data_menu();
void info_menu();
void help();
void menu();

printf("\n\n\n\t\t............欢迎使用学生综合管理系统............\n\n");
printf("\t\t \t\t本程序由吴勃 谭宇轩 王文涛编写\n\n");
printf("\n\n\t\t");
system("pause");
    menu();
return 0;

}
void help()
{

system("cls");//清屏

printf("        *  欢迎使用青理学生综合评测系统! *\n\n");
printf("  本系统可以存储学生的基本信息和各科成绩,并能计算考试平均成绩,综合测评成绩和排名。\n");
printf("  基本信息包括:学号、姓名、性别、家庭住址、联系电话;\n  各科成绩包括:语文、数学、外语成绩;\n");
printf("  其它包括:考试名次、同学互评分、品德成绩、任课教师评分等。\n");
printf("  说明:考试成绩排名是按照考试成绩计算的(考试成绩=(语+数+外)/3);\n");
printf("  综合测评总分=((考试成绩)*0.6+(同学互评分)*0.1+(品德成绩)*0.1+(任课教师评分)*0.2)\n");
printf("    其它请按照提示操作即可。\n\n");
printf("\n\n\t\t");
system("pause");

}


void info_daoru() //学生信息导出文件函数
{
FILE *f_info;
struct student p={NULL};
printf("\n\n\t正在导入...\n\n");
if((f_info=fopen("info.txt","r"))==NULL){
printf("\n\t打开文件失败!\n\n");
return;
}
count=0;
    while(!feof(f_info)){
fscanf(f_info,"%lf %s %s %s %s ",&p.number,p.name,p.sex,p.adds,p.phone);
info[count]=p;
count++;
}

printf("\n\t导入已完成!共导入 %d 条记录!\n\n\n",count);
fclose(f_info);
}


void info_input()  //学生信息输入函数
{
int i,j;
    info_daoru();
for( ; ; ){
printf("\t请输入学号(输入0退出):");
scanf("%lf",&p.number);
if(p.number==0) return;
for(i=0;i<=count;i++){         //是否存在该学生
if(p.number==info[i].number){
printf("\n\n\t该学号已存在!请重新输入!\n\n");
return;
}
}
printf("\t请输入姓名: ");                     //输入学生信息
getchar();
gets(p.name);
printf("\t请输入性别: ");
getchar();
gets(p.sex);
printf("\t请输入家庭住址: ");
getchar();
gets(p.adds);
printf("\t请输入电话号码: ");
getchar();
gets(p.phone);
info[count]=p;
for(i=0;i<count;i++){                                //按学号排序
if(info[i].number>info[count].number){
                for(j=count;j>i;j--){
info[j]=info[j-1];

}
info[i]=p;
break;
}
}
count++;
}

}




void info_output()                                    //学生信息浏览
{

FILE *f_info;
int i;

if((f_info=fopen("info.txt","r"))==NULL){                                    //判断
printf("\n\t没有学生信息!");
printf("\n\n\t\t");
system("pause");
return;
}

info_daoru();

if(count==0){                                                               //判断
        printf("\n\t没有学生信息!");
printf("\n\n\t\t");
system("pause");
return;

    else{
printf(" \t学号\t   姓名 \t  性别\t      家庭住址\t       联系电话\n");                     //输出学生信息
for(i=0;i<count;i++){
printf("  %10.0lf",info[i].number);
printf("  %10s",info[i].name);
printf("  %10s",info[i].sex);
printf("  %15s",info[i].adds);
printf("  %13s\n\n",info[i].phone);
}
}
printf("\t请按任意键返回上级:");
printf("\n\n\t\t");
system("pause");
printf("\n\n\n\n");

}




void info_menu()            //学生信息菜单
{
int choice;
while(1){
system("cls");                                     //清屏
printf("\n\n\n\n\t\t☆☆☆☆☆学生信息处理系统☆☆☆☆☆\n\n");
printf("\t\t\t● 1.输入学生信息\n");
printf("\t\t\t● 2.修改学生信息\n");
printf("\t\t\t● 3.删除学生信息\n");
printf("\t\t\t● 4.浏览学生信息\n");
printf("\t\t\t● 0.返回主菜单\n\n");
printf("\t\t请输入序号选择操作:");
scanf("%d",&choice);
if(choice==0) break;
switch(choice){
case 1: info_input(); info_xieru(); break;
case 2: info_xiugai(); break;
case 3: info_del(); break;
case 4: info_output(); break;
default: printf("\n\t输入有误!请重新输入!\n\n"); break;
}
}

}




void data_menu()                                        //数据处理菜单
{
int choice;
printf("\n\t在进入学生数据管理前,请确认学生信息已全部完成!\n");
printf("\n\t是否继续?输入数字选择(0:返回;其它数字继续。)\n");
scanf("%d",&choice);
if(choice==0) return;
while(1){
system("cls");                                    //清屏
printf("\n\n\n\n\t\t☆☆☆☆☆学生数据处理系统☆☆☆☆☆\n\n");
printf("\t\t\t● 1.录入成绩数据\n");
printf("\t\t\t● 2.修改学生数据\n");
printf("\t\t\t● 3.学生数据查询\n");
printf("\t\t\t● 0.返回主菜单\n\n");
printf("\t\t请输入序号选择操作:");
scanf("%d",&choice);
if(choice==0) break;
switch(choice){
case 1: data_input(); break;
case 2: data_xiugai(); break;
case 3: data_chaxun(); break;
default: printf("\n\t输入有误!请重新输入!\n\n"); break;
}
}

}


void menu()                                               //主菜单函数
{
int choice;
while(1){
system("cls");
printf("\n\n\n\n\t\t-------- ※主 - - - -菜- - - - 单※ --------\n\n");
printf("\t\t\t●  1.学生信息处理系统\n");
printf("\t\t\t●  2.学生数据处理系统\n");
printf("\t\t\t●  3.学生综合信息输出\n");
printf("\t\t\t●  4.帮助信息\n");
printf("\t\t\t●  0.退出系统\n\n");
printf("\t\t请输入序号选择操作:");
scanf("%d",&choice);
printf("\n");
if(choice==0){
printf("\t\t☆☆☆☆☆你已经退出,谢谢使用!☆☆☆☆☆\n\n\t\t");
break;
}
switch(choice){
case 1 : info_menu(); break;
case 2 : data_menu(); break;
case 4 : help();  break;
case 3 : shuchu(); break;
default: printf("\n\t输入有误!请重新输入!\n\n"); break;

}
}
}


void info_xieru()                                  //学生信息写入文件函数
{
FILE *f;

int i;

if((f=fopen("info.txt","a"))==NULL){
printf("\n\t打开文件失败!\n\n");
exit(0);
}
    for(i=0;i<count;i++){                                    //保存文件
if(info[i].number==w.number) continue;
        else fprintf(f,"%.0lf %s %s %s %s",info[i].number,info[i].name,info[i].sex,info[i].adds,info[i].phone);
}
fclose(f);
printf("\n\t保存成功!\n\n");
printf("\n\n\t\t");
system("pause");


return;

}


void info_del()                                      //学生信息删除
{
double pp;

int i,j;
info_daoru();
printf("\n\t请输入要删除学生的学号:");
scanf("%lf",&pp);
printf("\n");
for(i=0;i<=count;i++){                                    //判断
        if(info[i].number==pp) break;
if(i>=count){
printf("\n\t没有找到该学生!\n"); return;
}
}
printf(" \t学号\t    姓名 \t 性别    家庭住址\t    联系电话\n");                //显示删除信息
printf("  %10.0lf",info[i].number);
printf("  %10s",info[i].name);
printf("  %10s",info[i].sex);
printf("  %13s\n\n",info[i].phone);
printf("\n\t是否删除?\t 1.是 \t 2.否 \t ");
while(1){
scanf("%d",&j);
switch(j){
case 1: info[i]=w; printf("\n\t删除成功!\n\n");  info_xieru(); return;
case 2: return;
default : printf("输入错误!请重新输入!");break;
}
break;
}
printf("\n\n\t\t");
    system("pause");
}


void info_xiugai()                                    //修改学生信息
{
double pp;
int i,j;
info_daoru();
printf("\n\t请输入要修改学生的学号:");                     //查找
scanf("%lf",&pp);
printf("\n");
for(i=0;i<=count;i++){
        if(info[i].number==pp) break;
printf("\n\t没有找到该学生!\n"); return;
}
printf(" \t学号\t    姓名\t      性别\t    家庭住址\t    联系电话\n");                //显示
printf("  %10.0lf",info[i].number);
printf("  %10s",info[i].name);
printf("  %10s",info[i].sex);
printf("  %15s",info[i].adds);
printf("  %13s\n\n",info[i].phone);
printf("\n\t是否修改?\t 1.是 \t 2.否 \t ");
while(1){                                               //修改
scanf("%d",&j);
switch(j){
case 1:{
printf("\t学号为: %.0lf\n",info[i].number);
printf("\t请输入姓名::");
scanf("%s",info[i].name);
printf("\t请输入性别:");
scanf("%s",info[i].sex);
printf("\t请输入家庭住址::");
scanf("%s",info[i].adds);
printf("\t请输入电话号码:");
scanf("%s",info[i].phone);
printf("\n\t修改成功!\n\n");  info_xieru(); return;         //保存
  }
case 2: return;
default : printf("输入错误!请重新输入!");break;
}
break;
}
printf("\n\n\t\t");
    system("pause");
}


void data_daoru()                                    //学生数据导出
{
    FILE *f_data;
struct data p={NULL};

printf("\n\n\t正在导入...\n\n");
if((f_data=fopen("data.txt","r"))==NULL){
printf("\n\t打开文件失败!\n\n");
return;
}

count=0;
    while(!feof(f_data)){
fscanf(f_data,"%lf %s %s %s %s %d %d %d %d %f %d %d %d %f ",&p.number,p.name,p.sex,p.adds,p.phone,&p.chinese,&p.math,&p.english,&p.stu,&p.aver,&p.ksmc,&p.pinde,&p.teacher,&p.ceping);
data[count]=p;//n  na se ad p  ch ma en su av ks pi te ce
count++;
}
printf("\n\t导入已完成!共导入 %d 条记录!\n\n\n",count);
fclose(f_data);                                       //关闭文件
}




void data_xieru()                                          //写入文件函数
{
FILE *f;

int i;

if((f=fopen("data.txt","w"))==NULL){
printf("\n\t打开文件失败!\n\n");
exit(0);
}
    for(i=0;i<count;i++){
        fprintf(f,"%.0lf %s %s %s %s %d %d %d %.1f %d %d %d %.1f",data[i].number,data[i].name,data[i].sex,data[i].adds,data[i].phone,data[i].chinese,data[i].math,data[i].english,data[i].aver,data[i].ksmc,data[i].stu,data[i].pinde,data[i].teacher,data[i].ceping);
}//             num nam s  ad tel c  m  e  ave ks stu t  cep                    
fclose(f);
printf("\n\n\t\t");
system("pause");


return;

}


void data_input()                                    //数据输入
{
FILE *f_info;
int choice,i,k;
struct data p={NULL};

    printf("\n\t警告!原有成绩将被覆盖!\n");
printf("\n\t是否继续?输入数字选择(0.返回;其余数字继续)\n\n");
scanf("%d",&choice);
if(choice==0) return;
printf("\n\n\t正在导入...\n\n");                        //判断
if((f_info=fopen("info.txt","r"))==NULL){
printf("\n\t打开文件失败!\n\n");
return;
}

count=0;
    while(!feof(f_info)){                                //导出学生信息
fscanf(f_info,"%lf %s %s %s %s ",&p.number,p.name,p.sex,p.adds,p.phone);
data[count]=p;
count++;
}
printf("\n\t导入已完成!共导入 %d 条记录!\n\n\n",count);
fclose(f_info);

for(i=0;i<count;i++){                                //输入学生数据
printf("\n\t学号:%.0lf      姓名:%s\n",data[i].number,data[i].name);
printf("\n\t请输入语文成绩:");
scanf("%d",&data[i].chinese);
printf("\t请输入数学成绩:");
scanf("%d",&data[i].math);
printf("\t请输入英语成绩:");
scanf("%d",&data[i].english);
printf("\t请输入同学互评分:");
scanf("%d",&data[i].stu);
printf("\t请输入品德成绩:");
scanf("%d",&data[i].pinde);
printf("\t请输入老师评分:");
scanf("%d",&data[i].teacher);
data[i].aver=(data[i].chinese+data[i].math+data[i].english)/3.0;
data[i].ceping=(data[i].aver*0.6+data[i].stu*0.1+data[i].pinde*0.1+data[i].teacher*0.2);
data[i].ksmc=i+1;

for(k=0;k<i;k++){                                    //名次排序
if(data[i].aver>data[k].aver){
                data[k].ksmc=data[k].ksmc+1;
if(data[i].ksmc>data[k].ksmc-1)
data[i].ksmc=data[k].ksmc-1;
}
}
}
printf("\n\n\t输入已完成!正在保存... \n");
data_xieru();
}
void data_xiugai()                                    //数据修改
{
double pp;
int i,j,k;
data_daoru();
printf("\n\t请输入要修改学生的学号:");
scanf("%lf",&pp);
printf("\n");
for(i=0;i<=count;i++){
        if(data[i].number==pp) break;
printf("\n\t没有找到该学生!\n"); return;
}
printf("\n\t学号:%.0lf 姓名:%s \n\n\t语文:%d 数学:%d 英语:%d 同学互评分:%d 品德成绩:%d 老师评分:%d\n\n",data[i].number,data[i].name,data[i].chinese,data[i].math,data[i].english,data[i].stu,data[i].pinde,data[i].teacher);

printf("\n\t是否修改?\t 1.是 \t 2.否 \t ");
while(1){                                         //询问
scanf("%d",&j);
switch(j){
case 1:{
for(k=0;k<=count;k++){                      //重新排名次
if(data[i].aver>data[k].aver) data[k].ksmc=data[k].ksmc-1;
}
printf("\n\t请输入语文成绩:");
scanf("%d",&data[i].chinese);
printf("\t请输入数学成绩:");
scanf("%d",&data[i].math);
printf("\t请输入英语成绩:");
scanf("%d",&data[i].english);
printf("\t请输入同学互评分:");
scanf("%d",&data[i].stu);
printf("\t请输入品德成绩:");
scanf("%d",&data[i].pinde);
printf("\t请输入老师评分:");
scanf("%d",&data[i].teacher);
data[i].aver=(data[i].chinese+data[i].math+data[i].english)/3.0;
data[i].ceping=(data[i].aver*0.6+data[i].stu*0.1+data[i].pinde*0.1+data[i].teacher*0.2);
data[i].ksmc=count;

for(k=0;k<count;k++){                      //重新排名次
if(data[i].aver>data[k].aver){
data[k].ksmc=data[k].ksmc+1;
if(data[i].ksmc>data[k].ksmc-1)
data[i].ksmc=data[k].ksmc-1;
}
}
printf("\n\t修改成功!\n\n");  data_xieru(); return;              //写入文件
  }
case 2: return;
default : printf("输入错误!请重新输入!");break;
}
break;
}
printf("\n\n\t\t");
    system("pause");
}




void data_chaxun()                                    //数据查询
{
    double pp;
int i;
data_daoru();                                    //导出文件数据
printf("\n\t请输入要查询学生的学号:");
scanf("%lf",&pp);
printf("\n");
for(i=0;i<=count;i++){
        if(data[i].number==pp) break;
if(i>=count){
printf("\n\t没有找到该学生!\n");
return;
}
}
printf("\n\t学号:%.0lf 姓名:%s 性别:%s \n\n\t语文:%d 数学:%d 英语:%d 平均成绩:%.1f\n\n\t名次:%d 品德成绩:%d 老师评分:%d 综合成绩:%.1f\n\n",data[i].number,data[i].name,data[i].sex,data[i].chinese,data[i].math,data[i].english,data[i].aver,data[i].ksmc,data[i].pinde,data[i].teacher,data[i].ceping);
printf("\n\n\t\t");
system("pause");
system("cls");                                    //清屏

}


void shuchu()                                    //学生综合信息输出
{
int i;
data_daoru();
    printf("\t学号\t   姓名\t  性别\t  家庭住址\t 电话号码\t  平均成绩\t  名次\t  综合成绩\n");
for(i=0;i<count;i++){
printf("%11.lf,%11s,%4s,%15s,%14s,%9.1f,%9d,%9.1f",data[i].number,data[i].name,data[i].sex,data[i].adds,data[i].phone,data[i].aver,data[i].ksmc,data[i].ceping);
}     printf("\n\n\t\t");
system("pause");
printf("\n");//\t学号\t   姓名 \t  性别\t      家庭住址\t       联系电话\n
}

猜你喜欢

转载自blog.csdn.net/csdnwbdream/article/details/80848885