#include <stdioh>
#include <ioh>
#include <conioh>
#include <stdlibh>
#include <stringh>
#define MAX 200
struct student
{
char no[10]; // 学号
char name[50]; // 姓名
float score[3]; // 分数
float math;
float eng;
float phy;
};
struct data
{
int count; // 当前学生数组中学生的个数
struct student stu[MAX]; // 学生数组
}dd;
// 显示主菜单
void menu()
{
system("cls");//清屏
printf("\n\n\n");
printf("\t\t\t \n");
printf("\t\t\t \n");
printf("\t\t\t 学生成绩管理系统 \n");
printf("\t\t\t \n");
printf("\t\t\t [1] 查看所有学生信息 \n");
printf("\t\t\t [2] 输入学生记录 \n");
printf("\t\t\t [3] 删除学生记录 \n");
printf("\t\t\t [4] 修改学生记录 \n");
printf("\t\t\t [5] 查询学生成绩(学号) \n");
printf("\t\t\t [6] 查询成学生绩(姓名) \n");
printf("\t\t\t [7] 查看成绩排序(学号) \n");
printf("\t\t\t [0] 退出 \n");
printf("\t\t\t \n");
}
// 等待用户按回车后回到主菜单
void to_menu()
{
char c1,c2;
printf("\n\n\n按回车键返回主菜单");
scanf("%c%c",&c1,&c2);//第一个字符吸收上次的确认回车键
menu();
}
//统计信息
void ren()
{
int A=0,B=0,C=0,D=0,E=0,s;
int i;
for(i=0;i<ddcount;i++)
{
s=(int)(ddstu[i]math/10);
switch(s)
{
case 10:
case 9:
A++;
break;
case 8:
B++;
break;
case 7:
C++;
break;
case 6:
D++;
break;
default :
E++;
break;
}
}
printf("总人数:%d\n",ddcount);
printf("获得“优秀”的人数:%d\n",A);
printf("获得“良”的人数:%d\n",B);
printf("获得“中”的人数:%d\n",C);
printf("获得“及格”的人数:%d\n",D);
printf("不及格的人数:%d\n",E);
}
// 查看所有学生信息
void view_data()
{
int i;
printf("学号\t姓名\t数学\t英语\t物理");
printf("\n-------------------------------------------------------------------\n");
for(i=0;i<ddcount;i++)
printf("%s\t%s\t%-71f\t%-71f\t%-71f\n",ddstu[i]no,ddstu[i]name,ddstu[i]math,ddstu[i]eng,ddstu[i]phy);
printf("\n-------------------------------------------------------------------\n");
ren();
}
// 将数据从结构体数组保存到文件中
void save_data()
{
FILE fp;//文件指针
int i,k;
k = ddcount; //其实k没有什么实际的意义,直接在fwrite里使用&ddcount就可以了。
fp=fopen("D:\\datatxt","w");//文件存储位置:当前文件夹
fwrite(&k,sizeof(int),1,fp);
for(i=0;i<ddcount;i++)
fwrite(&ddstu[i],sizeof(struct student),1,fp);
fclose(fp);
}
// 输入学生记录
void add_data()
{
int b;
int k = ddcount;
while(k<MAX)
{
printf("请输入学生学号:"); scanf("%s",ddstu[k]no);
printf("请输入学生姓名:"); scanf("%s",ddstu[k]name);
printf("请输入数学成绩:"); scanf("%f",&ddstu[k]math);
printf("请输入英语成绩:"); scanf("%f",&ddstu[k]eng);
printf("请输入物理成绩:"); scanf("%f",&ddstu[k]phy);
ddcount++; //需要提前置0,在主函数中。
k = ddcount;
printf("\n\n继续添加学生信息[1-yes 0-no]:");
scanf("%d",&b);
if(b==0) break;
}
save_data();
}
// 将数据从文件读到结构体数组中
void read_data()
{
FILE fp;
int i,k;
k=0;
if((fp=fopen("D:\\datatxt","r"))==NULL) // 如果文件不存在
{
ddcount = 0;
}
else
{
fread(&k,sizeof(int),1,fp);
ddcount = k;
for(i=0;i<k;i++)
{
fread(&ddstu[i],sizeof(struct student),1,fp);
}
fclose(fp);
}
}
// 删除学生记录
void delete_data()
{
int i,k;
char no[10];
printf("\n请输入要删除学生的学号:");
scanf("%s",no);
k = -1;
for(i=0;i<ddcount;i++)
{
if(strcmp(ddstu[i]no,no)==0)
{
k = i;
break;
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(学号-%s)!",no);
}
else
{
//你没有写删除的 *** 作啊
for(i=k; i<ddcount-1; i++) //将后面的数据前移一位
ddstu[i] = ddstu[i+1];
memset(&ddstu[ddcount-1],0,sizeof(struct student)); //将ddstu[ddcount-1]数据置0
ddcount--;
save_data();
printf("\n\n删除学生(学号-%s)记录成功!",no);
}
}
// 修改学生记录
void edit_data()
{
int i,k;
char no[10],name[50];
printf("\n请输入要修改学生的学号:");
scanf("%s",no);
k=-1;
for(i=0;i<ddcount;i++)
{
if(strcmp(ddstu[i]no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(学号-%s)!",no);
}
else
{
printf("\n请输入学生数据:");
printf("\n姓名");
printf("\n--------------------------------------------------------------------\n");
scanf("%s",name);
strcpy(ddstu[k]name,name);
save_data();
printf("\n\n修改学生记录(学号-%s)成功!",no);
}
}
// 查询学生成绩(学号)
void query_data_no()
{
int i,k;
char no[10];
printf("\n请输入要查询学生的学号:");
scanf("%s",no);
k=-1;
for(i=0;i<ddcount;i++)
{
if(strcmp(ddstu[i]no,no)==0)
{
printf("\n\n学号\t姓名\t数学\t英语\t物理");
printf("\n-----------------------------------------------------------------\n");
k=i;
printf("%s\t%s\t%-71f\t%-71f\t%-71f\n",ddstu[i]no,ddstu[i]name,ddstu[i]math,ddstu[i]eng,ddstu[i]phy);
break; // 学号应该是唯一的,找到了一个就代表以后的没有了。
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(学号-%s)!",no);
}
}
// 查询学生成绩(姓名)
void query_data_name()
{
int i,k;
char name[10];
printf("\n请输入要查询学生的姓名:");
scanf("%s",name);
k=-1;
for(i=0;i<ddcount;i++)
{
if(strcmp(ddstu[i]name,name)==0)
{
printf("\n\n学号\t姓名\t数学\t英语\t物理");
printf("\n-----------------------------------------------------------------\n");
k=i;
printf("%s\t%s\t%-71f\t%-71f\t%-71f\n",ddstu[i]no,ddstu[i]name,ddstu[i]math,ddstu[i]eng,ddstu[i]phy);
break;
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(姓名-%s)!",name);
}
}
// 排序(学号)
void sort_data_no(struct data Buff)
{
int i;
int j;
int k;
int h;
struct student temp;
FILE fp;
if((fp=fopen("D:\\datatxt","w+"))==NULL)
{
printf("cannot open file!\n");
exit(0);
}
printf("请输入要查询的科目:1-数学,2-英语,3-物理:");
scanf("%d",&k);
switch(k)
{
case 1:
for(i=0; i<Buffcount-1; i++)
for(j=i+1; j<Buffcount; j++)
if(Buffstu[i]math > Buffstu[j]math)
{
temp=Buffstu[i];
Buffstu[i]=Buffstu[j];
Buffstu[j]=temp;
}
printf("名次\t学号\t 姓名\t数学\n");
for(i=0; i<Buffcount; i++)
printf("%d\t%s\t%s\t%-71f\n",i+1,Buffstu[i]no,Buffstu[i]name,Buffstu[i]math);
break;
case 2:
for(i=0; i<Buffcount-1; i++)
for(j=i+1; j<Buffcount; j++)
if(Buffstu[i]eng > Buffstu[j]eng)
{
temp=Buffstu[i];
Buffstu[i]=Buffstu[j];
Buffstu[j]=temp;
}
printf("名次\t学号\t 姓名\t英语\n");
for(i=0; i<Buffcount; i++)
printf("%d\t%s\t%s\t%-71f\n",i+1,Buffstu[i]no,Buffstu[i]name,Buffstu[i]eng);
break;
case 3:
for(i=0; i<Buffcount-1; i++)
for(j=i+1; j<Buffcount; j++)
if(Buffstu[i]phy > Buffstu[j]phy)
{
temp=Buffstu[i];
Buffstu[i]=Buffstu[j];
Buffstu[j]=temp;
}
printf("名次\t学号\t 姓名\t物理\n");
for(i=0; i<Buffcount; i++)
printf("%d\t%s\t%s\t%-71f\n",i+1,Buffstu[i]no,Buffstu[i]name,Buffstu[i]phy);
break;
default :
printf("输入错误!");
exit(0);
}
printf("请按任意键继续");
getch();
fclose(fp);
}
// 主函数
void main()
{
int fun;
ddcount = 0;
read_data();
menu();
while(1)
{
printf("请输入功能号[0-7]:");//这里不需要什么&fun,
scanf("%d",&fun);
switch(fun)
{
case 1: view_data();break; // 查看所有学生信息
case 2: add_data(); break; // 输入学生记录
case 3: delete_data();break; // 删除学生记录
case 4: edit_data();break; // 修改学生记录
case 5: query_data_no();break; // 查询学生成绩(学号)
case 6: query_data_name();break; // 查询成学生绩(姓名)
case 7: sort_data_no(dd); break; // 查看成绩排序(学号) //直接将结构体dd发送过去就可以了
case 0: break; // 退出
}
if(fun==0) break;
to_menu();
}
return;
}
/好吧,其实你可以上网看看,那么多的,你可以自己修改下/
#include <stdioh>
#include <malloch>
#include <stringh>
#include <stdlibh>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
char name[20];
long int num;
char sex[4];
int age;
char address[30];
double tele_num;
char aihao[20];
struct student next;
};//定义一个结构题
int TOTAL_NUM = 0;//学生总数
struct student head = NULL;
void welcome (); //欢迎界面
void mainmenu (); //主界面
void record (); //记录数据
void insert(struct student stu); //插入数据
void display(struct student stu); //显示一个学生的信息
void displayAll (); //显示所有学生的信息
void query_by_num (); //按学号查询学生信息
void readData (); //读取文件里学生的信息
void writeData (); //向文件写入学生信息
void freeAll (); //清空链表内容
void del (); //删除学生信息
void change (); //更改学生信息
void devise (struct student p); //选择更改内容
int main (void)
{
welcome ();
//显示主菜单
mainmenu ();
return 0;
}
//显示欢迎信息
void welcome ()
{
printf ("+----------------------------------------------------+\n");
printf ("| |\n");
printf ("| 欢迎使用网络工程学院信息安全092班学生信息管理系统 |\n");
printf ("| |\n");
printf ("+----------------------------------------------------+\n");
}
//系统主菜单
void mainmenu ()
{
int choice;
choice = -1;
readData ();
printf ("\n温馨提示:为保证您的 *** 作得到保存,请按正常顺序退出系统^_^\n");
do
{
printf ("\n\n\n");
printf ("\t\t\t--------------------------------------------\n");
printf ("\t\t\t+ 信息安全092班学生信息管理系统 |\n");
printf ("\t\t\t--------------------------------------------\n");
printf ("\t\t\t+ [1]----录入学生信息 |\n");
printf ("\t\t\t+ [2]----浏览学生信息 |\n");
printf ("\t\t\t+ [3]----查询学生信息 |\n");
printf ("\t\t\t+ [4]----删除学生信息 |\n");
printf ("\t\t\t+ [5]----修改学生信息 |\n");
printf ("\t\t\t+ [0]----退出系统 |\n");
printf ("\t\t\t+··············|\n");
printf ("\t\t\t--------------------------------------------\n");
printf ("请输入您的选择:");
scanf ("%d", &choice);
switch (choice)
{
case 0:
writeData ();
freeAll ();
exit (0);
case 1:
record ();
break;
case 2:
displayAll ();
break;
case 3:
query_by_num ();
break;
case 4:
del ();
break;
case 5:
change ();
break;
default:
printf ("\n无效选项!");
break;
}
}
while (choice != 0);
}
//录入学生信息
void record ()
{
struct student p0;
p0 = (struct student )malloc(LEN);
printf ("请输入学生的姓名:");
scanf ("%s",p0->name);
printf ("请输入学生的学号:");
scanf ("%ld",&p0->num);
printf ("请输入学生的性别:");
scanf ("%s",p0->sex);
printf ("请输入学生的年龄:");
scanf ("%d",&p0->age);
printf ("请输入学生的地址:");
scanf ("%s",p0->address);
printf ("请输入学生的电话:");
scanf ("%lf",&p0->tele_num);
printf ("请输入学生的爱好:");
scanf ("%s",p0->aihao);
insert (p0);
printf ("该学生的信息为:\n");
printf ("-------------------------------------------------------------------------------\n");
printf ("姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
display (p0);
}
void insert (struct student stu)
{
struct student p0, p1, p2;
p1 = head;
p0 = stu;
if (head == NULL)
{
head = p0;
p0->next = NULL;
}
else
{
while ((p0->num > p1->num)&&(p1->next != NULL))
{
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 = NULL;
}
}
TOTAL_NUM++;
}
void display (struct student p)
{
printf ("%s\t%ld\t%d\t%s\t%s\t\t%0f\t%s\n", p->name, p->num, p->age, p->sex, p->address, p->tele_num, p->aihao);
}
//浏览学生信息
void displayAll()
{
struct student p;
printf("学生总数:%d\n", TOTAL_NUM);
p = head;
if (head != NULL)
{
printf("\n姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
printf("-------------------------------------------------------------------------------\n");
do
{
display(p);
p = p->next;
}
while(p != NULL);
}
printf ("\n");
}
//按学号查询学生信息
void query_by_num ()
{
int num;
struct student p1;
printf("请输入学生的学号:");
scanf("%ld", &num);
if(head==NULL)
{
printf("无学生记录!\n");
return;
}
p1 = head;
while (num!=p1->num && p1->next!=NULL)
p1 = p1->next;
if (num == p1->num)
{
printf ("姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
printf ("-------------------------------------------------------------------------------\n");
display (p1);
}
else
printf ("没有该学生记录,请核对!");
}
//写入文件
void writeData ()
{
FILE fp;//文件指针
struct student p;
fp = fopen("1txt", "w");
if (!fp)
{
printf("文件打开错误!");
return;
}
fprintf(fp,"%d\n", TOTAL_NUM);
for(p = head; p!= NULL; p= p->next)
{
fprintf(fp,"%s\t%ld\t%s\t%d\t%s\t%0f\t%s\n", p->name, p->num, p->sex, p->age, p->address, p->tele_num, p->aihao);
}
fclose (fp);
}
void freeAll ()
{
struct student p1, p2;
p1 = p2=head;
while(p1)
{
p2=p1->next;
free (p1);
p1 = p2;
}
}
//读取文件
void readData ()
{
FILE fp;//文件指针
struct student p1, p2;
fp = fopen("1txt", "r");
if (!fp)
{
printf("文件打开错误!");
return;
}
fscanf(fp,"%d\n", &TOTAL_NUM);
head = p1 = p2 = (struct student )malloc(LEN);
fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n", p1->name, &p1->num, p1->sex, &p1->age, p1->address, &p1->tele_num, p1->aihao);
while(!feof(fp))
{
p1 = (struct student )malloc(LEN);
fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n", p1->name, &p1->num, p1->sex, &p1->age, p1->address, &p1->tele_num, p1->aihao);
p2->next = p1;
p2 = p1;
}
p2->next = NULL;
fclose(fp);
}
//删除学生信息
void del ()
{
struct student p1, p2;
long int num;
if (head == NULL)
{
printf("无学生记录!\n");
return;
}
printf("请输入您要删除的学生的学号:");
scanf("%ld", &num);
p1 = head;
while (num != p1->num && p1->next != NULL)
{
p2 = p1;
p1 = p1->next;
}
if(num == p1->num)
{
if(p1 == head)
head = p1->next;
else p2->next = p1->next;
free(p1);
TOTAL_NUM--;
}
else
printf("没有该学生记录,请核对!\n");
}
//修改学生信息
void change ()
{
struct student p1, p2;
long int num;
if (head == NULL)
{
printf ("无学生记录!\n");
return;
}
printf ("请输入您要修改的学生的学号:");
scanf ("%ld", &num);
p1 = head;
while (num != p1->num && p1->next != NULL)
{
p2 = p1;
p1 = p1->next;
}
if(num == p1->num)
devise (p1);
else
printf("没有该学生记录,请核对!\n");
}
void devise (struct student p)
{
int choice;
choice = -1;
do
{
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");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice)
{
case 0:
return;
case 1:
printf("请输入新姓名:");
scanf("%s", p->name);
break;
case 2:
printf("请输入新学号:");
scanf("%d", &p->num);
break;
case 3:
printf("请输入新性别:");
scanf("%s", p->sex);
break;
case 4:
printf("请输入新年龄:");
scanf("%s", &p->age);
break;
case 5:
printf("请输入新地址:");
scanf("%s", p->address);
break;
case 6:
printf("请输入新电话:");
scanf("%lf", &p->tele_num);
break;
case 7:
printf("请输入新爱好:");
scanf("%s", p->aihao);
break;
default:
printf("\n无效选项!");
break;
}
}
while(choice != 0);
}
给你一个看看
#include<stdioh>
#include <timeh>
#include<conioh> /清屏/
#include <stdlibh> /显示目录/
#include<stringh>
#define MAX 80
void input(); /输入数据函数/
void sort();/排序数据函数/
void sort1();
void sort2();
void sort3();
void display();/显示数据函数/
void display1();
void insert(); /插入数据函数/
void del(); /删除数据函数/
void average(); /平均值函数/
void find();/查找数据函数/
void find1();
void find2();
void save(); /保存数据函数/
void read(); /读出数据函数/
void del_file(); /删除文件函数/
void modify(); /修改文件函数/
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],p;
main()/主函数/
{
int as;
char ch;
do{
start: printf("\n\n\n\t\t\t欢迎使用学生成绩管理系统\n");
printf("\n\n\n\n\n\n\t\t按任意键继续");
ch=getch();
}
while(!ch);
system("cls");
/一下为功能选择模块/
do
{
printf("\n\t\t\t\t1录入学员信息\n\t\t\t\t2显示学员总成绩信息\n\t\t\t\t3对总成绩排序\n\t\t\t\t4显示学员单科成绩排序\n\t\t\t\t5添加学员信息\n\t\t\t\t6删除学员信息\n\t\t\t\t7修改学员信息\n\t\t\t\t8查询学员信息\n\t\t\t\t9从文件读入学员信息\n\t\t\t\t10删除文件中学员信息\n\t\t\t\t11保存学员信息\n\t\t\t\t12退出\n");
printf("\t\t\t\t选择功能选项(输入所选功能前的数字):");
fflush(stdin);
/可用可不用,用于清除缓存防止下次用scanf输入是出现错误/
scanf("%d",&as);
switch(as)
{
case 1:system("cls");
input();
break;
case 2:system("cls");
display();
break;
case 3:system("cls");
sort();
break;
case 4:system("cls");
display1();
break;
case 5:system("cls");
insert();
break;
case 6:system("cls");
del();
break;
case 7:system("cls");
modify();
break;
case 8:system("cls");
find();
break;
case 9:system("cls");
read();
break;
case 10:system("cls");
del_file();
break;
case 11:system("cls");
save();
break;
case 12:system("exit");
exit(0);
default:system("cls");
goto start;
}
}while(1);/while(1),1表示真,所以while(1)表示永远循环下去,一般在while(1)的循环体内都有break 或者return 跳出循环/
/至此功能选择结束/
}
void input()/原始数据录入模块/
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1录入学员信息\n输入第%d个学员的信息\n",i+1);
printf("\n输入学生编号:");
scanf("%d",&stu[i]no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[i]name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[i]sex);
printf("\n输入学员成绩1:");
scanf("%f",&stu[i]score1);
printf("\n输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[i]score2);
printf("\n输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[i]score3);
printf("\n\n");
i++;
now_no=i;
printf("是否继续输入(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
}
void sort()/排序数据函数/
{
struct student temp;
int i,j;
average();
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1]ave<stu[j]ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
printf("排序以完成进入功能2可进行显示\n");
system("pause");
system("cls");
}
void sort1()/排序数据函数/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1]score1<stu[j]score1)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void sort2()/排序数据函数/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1]score2<stu[j]score2)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void sort3()/排序数据函数/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1]score3<stu[j]score3)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void display()/显示数据函数/
{
int i;
char as;
average();
do
{
printf("\t\t\t班级学员信息列表\n");
printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");
for(i=0;i<now_no&&stu[i]name[0];i++)
printf("\t%d\t%s\t%s\t%2f\t%2f\t%2f\t%2f\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score1,stu[i]score2,stu[i]score3,stu[i]ave);
printf("\t\t按任意键返回主菜单");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void display1()/显示数据函数/
{
int i;
char as;
do
{
printf("\t\t\t班级学员score1成绩排序\n");
printf("\t编号\t姓名\t性别\t成绩1\n");
sort1();
for(i=0;i<now_no&&stu[i]name[0];i++)
printf("\t%d\t%s\t%s\t%2f\t\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score1);
printf("\t\t\t班级学员score2成绩排序\n");
printf("\t编号\t姓名\t性别\t成绩2\n");
sort2();
for(i=0;i<now_no&&stu[i]name[0];i++)
printf("\t%d\t%s\t%s\t%2f\t\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score2);
printf("\t\t\t班级学员score3成绩排序\n");
printf("\t编号\t姓名\t性别\t成绩3\n");
sort3();
for(i=0;i<now_no&&stu[i]name[0];i++)
printf("\t%d\t%s\t%s\t%2f\t\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score3);
printf("\t\t按任意键返回主菜单");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void insert()/插入数据函数/
{
char ch;
do
{
printf("\n\t\t输入新插入学员队信息\n");
printf("\n输入学生编号:");
scanf("%d",&stu[now_no]no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[now_no]name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[now_no]sex);
printf("\n输入学员成绩1:");
fflush(stdin);
scanf("%f",&stu[now_no]score1);
printf("\n输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[now_no]score2);
printf("\n输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[now_no]score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否继续输入(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
}
void del()/删除数据函数/
{
int inum,i;
printf("输入要删除学员的编号:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i<now_no;i++)
{
if(stu[i]no==inum)
{
if(i==now_no)now_no-=1;
else
{
stu[i]=stu[now_no-1];
now_no-=1;
}
sort();
break;
}
}
system("cls");
}
void save()/保存数据函数/
{
FILE fp;
int i;
char filepath[20];
printf("输入要保存的文件路径:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失败!");
exit(0);
}
for(i=0;i<now_no;i++)
{
stu[i]sum=stu[i]score1+stu[i]score2+stu[i]score3;
stu[i]ave=stu[i]sum/3;
fprintf(fp,"\t%d\t%s\t%s\t%2f\t%2f\t%2f\t%2f\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score1,stu[i]score2,stu[i]score3,stu[i]ave);
}
fclose(fp);
printf("学生信息已保存在%s中!\n",filepath);
system("pause");
system("cls");
}
void find()/查询函数/
{
int i;
char str[20],as;
do
{
printf("输入要查询的学生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i]name,str))
{
printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");
printf("\t%d\t%s\t%s\t%2f\t%2f\t%2f\t%2f\n",stu[i]no,stu[i]name,stu[i]sex,stu[i]score1,stu[i]score2,stu[i]score3,stu[i]ave);
}
printf("\t\t按任意键返回主菜单");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void average()/求平均数/
{
int i;
for(i=0;i<now_no;i++)
{
stu[i]sum=stu[i]score1+stu[i]score2+stu[i]score3;
stu[i]ave=stu[i]sum/3;
}
}
void modify()/修改数据函数/
{
int i;
char str[20];
printf("输入要修改的学生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
{
if(!strcmp(stu[i]name,str))
{
system("cls");
printf("\n\t\t输入新插入学员队信息\n");
printf("\n输入学生编号:");
fflush(stdin);
scanf("%d",&stu[i]no);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[i]sex);
printf("\n输入学员成绩1:");
fflush(stdin);
scanf("%f",&stu[i]score1);
printf("\n输入学员成绩2:");
fflush(stdin);
scanf("%f",&stu[i]score2);
printf("\n输入学员成绩3:");
fflush(stdin);
scanf("%f",&stu[i]score3);
printf("\n\n");
sort();
break;
}
}
system("cls");
}
void read()
{
FILE fp;
int i;
char filepath[20];
printf("输入要读入的文件路径:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
system("pause");
exit(0);
}
now_no=0;
for(i=0;i<MAX&&!feof(fp);i++)
{
fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i]no,stu[i]name,stu[i]sex,&stu[i]score1,&stu[i]score2,&stu[i]score3,&stu[i]ave);
now_no++;
}
fclose(fp);
printf("保存的在文件%s中的所有信息已经读入!\n",filepath);
system("pause"); /按任意键继续/
system("cls");
}
void del_file()
{
FILE fp;
char filepath[20];
printf("输入要删除的文件路径:");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,"w");
fclose(fp);
printf("保存的在文件%s中的所有信息已经删除!\n",filepath);
system("pause");
system("cls");
}
#includenbsp;“stdioh“#definenbsp;SIZEnbsp;50intnbsp;sum=0;staticnbsp;charnbsp;str[]={“C“,“Math“,“English“};structnbsp;studentnbsp;nbsp;{nbsp;intnbsp;n;nbsp;nbsp;nbsp;nbsp;longnbsp;num;nbsp;nbsp;nbsp;nbsp;charnbsp;name[10];nbsp;nbsp;nbsp;nbsp;intnbsp;age;nbsp;nbsp;nbsp;nbsp;charnbsp;addr[10];nbsp;nbsp;nbsp;nbsp;intnbsp;score[3];nbsp;nbsp;nbsp;nbsp;floatnbsp;avr;nbsp;nbsp;}nbsp;stu[SIZE];/nbsp;1--Inputnbsp;/voidnbsp;fin(){nbsp;intnbsp;i,j,s;charnbsp;f;nbsp;nbsp;FILEnbsp;fp;nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Warring!nbsp;Inputnbsp;(nbsp;y/nnbsp;)nbsp;:nbsp;777“);nbsp;nbsp;f=getchar();f=getchar();nbsp;nbsp;if(f!=‘y‘)nbsp;nbsp;nbsp;nbsp;return;nbsp;nbsp;fp=fopen(“fstu“,“wb“);nbsp;nbsp;for(i=0;iamp;lt;SIZE;i++)nbsp;nbsp;nbsp;nbsp;{nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;i=%dnbsp;Inputnbsp;Nonbsp;(i=-1,return)nbsp;i=nbsp;“,i+1);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;scanf(“%d“,amp;j);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;ifnbsp;(j==-1)nbsp;{nbsp;printf(“
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Pressnbsp;anynbsp;keynbsp;return!nbsp;nbsp;nbsp;
“,j);nbsp;nbsp;nbsp;fclose(fp);getch();return;nbsp;}nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;elsenbsp;{nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;num,name,age,addrnbsp;:nbsp;“);nbsp;nbsp;nbsp;stu[i]n=i+1;nbsp;nbsp;nbsp;scanf(“%ld%s%d%s“,amp;stu[i]num,stu[i]name,amp;stu[i]age,stu[i]addr);nbsp;nbsp;nbsp;s=0;nbsp;nbsp;nbsp;for(j=0;jamp;lt;3;j++)nbsp;nbsp;nbsp;nbsp;{nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;%-7snbsp;scorenbsp;:nbsp;“,str[j]);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;scanf(“%d“,amp;stu[i]score[j]);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;if(stu[i]score[j]amp;gt;100)nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;{nbsp;j--;continue;}nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;s+=stu[i]score[j];nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;nbsp;stu[i]avr=s/30;nbsp;nbsp;nbsp;fwrite(amp;stu[i],sizeof(structnbsp;student),1,fp);nbsp;}nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;fclose(fp);}/nbsp;2--Findnbsp;/voidnbsp;ffind(){nbsp;intnbsp;i,j;nbsp;nbsp;FILEnbsp;fp;nbsp;nbsp;fp=fopen(“fstu“,“rb“);nbsp;nbsp;for(i=0;fread(amp;stu[i],sizeof(structnbsp;student),1,fp)!=0;i++);nbsp;nbsp;sum=i;nbsp;nbsp;rewind(fp);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Findnbsp;studentnbsp;datanbsp;nbsp;nbsp;
“);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Inputnbsp;n=1nbsp;--nbsp;%dnbsp;:nbsp;“,sum);nbsp;nbsp;scanf(“%d“,amp;j);nbsp;nbsp;fseek(fp,(j-1)sizeof(structnbsp;student),0);nbsp;nbsp;printf(“
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Displaynbsp;studentnbsp;%dnbsp;datanbsp;:nbsp;
“,j);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;
“);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Nonbsp;Numnbsp;nbsp;nbsp;nbsp;Namenbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Agenbsp;Addrnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Cnbsp;nbsp;Mathnbsp;Ennbsp;Aver
“);nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;-----------------------------------------------------
“);nbsp;nbsp;fread(amp;stu[i],sizeof(structnbsp;student),1,fp);nbsp;nbsp;printf(“%12d%7
挺好的一个题目啊
但我可不愿意帮人写作业
网上很多类似的,你可以参考下:
#include <stdioh>
#include <stringh> struct student {
char name[30];
float math;
float chinese;
float english;
float average;
};
int MenuChoice(void);
int EnterAccount(void);
void Enter(struct student fst);
void Amend(struct student src);
void Delete(struct student next);
void Print(struct student out);
main()
{
struct student one[100] = {0}, look = one;
int menu, t;
while ((menu = MenuChoice()) != 0)
if (menu >= 1 && menu <= 4 && (t = EnterAccount())) {
look = one + t;
switch (menu) {
case 1:
Enter(look);
break;
case 2:
if (strcmp(look->name, ""))
printf("学号:%d\n姓名: %s\n语文成绩: %1f\n数学成绩:%1f\n英语成绩: %f\n平均"成绩:%1f\n",
t, look->name, look->chinese, look->math, look->english, look->average);
else
printf("对不起,该学号不存在!\n");
break;
case 3:
Amend(look);
break;
case 4:
Delete(look);
break;
}
}
else if (menu == 5)
Print(one);
else
printf("错误的请求!\n");
return 0;
}
int MenuChoice(void)
{
int choice;
printf("请选择:\n"
"1 - 新建学生信息\n"
"2 - 查找学生信息\n"
"3 - 修改学生信息\n"
"4 - 删除学生信息\n"
"5 - 打印学生信息\n"
"0 - 退出\n");
scanf("%d", &choice);
return choice;
}
int EnterAccount(void)
{
int ret;
printf("请输入学号:\n");
scanf("%d", &ret);
if (ret >= 1 && ret <= 100)
return ret -1;
return 0;
}
void Enter(struct student fst)
{
printf("请输入学生姓名、语文成绩、数学成绩、英语成绩和平均成绩\n");
scanf("%s%f%f%f%f", fst->name, &fst->chinese, &fst->math, &fst->english, &fst->average);
}
void Amend(struct student src)
{
int t;
printf("请选择:\n"
"1 - 修改学生姓名\n"
"2 - 修改学生语文成绩\n"
"3 - 修改学生数学成绩\n"
"4 - 修改学生英语成绩\n"
"5 - 修改学生平均成绩\n");
scanf("%d", &t);
switch (t) {
case 1:
printf("请输入学生的新名字\n");
scanf("%s", src->name);
break;
case 2:
printf("请输入学生新的语文成绩\n");
scanf("%f", &src->chinese);
break;
case 3:
printf("请输入学生新的数学成绩\n");
scanf("%f", &src->math);
break;
case 4:
printf("请输入学生新的英语成绩\n");
scanf("%f", &src->english);
break;
case 5:
printf("请输入学生新的平均成绩\n");
scanf("%f", &src->average);
break;
}
}
void Delete(struct student next)
{
strcpy(next->name, "");
next->math = next->english = next->chinese = next->average = 00;
}
void Print(struct student out)
{
struct student up;
for (up = out; out < &up[100]; out++)
if (strcmp(out->name, ""))
printf("学号:%d\n姓名: %s\n语文成绩: %1f\n数学成绩:%1f\n英语成绩: %1f\n平均成绩:%1f\n",
out-up + 1, out->name, out->chinese, out->math, out->english, out->average);
}
以上就是关于写c语言学生信息管理系统 求前辈指点一二 大恩不言谢 没有赏金了全部的内容,包括:写c语言学生信息管理系统 求前辈指点一二 大恩不言谢 没有赏金了、c语言编写学生信息管理系统、C语言程序设计 学生信息管理系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)