📄 hm.cpp
字号:
/**
*程序名称:学生成绩管理系统
*C语言程序
*功能实现:数据的添加,显示,排序,查找
*/
#include<time.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include <string.h>
#define MAX 25
void input();
void sort();
void display();
void selectscore1();
void selectscore2();
int now_no=0;
struct student{
int no;
char name[25];
float sort;
};
struct student stu[MAX],*p;
main()
{
char as;
start: printf("\t\t\t欢迎使用学生成绩管理系统\n\n");
//一下为功能选择模块
do{
printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.通过姓名查找分数线性搜索法\n\t\t\t\t5.通过姓名(学号)查找分数--对分搜索法\n\t\t\t\t6.退出\n");
printf("\t\t\t\t选择功能选项:");
as=getch();
switch(as){
case '1':
system("cls");
input();
break;
case '2':
system("cls");
display();
break;
case '3':
system("cls");
sort();
break;
case '4':
system("cls");
selectscore1();
break;
case '5':
system("cls");
selectscore2();
break;
case '6':
system("exit");
exit(0);
default:
system("cls");
goto start;
}
}while(1);
//至此功能选择结束
}
void input()//原始数据录入模块
{
int i=0;
char ch;
do{
printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1);
printf("\n输入学生编号:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[i].sort);
if(stu[i].sort>99||stu[i].sort<60)
{
printf("\n输入学员成绩错误,请重新输入");
printf("\n\n");
now_no=i;
}
else
{
printf("\n\n");
i++;
now_no=i;
}
printf("%d",now_no);
printf("是否继续输入?(Y/N)");
ch=getch();
system("cls");
}while(ch!='n');
system("cls");
}
void sort()//排序数据函数
{
struct student temp;
char as;
int i,j;
for(i=1;i<now_no;i++){
for(j=1;j<=now_no-i;j++){
if(stu[j-1].sort>stu[j].sort){
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
do{
printf("\t\t班级学员信息列表\n");
printf("\t编号\t\t姓名\t\t成绩\n");
for(i=0;i<now_no;i++){
printf("\t%d\t\t%s\t\t%.2f\n",stu[i].no,stu[i].name,stu[i].sort);
}
printf("\t\t按任意键返回主菜单.");
as=getch();
goto exit;
}while(as!='n');
exit: system("cls");
}
void display()//显示数据函数
{
int i;
char as;
do{
printf("\t\t班级学员信息列表\n");
printf("\t编号\t\t姓名\t\t成绩\n");
for(i=0;i<now_no;i++){
printf("\t%d\t\t%s\t\t%.2f\n",stu[i].no,stu[i].name,stu[i].sort);
}
printf("\t\t按任意键返回主菜单.");
as=getch();
goto exit;
}while(as!='n');
exit: system("cls");
}
void selectscore1()//通过姓名查找分数线性搜索法
{
/*
//通过姓名查找
char name[100];
char ch;
do{
printf("\n\t\t输入要查找学生的姓名\n");
printf("\n输入学员姓名:");
fflush(stdin);
gets(name);
int i;
for(i=0;i<now_no;i++)
{
if(strcmp(name,stu[i].name)==0)
{
printf("\t编号\t\t成绩\n");
printf("\t%d\t\t%.2f\n",stu[i].no,stu[i].sort);
break;
}
}*/
//通过学号查找程序
int num;
char ch;
do{
printf("\n\t\t输入要查找学生的学号\n");
printf("\n输入学员学号:");
fflush(stdin);
scanf("%d",&num);
int i;
for(i=0;i<now_no;i++)
{
if(num=stu[i].no)
{
printf("\t姓名\t\t成绩\n");
printf("\t%s\t\t%.2f\n",stu[i].name,stu[i].sort);
break;
}
}
printf("是否继续输入?(Y/N)");
ch=getch();
system("cls");
}while(ch!='n');
}
void selectscore2()//通过姓名(学号)查找分数--对分搜索法
{
int num;
char ch;
do{
printf("\n\t\t输入要查找学生的学号\n");
printf("\n输入学员学号:");
fflush(stdin);
scanf("%d",&num);
int low=1;
int high=MAX;
int mid;
int i;
i=1;
while (low<=high)
{
mid=(low+high)/2;
if(num==mid)
{
printf("\t姓名\t\t成绩\n");
printf("\t%s\t\t%.2f\n",stu[i].name,stu[i].sort);
i=0;
}
else if(num<mid)
high=mid;
else
low=mid;
if(i==0)
break;
}
printf("是否继续输入?(Y/N)");
ch=getch();
system("cls");
}while(ch!='n');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -