求(C语言课程设计)学生成绩管理系统

#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "stdlib.h"
#define CMD_START printf("nn######### Start a command #########n");
#define CMD_END printf( "n######### End a command #########nn");
#define DATA_FILE "data.dat"
#define TEMP_FILE "temp.dat"
typedef struct tagStudent
{
char ID[30];
char Name[30];
char Class[255];
char Sex;
int Math;
int English;
int Compute;
int Philosophy;
int PE;
} Student;
int ShowMenu();
int ReadData(FILE *, Student *);
int WriteData(FILE *, Student *);
void Output_Rec(Student *);
void Input_Rec(Student *);
void CopyRec(Student *, Student *);
void Print();
void Add();
void Delet
e();
void Statistics();
void Find(int);
int quit;
main()
{
int cmd;
quit = 0;
while (!quit)
{
cmd = ShowMenu();
CMD_START
switch (cmd)
{
case 1:
Print();
break;
case 2:
Add();
break;
case 3:
Delete();
break;
case 4:
Statistics();
break;
case 5:
Find(5);
break;
case 6:
Find(6);
break;
case 7:
quit = 1;
printf
(" Thank you for your using .nn Happy everyday !!nn Bye Bye ....n");
break;
default:
printf(" Please Input a number betweent1ttot7.n");
}
CMD_END
if (quit != 1)
{
printf(" Press any key to Return Main Menu ....n");
getch();
}
}
}
int ShowMenu()
{
int cmd = 0;
char Menu_SeeData[] = "t1 .tView the Records in the data filen";
char Menu_Add[] = "t2 .tAdd New Recordn";
char Menu_Delete[] = "t3 .tDelete an old Recordn";
char Menu_Statistics[] = "t4 .tMake a Statisticsn";
char Menu_Find_ID[] = "t5 .tFind a Record from the IDn";
char Menu_Find_Name[] = "t6 .tFind a Record from the Namen";
char Menu_Quit[] = "t7 .tQuitn";
printf("nn############ Main Menu ###############n");
printf("##############################################nn");
printf(Menu_SeeData);
printf(Menu_Add);
printf(Menu_Delet
e);
printf(Menu_Statistics);
printf(Menu_Find_ID);
printf(Menu_Find_Name);
printf(Menu_Quit);
printf("n##############################################");
printf("nn Input the index of your choice : ");
scanf("%d", &cmd);
printf("n");
return cmd;
}
void Print()
{
FILE *fp = NULL;
Student rec;
int i = 0;
fp = fopen(DATA_FILE, "rb");
if (fp == NULL)
{
printf(" Can not open the data file : %sn", DATA_FILE);
return;
}
while (ReadData(fp, &rec))
{
Output_Rec(&rec);
printf(" ------------------------------------------");
i ;
if (i % 4 == 0)
{
printf("n Press any key to co
ntinue ... n");
getch();
}
}
printf("n The current data file havet%dtrecord .n", i);
fclose(fp);
}
void Add()
{
Student rec;
FILE *fp = NULL;
Input_Rec(&rec);
fp = fopen(DATA_FILE, "ab");
if (fp == NULL)
{
printf(" Can not open the data file to write into ... n");
return;
}
if (WriteData(fp, &rec) == 1)
printf("nn Add New Record Success nn");
else
printf("nn Failed to Write New Record into the data file n");
fclose(fp);
}
void Delete()
{
Student rec;
FILE *fpr, *fpw;
char buf[30];
char cmd[255];
int del_count;
del_count = 0;
printf("n Please type the ID of the record you want me to delete .");
printf("n The ID : ");
scanf("%s", buf);
fpr = fopen(DATA_FILE, "rb");
if (fpr == NULL)
{
printf(" Can not open the data file to read record ... n");
return;
}
fpw = fopen(TEMP_FILE, "wb");
if (fpw == NULL)
{
printf(" Can not open the data file to write into ... n");
return;
}
while (ReadData(fpr, &rec))
{
if (strcmp(rec.ID, buf) != 0)
{
WriteData(fpw, &rec);
}
else
{
del_count ;
}
}
fclose(fpr);
fclose(fpw);
strcpy(cmd, "del ");
strcat(cmd, DATA_FILE);
system(cmd);
rename(TEMP_FILE, DATA_FILE);
printf("n I have deletet%dtrecord .n", del_count);
}
void Statistics()
{
int i50, i60, i70, i80, i90;
float avg;
int sum, sum_high, sum_low;
Student stu_high, stu_low;
Student stu_math_high, stu_english_high;
Student stu_compute_high, stu_philosophy_high, stu_PE_high;
Student stu_math_low, stu_english_low;
Student stu_compute_low, stu_philosophy_low, stu_PE_low;
FILE *fp;
Student rec;
int count;
count = sum = sum_high = sum_low = i50 = i60 = i60 = i70 = i80 = i90 = 0;
fp = NULL;
fp = fopen(DATA_FILE, "rb");
if (fp == NULL)
{
printf("nCan not open the data file to read ...n");
return;
}
while (ReadData(fp, &rec))
{
count ;
sum = rec.Math rec.English rec.Compute rec.PE rec.Philosophy;
avg = ((float)sum) / 5;
if (avg < 60)
i50 ;
else if (avg < 70)
i60 ;
else if (avg < 80)
i70 ;
else if (avg < 90)
i80 ;
else
i90 ;
if (count <= 1)
{
sum_high = sum_low = sum;
CopyRec(&stu_high, &rec);
CopyRec(&stu_low, &rec);
}
else
{
if (sum > sum_high)
{
sum_high = sum;
CopyRec(&stu_high, &rec);
}
if (sum < sum_low)
{
sum_low = sum;
CopyRec(&stu_low, &rec);
}
}
if (count == 1)
{
CopyRec(&stu_math_high, &rec);
CopyRec(&stu_english_high, &rec);
CopyRec(&stu_compute_high, &rec);
CopyRec(&stu_philosophy_high, &rec);
CopyRec(&stu_PE_high, &rec);
CopyRec(&stu_math_low, &rec);
CopyRec(&stu_english_low, &rec);
CopyRec(&stu_compute_low, &rec);
CopyRec(&stu_philosophy_low, &rec);
CopyRec(&stu_PE_low, &rec);
}
else
{
if (rec.Math > stu_math_high.Math)
CopyRec(&stu_math_high, &rec);
if (rec.English > stu_english_high.English)
CopyRec(&stu_english_high, &rec);
if (rec.Compute > stu_compute_high.Compute)
CopyRec(&stu_compute_high, &rec);
if (rec.Philosophy > stu_philosophy_high.Philosophy)
CopyRec(&stu_philosophy_high, &rec);
if (rec.PE > stu_PE_high.PE)
CopyRec(&stu_PE_high, &rec);
if (rec.Math < stu_math_low.Math)
CopyRec(&stu_math_low, &rec);
if (rec.English < stu_english_low.English)
CopyRec(&stu_english_low, &rec);
if (rec.Compute < stu_compute_low.Compute)
CopyRec(&stu_compute_low, &rec);
if (rec.Philosophy < stu_philosophy_low.Philosophy)
CopyRec(&stu_philosophy_low, &rec);
if (rec.PE < stu_PE_low.PE)
CopyRec(&stu_PE_low, &rec);
}
}
if (count < 1)
{
printf("n There is no record in the data file .n");
}
else
{
printf("n The count in each segment :n");
printf("t < 60t:t%dn", i50);
printf("t60 - 69t:t%dn", i60);
printf("t70 - 79t:t%dn", i70);
printf("t80 - 90t:t%dn", i80);
printf("t >= 90t:t%dn", i90);
printf(" ------------------------------------------");
getch();
printf("n The Highest Mark Student:n");
printf(" The Mark is : %dn", sum_high);
printf(" The student is :n");
Output_Rec(&stu_high);
printf("n The Lowest Mark Student:n");
printf(" The Mark is : %dn", sum_low);
printf(" The student is :n");
Output_Rec(&stu_low);
printf(" ------------------------------------------n");
getch();
printf(" The HighesttMath :n");
Output_Rec(&stu_math_high);
printf(" The Lowest Math :n");
Output_Rec(&stu_math_low);
printf(" ------------------------------------------n");
getch();
printf(" The Highest English :n");
Output_Rec(&stu_english_high);
printf(" The Lowest English :n");
Output_Rec(&stu_english_low);
printf(" ------------------------------------------n");
getch();
printf(" The Highest Compute :n");
Output_Rec(&stu_compute_high);
printf(" The Lowest Compute :n");
Output_Rec(&stu_compute_low);
printf(" ------------------------------------------n");
getch();
printf(" The Highest Philosophy :n");
Output_Rec(&stu_philosophy_high);
printf(" The Lowest Philosophy :n");
Output_Rec(&stu_philosophy_low);
printf(" ------------------------------------------n");
getch();
printf(" The Highest PE :n");
Output_Rec(&stu_PE_high);
printf(" The Lowest PE :n");
Output_Rec(&stu_PE_low);
printf(" ------------------------------------------n");
}
fclose(fp);
}
void Find(int isFind_From_ID)
{
char buf[30];
Student rec;
int find_count;
FILE *fp;
find_count = 0;
fp = fopen(DATA_FILE, "rb");
if (fp == NULL)
{
printf("n Can not open the data file to search ...n");
return;
}
switch (isFind_From_ID)
{
case 5:
printf("n Please Input the ID : ");
scanf("%s", buf);
while (ReadData(fp, &rec))
{
if (strcmp(rec.ID, buf) == 0)
{
find_count ;
Output_Rec(&rec);
printf(" ------------------------------------------n");
}
}
break;
case 6:
printf("n Please Input the Name : ");
scanf("%s", buf);
while (ReadData(fp, &rec))
{
if (strcmp(rec.Name, buf) == 0)
{
find_count ;
Output_Rec(&rec);
printf(" ------------------------------------------n");
}
}
break;
default:
printf(" nPlease type right index ...n");
}
if (find_count > 0)
{
printf("n Have find outt%dtrecordn", find_count);
}
else
{
printf
("n I'm very sorry .n I failed to find out the one you want .n");
printf("n I suggest that you change some other key words .n");
}
fclose(fp);
}
int ReadData(FILE * fp, Student * Dest_Rec)
{
int r;
if ((fp == NULL) || (Dest_Rec == NULL))
return 0;
r = fread(Dest_Rec, sizeof(Student), 1, fp);
if (r != 1)
return 0;
return 1;
}
int WriteData(FILE * fp, Student * Src_Rec)
{
int r;
if ((fp == NULL) || (Src_Rec == NULL))
return 0;
r = fwrite(Src_Rec, sizeof(Student), 1, fp);
if (r != 1)
return 0;
return 1;
}
void Output_Rec(Student * stu)
{
printf("n");
printf(" Name : %s", stu->Name);
printf("ttSex : ");
if (stu->Sex == 'M' || stu->Sex == 'm')
printf("Male");
else
printf("Female");
printf("n ID : %sttClass : %sn", stu->ID, stu->Class);
printf("Math = %dtEnglish = %dtCompute = %dn", stu->Math, stu->English,
stu->Compute);
printf("Philosophy = %dttPE = %dn", stu->Philosophy, stu->PE);
printf("n");
}
void Input_Rec(Student * stu)
{
if (stu == NULL)
return;
printf("n Name = ");
scanf("%s", stu->Name);
printf("tSex = (F|M) ");
while (1)
{
stu->Sex = getch();
if (stu->Sex == 'F' || stu->Sex == 'f' || stu->Sex == 'M'
|| stu->Sex == 'm')
{
printf("%c", stu->Sex);
break;
}
}
printf("n ID = ");
scanf("%s", stu->ID);
printf("n Class = ");
scanf("%s", stu->Class);
printf("n Math = ");
scanf("%d", &(stu->Math));
printf("n English = ");
scanf("%d", &(stu->English));
printf("n Compute = ");
scanf("%d", &(stu->Compute));
printf("n Philosophy = ");
scanf("%d", &(stu->Philosophy));
printf("n PE = ");
scanf("%d", &(stu->PE));
printf("n");
}
void CopyRec(Student * dest_stu, Student * src_stu)
{
strcpy(dest_stu->Name, src_stu->Name);
strcpy(dest_stu->ID, src_stu->ID);
strcpy(dest_stu->Class, src_stu->Class);
dest_stu->Sex = src_stu->Sex;
dest_stu->Math = src_stu->Math;
dest_stu->English = src_stu->English;
dest_stu->Compute = src_stu->Compute;
dest_stu->Philosophy = src_stu->Philosophy;
dest_stu->PE = src_stu->PE;
}
设计一个学生成绩管理系统,能对学生成绩信息(学号,课程名称,成绩)进行查询(要求可以使用模糊查询和
简单模式,具体功能你自己可以继续编写
#include<stdio.h>
#include<string.h>
#include<conio.h>
struct student{
char number[20];
char name[30];
float scor_eng;
float scor_math;
float scor_phy;
};
void printmenu();
int mycreat(int xueshengnumber,struct student record[100]);
void myshow(int xueshengnumber,struct student record[100]);
void myselect(int xueshengnumber,struct student record[100]);
void mymodify(int xueshengnumber,struct student record[100]);
int myadd(int xueshengnumber,struct student record[100]);
int mydelete(int xueshengnumber,struct student record[100]);
void mysort(int xueshengnumber,struct student record[100]);
main()
{
char choose,yesorno;
struct student record[100]; //用结构体代替原来的5个数组
int xueshengnumber=0;
do
{
printmenu();
choose=getch();
while(choose>'7'||choose<'0')
{
printf("请在0-7之间选择n");
choose=getch();
}
switch(choose)
{
case '1':
{
xueshengnumber=mycreat(xueshengnumber,record);
break;
}
case '2':
{
myshow(xueshengnumber,record);
break;
}
case '3':
{
myselect(xueshengnumber,record);
break;
}
case '4':
{
mymodify(xueshengnumber,record);
break;
}
case '5':
{
xueshengnumber=myadd(xueshengnumber,record);
break;
}
case '6':
{
xueshengnumber=mydelete(xueshengnumber,record);
break;
}
case '7':
{
mysort(xueshengnumber,record);
break;
}
case '0':
{
printf("确实要退出系统吗?");
break;
}
}
printf("n要继续选择吗{Y/N}n");
do
yesorno=getch();
while(yesorno!='Y'&&yesorno!='N'&&yesorno!='y'&&yesorno!='n');
}while(yesorno=='Y'||yesorno=='y');
}
void printmenu()
{
printf("|----------------------------------------------------------------------|n");
printf("| 学生成绩管理系统,请选择数字进行相应操作 |n");
printf("| 1:录入学生成绩(包括姓名、学号、英语、数学、物理),输入完成按“结束”|n");
printf("| 2:显示学生成绩; |n");
printf("| 3:查询学生成绩; |n");
printf("| 4:修改学生成绩; |n");
printf("| 5:添加学生成绩; |n");
printf("| 6:删除学生成绩; |n");
printf("| 7:排序学生成绩; |n");
printf("| 0:退出该成绩; |n");
printf("|----------------------------------------------------------------------|n");
}
int mycreat(int xueshengnumber,struct student record[100])
{
struct student temp;
int x;
printf("请输入第%d个记录:n",xueshengnumber+1);
printf("姓名(用#结束):n");
do
gets(temp.name);
while(strcmp(temp.name,"")==0);
printf("学号(用#结束):n");
do
gets(temp.number);
while(strcmp(temp.number,"")==0);
printf("英语成绩:n");
do
{
fflush(stdin);
x=scanf("%f",&temp.scor_eng);
}while(temp.scor_eng>100.0||temp.scor_eng<0.0||x==0);
printf("数学成绩:n");
do
{
fflush(stdin);
x=scanf("%f",&temp.scor_math);
}while(temp.scor_math>100.0||temp.scor_math<0.0||x==0);
printf("物理成绩:n");
do
{
fflush(stdin);
x=scanf("%f",&temp.scor_phy);
}while(temp.scor_phy>100.0||temp.scor_phy<0.0||x==0);
while(temp.name[0]!='#' && temp.number[0]!='#')
{
record[xueshengnumber]=temp;
xueshengnumber++;
printf("请输入第%d个记录:n",xueshengnumber+1);
printf("姓名(用#结束):n");
do
gets(temp.name);
while(strcmp(temp.name,"")==0);
printf("学号(用#结束):n");
do
gets(temp.number);
while(strcmp(temp.number,"")==0);
printf("英语成绩:n");
do
{
fflush(stdin);
x=scanf("%f",&temp.scor_eng);
}while(temp.scor_eng>100.0||temp.scor_eng<0.0||x==0);
printf("数学成绩:n");
do
{
fflush(stdin);
x=scanf("%f",&temp.scor_math);
}while(temp.scor_math>100.0||temp.scor_math<0.0||x==0);
printf("物理成绩:n");
do
{
fflush(stdin);
x=scanf("%f",&temp.scor_phy);
}while(temp.scor_phy>100.0||temp.scor_phy<0.0||x==0);
}
return(xueshengnumber);
}
void myshow(int xueshengnumber,struct student record[100])
{
int i;
if(xueshengnumber==0) printf("请先录入学生成绩,再显示学生成绩n");
else
{
printf("nnn显示所有学生成绩n");
printf("姓名 学号 英语成绩 数学成绩 物理成绩n");
for(i=0;i<xueshengnumber;i++)
{
printf("%-15s",record[i].name);
printf("%-15s",record[i].number);
printf("%-13f",record[i].scor_eng);
printf("%-13f",record[i].scor_math);
printf("%-13f",record[i].scor_phy);
printf("n");
}
}
}
void myselect(int xueshengnumber,struct student record[100])
{
int i;
char tempnumber[20]="";
printf("nn请输入要查询的学生学号:");
do
gets(tempnumber);
while(strcmp(tempnumber,"")==0);
for(i=0;i<xueshengnumber;i++)
if(strcmp(tempnumber,record[i].number)==0)
{
printf("查询结果:n");
printf("姓名 学号 英语成绩 数学成绩 物理成绩n");
printf("%-15s",record[i].name);
printf("%-15s",record[i].number);
printf("%-13f",record[i].scor_eng);
printf("%-13f",record[i].scor_math);
printf("%-13f",record[i].scor_phy);
printf("n");
}
}
void mymodify(int xueshengnumber,struct student record[100])
{
int i;
struct student temp;
printf("请输入要修改的学生学号n");
do
gets(temp.number);
while(strcmp(temp.number,"")==0);
for(i=0;i<xueshengnumber;i++)
if(strcmp(temp.number,record[i].number)==0) break; //从此分支出来的i是有此学生的
if(i==xueshengnumber) //表明整个循环走完了也没找到与tempnumber相等的学号
printf("查询结果无此学生n");
else
{
printf("请输入要修改的学生姓名n");
do
gets(temp.name);
while(strcmp(temp.name,"")==0);
strcpy(record[i].name,temp.name);
printf("请输入要修改的英语成绩n");
do
{ fflush(stdin);
scanf("%f",&temp.scor_eng);
}
while(temp.scor_eng>100.0||temp.scor_eng<0.0);
record[i].scor_eng=temp.scor_eng;
printf("请输入要修改的数学成绩n");
do
{ fflush(stdin);
scanf("%f",&temp.scor_math);
}
while(temp.scor_math>100.0||temp.scor_math<0.0);
record[i].scor_math=temp.scor_math;
printf("请输入要修改的物理成绩n");
do
{ fflush(stdin);
scanf("%f",&temp.scor_phy);
}
while(temp.scor_phy>100.0||temp.scor_phy<0.0);
record[i].scor_phy=temp.scor_phy;
}
}
int myadd(int xueshengnumber,struct student record[100])
{
int i;
struct student temp;
printf("请输入要添加的学生学号n");
do
gets(temp.number);
while(strcmp(temp.number,"")==0);
for(i=0;i<xueshengnumber;i++)
if(strcmp(temp.number,record[i].number)==0)
{printf("该学号已经存在,请重新输入要添加的学生学号n");
do
gets(temp.number);
while(strcmp(temp.number,"")==0);
i=-1;
}
strcpy(record[i].number,temp.number);
printf("请输入要添加的学生姓名n");
do
gets(temp.name);
while(strcmp(temp.name,"")==0);
strcpy(record[i].name,temp.name);
printf("请输入要添加的英语成绩n");
do
{ fflush(stdin);
scanf("%f",&temp.scor_eng);
}
while(temp.scor_eng>100.0||temp.scor_eng<0.0);
record[i].scor_eng=temp.scor_eng;
printf("请输入要添加的数学成绩n");
do
{ fflush(stdin);
scanf("%f",&temp.scor_math);
}
while(temp.scor_math>100.0||temp.scor_math<0.0);
record[i].scor_math=temp.scor_math;
printf("请输入要添加的物理成绩n");
do
{ fflush(stdin);
scanf("%f",&temp.scor_phy);
}
while(temp.scor_phy>100.0||temp.scor_phy<0.0);
record[i].scor_phy=temp.scor_phy;
xueshengnumber++;
return xueshengnumber;
}
int mydelete(int xueshengnumber,struct student record[100])
{
int i;
struct student temp;
printf("请输入要删除的学生学号:");
do
gets(temp.number);
while(strcmp(temp.number,"")==0);
for(i=0;i<xueshengnumber;i++)
if(strcmp(temp.number,record[i].number)==0) break;
if(i<xueshengnumber)
{
if(i+1==xueshengnumber) xueshengnumber--;
else{
for(;i<xueshengnumber-1;i++)
{
record[i]=record[i+1];
}
xueshengnumber--;
}
}
else
printf("查无此学生");
return xueshengnumber;
}
void mysort(int xueshengnumber,struct student record[100])
{ int i,j;
struct student t;
printf("按学号从小到大地排序n");
for(i=0;i<xueshengnumber-1;i++)
for(j=0;j<xueshengnumber-1-i;j++)
if(strcmp(record[j].number,record[j+1].number)>0)
{
t=record[j];
record[j]=record[j+1];
record[j+1]=t;
}
}
如何制作学生成绩查询系统
制作查询系统步骤1:首先来看一下小编设计的查询界面如图所示。学生成绩表的原始数据在sheet2工作表中。小编这里就选了12名同学成绩作为示例。
制作查询系统步骤2:单击选中B9单元格,依次单击“插入”--“函数…”。
制作查询系统步骤3:在“全部”函数中找到“vlookup”,单击“确定”按钮。红圈中提示该函数的功能(对于该函数还不太了解的童鞋可以参看小编的有关vlookup函数的经验)。
制作查询系统步骤4:第一个参数“Lookup_value”处我们单击“B3”单元格,当然也可以直接输入“B3”。
制作查询系统步骤5:第二个参数“Table_array”,我们单击sheet2工作表,选中数据区域,如图所示。
制作查询系统步骤6:第三个参数“Col_index_num”,这是满足条件单元格的列序号,我们这里要查询考试名称,当然填“2”,即第二列。其它字段的列序号如图所示。
制作查询系统步骤7:第四个参数是“Range_lookup”,即要求精确匹配还是模糊匹配。这里我们填“0”,要求精确匹配。
制作查询系统步骤8:单击“确定”以后,我们对函数修改一下,如图中红框处所示。这样修改便于我们后面的函数填充。
制作查询系统步骤9:修改好了直接回车,然后用填充柄直接填充函数。后面我们做一些小的修改。比如,要查询“姓名”,当然是第三列,所以这里修改为3即可。
制作查询系统步骤10:以此类推,修改其它字段的函数。例如排名处我们修改函数如图中红框处所示即可。
制作查询系统步骤11:测试一下,输入学号1101,回车后,查询结果全部返回正确,即我们的函数使用正确。
制作查询系统步骤12:下面我们对输入的学号进行约束。单击B2单元格,依次单击“数据”--“有效性…”。
怎么才能查到成绩?
可以在小程序查询成绩
可以试试用学校里面可提供为学生的日常服务的小程序上查成绩。
他们小程序设计者的成绩数据也是从教务系统来的。
所以如果教务系统无法查成绩的话可以试试小程序查询。
通过该模块可以查询教务所需要的各种信息。例如:学生信息查询提供了包括学生学号、姓名、所在班级、班主任名字和宿舍等信息,学生信息进行查询的各种查询条件,用户可以根据单个的查询条件或者它们的组合来进行查询。
同时,在查询的时候还提供了进行模糊查询的功能,即该模块能够利用读者输入的非完整的查询条件进行查询,这样更加方便了用户的查询管理。综合查询模块包括了学生信息查询、教师信息查询、班级信息查询、院系信息查询、课程信息查询和成绩查询等各种功能查询。
JAVA程序设计 学生成绩管理系统(数据库版)
那个不好意思,我来当坏人吧,没人会鸟你的,这世界好人没人想的那么多,最简单的自己在百度搜一个,但是一般数据库或者jdk版本会不兼容,还有你的悬赏太少了,根本没有人会来回答的,我建议你还自己堆起来吧,这个不难,只是堆代码而已,现在eclipse都可以拖放swing部件了
200分 征求C语言成绩管理系统(要求如下)
我给你特意量身定做的
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LEN sizeof(Student)
typedef struct student
{
int num;
char name[20];
int score[4];
int sum;
struct student *next;
}Student;
int n;
Student *cin(void);
Student *sort_1(Student *head,int);
void sort_2(Student *head);
void print(Student *head);
Student *sort_all(Student *head);
void find(Student *head);
Student *add_new(Student *head);
Student *cin()
{
int flag;
Student *head,*p1,*p2;
n=0;
head=(Student *)malloc(LEN);
p2=head;
printf("n请输入第%d名学生的学号,学号为0表示结束输入:",n+1);
scanf("%d",&flag);
while(getcha
r()!='n');
for(;flag;)
{
n++;
p1=(Student *)malloc(LEN);
p1->num=flag;
printf("请输入第%d名学生的姓名:",n);
scanf("%s",p1->name);
printf("请输入第%d名学生的语文成绩:",n);
scanf("%d",&p1->score[0]);
printf("请输入第%d名学生的数学成绩:",n);
scanf("%d",&p1->score[1]);
printf("请输入第%d名学生的英语成绩:",n);
scanf("%d",&p1->score[2]);
printf("请输入第%d名学生的计算机成绩:",n);
scanf("%d",&p1->score[3]);
p1->sum=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];
p2->next=p1;
p2=p1;
printf("n请输入第%d名学生的学号,没有此学生则输入0表示结束:",n+1);
scanf("%d",&flag);
}
p2->next=NULL;
printf("nn");
return head;
}
Student *sort_all(Student *head)
{
int choose;
for(;;)
{
printf("ntt# # # # # 学生成绩统计排序 # # # #n");
printf("tt#t1.按学生学号排序t #n");
printf("tt#t2.按学生总分排序t #n");
printf("tt#t3.按学生语文成绩排序t #n");
printf("tt#t4.按学生数学成绩排序t #n");
printf("tt#t5.按学生英语成绩排序t #n");
printf("tt#t6.按学生计算机成绩排序t #n");
printf("tt#t7.单科高分及均分t #n");
printf("tt#t8.显示当前学生成绩t #n");
printf("tt#t0.返回上一级菜单t #n");
printf("tt# # # # # 由himpo友情提供# # # # #nn");
printf("请输入你要执行的操作:");
scanf("%d",&choose);
while(getcha
r()!='n');
switch(choose)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:head=sort_1(head,choose);break;
case 7:print(head);sort_2(head);break;
case 8:print(head);break;
case 0:return head;
default: printf("nn您的输入有误!请重新输入:nn");break;
}
}
}
Student *sort_1(Student *head,int choose)
{
Student *p1,*p2=head->next,*pm,*px;
Student mid;
if (!p2) return head;
for(p1=p2;p1->next!=NULL;p1=p1->next)
{
pm=p1;
for(p2=p1->next;p2!=NULL;p2=p2->next)
switch(choose)
{
case 1:if (pm->num>p2->num) pm=p2;break;
case 2:if (pm->sum<p2->sum) pm=p2;break;
case 3:if (pm->score[0]<p2->score[0]) pm=p2;break;
case 4:if (pm->score[1]<p2->score[1]) pm=p2;break;
case 5:if (pm->score[2]<p2->score[2]) pm=p2;break;
case 6:if (pm->score[3]<p2->score[3]) pm=p2;break;
}
if (pm!=p1)
{
mid=*pm;
*pm=*p1;
*p1=mid;
px=pm->next;
pm->next=p1->next;
p1->next=px;
}
}
printf("n排序后的成绩表为:n");
print(head);
return head;
}
void sort_2(Student *head)
{
Student *p=head->next;
int max_1,max_2,max_3,max_4,min_1,min_2,min_3,min_4;
int max_sum,min_sum;
int sum_1=0,sum_2=0,sum_3=0,sum_4=0;
float aver_1,aver_2,aver_3,aver_4,aver_sum;
if (!p) return;
max_1=min_1=p->score[0];max_2=min_2=p->score[1];
max_3=min_3=p->score[2];max_2=min_2=p->score[3];
max_sum=min_sum=p->sum;
for(;p;p=p->next)
{
if (max_1<p->score[0]) max_1=p->score[0];
else if (min_1>p->score[0]) min_1=p->score[0];
if (max_2<p->score[1]) max_2=p->score[1];
else if (min_2>p->score[1]) min_2=p->score[1];
if (max_3<p->score[2]) max_3=p->score[2];
else if (min_3>p->score[2]) min_3=p->score[2];
if (max_4<p->score[3]) max_4=p->score[3];
else if (min_4>p->score[3]) min_4=p->score[3];
if (max_sum<p->sum) max_sum=p->sum;
else if (min_sum>p->sum) min_sum=p->sum;
sum_1+=p->score[0];sum_2+=p->score[1];sum_3+=p->score[2];sum_4+=p->score[3];
}
aver_1=1.0*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;aver_4=1.0*sum_4/n;
aver_sum=aver_1+aver_2+aver_3+aver_4;
printf("总共%d名学生,具体数据为:n",n);
printf("语文最高分为%d,最低分为%d,平均分为%.2fn",max_1,min_1,aver_1);
printf("数学最高分为%d,最低分为%d,平均分为%.2fn",max_2,min_2,aver_2);
printf("英语最高分为%d,最低分为%d,平均分为%.2fn",max_3,min_3,aver_3);
printf("计算机最高分为%d,最低分为%d,平均分为%.2fn",max_4,min_4,aver_4);
printf("总分最高分为%d,最低分位%d,平均分为%.2fn",
max_sum,min_sum,aver_sum);
}
void find(Student *head)
{
Student *p;
int choose,fnum;
char tem[20];
if (n==0) {printf("n当前系统没有任何学生数据,您就别费劲了!n ");return;}
for(;;)
{
printf("n请输入您要查询学生的方式:nn");
printf("1、按学号查询;2、按姓名查询;0、我不查询了。nn");
printf("请选择:");
scanf("%d",&choose);
while(getcha
r()!='n');
if (choose==1)
{
printf("n请输入你要查询的学生的学号,输入0退出学号查询:");
scanf("%d",&fnum);
for(;fnum;)
{
for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);
if (!p)
{
printf("nn找不到你要查询的学号,请重新输入,输入0表示结束:");
scanf("%d",&fnum);
}
else if (p->num==fnum)
{
printf("n学号为%d学生的数据为:n",p->num);
printf("学号t姓名t语文成绩 数学成绩 英语成绩 计算机
成绩 总分n");
printf("%dt%st %d %d %d %d
%dn",p->num,
p->name,p->score[0],p->score[1],p->score[2],p->score[3],
p->sum);
printf("nn请输入你还要查询的学生的学号,输入0表示不按学
号查询了:");
scanf("%d",&fnum);
}
}
}
else if (choose==2)
{
printf("n请输入你要查询的学生的姓名,输入0退出姓名查询:");
scanf("%s",tem);
for(;strcmp(tem,"0");)
{
for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);
if (!p)
{
printf("nn找不到你要查询的姓名,请重新输入,输入0表
示结束:");
scanf("%s",tem);
}
else if (!strcmp(p->name,tem))
{
printf("n姓名为%s学生的数据为:n",p->name);
printf("学号t姓名t语文成绩 数学成绩 英语成绩
计算机成绩 总分n");
printf("%dt%st %d %d %d
%d %dn",
p->num,p->name,p->score[0],p->score[1],p->score[2],
p->score[3],p->sum);
printf("nn请输入你还要查询的学生的姓名,输入0表
示不按姓名查询了:");
scanf("%s",tem);
}
}
}
else if (choose==0) {printf("n你选择了不查询!n");break;}
else {printf("n你以其他方式选择了不查询!n");break;}
}
}
Student *add_new(Student *head)
{
Student *p;
int flag;
printf("nn请输入你要新加入学生的学号,学号为0表示结束输入:");
scanf("%d",&flag);
while(getcha
r()!='n');
for(;flag;)
{
p=(Student *)malloc(LEN);
p->num=flag;
printf("请输入新加入学生的姓名:",n);
scanf("%s",p->name);
printf("请输入新加入学生的语文成绩:",n);
scanf("%d",&p->score[0]);
printf("请输入新加入学生的数学成绩:",n);
scanf("%d",&p->score[1]);
printf("请输入新加入学生的英语成绩:",n);
scanf("%d",&p->score[2]);
printf("请输入第%d名学生的计算机成绩:",n);
scanf("%d",&p->score[3]);
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3];
p->next=head->next;
head->next=p;
n++;
printf("n请输入还要加入学生的学号,没有此学生则输入0表示结束:");
scanf("%d",&flag);
}
head=sort_1(head,1);
printf("加入后的成绩表为:n");
print(head);
return head;
}
void print(Student *head)
{
Student *p=head->next;
if (!p) {printf("nn此系统目前没有任何学生数据!nnn");return;}
printf("此系统目前共计学生%d名:n",n);
printf("**************************学生成绩统计一览************************
*****n");
printf("学号t姓名t语文成绩 数学成绩 英语成绩 计算机成绩 总分n");
for(;p;p=p->next)
printf("%dt%st %d %d %d %d %dn",
p->num,p->name,
p->score[0],p->score[1],p->score[2],p->score[3],
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3]);
printf("************************此软件由himpo友情提供*************************
*nn");
}
int main()
{
Student *head;
int choose,i;
head=(Student *)malloc(LEN);
head->next=NULL;
for(;;)
{
printf("ntt* * * * * 学生成绩管理系统 * * * *n");
printf("tt*t1.学生数据键盘录入t *n");
printf("tt*t2.学生数据统计排序t *n");
printf("tt*t3.查询学生数据tt *n");
printf("tt*t4.插入学生数据tt *n");
printf("tt*t5.显示当前成绩表t *n");
printf("tt*t0.退出成绩管理系统t *n");
printf("tt* * * * * 由himpo友情提供* * * * *nn");
printf("n请输入你要执行的操作:");
scanf("%d",&choose);
while(getcha
r()!='n');
switch(choose)
{
case 1:printf("ntttt****注意****");
printf("nn 此选项将会建立新的学生数据系统 ,原来的数据将
不再存在,你确信要删除原来的数据并建立新的数据系统么?nn");
printf("1、建立新的数据系统;0、放弃建立新的数据系统。nn");
printf("请选择:");
scanf("%d",&i);
if (i==1) {head=cin();print(head);break;}
else if (i==0)
{
printf("n你选择了放弃建立新的数据系统!n");
break;
}
else {
printf("n你做出别的选择,当作放弃建立!n");
break;
}
case 2:head=sort_all(head);break;
case 3:find(head);break;
case 4:head=add_new(head);
case 5:print(head);break;
case 0:system("pause");return 0;
default: printf("nn您的输入有误!请重新输入:nn");break;
}
}
}
以上就是“求(C语言课程设计)学生成绩管理系统”的全部内容了,希望对大家有所帮助。