插入学生成绩的程序
㈠ 学生成绩管理程序
别忘了给分!
/**********************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define N 3 /*学生人数*/
#define M 3 /*课程门数*/
void input();
void display();
void select();
void statistics();
void dataSave();
void dataLoad();
void menu();
float courses[N][M];
FILE *fp;
void input() /*输入成绩*/
{
int i=0;
int j=0;
for(i=0;i<N;i++)
{
printf("学生%d号\n",i+1);
for(j=0;j<M;j++)
{
printf("第%d门成绩的分数为:",j+1);
scanf("%f",&courses[i][j]);
}
printf("\n\n");
}
printf("\n\n");
printf("输入完毕!按任意键返回主菜单!");
getch();
}
void display()
{
int i=0;
int j=0;
for(i=0;i<N;i++)
{
printf("学生%d号的成绩分别为:",i+1);
for(j=0;j<M;j++)
printf("%0.2f ",courses[i][j]);
printf("\n");
}
printf("\n按任意键返回主菜单!");
getch();
}
void select(int no)
{
int i=0;
printf("您选择了查看学生%d号的成绩:",no);
for(i=0;i<M;i++)
{
printf("%0.2f ",courses[no-1][i]);
}
printf("\n按任意键返回主菜单!");
getch();
}
void statistics() /*统计*/
{
float cAverage[M]; /*每门课程平均分*/
float sAverage[N]; /*每个学生平均分*/
float temp=0;
int i=0;
int j=0;
/*算平均分*/
printf("单科课程平均分为:"); /*单科课程平均分*/
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
temp=temp+courses[j][i];
}
cAverage[i]=temp/M;
printf("%0.2f\t",cAverage[i]);
temp=0;
}
temp=0;
printf("\n学生成绩平均分为:");
for(j=0;j<N;j++) /*学生成绩平均分*/
{
for(i=0;i<M;i++)
{
temp=temp+courses[j][i];
}
sAverage[j]=temp/N;
printf("%0.2f\t",sAverage[j]);
temp=0;
}
/*排序(冒泡法)*/
for(i=0;i<M;i++)
for(j=0;j<M-i-1;j++)
if(cAverage[j]<cAverage[j+1])
{
temp=cAverage[j];
cAverage[j]=cAverage[j+1];
cAverage[j+1]=temp;
}
for(j=0;j<N;j++)
for(i=0;i<N-j-1;i++)
if(sAverage[i]<sAverage[i+1])
{
temp=sAverage[i];
sAverage[i]=sAverage[i+1];
sAverage[i+1]=temp;
}
printf("\n单科课程的前三名:");
for(i=0;i<3;i++)
{
printf("\n第%d名:%0.2f",i+1,cAverage[i]);
}
printf("\n学生总成绩前三名:");
for(i=0;i<3;i++)
{
printf("\n第%d名:%0.2f",i+1,sAverage[i]);
}
printf("\n\n按任意键返回主菜单!");
getch();
}
void menu()
{
int num=0;
int n=0;
printf("\n\t\t\t学生成绩管理系统\n\n");
printf("\t\t\t1.输入学生成绩\n\t\t\t2.显示所有数据\n\t\t\t3.按学号查询\n\t\t\t4.统计\n\t\t\t5.退出\n");
printf("\t\t\tchoose:");
scanf("%d",&num);
switch(num)
{
case 1:
system("cls");
input();
break;
case 2:
system("cls");
display();
break;
case 3:
system("cls");
printf("请输入要查询的学生号:");
scanf("%d",&n);
select(n);
break;
case 4:
system("cls");
statistics();
break;
case 5:
dataSave();
exit(1);
default:break;
}
}
void dataLoad() /*读入文件*/
{
int i=0;
fp=fopen("record.txt","r+"); /*存在原文件*/
if(fp!=NULL) /*到文件尾返回*/
for(i=0;i<N&&!feof(fp);i++)
fread(&courses[i],sizeof(courses),1,fp);
else fp=fopen("record.txt","w"); /*不存在则新建一个文件*/
}
void dataSave() /*文件保存*/
{
int i;
fp=fopen("record.txt","w");
for(i=0;i<N;i++)
if(fwrite(&courses[i],sizeof(courses),1,fp)!=1)
{
fclose(fp); /*关闭文件指针*/
printf("file write error\n");
getch();
}
}
void main()
{
int i=0;
int j=0;
dataLoad();
while(1)
{
system("cls"); /*清屏*/
menu();
}
}
/*********************************************************/
㈡ C语言程序设计 班级学生成绩管理系统
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>
#define ADDRFILE "c:\\addrlist.txt"
typedef struct tagLinkedList
{
char name[30];
char tel[30];
char addr[100];
struct tagLinkedList *prev;
struct tagLinkedLIst *next;
}ADDR;
ADDR *g_pAddrHead = NULL;
ADDR *g_pFind;
int g_bSaved = 1;
void get_addrlist(void);
int add_list(const ADDR *addr);
int find_list(const char *name);
void SetHeadPosition(void);
void SetTailPosition(void);
void Add_addr(void);
void Find_addr(void);
void Modify_addr(void);
void Delete_addr(void);
void Print_addr(void);
void Save_addr(void);
void Remove_addr(void);
void main(void)
{
int ch;
get_addrlist();
puts("通讯录程序 Version 1.0");
while(1)
{
printf("\n[1]新增 [2]搜索 [3]修改 [4]删除 [5]输出 [S]储存 [Q]退出");
ch = getch();
switch(ch)
{
case '1': Add_addr();break;
case '2': Find_addr();break;
case '3': Modify_addr();break;
case '4': Delete_addr();break;
case '5': Print_addr();break;
case 's':
case 'S': Save_addr();break;
case 'q':
case 'Q':
if(g_bSaved == 0)
{
printf("\n\n修改后的数据需要储存吗?(y/n)?");
ch = getchar();
if(ch == 'Y' || ch == 'y') Save_addr();
}
Remove_addr(); exit(1);
default : printf("\n\n 请按1~5或S/Q健.\n\n");break;
}
}
}
void get_addrlist(void)
{
ADDR addr;
FILE *fp;
fp = fopen(ADDRFILE,"rb");
if(fp == NULL)
{
perror("open file error;");
return;
}
while(!feof(fp))
{
fread(&addr,1,sizeof(ADDR),fp);
if(ferror(fp))
{
fclose(fp);
perror("file read error;");
return;
}
if(feof(fp))break;
if(add_list(&addr) == 0)
{
printf(".\n");
}
}
fclose(fp);
}
int add_list(const ADDR *addr)
{
ADDR *plocal,*pn = g_pAddrHead;
SetHeadPosition();
if(g_pAddrHead == NULL)
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));
if(plocal == NULL)
{
return 0;
}
g_pAddrHead = plocal;
g_pAddrHead->prev = NULL;
g_pAddrHead->next = NULL;
}
else
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));
if(plocal == NULL)
{
return 0;
}
while(pn->next)
{
pn = pn->next;
}
pn->next = plocal;
plocal->prev = pn;
plocal->next = NULL;
}
strcpy(plocal->name,addr->name);
strcpy(plocal->tel,addr->tel);
strcpy(plocal->addr,addr->addr);
return 1;
}
int find_list(const char *name)
{
ADDR *plocal;
SetHeadPosition();
plocal = g_pAddrHead;
while(plocal)
{
if(strstr(plocal->name,name))
{
g_pFind = plocal;
return 1;
}
plocal = plocal->next;
}
return 0;
}
void SetHeadPosition(void)
{
if(g_pAddrHead == NULL) return;
while(g_pAddrHead->prev)
{
g_pAddrHead = g_pAddrHead->prev;
}
}
void SetTailPosition(void)
{
if(g_pAddrHead == NULL) return;
while(g_pAddrHead->next)
{
g_pAddrHead = g_pAddrHead->next;
}
}
void Remove_addr(void)
{
ADDR *plocal;
if(g_pAddrHead == NULL) return;
SetHeadPosition();
while(g_pAddrHead)
{
plocal = g_pAddrHead->next;
free(g_pAddrHead);
g_pAddrHead = plocal;
}
g_pAddrHead = NULL;
}
void Add_addr(void)
{
ADDR addr;
memset(&addr,0,sizeof(ADDR));
printf("\n\nName: ");gets(addr.name);
if(strlen(addr.name) == 0) return;
printf("TEL: ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);
if(find_list(addr.name) == 1)
{
printf("\n已经存在的姓名.\n\n");
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
return;
}
if(add_list(&addr))
{
g_bSaved = 0;
printf("\n储存完毕.\n\n");
}
}
void Find_addr(void)
{
char buff[100] ={0,};
ADDR *plocal;
printf("\n\n请输入要查找的姓名/电话/地址.\n");
printf("姓名/电话/地址 :");gets(buff);
if(strlen(buff) == 0) return;
SetHeadPosition();
plocal = g_pAddrHead;
g_pFind = NULL;
while(plocal)
{
if(strstr(plocal->name,buff))
{
g_pFind = plocal;
break;
}
if(strstr(plocal->tel,buff))
{
g_pFind = plocal;
break;
}
if(strstr(plocal->addr,buff))
{
g_pFind = plocal;
break;
}
plocal = plocal->next;
}
if(g_pFind)
{
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
}
else
{
printf("\n\n搜索不到要找的%s.\n\n",buff);
}
}
void Modify_addr(void)
{
char name[100] = {0,};
ADDR addr;
while(1)
{
printf("\n\n要修改的姓名: ");gets(name);
if(strlen(name) == 0) return;
if(find_list(name) == 0)
{
puts("输入的姓名不存在.");
continue;
}
break;
}
printf("\n%s的通讯录如下:\n\n",name);
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
printf("\n输入要修改的姓名/电话/地址.\n\n");
printf("NAME: ");gets(addr.name);
printf("TEL : ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);
if(strlen(addr.name)==0) strcpy(addr.name,name);
strcpy(g_pFind->name,addr.name);
strcpy(g_pFind->tel,addr.tel);
strcpy(g_pFind->addr,addr.addr);
g_bSaved = 0;
printf("%s的通讯录修改成功.\n",name);
}
void Delete_addr(void)
{
char name[100] ={0,};
ADDR *plocal;
int ch;
while(1)
{
printf("\n\n要删除的姓名: ");gets(name);
if(strlen(name)==0) return;
if(find_list(name) == 0)
{
puts("要删除的通讯录不存在.");
continue;
}
break;
}
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
printf("确定要删除%s的通讯录吗(y/n)?",name);
ch = getch();
fflush(stdin);
if(ch == 'Y'||ch == 'y')
{
if(g_pFind->prev == NULL)
{
if(g_pFind->next == NULL)
{
free(g_pFind);
g_pAddrHead = NULL;
}
else
{
plocal = g_pFind->next;
free(g_pFind);
plocal->prev =NULL;
g_pAddrHead = plocal;
}
}
else if(g_pFind->next == NULL)
{
plocal = g_pFind->prev;
free(g_pFind);
plocal->next =NULL;
g_pAddrHead = plocal;
}
else
{
plocal = g_pFind->prev;
plocal->next = g_pFind->next;
plocal = g_pFind->next;
plocal->prev = g_pFind->prev;
free(g_pFind);
g_pAddrHead = plocal;
}
g_bSaved = 0;
printf("\n\n删除完毕.\n\n");
}
}
void Print_addr(void)
{
int count = 1;
ADDR *plocal;
SetHeadPosition();
if(g_pAddrHead == NULL)
{
printf("\n\n无任何数据\n");
return;
}
plocal = g_pAddrHead;
while(plocal->prev)
{
plocal=plocal->prev;
}
printf("\n\n");
while(plocal)
{
printf("NO.%d\n",count++);
puts(plocal->name);
puts(plocal->tel);
printf("%s\n\n",plocal->addr);
printf("请按任意一健(结束:q)\n\n");
getch();
if(getch() == 'q')return;
plocal=plocal->next;
}
}
void Save_addr(void)
{
ADDR *plocal, *pn;
FILE *fp;
if(g_pAddrHead == NULL) return;
fp = fopen(ADDRFILE,"w+b");
if(fp == NULL)
{
perror("file open error;");
return;
}
SetHeadPosition();
plocal = g_pAddrHead;
while(plocal)
{
pn = plocal->next;
plocal = pn;
}
printf("\n所有数据已经储存完毕.");
g_bSaved = 1;
fclose(fp);
}
㈢ C语言程序设计学生成绩管理系统
#include "stdio.h"
/*定义学生结构体*/
struct Student
{
char ID[20];
char Name[20];
float Mark1;
float Mark2;
float Mark3;
float Average;
};
/*声明学生数组及学生数量*/
struct Student students[1000];
int num=0;
/*求平均值*/
float Avg(struct Student stu)
{
return (stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通过学号返回数组下标*/
int Student_SearchByIndex(char id[])
{
int i;
for (i=0;i<num;i++)
{
if (strcmp(students[i].ID,id)==0)
{
return i;
}
}
return -1;
}
/*通过姓名返回数组下标*/
int Student_SearchByName(char name[])
{
int i;
for (i=0;i<num;i++)
{
if (strcmp(students[i].Name,name)==0)
{
return i;
}
}
return -1;
}
/*显示单条学生记录*/
void Student_DisplaySingle(int index)
{
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入学生信息*/
void Student_Insert()
{
while(1)
{
printf("请输入学号:");
scanf("%s",&students[num].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[num].Name);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark3);
getchar();
students[num].Average=Avg(students[num]);
num++;
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*修改学生信息*/
void Student_Modify()
{
float mark1,mark2,mark3;
while(1)
{
char id[20];
int index;
printf("请输入要修改的学生的学号:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要修改的学生信息为:\n");
Student_DisplaySingle(index);
printf("-- 请输入新值--\n");
printf("请输入学号:");
scanf("%s",&students[index].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[index].Name);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*删除学生信息*/
void Student_Delete()
{
int i;
while(1)
{
char id[20];
int index;
printf("请输入要删除的学生的学号:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要删除的学生信息为:\n");
Student_DisplaySingle(index);
printf("是否真的要删除?(y/n)");
if (getchar()=='y')
{
for (i=index;i<num-1;i++)
{
students[i]=students[i+1];
}
num--;
}
getchar();
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*按姓名查询*/
void Student_Select()
{
while(1)
{
char name[20];
int index;
printf("请输入要查询的学生的姓名:");
scanf("%s",&name);
getchar();
index=Student_SearchByName(name);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要查询的学生信息为:\n");
Student_DisplaySingle(index);
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*按平均值排序*/
void Student_SortByAverage()
{
int i,j;
struct Student tmp;
for (i=0;i<num;i++)
{
for (j=1;j<num-i;j++)
{
if (students[j-1].Average<students[j].Average)
{
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}
/*显示学生信息*/
void Student_Display()
{
int i;
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("-------------------------------------------------------------\n");
for (i=0;i<num;i++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}
/*将学生信息从文件读出*/
void IO_ReadInfo()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&students[i],sizeof(struct Student),1,fp);
}
}
fclose(fp);
}
/*将学生信息写入文件*/
void IO_WriteInfo()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("写入文件错误!\n");
}
for (i=0;i<num;i++)
{
if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)
{
printf("写入文件错误!\n");
}
}
fclose(fp);
}
/*主程序*/
main()
{
int choice;
IO_ReadInfo();
while(1)
{
/*主菜单*/
printf("\n------ 学生成绩管理系统------\n");
printf("1. 增加学生记录\n");
printf("2. 修改学生记录\n");
printf("3. 删除学生记录\n");
printf("4. 按姓名查询学生记录\n");
printf("5. 按平均成绩排序\n");
printf("6. 退出\n");
printf("请选择(1-6):");
scanf("%d",&choice);
getchar();
switch(choice)
{
case 1:
Student_Insert();
break;
case 2:
Student_Modify();
break;
case 3:
Student_Delete();
break;
case 4:
Student_Select();
break;
case 5:
Student_SortByAverage();
Student_Display();
break;
case 6:
exit();
break;
}
IO_WriteInfo();
}
}
㈣ c语言学生成绩管理系统程序设计,有添加,查找,删除,输出,修改,排序等功能!!!
同学你参照下,有不懂的,网络上Hi我
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
struct sc
{
int chinese;
int maths;
int english;
};
typedef struct node
{
int num;
char name[20];
struct sc score;
struct node *next;
}st;
int menu()//菜单
{
int choice;
do{
("cls");
printf("\t1.input the messega about a student\n");
printf("\t2.insect a messega of a new student\n");
printf("\t3.look for the messega\n");
printf("\t4.dellect the messega\n");
printf("\t5.arranging base on the number of learning\n");
printf("\t6.output all the messega\n");
printf("\t7.arranging base on all scores\n");
printf("\t8.exit the system\n");
printf("\tplease input your choice:");
scanf("%d",&choice);
}while(choice>7&&choice<1);
return choice;
}
st *create()//创建链表
{
st *head,*p,*tail;
char c;
head=tail=NULL;
while(c!='n'&&c!='N')
{
p=(st *)malloc(sizeof(st));
p->next=NULL;
printf("\t\tplease input the number of learning:");
scanf("%d",&p->num);
printf("\t\tplease input the name:");
scanf("%s",p->name);
printf("\t\tplease input the score of chinese:");
scanf("%d",&p->score.chinese);
printf("\t\tplease input the score of maths:");
scanf("%d",&p->score.maths);
printf("\t\tplease input the score of english:");
scanf("%d",&p->score.english);
if(head==NULL)
head=tail=p;
else
{
tail->next=p;
tail=p;
}
printf("\t\tcontinue or stop(Y/N):");
scanf("%s",&c);
}
return head;
}
st *arrange(st *head)// 以学号排名
{
st *p,*q;
int t,i=1,j,chinese,maths,english;
char name[20];
p=head;
if(head==NULL)
printf("\t\tNoting to arrange\n");
else
{
do
{
j=1;
while(p->next!=NULL)
{
q=p->next;
if(p->num>=q->num)
{
t=p->num;
p->num=q->num;
q->num=t;
strcpy(name,p->name);
strcpy(p->name,q->name);
strcpy(q->name,name);
chinese=p->score.chinese;
p->score.chinese=q->score.chinese;
q->score.chinese=chinese;
maths=p->score.maths;
p->score.maths=q->score.maths;
q->score.maths=maths;
english=p->score.english;
p->score.english=q->score.english;
q->score.english=english;
}
p=q;
j++;
}
p=head;
i++;
}while(i!=j);
}
return head;
}
st *arrangeall(st *head)//以总分排名
{
st *p,*q;
int t,i=1,j,chinese,maths,english;
char name[20];
p=head;
if(head==NULL)
printf("\t\tNoting to arrange\n");
else
{
do
{
j=1;
while(p->next!=NULL)
{
q=p->next;
if(p->score.chinese+p->score.maths+p->score.english<q->score.chinese+q->score.maths+q->score.english)
{
t=p->num;
p->num=q->num;
q->num=t;
strcpy(name,p->name);
strcpy(p->name,q->name);
strcpy(q->name,name);
chinese=p->score.chinese;
p->score.chinese=q->score.chinese;
q->score.chinese=chinese;
maths=p->score.maths;
p->score.maths=q->score.maths;
q->score.maths=maths;
english=p->score.english;
p->score.english=q->score.english;
q->score.english=english;
}
p=q;
j++;
}
p=head;
i++;
}while(i!=j);
}
return head;
}
st *insect(st *head,st *t)//插入学生的信息
{
st *p,*q;
p=head;
if(head==NULL)
printf("\tThe list is empty\n");
else
{
if(t->num==p->num)
{
head=t;
t->next=p;
}
else
{
while(p->next!=NULL)
{
q=p->next;
if(p->num<=t->num&&q->num>=t->num)
{
t->next=q;
p->next=t;
}
p=q;
}
p->next=t;
}
}
return head;
}
void output(st *head)//输出所以学生的信息
{
st *p;
int i=0;
float sum1=0,sum2=0,sum3=0;
p=head;
if(head==NULL)
{
printf("\tThere is nothing \n");
return;
}
else
{
printf("\tnumber name chinese maths english allscores\n");
while(p)
{
printf("\t %d ",p->num);
printf(" %s ",p->name);
printf(" %d ",p->score.chinese);
printf(" %d ",p->score.maths);
printf(" %d ",p->score.english);
printf("%6d",p->score.chinese+p->score.maths+p->score.english);
printf("\n");
p=p->next;
}
p=head;
while(p)// avrege scores
{
sum1+= p->score.chinese;
sum2+=p->score.maths;
sum3+=p->score.english;
p=p->next;
i++;
}
printf("\tarvege %.2f %.2f %.2f %.2f \n",sum1/i,sum2/i,sum3/i,(sum1+sum2+sum3)/i);
}
system("pause");
}
st *dellect(st *head,st *d)//删除学生的信息
{
st *p,*q;
char c;
p=head;
if(!(strcmp(p->name,d->name)))
{
head=p->next;
free(p);
}
else
{
while((strcmp(p->name,d->name))&&p->next!=NULL)
{
q=p;
p=q->next;
}
if(!(strcmp(p->name,d->name)))
{
printf("do you want to delete %S ?(Y/N):",p->name);
scanf("%s",&c);
if(c=='y'||c=='Y')
{
q->next=p->next;
free(p);
}
}
else
printf("\tThere isn't this name\n");
}
return head;
}
void find(st *head,st *s)//查找学生的信息
{
st *p,*q;
p=head;
if(head==NULL)
printf("\tThe list is empty\n");
else
{
while((strcmp(p->name,s->name))!=0&&p->next!=NULL)
{
q=p;
p=q->next;
}
if((strcmp(p->name,s->name))==0)
{
printf("\t %d ",p->num);
printf(" %s ",p->name);
printf(" chinese=%d ",p->score.chinese);
printf(" maths=%d ",p->score.maths);
printf(" english=%d ",p->score.english);
printf("all=%d",p->score.chinese+p->score.maths+p->score.english);
printf("\n");
}
else
printf("\tThe name is missing\n");
}
system("pause");
}
void main()//主函数
{
st *head,*t,*s,*d;
int choice;
for(;;)
{
choice=menu();
switch(choice)
{
case 1:
head=create();
break;
case 2:
t=(st *)malloc(sizeof(st));
t->next=NULL;
printf("\t\tplease input the number of learning:");
scanf("%d",&t->num);
printf("\t\tplease input the name:");
scanf("%s",t->name);
printf("\t\tplease input the score of chinese:");
scanf("%d",&t->score.chinese);
printf("\t\tplease input the score of maths:");
scanf("%d",&t->score.maths);
printf("\t\tplease input the score of english:");
scanf("%d",&t->score.english);
head=insect(head,t);
break;
case 4:
d=(st *)malloc(sizeof(st));
d->next=NULL;
printf("\twhice student do you want to dellect?please input the name:");
scanf("%s",d->name);
head=dellect(head,d);
break;
case 3:
s=(st *)malloc(sizeof(st));
s->next=NULL;
printf("\twhice student do you want to look for?please input the name:");
scanf("%s",s->name);
find(head,s);
break;
case 5:
head=arrange(head);//number
break;
case 6:
output(head);
break;
case 7:
head=arrangeall(head);//score
break;
case 8:
printf("\t\tThank you,goodbye\n");
exit(0);
}
}
}
㈤ 编写一个菜单驱动的学生成绩管理程序。要求如下: 能输入并显示n个学生的m门考试科目的成绩、总分和平均分
1、采用逐个赋值法进行编程。首先打开编辑器创建工程并新建内容,输入标准输入输出头文件及main()主函数。
㈥ 学生成绩管理程序
想要它变成什么样,自己做一下修改就是了:
#include<iostream>
#include<fstream>
#include <windows.h>
#include<string>
#include <time.h>
#include<cstdlib>
#include<iomanip>
using namespace std;
int n=0;
#define M cout<<
#define N ;Sleep(80);
#define Y N M
#define NN cout<<"╭—————————————————————————————————————————————╮"<<endl;cout<<"∣ num ∣ name∣ age ∣ hig ∣ 语文 ∣ 数学 ∣ 英语 ∣ 平均 ∣ 总分 ∣ 评语 ∣ "<<endl;cout<<"├———-┼———-┼———┼———┼———-┼———-┼———-┼—————┼————┼———-┤"<<endl;cout<<"∣"<<setw(6)<<p1->num<<setw(3)<<"∣"<<setw(7)<<p1->name<<setw(2)<<"∣"<<setw(4)<<p1->age<<setw(4)<<"∣"<<setw(4)<<p1->hig<<setw(4)<<"∣"<<setw(5)<<p1->score[0]<<setw(4)<<"∣"<<setw(5)<<p1->score[1]<<setw(4)<<"∣"<<setw(5)<<p1->score[2]<<setw(4)<<"∣"<<setw(8)<<setprecision(3)<<p1->ave<<setw(4)<<"∣"<<setw(6)<<p1->sum<<setw(4)<<"∣"<<setw(7)<<p1->p_y<<setw(2)<<"∣"<<endl;cout<<"  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ "<<endl;
////////////////////////////////////////////////////////////////////////////////////////////
////
////
////
////////////////////////////////////////////////////////////////////////////////////////////
class ji_ke_1_class
{
int num;
char name[20];
int age;
float hig;
int score[3];
float ave;
float sum;
char p_y[10];
public:
void set_date();
void display();
void creat();
void print();
void insert();
void exchange(ji_ke_1_class *p1,ji_ke_1_class *p2);
void sort(int j);
void index(int q,char aa[20]);
void del(int num);
void save();
void tongji();
void load();
class ji_ke_1_class *next;
};
ji_ke_1_class *head,*p1,*p2,*p;
void ji_ke_1_class::set_date ()
{
cout<<"学号_姓名_年龄_身高_"<<endl;
cin>>num>>name>>age>>hig;
cout<<"-----分数::语文_数学_英语_"<<endl<<" ";
for(int i=0;i<3;i++)
cin>>score[i] ;
}
void ji_ke_1_class::display()
{
ji_ke_1_class *p;
int i;
for( p=head , i=0 ; i<n ; i++ , p=p->next )
cout<<"∣"
<<setw(6)<<p->num
<<setw(3)<<"∣"
<<setw(7)<<p->name
<<setw(2)<<"∣"
<<setw(4)<<p->age
<<setw(4)<<"∣"
<<setw(4)<<p->hig
<<setw(4)<<"∣"
<<setw(5)<<p->score[0]
<<setw(4)<<"∣"
<<setw(5)<<p->score[1]
<<setw(4)<<"∣"
<<setw(5)<<p->score[2]
<<setw(4)<<"∣"
<<setw(8)<<setprecision(3)<<p->ave
<<setw(4)<<"∣"
<<setw(6)<<p->sum
<<setw(4)<<"∣"
<<setw(7)<<p->p_y
<<setw(2)<<"∣"
<<endl;
}
void ji_ke_1_class::print()
{
ji_ke_1_class *p0=head;
cout<<"╭—————————————————————————————————————————————╮"<<endl;
cout<<"∣ num ∣ name∣ age ∣ hig ∣ 语文 ∣ 数学 ∣ 英语 ∣ 平均 ∣ 总分 ∣ 评语 ∣ "<<endl;
cout<<"├———-┼———-┼———┼———┼———-┼———-┼———-┼—————┼————┼———-┤"<<endl;
p0->display();
cout<<"  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ "<<endl;
}
void ji_ke_1_class::creat()
{
int m=0;
float total=0;
head=p2=p1=new ji_ke_1_class;
p1->set_date();
while(p1->num!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=new ji_ke_1_class;
p1->set_date ();
}
p2->next=0;
ji_ke_1_class *p=new ji_ke_1_class;
for(p=head ; m<n ; p=p->next )
{
total=total+p->score[0]+p->score[1]+p->score[2];
p->sum=total;
p->ave=total/3;
cout<<p->sum<<"--------__"<<p->ave<<endl;
if(p->ave>85) strcpy( p->p_y , "优秀" );
else if(p->ave>75) strcpy( p->p_y , "中等" );
else if(p->ave>60) strcpy( p->p_y , "及格" );
else strcpy( p->p_y , "不及格" );
total=0;
m+=1;
}
}
template<typename T1>
void exchang1(T1 &a,T1 &b)
{
int t;
t=a;
a=b;
b=t;
}
template<typename T2>
void exchang2(T2 &a,T2 &b)
{
float t;
t=a;
a=b;
b=t;
}
void ji_ke_1_class::exchange(ji_ke_1_class *p1,ji_ke_1_class *p2)
{
char t2[30],t1[10];
exchang1(p1->num,p2->num);
exchang1(p1->score[1],p2->score[1]);
exchang1(p1->score[0],p2->score[0]);
exchang1(p1->score[2],p2->score[2]);
exchang2(p1->hig,p2->hig);
exchang2(p1->ave,p2->ave);
exchang2(p1->sum,p2->sum);
strcpy(t2,p1->name);
strcpy(p1->name,p2->name);
strcpy(p2->name,t2);
strcpy(t1,p1->p_y );
strcpy(p1->p_y ,p2->p_y );
strcpy(p2->p_y ,t1);
}
void ji_ke_1_class::sort(int j)
{
ji_ke_1_class *p1,*p2;
int m,t;
cout<<endl;
for(p1=head , m=0 ; m<n-1 ; m++ , p1=p1->next)
for(p2=p1->next,t=m+1 ; t<n ; t++ , p2=p2->next)
{
if( (p1->num) > (p2->num) && j==1 ) exchange(p1,p2);
if( (p1->sum) < (p2->sum) && j==2 ) exchange(p1,p2);
}
print();
cout<<endl;
}
void ji_ke_1_class::del(int num)
{
ji_ke_1_class *p1,*p2;
if(head==0)
{
cout<<"\nlist null!\n";
goto end1;
}
p1=head;
while(num!=p1->num && p1->next!=0)
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)
{
if(p1==head) head=p1->next;
else p2->next=p1->next;
cout<<"\n"<<"恭喜你--deleted the:"<<num<<endl<<endl;
n=n-1;
}
else cout<<num<<"抱歉--好像没有这个数吧!!\n"<<"\n\n";
end1: ;
}
void ji_ke_1_class::insert()
{
float total;
ji_ke_1_class *pt=new ji_ke_1_class;
ji_ke_1_class *p0,*p1,*p2;
pt=new ji_ke_1_class;
pt->set_date();
total=0;
int i;
for(i=0;i<3;i++)
total+=pt->score[i];
pt->sum=total;
pt->ave=total/3;
if(pt->ave>85) strcpy( pt->p_y , "优秀" );
else if(pt->ave>75) strcpy( pt->p_y , "中等" );
else if(pt->ave>60) strcpy( pt->p_y , "及格" );
else strcpy( pt->p_y , "不及格" );
p1=head;
p0=pt;
if(head==0)
{
head=p0;
p0->next=0;
}
else
{
while( (p0->num>p1->num)&&(p1->next!=0))
{
p2=p1;
p1=p1->next;
}
if(p0->num<=p1->num)
{
if(head==p1) head=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=0;
}
}
n=n+1;
}
void ji_ke_1_class::index(int q,char aa[20])
{
ji_ke_1_class *p1=head;
int m=0,j=0;
int len,flag=1;
int a[4];
for( m=0 ; m<n ; p1=p1->next , m++ )
{
a[0]=0;a[1]=0;a[2]=0;a[3]=0;
flag=1;
a[0]=(int)( (p1->num)/1000 ); a[1]=(int)( (p1->num-a[0]*1000 )/100 );
a[2]=(int)( (p1->num-a[1]*100-a[0]*1000 )/10 ); a[3]=(int)( p1->num-a[1]*100-a[0]*1000-a[2]*10 );
for(int i=19 ; i>=0 ; i--)
{
if(aa[i]!=0)
len=i+1;
}
int m[4],k=0,y=0,x=0,d=0;
for(k=0;k<4;k++)
{
d=0;
y=(int)aa[k];
for(x=48;x<=57;x++)
{
d++;
if(x==y) m[k]=(d-1);
}
}
for(j=0 ; j<4 ; j++ )
{
if( a[j]!=m[j] )
flag=0;
}
if( flag==1 && q==1 )
{
NN
break;
}
if( p1->name[0]==aa[0] && p1->name[1]==aa[1] && p1->name[2]==aa[2] && q==2 )
{
NN
break;
}
}
if( m==n ) cout<<"no the student"<<endl;
}
int x[20];
string filename;
void ji_ke_1_class::save()
{
int d,d1=0;
int ii;
cout<<endl<<"请输入存储路径(建议存入当前文件中的data_save中)(例 ---绝对路径:C:\\\\文件名\\\\文件名\\\\数据名.dat \n "
<<" ---相对路径:save\\\\数据名.dat; )"
<<endl
<<"路径为:";
string cc;
cin>>cc;
cout<<" ╭——————————————╮"<<endl<<"正在保存 ";
for(ii=0;ii<15;ii++)
{
cout<<'\20';
Sleep(15);
}
ifstream file1("程序必用1.dat",ios::binary);
file1.read( (char *)&d , sizeof(d) );
d1=(int)d+1;
file1.close();
string filename0,name_file;
filename0=cc;
name_file=filename0.c_str();
ofstream file2("程序必用1.dat",ios::binary);
file2.write( (char *)&d1 , sizeof(d1) );
file2.close();
ofstream file3("程序必用2.dat", ios::app|ios::out );
file3<<name_file.c_str ()<<" ";
file3.close();
ofstream outfile(cc.c_str(),ios::binary);
if(!outfile)
{
cerr<<"!!!!!"<<endl;
abort();
}
outfile.write( (char *)&n , sizeof(n) );
ji_ke_1_class *p=head;
for(int i=0;i<n;i++,p=p->next)
outfile.write( (char *)p,sizeof(ji_ke_1_class));
outfile.close();
for(ii=0;ii<15;ii++)
{
cout<<'\20';
Sleep(15);
}
cout<<endl<<endl;
cout<<"-----已成功保存!!!!!!"<<endl<<endl;
}
void ji_ke_1_class::load()
{
int h1,h2;
string qq,name[20],name0[20];
ifstream file("程序必用1.dat",ios::binary);
if(!file)
{
cerr<<"open error!!"<<endl;
abort();
}
file.read( (char *)&h1, sizeof(h1) );
h2=int(h1);
cout<<"共有以下 "<<h2<<" 个文件"<<endl;
ifstream file0("程序必用2.dat",ios::in);
if(!file0)
{
cerr<<"open error!!"<<endl;
abort();
}
for(int e=0;e<h2;e++)
{
if(e%2==0) cout<<endl;
file0>>name[e];
name0[e]=name[e];
cout<<"第"<<e+1<<"个文件:"<<setw(16)<<(string)name0[e]<<" ; ";
}
file0.close();
cout<<endl;
loop3:
cout<<endl<<"请输入路径(例 ---绝对路径:C:\\\\文件名\\\\文件名\\\\数据名.dat ---相对路径:save\\\\数据名.dat;)"<<endl ;
cout<<"路径为:";
string ccc;
cin>>ccc;
cout<<" ╭——————————————╮"<<endl<<"正在读取 ";
int ii;
for(ii=0;ii<15;ii++)
{
cout<<'\20';
Sleep(15);
}
ifstream infile(ccc.c_str(),ios::binary);
int c;
ji_ke_1_class t[60],*pp[60];
if(!infile)
{
cout<<endl<<"无此文件; 1---重输 ; other---放弃";
cin>>c;
if(c==1) goto loop3;
else goto loop4;
}
int nn,nnn;
int i;
infile.read( (char *)&nn , sizeof(nn) );
nnn=(int)nn;
n=nnn;
infile.read( (char *)&t[0] , sizeof(ji_ke_1_class) );
head=(ji_ke_1_class *)&t[0];
for(i=1; i<nnn; i++)
{
infile.read( (char *)&t[i] , sizeof(ji_ke_1_class) );
pp[i]=(ji_ke_1_class *)&t[i];
if(i==1)
{
head->next=pp[1];
}
if(i!=1)
{
pp[i-1]->next=pp[i];
}
}
infile.close();
for(ii=0;ii<15;ii++)
{
cout<<'\20';
Sleep(15);
}
cout<<endl;
cout<<endl<<"————————恭喜!!!成功装载,数据文件以可以使用"<<endl<<endl;
loop4:;
}
void ji_ke_1_class::tongji()
{
ji_ke_1_class *pm=head;
int m,by=0,bz=0,bc=0,bj=0;
for(pm=head , m=0 ; m<n ; m++ , pm=pm->next)
{
if( pm->ave >= 85 ) by++;
if( pm->ave < 85 && pm->ave >=75 ) bz++;
if( pm->ave >=60 && pm->ave < 75 ) bj++;
if( pm->ave < 60 ) bc++;
}
cout<<endl
<<"总计 "<<n<<" 人:"<<endl
<<" 优秀生人数:"<<setw(5)<<by<<setw(12)<<"优秀率为:"<<setw(6)<<setprecision(5)<<(double)by/n<<endl
<<" 中等生人数:"<<setw(5)<<bz<<setw(12)<<"中等率为:"<<setw(6)<<setprecision(5)<<(double)bz/n<<endl
<<" 及格生(60-75)人数:"<<setw(5)<<bj<<setw(12)<<"及格率为:"<<setw(6)<<setprecision(5)<<(double)bj/n<<endl
<<" 不及格人数为:"<<setw(5)<<bc<<setw(12)<<"不及格率为:"<<setw(6)<<setprecision(5)<<(double)bc/n<<endl<<endl;
}
void bz()
{
system("cls");
M"欢"Y"迎"Y"使"Y"用"Y"本"Y"程"Y"序"Y"-"Y"-"Y"-"Y"-"Y"-"Y" 使"Y"用"Y"说"Y"明"Y":"N;cout<<endl<<endl;
M"一"Y""Y"、"Y"建"Y"立"Y"自"Y"己"Y"的"Y"数"Y"据"Y"("Y"建"Y"议"Y"马"Y"上"Y"存"Y"储"Y"!"Y"!"Y")"Y"按"Y"提"Y"示"Y"操"Y"作"Y"即"Y"可"Y";"Y"呵"Y"呵"N;cout<<endl<<endl;
M"二"Y""Y"、"Y"注"Y"意"Y"事"Y"项"Y":"Y" 对"Y"链"Y"表"Y"("Y"数"Y"据"Y")"Y"若"Y"超"Y"过"Y"6"Y"0"Y"个"Y","Y"则"Y"请"Y"联"Y"系"Y""Y""Y"吕"Y""Y""Y"威"Y""Y""Y"___"Y"qq"Y":"Y"921963406"Y","Y"可"Y"免"Y"费"Y"赠"Y"送"Y"所"Y"需"Y"程"Y"序"N;cout<<endl<<endl;
M"三"Y""Y"、"Y"建"Y"链"Y"表"Y"的"Y"最"Y"后"Y"使"Y"全"Y"为"Y"0"Y","Y"建"Y"表"Y"结"Y"束"N;cout<<endl<<endl;
M"四"Y""Y"、"Y"因"Y"技"Y"术"Y"有"Y"限"Y","Y"清"Y"屏"Y"函"Y"数"Y"造"Y"成"Y"head"Y"丢"Y"失"Y";"Y"慎"Y"用"Y"!"Y"!"N;cout<<endl<<endl<<" ";
M"制"Y"作"Y"人"Y":"Y""Y""Y""Y""Y"吕"Y""Y""Y""Y""Y"威"Y""Y""Y""Y""N;cout<<endl<<endl;
}
////////////////////////////////////////////////////////////////////////////////////////////
////
////
////////////////////////////////////////////////////////////////////////////////////////////
void mult()
{tm * tp;
time_t t;
cout<<"____________________________________________________________________________________________________\n";
cout<<" ╭——————————————╮\n"
<<" ";
t=time(NULL);
tp=localtime(&t);
cout<<tp->tm_mon+1<<"-"<<tp->tm_mday<<"-"<<tp->tm_year+1900<<" ";
cout<<tp->tm_hour<<":"<<tp->tm_min<<":"<<tp->tm_sec;
cout<<" ∣ 菜单 ∣ \n"
<<" ∣____________________________∣\n"
<<" ∣ 0---创建数据 ∣\n"
<<" ∣ ∣\n"
<<" ∣ 1---按学号排序 ∣\n"
<<" ∣ ∣\n"
<<" ∣ 2---按分数排序 ∣\n"
<<" ∣ ∣\n"
<<" ∣ 3---删除一学生信息 ∣\n"
<<" ∣ ∣\n"
<<" ∣ 4---插入一学生信息 ∣\n"
<<" ∣ ∣\n"
<<" ∣ 5---检索一学生 ∣\n"
<<" ∣ ∣\n"
<<" ∣ 6---统计数据 ∣\n"
<<" ∣ ∣\n"
<<" ∣ 7---保存 ∣\n"
<<" ∣ ∣\n"
<<" ∣ 8---打开 ∣\n"
<<" ∣ ∣\n"
<<" ∣ 9---清屏 ∣\n"
<<" ∣ ∣\n"
<<" ∣ 10--帮助(建议先看) ∣\n"
<<" ∣ other---quit ∣\n"
<<" ∣ ∣\n"
<<"  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n";
}
void select()
{
int fl=0,a,num2;
ji_ke_1_class aa;
loop:
cout<<"What can I do for you ? ? ?(输入命令---数字) :";
cin>>a;
switch(a)
{
case 0 :
{
cout<<"输入数据\n";
aa.creat();
aa.print();
goto loop;
}
case 1 :
{
aa.sort(1);
goto loop;
}
case 2 :
{
aa.sort(2);
goto loop;
}
case 3 :
{
cout<<"num========";
cin>>num2;
aa.del(num2);
goto loop;
}
case 4 :
{
aa.insert();
goto loop;
}
case 5 :
{
char xx[20]={0};
cout<<"输入要查询的学生的学号 或 姓名:";
cin>>xx;
if( xx[0]>=48 && xx[0]<=57 )
aa.index(1,xx);
else
aa.index(2,xx);
goto loop;
}
case 6 :
{
aa.tongji();
goto loop;
}
case 7 :
{
aa.save();
fl=1;
goto loop;
}
case 8 :
{
aa.load();
goto loop;
}
case 9 :
{
ji_ke_1_class *nn=new ji_ke_1_class;
head=nn;
system("cls");//清屏造成head丢失-------------------------------------------------------??????????????????
nn=head;
mult();
goto loop;
}
case 10 :
{
bz();
mult();
goto loop;
}
default :
{
if(fl=0)
{
char f;
cout<<"你想要储存吗?y/N";
cin>>f;
if(f=='y'||f=='y')
{
aa.save();
fl=1;
goto loop;
}
else goto end;
}
else goto end;
}
}
end:;
}
void main()
{
int q2=0;
ifstream file0("程序必用1.dat",ios::binary);
if(!file0)
{
file0.close();
ofstream file1("程序必用1.dat",ios::binary);
file1.write( (char *)&q2 , sizeof(q2) );
file1.close();
goto loop5;
}
file0.close();
loop5:
mult();
select();
}
㈦ 在c语言中,如何敲一个关于学生成绩插入信息的程序
好好学软件改变命运
㈧ 学生成绩管理系统,使用c语言程序编写。
给一个我以前写过的吧,功能应该差不多
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<queue>
#include<stack>
#include<cmath>
usingnamespacestd;
/*定义学生结构体*/
structStudent
{
charID[20];
charName[20];
floatMark1;
floatMark2;
floatMark3;
floatAverage;
};
/*声明学生数组及学生数量*/
structStudentstudents[1000];
intnum=0;/*求平均值*/
floatAvg(structStudentstu)
{
return(stu.Mark1+stu.Mark2+stu.Mark3)/3;
}/*通过学号返回数组下标*/
intStudent_SearchByIndex(charid[])
{
inti;
for(i=0;i<num;i++)
{
if(strcmp(students[i].ID,id)==0)
{
returni;
}
}
return-1;
}/*通过姓名返回数组下标*/
intStudent_SearchByName(charname[])
{
inti;
for(i=0;i<num;i++)
{
if(strcmp(students[i].Name,name)==0)
{
returni;
}
}
return-1;
}/*显示单条学生记录*/
voidStudent_DisplaySingle(intindex)
{
printf("%10s%10s%8s%8s%8s%10s ","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("------------------------------------------------------------- ");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f ",students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}/*插入学生信息*/
voidStudent_Insert()
{
while(1)
{
printf("请输入学号:");
scanf("%s",&students[num].ID);
getchar();printf("请输入姓名:");
scanf("%s",&students[num].Name);
getchar();printf("请输入成绩:");
scanf("%f",&students[num].Mark1);
getchar();printf("请输入成绩:");
scanf("%f",&students[num].Mark2);
getchar();printf("请输入成绩:");
scanf("%f",&students[num].Mark3);
getchar();students[num].Average=Avg(students[num]);
num++;printf("是否继续?(y/n)");
if(getchar()=='n')
{
break;
}
}}/*修改学生信息*/
voidStudent_Modify()
{
//floatmark1,mark2,mark3;
while(1)
{
charid[20];
intindex;
printf("请输入要修改的学生的学号:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if(index==-1)
{
printf("学生不存在! ");
}
else
{
printf("你要修改的学生信息为: ");
Student_DisplaySingle(index);
printf("--请输入新值-- ");
printf("请输入学号:");
scanf("%s",&students[index].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[index].Name);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
}
printf("是否继续?(y/n)");
if(getchar()=='n')
{
break;
}
}
}/*删除学生信息*/
voidStudent_Delete()
{
inti;
while(1)
{
charid[20];
intindex;
printf("请输入要删除的学生的学号:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if(index==-1)
{
printf("学生不存在! ");
}
else
{
printf("你要删除的学生信息为: ");
Student_DisplaySingle(index);
printf("是否真的要删除?(y/n)");
if(getchar()=='y')
{
for(i=index;i<num-1;i++)
{
students[i]=students[i+1];//把后边的对象都向前移动
}
num--;
}
getchar();
}
printf("是否继续?(y/n)");
if(getchar()=='n')
{
break;
}
}
}/*按姓名查询*/
voidStudent_Select()
{
while(1)
{
charname[20];
intindex;
printf("请输入要查询的学生的姓名:");
scanf("%s",&name);
getchar();
index=Student_SearchByName(name);
if(index==-1)
{
printf("学生不存在! ");
}
else
{
printf("你要查询的学生信息为: ");
Student_DisplaySingle(index);
}
printf("是否继续?(y/n)");
if(getchar()=='n')
{
break;
}
}
}/*按平均值排序*/
voidStudent_SortByAverage()
{
inti,j;
structStudenttmp;
for(i=0;i<num;i++)
{
for(j=1;j<num-i;j++)
{
if(students[j-1].Average<students[j].Average)
{
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}/*显示学生信息*/
voidStudent_Display()
{
inti;
printf("%10s%10s%8s%8s%8s%10s ","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("------------------------------------------------------------- ");
for(i=0;i<num;i++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f ",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}/*将学生信息从文件读出*/
voidIO_ReadInfo()
{
FILE*fp;
inti;
if((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打开文件! ");
return;
}
if(fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&students[i],sizeof(structStudent),1,fp);
}
}
fclose(fp);
}/*将学生信息写入文件*/
voidIO_WriteInfo()
{
FILE*fp;
inti;
if((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打开文件! ");
return;
}
if(fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("写入文件错误! ");
}
for(i=0;i<num;i++)
{
if(fwrite(&students[i],sizeof(structStudent),1,fp)!=1)
{
printf("写入文件错误! ");
}
}
fclose(fp);
}
/*主程序*/
voidmain()
{
intchoice;
IO_ReadInfo();
while(1)
{
/*主菜单*/
printf(" ------学生成绩管理系统------ ");
printf("1.增加学生记录 ");
printf("2.修改学生记录 ");
printf("3.删除学生记录 ");
printf("4.按姓名查询学生记录 ");
printf("5.按平均成绩排序 ");
printf("6.退出 ");
printf("请选择(1-6):");
scanf("%d",&choice);
getchar();
switch(choice)
{
case1:
Student_Insert();
break;
case2:
Student_Modify();
break;
case3:
Student_Delete();
break;
case4:
Student_Select();
break;
case5:
Student_SortByAverage();
Student_Display();
break;
case6:
exit(0);
break;
}
IO_WriteInfo();
}
}
㈨ 有5个学生,每个学生有3门课程的成绩,编写成绩管理程序,要求:用c语言完成
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NAMELEN 10
#define IDLEN 20
typedef struct student
{
char name[NAMELEN];
char ID[IDLEN];
double first;
double second;
double third;
double average;
}STU;
STU stu[6];
int cmp( const void *a ,const void *b)
{
return (*(STU *)a).average > (*(STU *)b).average ? 1 : -1;
}
int main()
{
int i;
FILE *_fp=fopen("student.txt","w"),*fp=fopen("sort.txt","w"),*fp_=fopen("sort2.txt","w");
for(i=0;i<5;i++)
{
printf("输入第%d个学生的学号、姓名及三门课的成绩:\n",i+1);
scanf("%s%s%lf%lf%lf",stu[i].ID,stu[i].name,&stu[i].first,&stu[i].second,&stu[i].third);
stu[i].average=(stu[i].first+stu[i].second+stu[i].third)/3.0;
fprintf(_fp,"%s %s %.2lf %.2lf %.2lf %.2lf\n",stu[i].ID,stu[i].name,stu[i].first,stu[i].second,stu[i].third,stu[i].average);
}
qsort(stu,5,sizeof(stu[0]),cmp);
for(i=0;i<5;i++)
{
fprintf(fp,"%s %s %.2lf %.2lf %.2lf %.2lf\n",stu[i].ID,stu[i].name,stu[i].first,stu[i].second,stu[i].third,stu[i].average);
}
printf("增加一位学生的学号、姓名及三门课的成绩:\n");
scanf("%s%s%lf%lf%lf",stu[5].ID,stu[5].name,&stu[5].first,&stu[5].second,&stu[5].third);
stu[5].average=(stu[5].first+stu[5].second+stu[5].third)/3.0;
qsort(stu,6,sizeof(stu[0]),cmp);
for(i=0;i<6;i++)
{
fprintf(fp_,"%s %s %.2lf %.2lf %.2lf %.2lf\n",stu[i].ID,stu[i].name,stu[i].first,stu[i].second,stu[i].third,stu[i].average);
}
fclose(_fp);
fclose(fp);
fclose(fp_);
return 0;
}
㈩ C语言学生成绩管理程序
#include"stdio.h"
/*定义学生结构体*/
structStudent
{
charID[20];
charName[20];
floatMark1;
floatMark2;
floatMark3;
floatAverage;
};
/*声明学生数组及学生数量*/
structStudentstudents[1000];
intnum=0;
/*求平均值*/
floatAvg(structStudentstu)
{
return(stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通过学号返回数组下标*/
intStudent_SearchByIndex(charid[])
{
inti;
for(i=0;i<num;i++)
{
if(strcmp(students[i].ID,id)==0)
{
returni;
}
}
return-1;
}
/*通过姓名返回数组下标*/
intStudent_SearchByName(charname[])
{
inti;
for(i=0;i<num;i++)
{
if(strcmp(students[i].Name,name)==0)
{
returni;
}
}
return-1;
}
/*显示单条学生记录*/
voidStudent_DisplaySingle(intindex)
{
printf("%10s%10s%8s%8s%8s%10s ","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("------------------------------------------------------------- ");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f ",students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入学生信息*/
voidStudent_Insert()
{
while(1)
{
printf("请输入学号:");
scanf("%s",&students[num].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[num].Name);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark3);
getchar();
students[num].Average=Avg(students[num]);
num++;
printf("是否继续?(y/n)");
if(getchar()=='n')
{
break;
}
}
}
/*修改学生信息*/
voidStudent_Modify()
{
floatmark1,mark2,mark3;
while(1)
{
charid[20];
intindex;
printf("请输入要修改的学生的学号:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if(index==-1)
{
printf("学生不存在! ");
}
else
{
printf("你要修改的学生信息为: ");
Student_DisplaySingle(index);
printf("--请输入新值-- ");
printf("请输入学号:");
scanf("%s",&students[index].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[index].Name);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
}
printf("是否继续?(y/n)");
if(getchar()=='n')
{
break;
}
}
}
/*删除学生信息*/
voidStudent_Delete()
{
inti;
while(1)
{
charid[20];
intindex;
printf("请输入要删除的学生的学号:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if(index==-1)
{
printf("学生不存在! ");
}
else
{
printf("你要删除的学生信息为: ");
Student_DisplaySingle(index);
printf("是否真的要删除?(y/n)");
if(getchar()=='y')
{
for(i=index;i<num-1;i++)
{
students[i]=students[i+1];
}
num--;
}
getchar();
}
printf("是否继续?(y/n)");
if(getchar()=='n')
{
break;
}
}
}
/*按姓名查询*/
voidStudent_Select()
{
while(1)
{
charname[20];
intindex;
printf("请输入要查询的学生的姓名:");
scanf("%s",&name);
getchar();
index=Student_SearchByName(name);
if(index==-1)
{
printf("学生不存在! ");
}
else
{
printf("你要查询的学生信息为: ");
Student_DisplaySingle(index);
}
printf("是否继续?(y/n)");
if(getchar()=='n')
{
break;
}
}
}
/*按平均值排序*/
voidStudent_SortByAverage()
{
inti,j;
structStudenttmp;
for(i=0;i<num;i++)
{
for(j=1;j<num-i;j++)
{
if(students[j-1].Average<students[j].Average)
{
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}
/*显示学生信息*/
voidStudent_Display()
{
inti;
printf("%10s%10s%8s%8s%8s%10s ","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("------------------------------------------------------------- ");
for(i=0;i<num;i++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f ",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}
/*将学生信息从文件读出*/
voidIO_ReadInfo()
{
FILE*fp;
inti;
if((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打开文件! ");
return;
}
if(fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&students[i],sizeof(structStudent),1,fp);
}
}
fclose(fp);
}
/*将学生信息写入文件*/
voidIO_WriteInfo()
{
FILE*fp;
inti;
if((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打开文件! ");
return;
}
if(fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("写入文件错误! ");
}
for(i=0;i<num;i++)
{
if(fwrite(&students[i],sizeof(structStudent),1,fp)!=1)
{
printf("写入文件错误! ");
}
}
fclose(fp);
}
/*主程序*/
main()
{
intchoice;
IO_ReadInfo();
while(1)
{
/*主菜单*/
printf(" ------学生成绩管理系统------ ");
printf("1.增加学生记录 ");
printf("2.修改学生记录 ");
printf("3.删除学生记录 ");
printf("4.按姓名查询学生记录 ");
printf("5.按平均成绩排序 ");
printf("6.退出 ");
printf("请选择(1-6):");
scanf("%d",&choice);
getchar();
switch(choice)
{
case1:
Student_Insert();
break;
case2:
Student_Modify();
break;
case3:
Student_Delete();
break;
case4:
Student_Select();
break;
case5:
Student_SortByAverage();
Student_Display();
break;
case6:
exit();
break;
}
IO_WriteInfo();
}
}