学生成绩查询系统数据库代码(学生成绩管理系统数据库代码)
本篇文章给大家谈谈学生成绩查询系统数据库代码,以及学生成绩管理系统数据库代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、求学生成绩管理系统的源代码
- 2、学生成绩管理系统代码
- 3、学生成绩管理系统的代码是什么?
- 4、用SQL语言如何创建学生成绩数据库的代码?
- 5、C语言学生成绩管理系统代码
- 6、c语言程序学生成绩管理系统源代码
求学生成绩管理系统的源代码
#include stdio.h
#include stdlib.h
#define FILENAME "student.dat"
typedef enum{MAN, WOMAN} SEX;
typedef struct tagStudent
{
int num; //学生的编号
char name[20]; //学生的姓名
SEX sex; //学生的性别
int age; //学生的年龄
char major[20]; //学生的专业
struct tagStudent *next;//下一个节点的指针
}STUDENT, *PSTUDENT;
STUDENT g_head; //头节点
//1.显示菜单
void ShowMenu();
//2.获取用户选择的菜单的编号
int GetMenuChoose();
//3.创建一个节点,它会返回一个新创建的学生信息节点的指针
PSTUDENT CreateStudent();
//4.把学生信息节点加入到链表中
int AddStudent(PSTUDENT pstu);
//5.返回指定编号学生节点的上一个节点的指针
PSTUDENT GetPrevAddr(int num);
//6.显示所有学生信息
void ShowAll();
//7.显示信息数量
int ShowStudentCount();
//8.修改学生信息,参数为要修改的学生的编号
void ModityStudent(int num);
//9.获取用户的选择
int Question(const char *pstr);
//10.获取用户输入的学生的编号
int GetInputNum();
//11.删除编号为num的学生信息
void DelStudent(int num);
//12.删除所有的学生信息
void DelAll();
//13.把学生信息保存到文件当中
void SaveToFile();
//14.从文件中读取学生信息
void LoadFromFile();
int main()
{
int running = 1;
while(running)
{
switch(GetMenuChoose())
{
case 0:
running = 0;
break;
case 1:
// printf("你选择了菜单1\n");
AddStudent(CreateStudent());
break;
case 2:
// printf("你选择了菜单2\n");
DelStudent(GetInputNum());
break;
case 3:
printf("你选择了菜单3\n");
break;
case 4:
// printf("你选择了菜单4\n");
ModityStudent(GetInputNum());
break;
case 5:
// printf("你选择了菜单5\n");
DelAll();
break;
case 6:
// printf("你选择了菜单6\n");
ShowAll();
break;
case 7:
// printf("你选择了菜单7\n");
ShowStudentCount();
break;
case 8:
// printf("你选择了菜单8\n");
LoadFromFile();
break;
case 9:
// printf("你选择了菜单9\n");
SaveToFile();
break;
}
system("pause");
}
return 0;
}
//1.显示菜单
void ShowMenu()
{
system("cls");
printf("-----------------------------学生管理系统--------------------------------\n");
printf("\n\t1.添加学生信息 2.删除某个学生信息 3.显示某个学生信息\n");
printf("\t4.修改学生信息 5.删除所有学生信息 6.显示所有学生信息\n");
printf("\t7.显示信息数量 8.读取文件学生信息 9.保存学生信息至文件\n");
printf("\t0.退出系统\n");
printf("\n-------------------------------------------------------------------------\n");
}
//2.获取用户选择的菜单的编号
int GetMenuChoose()
{
int num;//保存用户选择的菜单编号
ShowMenu();
printf("请选择菜单(0 ~ 9):");
while(1 != scanf("%d", num) || num 0 || num 9)
{
ShowMenu();
printf("选择菜单错误,请重新选择(0 ~ 9):");
fflush(stdin);//清空输入缓冲区
}
return num;
}
//3.创建一个节点,它会返回一个新创建的学生信息节点的指针
PSTUDENT CreateStudent()
{
int sex;
PSTUDENT pstu = (PSTUDENT)malloc(sizeof(STUDENT));//在堆内存申请空间,存储学生信息
if(!pstu)
{
printf("申请内存空间失败!\n");
return NULL;
}
printf("请输入学生的编号(整型):");
while(1 != scanf("%d", pstu-num) || GetPrevAddr(pstu-num))
{
printf("学生编号输入错误或已经存在,请重新输入学生的编号(整型):");
fflush(stdin);
}
printf("请输入学生的姓名(小于20字符):");
scanf("%20s", pstu-name);//(*pstu).name
printf("请选择学生的性别(1.男 2.女):");
while(1 != scanf("%d", sex) || sex 1 || sex 2)
{
printf("性别选择错误,请重新选择学生的性别(1.男 2.女):");
fflush(stdin);
}
if(1 == sex)
pstu-sex = MAN;
else
pstu-sex = WOMAN;
printf("请输入学生的年龄(10 ~ 40):");
while(1 != scanf("%d", pstu-age) || pstu-age 10 || pstu-age 40)
{
printf("年龄输入错误!请重新输入学生的年龄(10 ~ 40):");
fflush(stdin);
}
printf("请输入学生的专业(小于20字符):");
scanf("%20s", pstu-major);
pstu-next = NULL;
return pstu;
}
//4.把学生信息节点加入到链表中
int AddStudent(PSTUDENT pstu)
{
PSTUDENT ps = g_head;
if(!pstu)
{
return 0;
}
//判断一下该学生信息是不是已经存在
if(GetPrevAddr(pstu-num))
{
printf("编号为%d的学生信息已经存在!\n", pstu-num);
free(pstu);//释放该节点内存空间
return 0;
}
//while循环的作用是找到当前链表的最后一个节点
while(ps-next)
ps = ps-next;
//把新节点加入到最后那个节点的后面
ps-next = pstu;
pstu-next = NULL;
return 1;
}
//5.返回指定编号学生节点的上一个节点的指针
PSTUDENT GetPrevAddr(int num)
{
PSTUDENT pstu = g_head;
while(pstu-next)
{
if(pstu-next-num == num)
return pstu;
pstu = pstu-next;
}
return NULL;
}
//6.显示所有学生信息
void ShowAll()
{
PSTUDENT pstu = g_head;
printf("--------------------------------------------------------------------\n");
printf(" 编号 姓名 性别 年龄 专业\n");
printf("--------------------------------------------------------------------\n");
while(pstu-next)
{
printf(" %-8d ", pstu-next-num);
printf("%-20s", pstu-next-name);
printf("%-6s", pstu-next-sex == MAN ? "男" : "女");
printf("%4d", pstu-next-age);
printf("%20s\n", pstu-next-major);
pstu = pstu-next;//让指针指向下一个节点
}
printf("--------------------------------------------------------------------\n");
}
//7.显示信息数量
int ShowStudentCount()
{
int count = 0;
PSTUDENT pstu = g_head;
while(pstu-next)
{
++count;
pstu = pstu-next;
}
printf("\n当前共有%d位学生信息。\n", count);
return count;
}
//8.修改学生信息,参数为要修改的学生的编号
void ModityStudent(int num)
{
PSTUDENT pstu = GetPrevAddr(num);//获取要修改的学生节点的上一个节点
int choose;
if(!pstu)
{
printf("没有编号为%d的学生信息。\n", num);
return;
}
pstu = pstu-next;//将要修改的学员节点的指针改为指向自己的
printf("当前学生的姓名为%s,", pstu-name);
if(Question("确定要修改吗?"))
{
printf("请输入学生的姓名(小于20字符):");
scanf("%20s", pstu-name);
}
printf("当前学生的性别为%s,", pstu-sex == MAN ? "男" : "女");
if(Question("确定要修改吗?"))
{
printf("请输入学生的性别(1.男 2.女):");
while(1 != scanf("%d", choose) || choose 1 || choose 2)
{
printf("输入错误,请重新输入学生的性别(1.男 2.女):");
fflush(stdin);
}
if(1 == choose)
pstu-sex = MAN;
else
pstu-sex = WOMAN;
}
printf("当前学生的年龄为%d,", pstu-age);
if(Question("确定要修改吗?"))
{
printf("请输入学生的年龄(10 ~ 40):");
while(1 != scanf("%d", pstu-age) || pstu-age 10 || pstu-age 40)
{
printf("年龄输入错误!请重新输入学生的年龄(10 ~ 40):");
fflush(stdin);
}
}
printf("当前学生的专业为%s,", pstu-major);
if(Question("确定要修改吗?"))
{
printf("请输入学生的专业(小于20字符):");
scanf("%20s", pstu-major);
}
printf("修改完毕!\n");
}
//9.获取用户的选择
int Question(const char *pstr)
{
char answer;
printf("%s请选择(y or n):", pstr);
while(1 != scanf(" %c", answer) || (answer != 'y' answer != 'n'))
{
printf("输入错误!%s请重新选择(y or n):", pstr);
fflush(stdin);//清空输入缓冲区,C库函数
}
if('y' == answer)
return 1;
else
return 0;
}
//10.获取用户输入的学生的编号
int GetInputNum()
{
int num;
printf("请输入学生的编号(整型):");
while(1 != scanf("%d", num))
{
printf("编号输入错误!请重新输入学生的编号(整型):");
fflush(stdin);
}
return num;
}
//11.删除编号为num的学生信息
void DelStudent(int num)
{
PSTUDENT pstu, ptmp;
if(pstu = GetPrevAddr(num))
{
if(!Question("确定要删除该学生信息吗?"))
{
return;
}
ptmp = pstu-next;
pstu-next = ptmp-next;
free(ptmp);
printf("删除了编号为%d的学生信息。\n", num);
}
else
{
printf("没有找到编号为%d的学生信息。\n", num);
}
}
//12.删除所有的学生信息
void DelAll()
{
PSTUDENT pstu = g_head.next, ptmp;
int count = 0;
if(!Question("确定要删除当前所有的学生信息吗?"))
{
return;
}
while(pstu)
{
ptmp = pstu;
pstu = pstu-next;
free(ptmp);
++count;
}
printf("共删除了%d位学生信息。\n", count);
g_head.next = NULL;
}
//13.把学生信息保存到文件当中
void SaveToFile()
{
FILE *pf = fopen(FILENAME, "wb");
PSTUDENT pstu = g_head;
int i = 0, count = ShowStudentCount();
if(!pf)
{
printf("打开待写入的文件失败!\n");
return;
}
if(!Question("确定要将当前学生信息保存到文件中吗?"))
{
fclose(pf);
return;
}
fwrite(count, 1, sizeof(count), pf);//把学生信息的数量先写入到文件头
while(pstu-next)
{
fwrite(pstu-next, 1, sizeof(STUDENT), pf);//把每位学生信息写入文件
++i;
pstu = pstu-next;
}
fclose(pf);
if(i == count)
{
printf("成功的写入了%d条学生信息。\n", count);
}
else
{
printf("应写入%d条学生信息,实际写入%d条学生信息。\n", count, i);
}
}
//14.从文件中读取学生信息
void LoadFromFile()
{
int i, count = 0, repeat = 0;
FILE *pf;
PSTUDENT pstu;
printf("提示:从文件中读取学生信息会询问是否清空当前学生信息(不清空表示合并所有信息)。\n");
if((pf = fopen(FILENAME, "rb")) == NULL)
{
printf("文件还没有创建,请手工输入学生信息并保存吧!\n");
return;
}
DelAll();//删除之前的所有学生信息,然后从文件中读取
fread(count, 1, sizeof count, pf);//获取学生信息的数量
for(i = 0; i count; ++i)
{
pstu = (PSTUDENT)malloc(sizeof(STUDENT));
fread(pstu, 1, sizeof(STUDENT), pf);
if(!AddStudent(pstu))
{
++repeat;//保持有多少个和当前链表中相重复的学生信息
}
}
fclose(pf);
printf("文件读取完毕!新增学生信息%d条。\n", count - repeat);
}
这个累死我了,我要财富值。。。为了这个不容易啊
学生成绩管理系统代码
#includeiostream
#includestring
#includefstream
#includecstdlib
#includeiomanip
using namespace std;
class student
{ private:
char name[20]; //姓名
double cpro,english,math,sport,law,hbpro,computer;//课程
int order, number; //名次,学号
public:
student(){}
student(char n[20],int nu,double cc,double eng,double ma,double sp,double l,double hb,double com)
{strcpy(name,n);
number=nu;
cpro=cc; english=eng;math=ma;sport=sp;law=l;hbpro=hb;computer=com;
}
friend void main();
};
void main()
{
cout" 欢迎进入**学生成绩管理系统**!"endl;
cout" ******************************************"endl;
cout" **** 学生成绩管理系统 ****"endl;
cout" ******************************************"endl;
cout" **************************"endl;
cout" **0、输入数据 **"endl;
cout" **1、增加数据 **"endl;
cout" **2、修改数据 **"endl;
cout" **3、按姓名查询 **"endl;
cout" **4、按学号查询 **"endl;
cout" **5、输出所有学生的成绩 **"endl;
cout" **6、退出系统 **"endl;
cout" **************************"endl;
cout" 选择0-6数字进行操作"endl;
char p;char w;
student *s[50]; //指针对象,最多存50个学生数据
ofstream *file[50]; //负责对文件插入操作
int i=0;
int j=0;
int flag=0;
do //flag判断输入是否有效
{
cinp;
if((p='0'p='6'))
flag=1;
else
cout" 指令错误!请重新输入:"endl;
}while(flag==0);
do{
switch(p) //接收功能选项
{
case '0': //输入数据
{
char c;
char name[20];int number;double cpro,english,math,sport,law,hbpro,computer;
do{
cout" 请输入姓名:";
cinname;
coutendl" 请输入学号:";
cinnumber;
cout" 请输入C++成绩:";
cincpro;
coutendl" 请输入英语成绩:";
cinenglish;
coutendl" 请输入数学成绩:";
cinmath;
coutendl" 请输入体育成绩:";
cinsport;
coutendl" 请输入网络基础成绩:";
cinlaw;
coutendl" 请输入C语言成绩:";
cinhbpro;
coutendl" 请输入数据库成绩:";
cincomputer;
coutendl;
file[j]=new ofstream("D:\document",ios::ate);
*file[j]" 姓名 "name" 学号 "number" C++成绩 "cpro
" 英语成绩 "english" 数学成绩 "math" 体育成绩 "
sport" 网络基础成绩 "law" C成绩 "hbpro" 数据库成绩 "computerendl;
j++;
s[i]=new student(name, number,cpro,english,math,sport,law,hbpro,computer);
i++;
cout" 数据输入成功,想继续输入吗(y/n):";
cinc;
coutendl;
do
{
if(c!='y'c!='n')
{
cout" 指令错误!请重新输入!"endl" ";
cinc;
}
else
flag=1;
}while(flag==0);
}while(c=='y');
break;
}
case '1': //增加数据
{
char name[20];
int number;double cpro,english,math,sport,law,hbpro,computer;
char c;
do
{
cout" 请输入您要增加的学生的姓名:";
cinname;
coutendl" 请输入学号:";
cinnumber;
coutendl" 请输入C++成绩:";
cincpro;
coutendl" 请输入英语成绩:";
cinenglish;
coutendl" 请输入数学成绩:";
cinmath;
coutendl" 请输入体育成绩:";
cinsport;
coutendl" 请输入网络基础成绩:";
cinlaw;
coutendl" 请输入C语言成绩:";
cinhbpro;
coutendl" 请输入数据库成绩:";
cincomputer;
coutendl;
file[j]=new ofstream("d:\document",ios::ate);
*file[j]" 姓名 "name" 学号 "number" C++成绩 "cpro" 英语成绩 "english" 数学成绩 "math" 体育成绩 "sport" 网络基础成绩 "law" C成绩 "hbpro" 数据库成绩 "computerendl;
j++;
s[i]=new student(name, number, cpro,english,math,sport,law,hbpro,computer);
i++;
cout" 数据输入成功,想继续数入吗(y/n):";
cinc;
coutendl;
if(c!='y'c!='n')
{
cout" 指令错误!请重新输入!"endl" ";
cinc;
}
}while(c=='y');
break;
}
case '2': //修改数据
{
char name[20];int nu;double cc,eng,ma,sp,l,hb,com;flag=0;
char c;
if(i==0)
{
cout" 管理系统中没有输入数据!"endl;break;
}
do
{
cout" 请输入您要修改的学生的姓名:";
cinname;
coutendl;
for(int h=0;hi;h++) //h纪录要修改学生的位置
{
if(strcmp(name,s[h]-name)==0)
{
flag=1;
cout" 请输入新的学号:";
cinnu;
coutendl" 请输入C++成绩:";
cincc;
coutendl" 请输入英语成绩:";
cineng;
coutendl" 请输入数学成绩:";
cinma;
coutendl" 请输入体育成绩:";
cinsp;
coutendl" 请输入网络基础成绩:";
cinl;
coutendl" 请输入C语言成绩:";
cinhb;
coutendl" 请输入数据库成绩:";
cincom;
coutendl;
s[h]-cpro=cc;
s[h]-english=eng;
s[h]-math=ma;
s[h]-sport=sp;
s[h]-law=l;
s[h]-hbpro=hb;
s[h]-computer=com;
s[h]-number=nu;
cout" 数据修改成功!"endl;
}
}
if(flag==0)
{
cout" 您要修改的学生本来就不存在!请检查重新输入!"endl;
}
cout" 想继续修改吗(y/n):";
cinc;
coutendl;
if(c!='y'c!='n')
{
cout" 指令错误!请重新输入!"endl" ";
cinc;
}
}while(c=='y');
break;
}
case '3': //按姓名查询
{
char n[20];int j=0;char c;
if(i==0)
{
cout" 管理系统中没有输入数据!"endl;break;
}
do{
int flag=0;
cout" 请输入你要查询的学生姓名:";
cinn;
coutendl;
for(int j=0;ji;j++)
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout" 您要查询的学生是:"(*s[j]).nameendl;
cout(*s[j]).name"的成绩是: "" C++: "(*s[j]).cpro" 英语: "(*s[j]).english" 数学:"(*s[j]).math" 体育:"(*s[j]).sport" 法律:"(*s[j]).law" C:"(*s[j]).hbpro" 数据库 "(*s[j]).computerendl;
}
}
if(flag==0)
cout" 对不起!您要查询的学生不存在!"endl;
cout" 您想继续查询吗?(y/n):";
cinc;
coutendl;
if(c!='y'c!='n')
{
cout" 指令错误!请重新输入!"endl;
cinc;
}
}
while(c=='y');
break;
}
case '4': //按学号查询
{
int n,j=0;char c;
if(i==0){
cout" 管理系统中没有输入数据!"endl;break;
}
do{
int flag=0;
cout" 请输入你要查询的学生的学号:";
cinn;
coutendl;
for(int j=0;ji;j++)
{
if(s[j]-number==n)
{
flag=1;
cout" 您要查询的学生是:"(*s[j]).nameendl;
cout(*s[j]).name"的成绩是: "" C++:"(*s[j]).cpro" 英语:"(*s[j]).english" 数学:"(*s[j]).math" 体育:"(*s[j]).sport" 法律:"(*s[j]).law" C:"(*s[j]).hbpro" 数据库 "(*s[j]).computerendl;
}
}
if(flag==0)
cout" 对不起!您要查询的学生不存在!"endl;
cout" 您想继续查询吗?(y/n):";
cinc;
coutendl;
if(c!='y'c!='n')
{
cout" 指令错误!请重新输入!"endl;
cinc;
}
}
while(c=='y');
break;
}
case '5': //输出
{
cout" 本系统所有学生数据如下:"endl;
if(i==0)
cout" 管理系统中没有输入数据!"endl;
cout" 姓名 学号 c++ 英语 数学 体育 网络基础 C语言 数据库 "endl;
for(int k=0;ki;k++)
{
couts[k]-namesetw(7)s[k]-numbersetw(6)
(*s[k]).cprosetw(6)(*s[k]).englishsetw(6)
(*s[k]).mathsetw(6)(*s[k]).sportsetw(7)
(*s[k]).law setw(10)(*s[k]).hbprosetw(10)(*s[k]).computersetw(10)endl;
}
break;
}
case'6'://退出
{exit(0); cout"Bye bye!"endl;}
}
cout" 您想继续进行其他操作吗?(y/n):";
int flag=0;
do
{
cinw;
coutendl;
if(w!='y'w!='n')
cout" 指令错误!请重新输入!"endl;
else
flag=1;
}while(flag==0);
if(w=='y')
cout" 请输入操作代码:0 输入数据"endl;
cout" 1 增加数据"endl;
cout" 2 修改数据"endl;
cout" 3 按姓名查询"endl;
cout" 4 按学号查找"endl;
cout" 5 输出所有学生成绩"endl;
cout" 6 退出系统"endl;
cinp;
}while(w=='y');
}
学生成绩管理系统的代码是什么?
代码如下:
for(i=0;i66;i++)
printf("*");
printf("\n");
printf("1.Input record\n");
printf("2.Caculate totel and average score of every course\n");
printf("3.Caculate totel and average score of every student\n");
printf("4.Sort in descending order by total score of every student\n");
printf("5.Sort in ascending order by total score of every student\n");
printf("6.Sort in ascending order by number\n");
printf("7.Sort in ascending order by name\n");
printf("8.Search by number\n");
printf("9.Search by name\n");
printf("10.Statistic analysis for every course\n");
printf("11.List record\n");
printf("12.Write to a file\n");
printf("13.Read from a file\n");
printf("0.Exit\n");
for(i=0;i66;i++)
printf("*");
printf("\n");
printf("Please enter your choice:");
printf("\n");
输入函数:
void Readscore (STU stu[],int n,int m) //1.输入数据
{
int i,j;
for(i=0;in;i++)
{
printf("Input student's ID ,name and score");
scanf("%ld",stu[i].studentID);
scanf("%s",stu[i].studentName);
for(j=0;jm;j++)
scanf("%d",stu[i].score[j]);
}
}
数据处理函数:
void Tota (STU stu[],int n,int m) //2.计算每门课程的总分和平均分
{
int i,j,sum[M];
double ave[M];
for(j=0;jm;j++)
{
sum[j]=0;
for(i=0;in;i++)
{
sum[j]=sum[j]+stu[i].score[j];
}
ave[j]=(double)sum[j]/n;
}
for(i=0;im;i++)
printf("Project %d 总分=%d,课程的平均分=%f\n",i+1,sum[i],ave[i]);
}
void Datasort_1 (STU stu[],int n,int m) //3.计算每个学生的总分和平均分
{
int i,j,sum[N];
double ave[N];
for(i=0;in;i++)
{
sum[i]=0;
for(j=0;jm;j++)
{
sum[i]=sum[i]+stu[i].score[j];
}
ave[i]=(double)sum[i]/m;
}
for(i=0;in;i++)
printf("ID:%10ld,Name: %s Allscore=%d,The ave=%f\n",stu[i].studentID,stu[i].studentName,sum[i],ave[i]);
}
排序函数:
void Datasort_2 (STU stu[],int n,int m) //4.按每个学生的总分由高到低排出名次表
{
int i,j,k,h,sum[N];
STU t;
for(i=0;in;i++)
{
sum[i]=0;
for(j=0;jm;j++)
{
sum[i]=sum[i]+stu[i].score[j];
}
}
for(i=0;in;i++)
{
k=i;
for(j=i+1;jn;j++)
{
if (sum[j]sum[k])
k=j;
}
if(i!=k)
{
t=stu[i],h=sum[i];
stu[i]=stu[k],sum[i]=sum[k];
stu[k]=t,sum[k]=h;
}
}
for(i=0;in;i++)
printf("ID:%10ld,Name:%s,Score:%d\n",stu[i].studentID,stu[i].studentName,sum[i]);
}
void Datasort_3 (STU stu[],int n,int m) //5.按每个学生的总分由低到高排出名次表
{
int i,j,k,h,sum[N];
STU t;
for(i=0;in;i++)
{
sum[i]=0;
for(j=0;jm;j++)
{
sum[i]=sum[i]+stu[i].score[j];
}
}
for(i=0;in;i++)
{
k=i;
for(j=i+1;jn;j++)
{
if (sum[j]sum[k])
k=j;
}
if(i!=k)
{
t=stu[i],h=sum[i];
stu[i]=stu[k],sum[i]=sum[k];
stu[k]=t,sum[k]=h;
}
}
for(i=0;in;i++)
printf("ID:%10ld,Name:%s,score:%d\n",stu[i].studentID,stu[i].studentName,sum[i]);
}
void Datasort_4 (STU stu[],int n,int m) //6.按学号由小到大排出名次表
{
int i,j,k;
STU t;
for(i=0;in;i++)
{
k=i;
for(j=i+1;jn;j++)
{
if (stu[j].studentIDstu[k].studentID)
k=j;
}
if(i!=k)
t=stu[k],stu[k]=stu[i],stu[i]=t;
}
for(i=0;in;i++)
{
printf("ID:%10ld,Name:%s\n",stu[i].studentID,stu[i].studentName);
for(j=0;jm;j++)
printf("Project %d Score:%d\n",j+1,stu[i].score[j]);
}
}
数据分析函数:
void Statistis (STU stu[],int n,int m) //10.
{
int i,j,count_1,count_2,count_3,count_4,count_5;
for(j=0;jm;j++)
{
count_1=0,count_2=0,count_3=0,count_4=0,count_5=0;
for(i=0;in;i++)
{
if(stu[i].score[j]=90)
count_1++;
else if(stu[i].score[j]=80)
count_2++;
else if(stu[i].score[j]=70)
count_3++;
else if(stu[i].score[j]=60)
count_4++;
else
count_5++;
}
printf("project %d\n",j+1);
printf("优秀:%d\t优秀率:%f%\n",count_1,(float)count_1/n);
printf("良好:%d\t良好率:%f%\n",count_2,(float)count_2/n);
printf("中等:%d\t中等率:%f\n",count_3,(float)count_3/n);
printf("及格:%d\t及格率:%f\n",count_4,(float)count_4/n);
printf("不及格:%d\t不及格率:%f\n",count_5,(float)count_5/n);
}
}
数据界面打印函数:
void List (STU stu[],int n,int m) //11.
{
int i,j,sum[N];
double ave[N];
for(i=0;in;i++)
{
sum[i]=0;
for(j=0;jm;j++)
{
sum[i]=sum[i]+stu[i].score[j];
}
ave[i]=(double)sum[i]/m;
}
for(i=0;in;i++)
{
printf("ID:%10ld,Name:%s\n",stu[i].studentID,stu[i].studentName);
for(j=0;jm;j++)
{
printf("Score %d :%d\n",j+1,stu[i].score[j]);
}
printf("Allscore=%d\n平均分%f\n",sum[i],ave[i]);
}
}
文件处理函数:
void WritetoFile(STU stu[],int n,int m) //将每个学生的记录信息写入文件
{
Tota(stu,n,m);
Datasort_2 (stu,n,m);
FILE *fp;
if((fp=fopen("student.txt","w"))==NULL)
{
printf("Failure to open student.txt!\n");
exit(0);
}
fwrite(stu,sizeof(STU),n,fp);
fclose(fp);
}
int ReadfromFile(STU stu[],int n,int m)//从文件中读出每个学生的记录信息并显示
{
FILE *fp;
int i;
if((fp=fopen("student.txt","r"))==NULL)
{
printf("Failure to open student.txt!\n");
exit(0);
}
for(i=0;!feof(fp);i++)
{
fread(stu[i],sizeof(STU),1,fp);
}
fclose(fp);
printf("Total student is %d.\n",i-1);
n=i-1;
List(stu,n,m); //输出从文件中读出的信息到屏幕上
return i-1;
}
用SQL语言如何创建学生成绩数据库的代码?
create database [数据库名];\x0d\x0auser [该数据库名];\x0d\x0a\x0d\x0a--学生表\x0d\x0acreate table [学生表表名](\x0d\x0asId int primary key, --学生ID编号,主键\x0d\x0asName varchar(10) unique not null, --学生名字\x0d\x0a);\x0d\x0a\x0d\x0a--科目表\x0d\x0acreate table [科目表表名](\x0d\x0asjId int primary key, --科目ID编号,主键\x0d\x0asjName varchar(10) unique not null, --科目名称\x0d\x0a);\x0d\x0a\x0d\x0a--成绩表\x0d\x0acreate table [成绩表表名]\x0d\x0arId int primary key, --成绩ID编号,主键\x0d\x0asjId int references [科目表表名](sjId), --科目ID编号,继承科目表的ID编号\x0d\x0asId int references [学生表表名](sId), --学生ID编号,继承学生表的ID编号\x0d\x0aresult float not null --成绩\x0d\x0a);\x0d\x0a\x0d\x0a--查询语句\x0d\x0aselect r.rId,sj.sjId,sj.sjName,su.sId,su.sName,r.result \x0d\x0afrom [成绩表表名] r,\x0d\x0ajoin [科目表表名] sj on sj.sjId=r.sjId,\x0d\x0ajoin [学生表表名] su on su.sId=r.sId;
C语言学生成绩管理系统代码
#includestdio.h
#includestring.h
//外部函数声明
void menu();
void line();
/* 定义全局变量其中n代表学生人数,ave[5]代表每科成绩的平均分,high[5]每科成绩的最高分,
min[5]代表每科成绩的最低分,student_ave[100]代表每个学生五门成绩的平均分*/
int n,i,j;
float ave[5]={0},high[5]={0},min[5]={0},student_ave[100];
//定义全局结构体
struct student
{
long int num; //学生学号
char name[20]; //学生姓名
float score[5]; //学生成绩
}stu[100];
//主函数开始
int main()
{
void enter(); //enter:输入学生成绩函数(这是函数声明)
void export(); //export:输出学生成绩函数(这是函数声明)
void stat(); //stat:学生成绩统计函数(这是函数声明)
void rank(); //rank:学生成绩排名函数(这是函数声明)
void query(); //query:学生成绩查询函数(这是函数声明)
//定义内部变量
//界面框架
menu();
printf(" 学生成绩管理信息系统\n");
printf("请根据以下提示命令字符进行操作!\n");
printf("q:退出 a:成绩输入 p:成绩输出 s:成绩统计 w:成绩排名 t:成绩查询\n");
menu();
//函数调用,选择成绩管理方式
printf("请选择成绩管理方式");
while(1)
{
char c;
printf("\n");
scanf("%c",c);
if (c=='q') printf("这是退出学生成绩管理信息系统函数\n\n");break;
switch(c)
{
case'a':enter();break;
case'p':export(); break;
case's':stat();break;
case'v':rank();break;
case't':query();break;
default:("命令无效,请重新输入!\n");
}
}
return 0;
}
//主函数部分结束
//定义函数
void menu()
{
printf("*******************************************************************************\n");
}
//定义下划线函数
void line()
{
printf("--------------------------------------------------------------------------------\n");
}
//定义学生成绩输入函数开始
void enter()
{
menu();
printf("学生成绩输入\n请按以下格式进行数据输入\n");
printf("请输入学生学号姓名");
printf(" 学号 学生姓名\n");
printf("请输入学生成绩 ");
printf(" A成绩 B成绩 C成绩 D成绩 E成绩\n");
printf("例如\n请输入学生学号姓名");
printf("2012060402,张三\n");
printf("请输入学生成绩 ");
printf("95.5,97.0,89.0,92.0,85.0\n");
menu();
//输入学生成绩格式备注
printf("\n请输入学生人数 ");
scanf("%d",n);
//用for循环输入学生成绩
for(i=0;in;i++)
{
printf("请输入学生学号姓名");
scanf("%ld,%s",stu[i].num,stu[i].name);
printf("请输入学生成绩 ");
scanf("%f",stu[i].score[0]);
scanf("%f",stu[i].score[1]);
scanf("%f",stu[i].score[2]);
scanf("%f",stu[i].score[3]);
scanf("%f\n",stu[i].score[4]);
getchar();
student_ave[i]=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]+stu[i].score[4])/5;
//用for循环计算每科成绩z总分
for(j=0;j5;j++)
{
ave[j]=ave[j]+stu[i].score[j];
}
//用for循环得出每科成绩最高分
for(j=0;j5;j++)
{
if(high[j]=stu[i].score[j])
{
high[j]=stu[i].score[j];
}
}
//用for循环得出每科成绩最低分
for(j=0;j5;j++)
{
if(i==0)
{
min[j]=stu[i].score[j];
}
if(min[j]=stu[i].score[j])
{
min[j]=stu[i].score[j];
}
}
}
//学生成绩输入完成
//用for循环计算每科成绩平均分
for(j=0;j5;j++)
{
ave[j]=ave[j]/n;
}
getchar();
menu();
printf("\n");
}
//定义学生成绩输入函数结束
//定义学生成绩输出函数开始
void export()
{
int i;
printf(" 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E\n");
for(i=0;in;i++)
{
printf("%9ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu[i].num,stu[i].name,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
}
menu();
}
//定义学生成绩输出函数结束
//定义学生成绩统计函数开始
void stat()
{
printf("各科平均成绩如下!\n");
line();
printf("\n");
printf(" 成绩A 成绩B 成绩C 成绩D 成绩E\n");
//这是每科成绩平均分
for(i=0;i5;i++)
{
printf(" %6.1f ",ave[i]);
}
printf("\n");
printf("\n");
//只是每科成绩的最高分
printf("各科最高分如下!\n");
line();
printf("\n");
printf(" 成绩A 成绩B 成绩C 成绩D 成绩E\n");
for(j=0;j5;j++)
{
printf(" %6.1f ",high[j]);
}
printf("\n");
printf("\n");
//这是每科成绩最低分
printf("各科最低分如下!\n");
line();
printf("\n");
printf(" 成绩A 成绩B 成绩C 成绩D 成绩E\n");
for(i=0;i5;i++)
{
printf(" %6.1f ",min[i]);
}
printf("\n");
printf("\n");
}
//定义学生成绩统计函数结束
//定义学生成绩排名函数开始
void rank()
{
int k=1,z;
float t=0;
float student_high[100]={0};
printf("学生成绩排名如下:\n\n");
line();
printf("\n");
printf("名次 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E 平均分 \n");
//把每个学生五门课的成绩按从大到小的顺序排列并存在数组student_high[]中去
for(i=0;in;i++)
{
student_high[i]=student_ave[i];
}
for(j=0;jn;j++)
{
for(i=0;in-j;i++)
{
if(student_high[i]=student_high[i+1])
{
t=student_high[i+1];
student_high[i+1]=student_high[i];
student_high[i]=t;
}
}
}
//按成绩排名输出学生成绩信息
for(i=0;in;i++)
{
for(j=0;jn;j++)
{
if(student_high[i]==student_high[i+1])
{
i++;
}
if(student_high[i]==student_ave[j])
{
printf("%d %ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f %7.1f\n",k,stu[j].num,stu[j].name,
stu[j].score[0],stu[j].score[1],stu[j].score[2],stu[j].score[3],stu[j].score[4],student_ave[j]);
for(z=j+1;zn;z++)
{
if(student_high[i]==student_ave[z])
{
k++;
}
}
}
}
k++;
}
line();
printf("\n");
}
//定义学生成绩排名函数结束
//定义学生成绩查询函数开始
void query()
{
//查询成绩格式
char c2,shu_name[20]; //c2代表查询成绩控制字符。shu_name[]代表输入查询姓名,shu_num代表输入查询学号
int shu_num;
menu();
printf("学生成绩查询\n请按以下方式查询\na:按学生姓名查询 b:按学生学号查询 q:退出\n");
menu();
printf("\n\n");
//选择查询方式
while(c2!='q')
{
printf("请选择查询成绩方式");
scanf("%c",c2);
getchar();
//按姓名查询成绩
if(c2=='a')
{
line();
printf("请输入学生姓名");
scanf("%s",shu_name);
getchar();
for(i=0;in;i++)
{
if(strcmp(shu_name,stu[i].name)==0)
{
printf(" 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E\n");
printf("%ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu[i].num,stu[i].name,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
}
else if(shu_name!=stu[i].namei==(n-1))
{
printf("无此学生成绩\n");
}
}
line();
printf("\n");
}
//按学号查询成绩
else if(c2=='b')
{
line();
printf("请输入学生学号");
scanf("%d",shu_num);
getchar();
for(i=0;in;i++)
{
if(shu_num==stu[i].num)
{
printf(" 学号 姓名 成绩A 成绩B 成绩C 成绩D 成绩E\n");
printf("%ld %15s %7.1f %7.1f %7.1f %7.1f %7.1f\n",stu[i].num,stu[i].name,
stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
}
else if(shu_num!=stu[i].numi==(n-1))
{
printf("无此学生成绩\n");
}
}
line();
printf("\n");
}
}
line();
printf("\n\n");
}
//定义学生成绩查询函数结束
c语言程序学生成绩管理系统源代码
头文件:::
#ifndef H_STUDENT_HH
#define H_STUDENT_HH
#include "stdio.h"
#include "string.h"
#include "malloc.h"
#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/
#define numsubs 5 /*学科数目*/
typedef struct message_student /*结构体定义*/
{
char number[6];
char name[20];
char sex[4];
float subject[numsubs];
float score;
float average;
int index;
}student;
extern int numstus; /*学生数目*/
extern student *pointer; /*指向结构体数组*/
extern int lens;
int menu_select(); /*函数声明*/
int openfile(student stu[]);
int findrecord(student stud[]);
int writetotext(student stud[]);
void welcome();
void display1();
void showtable();
void sort(student stu[]);
void deleterecord(student stu[],int i);
void addrecord(student stud[]);
void display(student stud[],int n1,int n2);
void amendrecord(student stud[]);
void count(student stud[]);
void sortnum(student stud[]);
void sortnum2(student stud[]);
void sortname(student stud[]);
void sortname2(student stud[]);
void sortcount(student stud[]);
void sortcount2(student stud[]);
void statistic(student stud[]);
void display1();
#endif
#include "head.h"
int menu_select()
{
char c;
printf("\n\n");
printf(" | 1. 增加学生记录 5.统计信息 |\n");
printf(" | 2. 查询学生记录 6.打开文件 |\n");
printf(" | 3. 修改学生记录 7.保存文件 |\n");
printf(" | 4. 学生纪录排序 8.显示记录 |\n");
printf(" | 0.退出系统 |\n");
printf("\n\n");
printf("请选择(0-8):");
c=getchar();
getchar();
return (c-'0');
}
#include "head.h"
int findrecord(student stud[]) /*查找信息*/
{
char str[2];
int i,num;
if(numstus==0)
{
printf("没有可被查找的记录\n");
return -1;
}
else
{
printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n");
gets(str);
if(str[0]=='1') /*按学号查找*/
{
printf("请输入学号:");
gets(str);
for(i=0;i=numstus;i++)
if(strcmp(str,stud[i].number)==0)
{
display(stud,i,i);
break;
}
else continue;
}
else if(str[0]=='2') /*按姓名查找*/
{
printf("请输入姓名:");
gets(str);
for(i=0;i=numstus;i++)
if(strcmp(str,stud[i].name)==0)
{
display(stud,i,i);
break;
}
else continue;
}
else if(str[0]=='3') /*按名次查找*/
{
printf("请输入名次:");
scanf("%d",num);
getchar();
for(i=0;i=numstus;i++)
if(num==stud[i].index)
{
display(stud,i,i);
break;
}
else continue;
}
if(inumstus)
{
printf("没有查找所要的信息。\n");
return -1;
}
return i;
}
}
#include"head.h"
int openfile(student stu[])
{
int i=0,j;
FILE *fp;
char filename[20],str[2];
if(numstus!=0)
{
printf("已经有记录存在,是否保存?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(stu);
}
printf("请输入文件名:");
gets(filename);
numstus=0;
if((fp=fopen(filename,"rb+"))==NULL)
{
printf("无法打开该文件\n");
return(-1);
}
fscanf(fp,"%d",numstus);
fgetc(fp);
while(inumstus)
{
fscanf(fp,"%s",stu[i].number);
fscanf(fp,"%s",stu[i].name);
fscanf(fp,"%s",stu[i].sex);
for(j=0;jnumsubs;j++)
fscanf(fp,"%f",stu[i].subject[j]);
fscanf(fp,"%f",stu[i].score);
fscanf(fp,"%f",stu[i].average);
fscanf(fp,"%d",stu[i].index);
i++;
}
fclose(fp);
printf("文件读取成功\n");
printf("是否显示纪录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
display(stu,0,numstus-1);
return(0);
}
#include "head.h"
void sort(student stud[])
{
int i,j=0;
char str[5];
student *p;
p=stud;
if(numstus==0)
{
printf("没有可供查询的记录!");
}
while(1)
{
for(i=0i++)
{
printf(" 请输入查询方式:");
printf("(直接输入回车则结束查询操作)\n");
printf("1.按照学号\t");
printf("2.按照姓名\t");
printf("3.按照名次\n");
gets(str);
if(strlen(str)==0) break;
if(str[0]=='1')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortnum2(p);
else
sortnum(p);
display(stud,0,numstus-1);
}
else if(str[0]=='2')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortname2(p);
else
sortname(p);
display(stud,0,numstus-1);
}
else if(str[0]=='3')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortcount2(p);
else
sortcount(p);
display(stud,0,numstus-1);
}
else printf("请输入1~3");
printf("是否退出排序?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') break;
}
return;
}
}
void sortnum(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(strcmp(stud[j+1].number,stud[j].number)0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortnum2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(strcmp(stud[j].number,stud[j+1].number)0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(strcmp(stud[j+1].name,stud[j].name)0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(strcmp(stud[j].name,stud[j+1].name)0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(stud[j+1].indexstud[j].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(stud[j].indexstud[j+1].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
#include"head.h"
void statistic(student stud[]) /*新增功能,输出统计信息*/
{
int i,j=0,k=0;
char c1,str[2];
float average[numsubs],sum=0;
if(numstus==0)
printf("没有可被查找的记录\n");
else
{
while(1)
{
printf("下面将统计考试成绩\n");
printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n");
c1=getchar();
printf("\t一共有个%d记录\n",numstus); /*总共记录数*/
switch(c1)
{
case '1':
for(i=0;inumstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[0];
if(stud[k].subject[0]stud[i].subject[0]) k=i;
if(stud[j].subject[0]stud[i].subject[0]) j=i;
}
average[0]=sum/numstus;
printf("\t科目A的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]);
printf("\t科目A的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]);
printf("\t科目A的平均分是 %5.2f\n",average[0]); /*平均分*/
break;
case '2':
for(i=0;inumstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[1];
if(stud[k].subject[1]stud[i].subject[1]) k=i;
if(stud[j].subject[1]stud[i].subject[1]) j=i;
}
average[1]=sum/numstus;
printf("\t科目B的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]);
printf("\t科目B的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]);
printf("\t科目B的平均分是 %5.2f\n",average[1]); /*平均分*/
break;
case '3':
for(i=0;inumstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[2];
if(stud[k].subject[2]stud[i].subject[2]) k=i;
if(stud[j].subject[2]stud[i].subject[2]) j=i;
}
average[2]=sum/numstus;
printf("\t科目C的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]);
printf("\t科目C的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]);
printf("\t科目C的平均分是 %5.2f\n",average[2]); /*平均分*/
break;
case '4':
for(i=0;inumstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[3];
if(stud[k].subject[3]stud[i].subject[3]) k=i;
if(stud[j].subject[3]stud[i].subject[3]) j=i;
}
average[3]=sum/numstus;
printf("\t科目D的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]);
printf("\t科目D的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]);
printf("\t科目D的平均分是 %5.2f\n",average[3]); /*平均分*/
break;
case '5':
for(i=0;inumstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[4];
if(stud[k].subject[4]stud[i].subject[4]) k=i;
if(stud[j].subject[4]stud[i].subject[4]) j=i;
}
average[4]=sum/numstus;
printf("\t科目E的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]);
printf("\t科目E的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]);
printf("\t科目E的平均分是 %5.2f\n",average[4]); /*平均分*/
break;
default:printf("输入错误!请输入1~5之间的数\n");
}
sum=0;
getchar();
printf("是否继续进行统计?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') ;
else break;
}
}
}
#include"head.h"
int writetotext(student stud[]) /*将所有记录写入文件*/
{
int i=0,j;
FILE *fp;
char filename[20];
printf("输入文件名称:");
gets(filename);
fp=fopen(filename,"w");
fprintf(fp,"%d\n",numstus);
while(inumstus)
{
fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex);
for(j=0;jnumsubs;j++)
fprintf(fp,"%f ",stud[i].subject[j]);
fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index);
i++;
}
fclose(fp);
printf("已成功存储!\n");
display(stud,0,numstus-1);
numstus=0;
return 0;
}
#include"head.h"
void welcome()
{
printf("\t*************************************************************\n");
printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n");
printf("\t*************************************************************\n");
}
void showtable()
{
printf("---------------------------------------------------------------------------------------\n");
printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");
printf("---------------------------------------------------------------------------------------\n");
}
void display(student stud[],int n1,int n2)
{
int i;
showtable(); /*显示表头*/
for(i=n1;i=n2;i++)
printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index);
/*通过循环输出数据*/
}
void display1()
{
printf("\t\t本系统由计应精英一组亲情制作\n\n");
printf("\t\t制作人员列表: (按比划)\n");
printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");
printf("\n\n");
getchar();
}
#include"head.h"
#includestring.h
void amendrecord(student stud[])
{
char str[5]; /*供用户输入*/
int i=-1,j;
if(numstus==0) /*没有记录返回*/
printf("没有可供修改的记录!");
while(i0)
{
i=findrecord(stud);
if(i=0)
{
printf("要删除这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
deleterecord(stud,i);
count(stud);
}
else
{
printf("确定要修改这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
printf("下面请重新输入学生的信息:\n");
printf("请输入学号:");
gets(stud[i].number);
printf("请输入姓名:");
gets(stud[i].name);
printf("请输入性别(男/女 1/0):");
gets(str);
if(str[0]=='0')
strcpy(stud[i].sex,"女");
else
strcpy(stud[i].sex,"男");
stud[i].score=0;
printf("请按顺序输入成绩:");
for(j=0;jnumsubs;j++)
{
scanf("%f",stud[i].subject[j]);
stud[i].score+=stud[i].subject[j];
}
getchar();
stud[i].average=stud[i].score/numsubs;
}
count(stud);
}
display(stud,0,numstus-1);
}
printf("是否继续进行其他修改?(y/n)\n");
gets(str);
if(str[0]=='y'||str[0]=='Y')
i=-1;
else i=1;
}
}
void deleterecord(student stu[],int i) /*删除信息*/
{
int j;
while(i=0)
{
for(j=i;jnumstus;j++)
stu[j]=stu[j+1];
numstus--;
printf("删除成功!\n");
}
}
void count(student stud[])
{
int i,j;
for(i=0;inumstus;i++)
{
stud[i].index=1;
for(j=0;jnumstus;j++)
if(stud[j].scorestud[i].score)
stud[i].index++;
}
}
#include "head.h"
void addrecord(student stud[])
{
int i=0,j,num;
char str[5];
if(numstus!=0)
{
printf("已有记录存在是否覆盖?(y/n)\n");
gets(str);
if(str[0]=='Y'||str[0]=='y')
i=0;
else i=numstus;
}
printf("请输入增加的学生信息条目数:");
scanf("%d",num);
if(i==0)
numstus=num;
else numstus+=num;
if(numstuslens)
{
lens+=50;
pointer=(student *)realloc(pointer,lens*LEN);
}
printf("请输入学生信息:\n");
for(;inumstus;i++)
{
getchar();
printf("请输入学号:");
gets(pointer[i].number);
printf("请输入姓名:");
gets(pointer[i].name);
printf("请输入性别(男/女 1/0):");
gets(pointer[i].sex);
if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");
else strcpy(pointer[i].sex,"男");
printf("请输入各科成绩:(按ABCDE的顺序):");
stud[i].score=0;
for(j=0;jnumsubs;j++)
{
scanf("%f",stud[i].subject[j]); /*计算总分*/
stud[i].score+=stud[i].subject[j];
}
stud[i].average=stud[i].score/numsubs; /*计算平均分*/
}
count(stud); /*附名次*/
display(stud,0,numstus-1);
getchar();
}#include "head.h"
int numstus;
int lens;
student *pointer;
void main()
{
int i=1;
char str[2];
lens=100;
pointer=(student *)malloc(lens*LEN); /*分配内存*/
numstus=0;
welcome(); /*欢迎界面*/
while(i0)
{
i=menu_select(); /*控制菜单*/
switch(i)
{
case 1:addrecord(pointer);break; /*增加学生信息*/
case 2:findrecord(pointer);break; /*查询学生信息*/
case 3:amendrecord(pointer);break; /*修改学生信息*/
case 4:sort(pointer);break; /*学生信息排序*/
case 5:statistic(pointer);break; /*统计信息*/
case 6:openfile(pointer);break; /*打开文件*/
case 7:writetotext(pointer);break; /*保存文件*/
case 8:display(pointer,0,numstus-1);break; /*显示记录*/
case 0:
if(numstus!=0) printf("是否保存当前记录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(pointer);
i=-1;break; /*退出系统*/
default:printf("请输入数字0~8:\n");i=1; /*输入错误*/
}
}
printf("\t\t欢迎再次使用本系统。\n\n");
display1();
}
自己一改就能用,给我加分哈!
学生成绩查询系统数据库代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于学生成绩管理系统数据库代码、学生成绩查询系统数据库代码的信息别忘了在本站进行查找喔。