Ⅰ c語言編寫學生信息管理系統
稍微用了點c++(你給的分太低)
如下圖所示:
studf.txt
操作日誌文件:
Ⅱ C語言學生信息管理系統 怎麼做啊高手幫忙啊
跟別人問重復了,你們難道是一個老師教的啊?
http://..com/question/81638424.html
網上很多類似的,你參考下:
#include <stdio.h>
#include <string.h> 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 = 0.0;
}
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);
}
http://www.programfan.com/blog/article.asp?id=18592
Ⅲ 用C語言編寫學生信息管理系統,十萬火急!
可以參考
#include "stdio.h" /*I/O函數*/
#include "stdlib.h" /*其它說明*/
#include "string.h" /*字元串函數*/
#include "conio.h" /*屏幕操作函數*/
#include "mem.h" /*內存操作函數*/
#include "ctype.h" /*字元操作函數*/
#include "alloc.h" /*動態地址分配函數*/
struct score
{
int mingci;
char xuehao[8];
char mingzi[20];
float score[6];
}data,info[1000];
int i,j,k=0;
char temp[20],ch;
FILE *fp,*fp1;
void shuru()
{
if((fp=fopen("s_score.txt","ab+"))==NULL)
{
printf("cannot open this file.\n");
getch();exit(0);
}
for(i=0;i<=1000;i++)
{
printf("\nPlease shuru xuehao:");
gets(data.xuehao);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please shuru wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please shur huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
fwrite(&data,sizeof(data),1,fp);
printf("another?y/n");
ch=getch();
if(ch=='n'||ch=='N')
break;
} fclose(fp);
}
void xianshi()
{
float s;int n;
if((fp=fopen("s_score.txt","rb+"))==NULL)
{
printf("Cannot reading this file.\n");
exit(0);
}
for(i=0;i<=1000;i++)
{
if((fread(&info[i],sizeof(info[i]),1,fp))!=1)
break;
}
printf("\nxuehao mingzi yuwen shuxue yingyu wuli huauxue zhongfen\n");
for(j=0,k=1;j<i;j++,k++)
{
info[j].mingci=k;
printf("%6s %8s %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f\n",info[j].xuehao,info[j].mingzi,info[j].score[0],info[j].score[1],info[j].score[2],info[j].score[3],info[j].score[4],
info[j].score[5]);
}
getch();
fclose(fp);
}
void xiugai()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("Cannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xiugai xuehao:");
scanf("%d",&i); getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{
printf("xuehao:%s\nmingzi:%s\n",data.xuehao,data.mingzi);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please input wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please input huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
} fwrite(&data,sizeof(data),1,fp1);
}
fseek(fp,0L,0);
fseek(fp1,0L,0);
while((fread(&data,sizeof(data),1,fp1))==1)
{
fwrite(&data,sizeof(data),1,fp);
}
fclose(fp);
fclose(fp1);
}
void chazhao()
{
if((fp=fopen("s_score.txt","rb"))==NULL)
{
printf("\nCannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xuehao chakan:");
scanf("%d",&i);
while(fread(&data,sizeof(data),1,fp)==1)
{
j=atoi(data.xuehao);
if(i==j)
{
printf("xuehao:%s mingzi:%s\nyuwen:%f\n shuxue:%f\n yingyu:%f\n wuli:%f\n huaxue:%f\n ",data.xuehao,data.mingzi,data.score[0],data.score[1],data.score[2],data.score[3],data.score[4],data.score[5]);
}getch();
}
}
void shanchu()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("\nopen score.txt was failed!");
getch();
exit(0);
}
printf("\nPlease input ID which you want to del:");
scanf("%d",&i);getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{
printf("Anykey will delet it.\n");
getch();
continue;
}
fwrite(&data,sizeof(data),1,fp1);
}
fclose(fp);
fclose(fp1);
remove("s_score.txt");
rename("temp.txt","s_score.txt");
printf("Data delet was succesful!\n");
printf("Anykey will return to main.");
getch();
}
main()
{
while(1)
{
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移動游標*/
textcolor(YELLOW); /*設置文本顯示顏色為黃色*/
textbackground(BLUE); /*設置背景顏色為藍色*/
window(1,1,99,99); /* 製作顯示菜單的窗口,大小根據菜單條數設計*/
clrscr();
printf("*************welcome to use student manage******************\n");
printf("*************************menu********************************\n");
printf("* ========================================================= * \n");
printf("* 1>shuru 2>xiugai * \n");
printf("* 3>shanchu 4>chazhao * \n");
printf("* 5>xianshi 6>exit * \n");
printf("* * \n");
printf("* --------------------------------------------------------- * \n");
printf(" Please input which you want(1-6):");
ch=getch();
switch(ch)
{
case '1':shuru();break;
case '2':xiugai(); break;
case '3':shanchu(); break;
case '4':chazhao(); break;
case '5':xianshi(); break;
case '6':exit(0);
default: continue;
}
}
}
Ⅳ C語言:學生信息管理系統
先輸一半,全部的提交不了
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct scorenode)
#define DEBUG
#include <string.h>
struct scorenode
{int number;/*學號*/
char name[10];/*姓名*/
float yuwen;/*語文成績*/
float yingyu;/*英語成績*/
float shuxue;/*數學成績 */
struct scorenode *next;
};
typedef struct scorenode score;
int n,k;/*n,k為全局變數,本程序中的函數均可以使用它*/
/*==============================================================================================*/
score *creat2311(void)
/*函數creat2311,功能:創建鏈表,此函數帶回一個指向鏈表頭的指針*/
{
score*head;
score *p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];
n=0;
p1=p2=p3=(score *)malloc(LEN);head=p3; /*開辟一個新單元*/
printf("請輸入學生資料,輸0退出!\n");
repeat1: printf("請輸入學生學號(學號應大於0):");/*輸入學號,學號應大於0*/
scanf("%d",&p1->number);
while(p1->number<0)
{getchar();
printf("輸入錯誤,請重新輸入學生學號:");
scanf("%d",&p1->number);}
/*輸入學號為字元或小於0時,程序報錯,提示重新輸入學號*/
if(p1->number==0)
goto end;/*當輸入的學號為0時,轉到末尾,結束創建鏈表*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("學號重復,請重輸!\n");
goto repeat1;
/*當輸入的學號已經存在,程序報錯,返回前面重新輸入*/
}
}
}
}
printf("請輸入學生姓名:");
scanf("%s",&p1->name);/*輸入學生姓名*/
printf("請輸入語文成績(0~100):");/*輸入語文成績,成績應在0-100*/
scanf("%f",&p1->yuwen);
while(p1->yuwen<0||p1->yuwen>100)
{getchar();
printf("輸入錯誤,請重新輸入語文成績");/*輸入錯誤,重新輸入語文成績直到正確為止*/
scanf("%f",&p1->yuwen);}
printf("請輸入英語成績(0~100):");/*輸入英語成績,成績應在0-100*/
scanf("%f",&p1->yingyu);
while(p1->yingyu<0||p1->yingyu>100)
{getchar();
printf("輸入錯誤,請重新輸入英語成績");/*輸入錯誤,重新輸入英語成績直到正確為止*/
scanf("%f",&p1->yingyu);}
printf("請輸入數學成績(0~100):");/*輸入數學成績,成績應在0-100*/
scanf("%f",&p1->shuxue);
while(p1->shuxue<0||p1->shuxue>100)
{getchar();
printf("輸入錯誤,請重新輸入數學成績");
scanf("%f",&p1->shuxue);}/*輸入錯誤,重新輸入數學成績直到正確為止*/
head=NULL;
while(p1->number!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(score *)malloc(LEN);
printf("請輸入學生資料,輸0退出!\n");
repeat2:printf("請輸入學生學號(學號應大於0):");
scanf("%d",&p1->number);/*輸入學號,學號應大於0*/
while(p1->number<0)
{getchar();
printf("輸入錯誤,請重新輸入學生學號:");
scanf("%d",&p1->number);}
/*輸入學號為字元或小於0時,程序報錯,提示重新輸入學號*/
if(p1->number==0)
goto end;/*當輸入的學號為0時,轉到末尾,結束創建鏈表*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("學號重復,請重輸!\n");
goto repeat2;
/*當輸入的學號已經存在,程序報錯,返回前面重新輸入*/
}
}
}
}
printf("請輸入學生姓名:");
scanf("%s",&p1->name);/*輸入學生姓名*/
printf("請輸入語文成績(0~100):");
scanf("%f",&p1->yuwen);/*輸入語文成績,成績應在0-100*/
while(p1->yuwen<0||p1->yuwen>100)
{getchar();
printf("輸入錯誤,請重新輸入語文成績");
scanf("%f",&p1->yuwen);}/*輸入錯誤,重新輸入語文成績直到正確為止*/
printf("請輸入英語成績(0~100):");
scanf("%f",&p1->yingyu);/*輸入英語成績,成績應在0-100*/
while(p1->yingyu<0||p1->yingyu>100)
{getchar();
printf("輸入錯誤,請重新輸入英語成績");
scanf("%f",&p1->yingyu);}/*輸入錯誤,重新輸入英語成績直到正確為止*/
printf("請輸入數學成績(0~100):");
scanf("%f",&p1->shuxue);/*輸入數學成績,成績應在0-100*/
while(p1->shuxue<0||p1->shuxue>100)
{getchar();
printf("輸入錯誤,請重新輸入數學成績");
scanf("%f",&p1->shuxue);}/*輸入錯誤,重新輸入數學成績直到正確為止*/
}
end: p1=head;
p3=p1;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;
if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交換前後結點中的學號值,使得學號大者移到後面的結點中*/
strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交換前後結點中的姓名,使之與學號相匹配*/
fen=max->yuwen;
max->yuwen=p1->yuwen;
p1->yuwen=fen;
/*交換前後結點中的語文成績,使之與學號相匹配*/
fen=max->yingyu;
max->yingyu=p1->yingyu;
p1->yingyu=fen;
/*交換前後結點中的英語成績,使之與學號相匹配*/
fen=max->shuxue;
max->shuxue=p1->shuxue;
p1->shuxue=fen;
/*交換前後結點中的數學成績,使之與學號相匹配*/
}
}
max=head;p1=head;/*重新使max,p指向鏈表頭*/
}
p2->next=NULL;/*鏈表結尾*/
printf("輸入的學生數為:%d個!\n",n);
return(head);
}
/*==============================================================================================*/
/*==============================================================================================*/
score *load2311(score *head)
/*函數load2311,功能:從文件讀入學生記錄*/
{ score *p1,*p2;
int m=0;
char filepn[10];
FILE *fp;
printf("請輸入文件路徑及文件名:");
scanf("%s",filepn);/*輸入文件路徑及名稱*/
if((fp=fopen(filepn,"r+"))==NULL)
{
printf("不能打開文件!\n");
return 0;
}
fscanf(fp," 學生信息管理系統 \n");
fscanf(fp,"作者:張國健 班級: 測控092 學號:200902051072 \n");
fscanf(fp,"-----------------------------------------\n");
fscanf(fp,"|學號\t|姓名\t|語文\t|英語\t|數學\t|\n");
fscanf(fp,"-----------------------------------------\n");/*讀入表格域*/
printf(" 學生信息管理系統 \n");
printf(" 作者:張國健 班級: 測控092 學號:200902051072 \n");
printf("-----------------------------------------\n");
printf("|學號\t|姓名\t|語文\t|英語\t|數學\t|\n");
printf("-----------------------------------------\n");/*列印表格域*/
m=m+1;
if(m==1)
{
p1=(score *)malloc(LEN); /*開辟一個新單元*/
fscanf(fp,"%d%s%f%f%f",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);
printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
/*文件讀入與顯示*/
head=NULL;
do
{
n=n+1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(score *)malloc(LEN); /*開辟一個新單元*/
fscanf(fp,"%d%s%f%f%f\n",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);
printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
/*文件讀入與顯示*/
}while(!feof(fp));
p2->next=p1;
p1->next=NULL;
n=n+1;
}printf("-----------------------------------------\n");/*表格下線*/
fclose(fp);/*結束讀入,關閉文件*/
return (head);
}
/*==============================================================================================*/
/*==============================================================================================*/
score *add2311(score *head,score *stu)
/*函數add2311,功能:追加學生資料,並且將所有學生資料按學號排序*/
{
score *p0,*p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];
p3=stu=(score *)malloc(LEN);/*開辟一個新單元*/
printf("\n輸入要增加的學生的資料!");
repeat4: printf("請輸入學生學號(學號應大於0):");
scanf("%d",&stu->number);
/*輸入學號,學號應大於0*/
while(stu->number<0)
{getchar();
printf("輸入錯誤,請重新輸入學生學號:");
scanf("%d",&stu->number);}/*輸入錯誤,重新輸入學號*/
/******************************************************/
if(stu->number==0)
goto end2;/*當輸入的學號為0時,轉到末尾,結束追加*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(stu->number!=p3->number)
p3=p3->next;
else
{printf("學號重復,請重輸!\n");
goto repeat4;
/*當輸入的學號已經存在,程序報錯,返回前面重新輸入*/
}
}
}
}
/******************************************************/
printf("輸入學生姓名:");
scanf("%s",stu->name); /*輸入學生姓名*/
printf("請輸入語文成績(0~100):");
scanf("%f",&stu->yuwen); /*輸入語文成績,成績應在0-100*/
while(stu->yuwen<0||stu->yuwen>100)
{getchar();
printf("輸入錯誤,請重新輸入語文成績");
scanf("%f",&stu->yuwen);} /*輸入錯誤,重新輸入語文成績直到正確為止*/
printf("請輸入英語成績(0~100):");
scanf("%f",&stu->yingyu);/*輸入英語成績,成績應在0-100*/
while(stu->yingyu<0||stu->yingyu>100)
{getchar();
printf("輸入錯誤,請重新輸入英語成績");
scanf("%f",&stu->yingyu);}/*輸入錯誤,重新輸入英語成績直到正確為止*/
printf("請輸入數學成績(0~100):");
scanf("%f",&stu->shuxue);/*輸入數學成績,成績應在0-100*/
while(stu->shuxue<0||stu->shuxue>100)
{getchar();
printf("輸入錯誤,請重新輸入數學成績");
scanf("%f",&stu->shuxue);}/*輸入錯誤,重新輸入數學成績直到正確為止*/
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0->next=NULL;}/*當原來鏈表為空時,從首結點開始存放資料*/
else/*原來鏈表不為空*/
{
if(p1->next==NULL)/*找到原來鏈表的末尾*/
{
p1->next=p0;
p0->next=NULL;/*將它與新開單元相連接*/
}
else
{
while(p1->next!=NULL)/*還沒找到末尾,繼續找*/
{
p2=p1;p1=p1->next;
}
p1->next=p0;
p0->next=NULL;
}
}
n=n+1;
Ⅳ 跪求C語言學生信息管理系統!!!!!
你到網路網頁上一搜,到處都是,我以前就這么做的
Ⅵ C語言簡單的學生信息管理系統
這個最簡單了,適合初學者
#include "string.h"
#include "stdio.h"
#define N 30
int n=0;
/* 學生信息數據結構 */
struct student
{
char Sname[20];
char Snum[20];
char Sage[3];
char Sclass[10];
char Smayor[30];
}Stu[N];
/* 錄入函數實現 */
void ReadData()
{
printf("請輸入學生信息:\n姓名:");
scanf("%s",Stu[n].Sname);
printf("學號:");
scanf("%s",Stu[n].Snum);
printf("年齡:");
scanf("%s",Stu[n].Sage);
printf("班級:");
scanf("%s",Stu[n].Sclass);
printf("專業:");
scanf("%s",Stu[n].Smayor);
n++;
}
/* 顯示函數實現 */
void ShowData()
{
printf("姓名 學號 年齡 班級 專業\n");
for(int i=0;i<n;i++)
{
printf("%s %s %s",Stu[i].Sname,Stu[i].Snum,Stu[i].Sage);
printf(" %s %s\n",Stu[i].Sclass,Stu[i].Smayor);
}
}
/* 查找函數實現 */
void FindData()
{
char Stuname1[20];
printf("請輸入學生姓名:");
scanf("%s",Stuname1);
printf("\n");
for(int i=0;i<n;i++)
if(strcmp(Stu[i].Sname,Stuname1)==0)
{
printf("姓名:%s 學號:%s 年齡:%s ",Stu[i].Sname,Stu[i].Snum,Stu[i].Sage);
printf("班級:%s 專業:%s\n",Stu[i].Sclass,Stu[i].Smayor);
}
}
/* 刪除函數實現 */
void DeleData()
{
char Stuname2[20];
printf("請輸入學生姓名:");
scanf("%s",Stuname2);
printf("\n");
for(int i=0;i<n;i++)
if(strcmp(Stu[i].Sname,Stuname2)==0)
{
for(;i<n-1;i++)
for(int j=0;j<20;j++)
Stu[i].Sname[j]=Stu[i+1].Sname[j];
n--;
}
}
/* 入口函數實現 */
void main()
{
int option;
option=6;
printf("\n 學生信息管理系統 \n");
while(option!=5)
{
if(option!=5)
{
printf("\n\n 1.錄入 2.顯示 3.查找\n");
printf(" 4.刪除 5.退出 請選擇:");
scanf("%d",&option);
printf("\n");
switch(option)
{
case 1: ReadData();break;
case 2: ShowData();break;
case 3: FindData();break;
case 4: DeleData();break;
default: printf("數據輸入有誤!\n");break;
}//switch
}//if
}//while
}
Ⅶ c語言的學生信息管理系統,是大一學生, 水平不高,要最簡單的源代碼。包含輸入學生的基本信息,可增加
不用指針用什麼?
指針沒你想像的那麼可怕,事實上指針非常好用
這個就需要使用鏈表來做了
使用結構體做節點
而刪除的話我建議使用雙向鏈表會更簡單點
如果代碼不想自己寫的話
我可有償代勞
Ⅷ C語言學生信息管理系統
找到了一個非常類似的程序。
簡單的修改一下就完全滿足你的要求了。
已經編譯運行確認過~~~~~~~~~
http://www.cfans8.cn/article.asp?id=1034
Ⅸ 用C語言編寫學生信息管理系統,很急,非常急!
#include<stdio.h>
#include<string.h>
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int i;
struct student
{ char name[20];
char sex[10];
int age,num;
struct sco
{ int phy;
int maths;
int english;
int computer;
int vc;
}score;
}stu[1000];
void scan()
{ int u,xe;
i=0;
for(u=0;u<1000;u++)
{ strcpy(stu[u].name,"/0");
strcpy(stu[u].sex,"/0");
stu[u].num=0;
stu[u].age=0;
stu[u].score.phy=0;
stu[u].score.maths=0;
stu[u].score.english=0;
stu[u].score.computer=0;
stu[u].score.vc=0;
}
printf("依次輸入你要輸入的信息,先是名字,然後學號,性別,年齡,成績(5科),此系統最多科存1000名學生信息,剩餘1000\n");
do
{ printf("輸入學生名字\n");
scanf("%s",&stu[i].name);
printf("輸入學生學號\n");
scanf("%d",&stu[i].num);
printf("輸入學生性別\n");
while(scanf("%s",&stu[i].sex)&&strcmp(stu[i].sex,"boy")!=0&&strcmp(stu[i].sex,"girl")!=0)
printf("輸入錯誤,請再輸入");
printf("輸入學生年齡\n");
scanf("%d",&stu[i].age);
printf("輸入學生成績(5科)\n");
printf("物理:");
scanf("%d",&stu[i].score.phy);
printf("數學:");
scanf("%d",&stu[i].score.maths);
printf("電腦:");
scanf("%d",&stu[i].score.computer);
printf("英語:");
scanf("%d",&stu[i].score.english);
printf("VC:");
scanf("%d",&stu[i].score.vc);
printf("剩餘%d\n",999-i);
printf("0繼續輸入下一個學生信息\n1回到菜單\n");
i++;
if(i>=1000){printf("系統存儲空間已滿,無法繼續增加,抱歉!");break;}
while(scanf("%d",&xe)&&xe!=0&&xe!=1)
printf("輸入錯誤,請再輸入");
if(xe==0)printf("請繼續輸入\n");
}while(xe!=1);
}
void watch1()
{ if(i==0)printf("請先輸入學生信息\n");
while(i!=0)
{ int i2,j2,all[100],averge[100],g,a,za;
char change3[10];
for(i2=0;i2<i;i2++)
{ all[i2]=stu[i2].score.phy+stu[i2].score.computer+stu[i2].score.english+stu[i2].score.maths+stu[i2].score.vc;
averge[i2]=all[i2]/5;
}
for(i2=1;i2<i;i2++)
{ for(j2=1;j2<i;j2++)
{ if(all[j2-1]<all[j2])
{ a=stu[j2-1].age;stu[j2-1].age=stu[j2].age;stu[j2].age=a;
a=stu[j2-1].score.computer;stu[j2-1].score.computer=stu[j2].score.computer;stu[j2].score.computer=a;
a=stu[j2-1].score.english;stu[j2-1].score.english=stu[j2].score.english;stu[j2].score.english=a;
a=stu[j2-1].score.maths;stu[j2-1].score.maths=stu[j2].score.maths;stu[j2].score.maths=a;
a=stu[j2-1].score.phy;stu[j2-1].score.phy=stu[j2].score.phy;stu[j2].score.phy=a;
a=stu[j2-1].score.vc;stu[j2-1].score.vc=stu[j2].score.vc;stu[j2].score.vc=a;
a=all[j2-1];all[j2-1]=all[j2];all[j2]=a;
a=stu[j2-1].num;stu[j2-1].num=stu[j2].num;stu[j2].num=a;
a=averge[j2-1];averge[j2-1]=averge[j2];averge[j2]=a;
strcpy(change3,stu[j2-1].name);
strcpy(stu[j2-1].name,stu[j2].name);
strcpy(stu[j2].name,change3);
strcpy(change3,stu[j2-1].sex);
strcpy(stu[j2-1].sex,stu[j2].sex);
strcpy(stu[j2].sex,change3);
}
}
}
printf("學號 姓名 性別 年齡 物理 數學 英語 電腦 VC 總分 平均分 名次\n");
for(g=0;g<i;g++)
printf("%-6d%-10s%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d\n",stu[g].num,stu[g].name,stu[g].sex,stu[g].age,stu[g].score.phy,stu[g].score.maths,stu[g].score.english,stu[g].score.computer,stu[g].score.vc,all[g],averge[g],g+1);
printf("輸入0返回菜單");
while(scanf("%d",&za)&&za!=0)
printf("輸入錯誤,請再輸入");
if(za==0)break;
}
}
void watch2()
{ if(i==0)printf("請先輸入學生信息\n");
while(i!=0)
{ int max[5],min[5],j,g,i2,all[100],averge[100],za,j2,a,yy[5][2];char change3[20];
for(i2=0;i2<i;i2++)
{ all[i2]=stu[i2].score.phy+stu[i2].score.computer+stu[i2].score.english+stu[i2].score.maths+stu[i2].score.vc;
averge[i2]=all[i2]/5;
}
for(i2=0;i2<i;i2++)
{ for(j2=1;j2<i;j2++)
{ if(all[j2-1]<all[j2])
{ a=stu[j2-1].age;stu[j2-1].age=stu[j2].age;stu[j2].age=a;
a=stu[j2-1].score.computer;stu[j2-1].score.computer=stu[j2].score.computer;stu[j2].score.computer=a;
a=stu[j2-1].score.english;stu[j2-1].score.english=stu[j2].score.english;stu[j2].score.english=a;
a=stu[j2-1].score.maths;stu[j2-1].score.maths=stu[j2].score.maths;stu[j2].score.maths=a;
a=stu[j2-1].score.phy;stu[j2-1].score.phy=stu[j2].score.phy;stu[j2].score.phy=a;
a=stu[j2-1].score.vc;stu[j2-1].score.vc=stu[j2].score.vc;stu[j2].score.vc=a;
a=all[j2-1];all[j2-1]=all[j2];all[j2]=a;
a=stu[j2-1].num;stu[j2-1].num=stu[j2].num;stu[j2].num=a;
a=averge[j2-1];averge[j2-1]=averge[j2];averge[j2]=a;
strcpy(change3,stu[j2-1].name);
strcpy(stu[j2-1].name,stu[j2].name);
strcpy(stu[j2].name,change3);
strcpy(change3,stu[j2-1].sex);
strcpy(stu[j2-1].sex,stu[j2].sex);
strcpy(stu[j2].sex,change3);
}
}
}
printf("學號 姓名 性別 年齡 物理 數學 英語 電腦 VC 總分 平均分 名次\n");
for(i2=0;i2<i;i2++)
{ all[i2]=stu[i2].score.phy+stu[i2].score.computer+stu[i2].score.english+stu[i2].score.maths+stu[i2].score.vc;
averge[i2]=all[i2]/5;
}
for(g=0;g<i;g++)
printf("%-6d%-10s%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d\n",stu[g].num,stu[g].name,stu[g].sex,stu[g].age,stu[g].score.phy,stu[g].score.maths,stu[g].score.english,stu[g].score.computer,stu[g].score.vc,all[g],averge[g],g+1);
max[0]=0;min[0]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.phy>=max[0])
{ max[0]=stu[j].score.phy;yy[0][0]=j;}
if(stu[j].score.phy<=min[0])
{ min[0]=stu[j].score.phy;yy[0][1]=j;}
}
max[3]=0;min[3]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.computer>=max[3])
{ max[3]=stu[j].score.computer;yy[3][0]=j;}
if(stu[j].score.computer<=min[3])
{ min[3]=stu[j].score.computer;yy[3][1]=j;}
}
max[2]=0;min[2]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.english>=max[2])
{ max[2]=stu[j].score.english;yy[2][0]=j;}
if(stu[j].score.english<=min[2])
{ min[2]=stu[j].score.english;yy[2][1]=j;}
}
max[1]=0;min[1]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.maths>=max[1])
{ max[1]=stu[j].score.maths;yy[1][0]=j;}
if(stu[j].score.maths<=min[1])
{ min[1]=stu[j].score.maths;yy[1][1]=j;}
}
max[4]=0;min[4]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.vc>=max[4])
{ max[4]=stu[j].score.vc;yy[4][0]=j;}
if(stu[j].score.vc<=min[4])
{ min[4]=stu[j].score.vc;yy[4][1]=j;}
}
printf("物理最高分:%d %s最低分:%d %s\n數學最高分:%d %s最低分%d %s\n英語最高分:%d %s最低分:%d %s\n電腦最高分:%d %s最低分:%d %s\nV C最高分:%d %s最低分:%d %s\n",max[0],stu[yy[0][0]].name,min[0],stu[yy[0][1]].name,max[1],stu[yy[1][0]].name,min[1],stu[yy[1][1]].name,max[2],stu[yy[2][0]].name,min[2],stu[yy[2][1]].name,max[3],stu[yy[3][0]].name,min[3],stu[yy[3][1]].name,max[4],stu[yy[4][0]].name,min[4],stu[yy[4][1]].name);
printf("輸入0返回菜單");
while(scanf("%d",&za)&&za!=0)
printf("輸入錯誤,請再輸入");
if(za==0)break;
}
}
void fine()
{ if(i==0)printf("請先輸入學生信息\n");
while(i!=0)
{ printf("用學號查找請輸入0,用姓名查找請輸入1\n");
int i1,j1,num1,te=0,tc=0;char name1[20];
scanf("%d",&i1);
if(i1!=0&&i1!=1)
printf("輸入錯誤\n");
else if(i1==0)
{ printf("請輸入學生學號");
scanf("%d",&num1);
for(j1=0;j1<i;j1++)
if(num1==stu[j1].num)
{ printf("學號:%d姓名:%s性別:%s年齡:%d物理:%d數學:%d英語:%d電腦:%dVC:%d總分%d\n",stu[j1].num,stu[j1].name,stu[j1].sex,stu[j1].age,stu[j1].score.phy,stu[j1].score.maths,stu[j1].score.english,stu[j1].score.computer,stu[j1].score.vc,stu[j1].score.vc+stu[j1].score.computer+stu[j1].score.english+stu[j1].score.maths+stu[j1].score.phy);
te=1;
}
if(te!=1) printf("無此學生信息\n");
}
else if(i1==1)
{ printf("請輸入學生姓名");
scanf("%s",&name1);
for(j1=0;j1<i;j1++)
if(strcmp(name1,stu[j1].name)==0)
{ printf("學號:%d姓名:%s性別:%s年齡:%d物理:%d數學:%d英語:%d電腦:%dVC:%d總分%d\n",stu[j1].num,stu[j1].name,stu[j1].sex,stu[j1].age,stu[j1].score.phy,stu[j1].score.maths,stu[j1].score.english,stu[j1].score.computer,stu[j1].score.vc,stu[j1].score.vc+stu[j1].score.computer+stu[j1].score.english+stu[j1].score.maths+stu[j1].score.phy);
tc=1;
}
if(tc!=1) printf("無此學生信息\n");
}
printf("繼續查找請輸入1,回菜單請輸入0");
int qq;
while(scanf("%d",&qq)&&qq!=0&&qq!=1)
printf("輸入錯誤,請再輸入");
if(qq==1)continue;
if(qq==0)break;
}
}
void became()
{ if(i==0)printf("請先輸入學生信息\n");
while(i!=0)
{ printf("請輸入要修改的學生學號\n");
int num2,j3;
scanf("%d",&num2);
for(j3=0;j3<=i;j3++)
if(num2==stu[j3].num)
{ strcpy(stu[j3].name,"/0");
printf("重新輸入該學生所有數據,依次為學號、姓名、性別、年齡、物理、數學、英語、電腦、VC。\n");
printf("輸入學生名字\n");
scanf("%s",&stu[j3].name);
printf("輸入學生學號\n");
scanf("%d",&stu[j3].num);
printf("輸入學生性別\n");
while(scanf("%s",&stu[j3].sex)&&strcmp(stu[j3].sex,"boy")!=0&&strcmp(stu[j3].sex,"girl")!=0)
printf("輸入錯誤,請再輸入");
printf("輸入學生年齡\n");
scanf("%d",&stu[j3].age);
printf("輸入學生成績(5科)\n");
printf("物理:");
scanf("%d",&stu[j3].score.phy);
printf("數學:");
scanf("%d",&stu[j3].score.maths);
printf("電腦:");
scanf("%d",&stu[j3].score.computer);
printf("英語:");
scanf("%d",&stu[j3].score.english);
printf("VC:");
scanf("%d",&stu[j3].score.vc);
printf("修改成功");
}
else("未找到該學號學生請確定輸入無誤\n");
int za;
printf("輸入0返回菜單,輸入1繼續查找");
while(scanf("%d",&za)&&za!=0&&za!=1)
printf("輸入錯誤,請再輸入");
if(za==0)break;
if(za==1)continue;
}
}
void out()
{ if(i==0)printf("請先輸入學生信息\n");
while(i!=0)
{ printf("請輸入要刪除的學生的學號\n");
int num3,j4,i3,za;
scanf("%d",&num3);
for(j4=0;j4<=i;j4++)
if(num3==stu[j4].num)
{ for(i3=j4;i3<i;i3++)
{ stu[i3].num=stu[i3+1].num;
stu[i3].age=stu[i3+1].age;
strcpy(stu[i3].name,stu[i3+1].name);
strcpy(stu[i3].sex,stu[i3+1].sex);
stu[i3].score.computer=stu[i3+1].score.computer;
stu[i3].score.english=stu[i3+1].score.english;
stu[i3].score.maths=stu[i3+1].score.maths;
stu[i3].score.phy=stu[i3+1].score.phy;
stu[i3].score.vc=stu[i3+1].score.vc;
}
i--;
printf("修改成功\n");
}
else printf("未找到該學號學生請確定輸入無誤\n");
printf("輸入0返回菜單,輸入1繼續修改");
while(scanf("%d",&za)&&za!=0&&za!=1)
printf("輸入錯誤,請再輸入");
if(za==0)break;
if(za==1)continue;
}
}
void into()
{ for(;;)
{ if(i>1000){printf("系統存儲空間已滿,無法繼續增加,抱歉!\n");break;}
printf("輸入要增加學生信息,依次為學號、姓名、性別、年齡、物理、數學、英語、電腦、VC。\n");
i++;
printf("輸入學生名字\n");
scanf("%s",&stu[i-1].name);
printf("輸入學生學號\n");
scanf("%d",&stu[i-1].num);
printf("輸入學生性別\n");
while(scanf("%s",&stu[i-1].sex)&&strcmp(stu[i-1].sex,"boy")!=0&&strcmp(stu[i-1].sex,"girl")!=0)
printf("輸入錯誤,請再輸入");
printf("輸入學生年齡\n");
scanf("%d",&stu[i-1].age);
printf("輸入學生成績(5科)\n");
printf("物理:");
scanf("%d",&stu[i-1].score.phy);
printf("數學:");
scanf("%d",&stu[i-1].score.maths);
printf("電腦:");
scanf("%d",&stu[i-1].score.computer);
printf("英語:");
scanf("%d",&stu[i-1].score.english);
printf("VC:");
scanf("%d",&stu[i-1].score.vc);
printf("輸入成功,剩餘%d",1000-i);
if(i>=1000){printf("系統存儲空間已滿,無法繼續增加,抱歉!\n");break;}
int za;
printf("輸入0返回菜單,輸入1繼續增加");
while(scanf("%d",&za)&&za!=0&&za!=1)
printf("輸入錯誤,請再輸入");
if(za==0)break;
if(za==1)continue;
}
}
void main()
{ int a,wu=0;
FILE *fp;
fp=fopen("out.txt","rb+");
if(feof(fp)!=0)i=0;
while(feof(fp)==0)
{ fread(&i,sizeof(int),1,fp);
for(int m=0;m<i;m++)
fread(&stu[m],sizeof(struct student),1,fp);
}
fclose(fp);
do
{printf("********************主菜單********************\n");
printf(" 1.輸入和儲存學生信息(會刪除之前記錄)\n");
printf(" 2.查看學生信息(已排名)\n");
printf(" 3.學生成績統計\n");
printf(" 4.查找學生信息\n");
printf(" 5.修改學生信息\n");
printf(" 6.刪除學生信息\n");
printf(" 7.增加學生信息\n");
printf(" 8.退出\n");
printf("**********************************************\n");
printf("請輸入選擇項目序號:");
while(scanf("%d",&a)&&a!=0&&a!=1&&a!=2&&a!=3&&a!=4&&a!=5&&a!=6&&a!=7&&a!=8)
printf("輸入錯誤,請再輸入");
if(a==1)
{scan();}
if(a==2)
{watch1();}
if(a==3)
{watch2();}
if(a==4)
{fine();}
if(a==5)
{became();}
if(a==6)
{out();}
if(a==7)
{into();}
if(a==8)
{ FILE *fp;
fp=fopen("out.txt","rb+");
fwrite(&i,sizeof(int),1,fp);
for(int m=0;m<i;m++)
fwrite(&stu[m],sizeof(struct student),1,fp);
fclose(fp);
break;
}
}while(8);
}