# include//包含文件
# include "stdlib.h"
# include "string.h"
#include
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
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
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 //保存文件
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 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 //输入学生数据
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 //名次排序
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 //重新排名次
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
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
}