大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
c语言管理系统
牛~~
/*引用库函数*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*定义结构体数组*/
typedef struct
{
char num[12]; /*学号*/
char name[20]; /*姓名*/
char sex[2]; /*性别*/
int score[3]; /*成绩*/
float avg; /*平均分*/
int sum; /*总成绩*/
}Student;
Student studentAll[80]; /*结构体数组*/
int student_number = 0; /*总人数*/
/*菜单函数*/
int menu_select()
{
int check_number;
do{
system("cls"); /*运行前清屏clear screen,在stdlib.h中*/
printf("\t************学生成绩管理系统*************\n"); /*菜单选择*/
printf("\t*| 1. 添加学生信息 *\n");
printf("\t*| 2. 显示学生信息 *\n");
printf("\t*| 3. 按学号排序 *\n");
printf("\t*| 4. 按总成绩排序 *\n");
printf("\t*| 5. 查找单个学生 *\n");
printf("\t*| 6. 删除指定学生 *\n");
printf("\t*| 7. 修改学生信息 *\n");
printf("\t*| 8. 查看各门课程的成绩情况 *\n");
printf("\t*| 9. 待定功能 *\n");
printf("\t*| 0. 保存退出 *\n");
printf("\t*****************************************\n");
printf("请输入选择(0-9):");
scanf("%d",&check_number); /*读入选择*/
}while(check_number<0||check_number>9);
return(check_number); /*返回选择*/
}
//以下的student都是形式参数,真正的数组是在全局变量里定义的studentAll数组
/*输入若干条记录*/
void Input(Student student[])
{
int i=0,j;
char flag,clear[10]; /*clear[10]为清除多余的数据所用*/
char studentNum[12]; //暂存某学生学号
//判断是否已经存在相同学生的学号
while(flag!='n'&&flag!='N') //判断flag是不是n/N,以此判断是否继续输入学生信息
{
printf("请输入学生学号: ");
scanf("%s",studentNum);
while(strcmp(student[i].num,studentNum)!=0&&i<student_number)
{
i++; /*查找判断*/
}
//查找到学生,无法增加学生信息,返回主函数
if(i<student_number)
printf("已有相同学号的学生,请重新输入\n");
//如果没有查找到学生,即可增加学生信息
else
{
if(i==student_number)
{
memset(student[i].num, 0, sizeof(student[i].num));//字符串清空
strcpy(student[i].num,studentNum);
printf("学生姓名:");
scanf("%s",student[student_number].name);
printf("学生性别:");
scanf("%s",student[student_number].sex);
printf("c语言成绩:");
scanf("%d",&student[student_number].score[0]);
printf("数据结构成绩:");
scanf("%d",&student[student_number].score[1]);
printf("数据库成绩:");
scanf("%d",&student[student_number].score[2]);
student[student_number].sum=0;
for(j=0;j<3;j++)
student[student_number].sum+=student[student_number].score[j];
student[student_number].avg = (float)student[student_number].sum/3;
//printf("%.2f\n",student[student_number].avg);
gets(clear); //*清除多余的输入
printf("此学生信息录入完毕,是否继续?(Y/N)");
scanf("%c",&flag); //输入判断
student_number++;//总人数加1
i=0;}
}
}
}
/*显示所有记录*/
void Display(Student student[])
{
int i;
printf("共有%d名同学\n",student_number);
printf("----------------------------------------------------------------------------------------------------------\n");
printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
printf("----------------------------------------------------------------------------------------------------------\n");
for(i=0;i<student_number;i++)
{
printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
}
system("pause");
}
/*按学号排序*/
void Sort_by_num(Student student[])
{
int i,j;
for(i=0;i<student_number-1;i++)
{
for(j=0;j<student_number-1-i;j++)
{
if(strcmp(student[j].num,student[j+1].num))
{
Student t;
t=student[j];
student[j]=student[j+1];
student[j+1]=t;
}
}
}
}
/*按总成绩排序*/
void Sort_by_sum(Student student[])
{
int i,j;
for(i=0;i<student_number-1;i++)
{
for(j=0;j<student_number-1-i;j++)
{
if(student[j].sum<student[j+1].sum)
{
Student t;
t=student[j];
student[j]=student[j+1];
student[j+1]=t;
}
}
}
}
/*按姓名查找,删除一条记录*/
void Delete_a_record(Student student[])
{
char studentName[20];
int i=0;
printf("请输入要删除记录的姓名");
scanf("%s",studentName);
while(strcmp(student[i].name,studentName)!=0&&i<student_number)
{
i++; /*查找判断*/
}
int t=i;
if(i<student_number)
{
int j=student_number-1;
for(;j>i;i++)
{
student[i]=student[i+1];
}
student_number--;
}
if(t==student_number)
{
printf("没有此人,请重新输入");
}
}
/*按姓名查找并显示一个记录*/
void Query_a_record(Student student[])
{
char studentName[20];
int i=0;
printf("请输入要查找记录的姓名");
scanf("%s",studentName);
while(strcmp(student[i].name,studentName)!=0&&i<student_number)
{
i++; /*查找判断*/
}
if(i<student_number)
{
printf("------------------------------------------------------------------------------------------------------------------------\n");
printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
printf("------------------------------------------------------------------------------------------------------------------------\n");
printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
}
if(i==student_number)
{
printf("没有此人,请重新输入");
}
}
/*修改学生信息*/
void modifyStudentinformation(Student student[])
{
char studentName[20];
int i=0;
printf("请输入要修改记录的姓名");
scanf("%s",studentName);
while(strcmp(student[i].name,studentName)!=0&&i<student_number)
{
i++; /*查找判断*/
}
if(i<student_number)
{
printf("修改前的记录:");
printf("------------------------------------------------------------------------------------------------------------------------\n");
printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
printf("------------------------------------------------------------------------------------------------------------------------\n");
printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
printf("\n学生学号:");
scanf("%s",student[i].num);
printf("学生姓名:");
scanf("%s",student[i].name);
printf("学生性别:");
scanf("%s",student[i].sex);
printf("c语言成绩:");
scanf("%d",&student[i].score[0]);
printf("数据结构成绩:");
scanf("%d",&student[i].score[1]);
printf("数据库成绩:");
scanf("%d",&student[i].score[2]);
for(int j=0;j<3;j++)
student[i].sum+=student[i].score[j];
student[i].avg = (float)student[i].sum/3;
printf("\n修改后的记录:\n");
printf("------------------------------------------------------------------------------------------------------------------------\n");
printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
printf("------------------------------------------------------------------------------------------------------------------------\n");
printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
}
if(i==student_number)
{
printf("没有此人,请重新输入");
}
}
/*查看各门课程的成绩情况*/
void showClass(Student student[])
{
char studentName[20];
int i=0;
printf("请输入要查看各门课程成绩的学生的姓名");
scanf("%s",studentName);
while(strcmp(student[i].name,studentName)!=0&&i<student_number)
{
i++; /*查找判断*/
}
if(i<student_number)
{
printf("***********\n");
printf("c语言成绩:%d\n",student[i].score[0]);
printf("***********\n\n");
printf("**************\n");
printf("数据结构成绩:%d\n",student[i].score[1]);
printf("**************\n\n");
printf("**************\n");
printf("数据库成绩:%d\n",student[i].score[2]);
printf("**************\n");
}
if(i==student_number)
{
printf("没有此人,请重新输入");
}
}
/*从文件中读入数据*/
void AddfromText(Student student[])
{
int i=0;
int number = 0;
FILE *fp; /*定义文件指针*/
if((fp=fopen("D:\\student.txt","rb"))==NULL) /*打开二进制文件,如果不存在则创建*/
{
fp=fopen("D:\\student.txt","rb") ;
}
fscanf(fp,"%d",&student_number); /*读入总记录量*/
while(i<student_number) /*循环读入数据*/
{
fscanf(fp,"%s%s%s%d%d%d%f%d",student[i].num,student[i].name,student[i].sex,&student[i].score[0],&student[i].score[1],&student[i].score[2],&student[i].avg,&student[i].sum);
i++;
}
fclose(fp);
}
/*将所有记录写入文件*/
WritetoText(Student student[])
{
FILE *fp;
if((fp=fopen("D:\\student.txt","wb"))==NULL)
{
printf("error");
}
else
{
fprintf(fp,"%d",student_number);
for(int i=0;i<student_number;i++)
{
fprintf(fp,"\t%s\t%s\t%s\t%d\t%d\t%d\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
}
fclose(fp);
}
}
/*主函数*/
int main()
{
AddfromText(studentAll);
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("插入学生信息\n"); /*输入若干条记录*/
Input(studentAll);
break;
case 2:
printf("显示记录\n"); /*显示所有记录*/
Display(studentAll);
break;
case 3:
printf("按学号排序\n");
Sort_by_num(studentAll); /*按学号排序*/
printf("按学号排序成功!\n");
Display(studentAll);
system("pause");
break;
case 4:
printf("按总成绩排序\n");
Sort_by_sum(studentAll); /*按总成绩排序*/
printf("按总成绩排序成功!\n");
Display(studentAll);
system("pause");
break;
case 5:
printf("查找单个学生\n");
Query_a_record(studentAll); /*按姓名查找学生*/
system("pause");
break;
case 6:
printf("删除指定学生\n");
Delete_a_record(studentAll); /*按姓名查找,删除一条记录*/
system("pause");
break;
case 7:
printf("修改学生信息\n");
modifyStudentinformation(studentAll); /*查看学生成绩情况*/
system("pause");
break;
case 8:
printf("查看各门课程的成绩情况\n");
showClass(studentAll); /*查看各门课程的成绩情况*/
system("pause");
break;
case 9:
printf("待定功能\n");
printf("功能描述");
system("pause");
break;
case 0:
WritetoText(studentAll);
printf("已保存,退出系统\n"); /*结束程序*/
system("pause");
//exit(0);
}
}
}
靓仔点赞
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193697.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...