① 怎樣用c語言寫學生成績管理系統
程序如下: #include
② 用C語言編寫一個學生管理系統。
概述
單純只用多個數組管理學生成績信息,不使用結構體,該程序最主要的難點是依據學號或總成績對學生信息進行排序,藉助了臨時數組來標記排好序的下標。
運行結果如下:
輸入數據:
貼上代碼(有點多)
#include <stdio.h>
#include <stdlib.h> //exit函數頭文件
#include <string.h> //字元串相關操作頭文件
#define MAX_STUDENT 30 //最大學生數
//函數聲明,本程序共10個子函數,每個函數對應一個操作
void student_scanf(int n);
void student_printf(int n);
int student_find_name(int n);
int student_find_num(int n);
void student_sort_num(int n);
void student_sort_sum(int n);
int student_alter_num(int n);
int student_alter_name(int n);
int student_delete_num(int n);
int student_delete_name(int n);
//全局數組變數,用於存儲學生信息
char names[MAX_STUDENT][50];
int math[MAX_STUDENT];
int english[MAX_STUDENT];
int computer[MAX_STUDENT];
int sum[MAX_STUDENT];
int num[MAX_STUDENT];
//以下變數用於學生信息數組排序,作為臨時數組
int temp_num[MAX_STUDENT];
char temp_names[MAX_STUDENT][50];
int temp_math[MAX_STUDENT];
int temp_english[MAX_STUDENT];
int temp_computer[MAX_STUDENT];
int temp_sum[MAX_STUDENT];
//sort數組存儲排好序的學號或姓名下標
int sort[MAX_STUDENT];
//循環全局變數
int i, j;
//main主函數
int main(void)
{
int choice,n;
while (1)
{
printf("************************************* ");
printf("歡迎使用學生成績管理系統 ");
printf("[1] 輸入所有學生信息 ");
printf("[2] 輸出所有學生成績 ");
printf("[3] 按學號查找某個學生信息 ");
printf("[4] 按姓名查找某個學生信息 ");
printf("[5] 按學號對學生排序 ");
printf("[6] 按總成績對學生排序 ");
printf("[7] 按學號修改某個學生信息 ");
printf("[8] 按姓名修改某個學生信息 ");
printf("[9] 按學號刪除某個學生信息 ");
printf("[10] 按姓名刪除某個學生信息 ");
printf("[0] 退出程序 ");
printf("請輸入您的選擇(0 - 9):");
scanf("%d",&choice);
printf("**************************************) ");
switch (choice)
{
case 1://錄入;
printf("請輸入錄入的學生信息數: ");
scanf("%d",&n);
student_scanf(n);
break;
case 2://輸出;
student_printf(n);
break;
case 3://根據學號查找
student_find_num(n);
break;
case 4://根據姓名查找
student_find_name(n);
break;
case 5://按學號排序
student_sort_num(n);
break;
case 6://按姓名排序
student_sort_sum(n);
break;
case 7://按學號修改
student_alter_num(n);
break;
case 8://按姓名修改
student_alter_name(n);
break;
case 9://按學號刪除
student_delete_num(n);
n--;
break;
case 10://按姓名刪除
student_delete_name(n);
n--;
break;
case 0://退出程序
printf("退出程序 ");
printf("程序結束,謝謝使用! ");
exit(0);
default:
printf("您輸入的菜單有誤。請重新輸入! ");
}
}
return 0;
}
//1.輸入信息
void student_scanf(int n)
{
for (i = 0; i<n; ++i)
{
printf(" 請輸入第%d個學生的信息: ", i + 1);
printf(" 學號:");
scanf("%d", &num[i]);
printf(" 姓名:");
scanf("%s", names[i]);
printf(" 數學成績:");
scanf("%d", &math[i]);
printf(" 英語成績:");
scanf("%d", &english[i]);
printf(" 計算機成績:");
scanf("%d", &computer[i]);
//計算總成績
sum[i] = math[i] + english[i] + computer[i];
}
}
//2.列印信息
void student_printf(int n)
{
printf(" 學號 姓名 數學成績 英語成績 計算機成績 總成績 ");
printf("---------------------------------------------------------- ");
for (i = 0; i<n; ++i)
{
printf("%d %s %d %d %d %d ", num[i], names[i], math[i], english[i], computer[i], sum[i]);
}
printf("------------------------------------------------------- ");
}
//3.按學號查找
int student_find_num(int n)
{
int nums;
int result;
printf("請輸入待查找的學生學號:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最後判斷q值
if (result == -1)
{
printf("沒有該學生信息! ");
return 0;
}
else
{
//先列印表頭
printf(" 學號 姓名 數學成績 英語成績 計算機成績 總成績 ");
//再列印數據
printf("%d %s %d %d %d %d ", num[result], names[result], math[result], english[result], computer[result], sum[result]);
printf("列印出查找結果! ");
}
return 1;
}
//4.用姓名查找成績
int student_find_name(int n)
{
char name[200];
int result;
printf("請輸入待查找的學生姓名:");
scanf("%s", name);
result = -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name, names[i]) == 0)
{
result = i;
break;
}
}
if (result == -1)
{//未找到結果
printf("沒有該學生信息! ");
return 0;
}
else//找到結果
{
printf(" 學號 姓名 數學成績 英語成績 計算機成績 總成績 ");
printf("%d %s %d %d %d %d ", num[result], names[result], math[result], english[result], computer[result], sum[result]);
printf("已完成查找! ");
}
return 1;
}
//5.按學號排序
void student_sort_num(int n)
{
int min,max;
for(i=0; i<n; ++i) //復制臨時數組
{
temp_num[i] = num[i];
}
max = 0; //查找學號最大值,將其下標存至sort數組的最後一個值中
for(j=1; j<n; j++)
{
if(temp_num[max]<temp_num[j])
max = j;
}
sort[n-1] = max; //sort數組的最後一個數
for(i=0; i<n-1; ++i)
{
min = i; //查找學號最小值
for(j=0; j<n; ++j)
{
if(temp_num[min]>temp_num[j])
min = j;
}
//sort數組記錄排序的學生信息的下標
sort[i] = min;
temp_num[min] = temp_num[max]; //利用臨時數組將查找過的學生信息的學號設為最大值,排除查找干擾
}
for(i=0; i<n; ++i) //再復制一次臨時數組
{
temp_num[i] = num[i];
strcpy(temp_names[i],names[i]);
temp_math[i] = math[i];
temp_english[i] = english[i];
temp_computer[i] = computer[i];
temp_sum[i] = sum[i];
}
for(i=0; i<n; i++) //按照下標對原數組進行修改
{
num[i] = temp_num[sort[i]];
strcpy(names[i],temp_names[sort[i]]);
math[i] = temp_math[sort[i]];
english[i] = temp_english[sort[i]];
computer[i] = temp_computer[sort[i]];
sum[i] = temp_sum[sort[i]];
}
printf("排序完畢,請按菜單鍵2查看排序結果! ");
return ;
}
//6.按總成績排序
void student_sort_sum(int n)
{
int min,max;
for(i=0; i<n; ++i) //復制臨時數組
{
temp_sum[i] = sum[i];
}
max = 0; //查找總成績最大值,將其下標存至sort數組的最後一個值中
for(j=1; j<n; j++)
{
if(temp_sum[max]<temp_sum[j])
max = j;
}
sort[n-1] = max; //sort數組的最後一個數
for(i=0; i<n-1; ++i)
{
min = i; //查找總成績最小值
for(j=0; j<n; ++j)
{
if(temp_sum[min]>temp_sum[j])
min = j;
}
//sort數組記錄排序的學生信息的下標
sort[i] = min;
temp_sum[min] = temp_sum[max]; //利用臨時數組將查找過的學生信息的總成績設為最大值,排除查找干擾
}
for(i=0; i<n; ++i) //再復制一次臨時數組
{
temp_num[i] = num[i];
strcpy(temp_names[i],names[i]);
temp_math[i] = math[i];
temp_english[i] = english[i];
temp_computer[i] = computer[i];
temp_sum[i] = sum[i];
}
for(i=0; i<n; i++) //按照下標對原數組進行修改
{
num[i] = temp_num[sort[i]];
strcpy(names[i],temp_names[sort[i]]);
math[i] = temp_math[sort[i]];
english[i] = temp_english[sort[i]];
computer[i] = temp_computer[sort[i]];
sum[i] = temp_sum[sort[i]];
}
printf("排序完畢,請按菜單鍵2查看排序結果! ");
return ;
}
//7.按學號修改學生信息
int student_alter_num(int n)
{
int nums;
int result;
printf("請輸入待修改的學生學號:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最後判斷q值
if (result == -1)
{
printf("沒有該學生信息! ");
return 0;
}
else //修改信息值
{
printf("請重新輸入該學生信息: ");
printf("學號: ");
scanf("%d",&num[result]);
printf("姓名: ");
scanf("%s",names[result]);
printf("數學成績: ");
scanf("%d",&math[result]);
printf("英語成績: ");
scanf("%d",&english[result]);
printf("計算機成績: ");
scanf("%d",&computer[result]);
sum[result] = math[result] + english[result] + computer[result];
}
return 1;
}
//8.按姓名修改學生信息
int student_alter_name(int n)
{
char name[50];
int result;
printf("請輸入待修改的學生姓名:");
scanf("%s",name);
result= -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name,names[i])==0)
{
result = i;
break;
}
}
//最後判斷q值
if (result == -1)
{
printf("沒有該學生信息! ");
return 0;
}
else //修改信息值
{
printf("請重新輸入該學生信息: ");
printf("學號: ");
scanf("%d",&num[result]);
printf("姓名: ");
scanf("%s",names[result]);
printf("數學成績: ");
scanf("%d",&math[result]);
printf("英語成績: ");
scanf("%d",&english[result]);
printf("計算機成績: ");
scanf("%d",&computer[result]);
sum[result] = math[result] + english[result] + computer[result];
}
return 1;
}
//9.按學號刪除學生信息
int student_delete_num(int n)
{
int nums;
int result;
printf("請輸入待刪除的學生學號:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最後判斷q值
if (result == -1)
{
printf("沒有該學生信息! ");
return 0;
}
else //刪除當前學生信息即為將數組從result的位置依次前挪一個位置
{
for(i=result; i<n-1; ++i) //最後在main函數中,要將n的值減1
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
computer[i] = computer[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}
//10.按姓名刪除學生信息
int student_delete_name(int n)
{
char name[50];
int result;
printf("請輸入待刪除的學生姓名:");
scanf("%s",name);
result= -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name,names[i])==0)
{
result = i;
break;
}
}
//最後判斷q值
if (result == -1)
{
printf("沒有該學生信息! ");
return 0;
}
else //刪除當前學生信息即為將數組從result的位置依次前挪一個位置
{
for(i=result; i<n-1; ++i) //最後在main函數中,要將n的值減1
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
computer[i] = computer[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}
③ c語言學生管理系統
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 1000
/*定義學生成績信息結構*/
struct stu
{
char id[8];
char name[8];
double Chinese;
double Math;
double English;
double average;
double total;
};
/*學生結構數組,用於存儲學生成績信息*/
struct stu students[MAX];
/*當前學生人數*/
int current;
void input()
{
int i;
printf("請輸入學生人數:");
scanf("%d", & current);
for (i = 0; i < current; i++)
{
printf("\n請輸入學生學號,最多為7位數: ");
scanf("%s", students[i].id);
printf("請輸入學生姓名:");
scanf("%s", students[i].name);
printf("請輸入語文成績:");
scanf("%lf", &students[i].Chinese);
printf("請輸入數學成績:");
scanf("%lf", &students[i].Math);
printf("請輸入英語成績:");
scanf("%lf", &students[i].English);
students[i].total = students[i].Chinese + students[i].Math + students[i].English;
students[i].average = students[i].total / 3;
}
}
/*排名次,即對學生結構數組排序*/
void sort(struct stu array[], int n)
{
int i, j;
struct stu temp;
for (i = 0; i < n; i++)
{
for (j = i+1; j < n; j++)
{
if (array[i].average - array[j].average < 1e-16)
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
/*統計平均成績,並輸出各分數段的人數*/
void print_score(struct stu array[], int n)
{
int i;
double ave = 0;
int sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;
for (i = 0; i < n; i++)
{
ave += array[i].average;
switch ((int)(array[i].average / 10))
{
case 10:
case 9: sum1++; break;
case 8: sum2++; break;
case 7:
case 6: sum3++; break;
default: sum4++;
}
}
printf("全班的平均分為:%.1f\n", ave/n);
printf("平均分在90分以上的人數為:%d\n", sum1);
printf("平均分在80~89的人數為:%d\n", sum2);
printf("平均分在60~79的人數為:%d\n", sum3);
printf("平均分在60分以下的人數為:%d\n", sum4);
}
/*輸出不及格科目及學生名單*/
void print_unreach(struct stu array[], int n)
{
int i;
printf("科目\t學號\t名字\n");
for (i = 0; i < n; i++)
{
if (array[i].Chinese < 60)
{
printf("語文\t%s\t%s\n", array[i].id, array[i].name);
}
if (array[i].Math < 60)
{
printf("數學\t%s\t%s\n", array[i].id, array[i].name);
}
if (array[i].English < 60)
{
printf("英語\t%s\t%s\n", array[i].id, array[i].name);
}
}
}
/*列印優等生名單*/
void print_good(struct stu array[], int n)
{
int i;
char mark = 0;
if (n > 3)
{
n = 3;
}
printf("學號\t姓名\t語文\t數學\t英語\t平均分\t名次\n");
for (i = 0; i < n; i++)
{
if ((array[i].Chinese > 60) && (array[i].Math > 60) && (array[i].English > 60))
{
if (array[i].average > 90) mark = 1;
else if (array[i].average > 85)
{
if (array[i].Chinese == 100) mark = 1;
if (array[i].Math == 100) mark = 1;
if (array[i].English == 100) mark = 1;
if (array[i].Chinese > 95 && array[i].English > 95) mark = 1;
if (array[i].Chinese > 95 && array[i].Math > 95) mark = 1;
if (array[i].Math > 95 && array[i].English > 95) mark = 1;
}
if (mark == 1)
{
printf("%s\t%s\t", array[i].id, array[i].name);
printf("%.f\t%.f\t%.f\t%.1f\t", array[i].Chinese, array[i].Math, array[i].English, array[i].average);
printf("%d\n", i+1);
}
}
}
}
/*按學生姓名查詢成績*/
void search_name(struct stu array[], int n, char* name)
{
int i;
char mark = 1;
for (i = 0; i < n; i++)
{
if (strcmp(name, array[i].name) == 0)
{
printf("學生姓名:%s\n", name);
printf("學生學號:%s\n", array[i].id);
printf("語文:%.f\n", array[i].Chinese);
printf("數學:%.f\n", array[i].Math);
printf("英語:%.f\n", array[i].English);
printf("平均分:%.1f\n", array[i].average);
mark = 0;
}
}
if (mark == 1) puts("不存在該學生記錄");
}
/*按學生學號查詢成績*/
void search_id(struct stu array[], int n, char* id)
{
int i;
char mark = 1;
for (i = 0; i < n; i++)
{
if (strcmp(id, array[i].id) == 0)
{
printf("學生姓名:%s\n", array[i].name);
printf("學生學號:%s\n", array[i].id);
printf("語文:%.f\n", array[i].Chinese);
printf("數學:%.f\n", array[i].Math);
printf("英語:%.f\n", array[i].English);
printf("平均分:%.1f\n", array[i].average);
mark = 0;
break;
}
}
if (mark == 1) puts("不存在該學生記錄");
}
void print_menu()
{
system("cls");
printf("1.輸入學生信息\n");
puts("2.統計全班學生成績");
puts("3.按學號查詢學生成績");
puts("4.按姓名查詢學生成績");
puts("5.輸出不及格情況");
puts("6.輸出優等生名單");
puts("0.退出本程序");
printf("\n\n 請輸入你的選擇:");
}
int main(int argc, char **argv)
{
char ch = 0;
char id[8], name[8];
while (ch != '0')
{
print_menu();
ch = getchar();
switch (ch)
{
case '1':
{
system("cls");
input();
sort(students, current);
break;
}
case '2':
{
system("cls");
print_score(students, current);
break;
}
case '3':
{
system("cls");
printf("請輸入學號:");
scanf("%s", id);
search_id(students, current, id);
break;
}
case '4':
{
system("cls");
printf("請輸入姓名:");
scanf("%s", name);
search_name(students, current, name);
break;
}
case '5':
{
system("cls");
print_unreach(students, current);
break;
}
case '6':
{
system("cls");
print_good(students, current);
break;
}
case '0': exit(0);
}
printf("\n\n按任意鍵返回主菜單……");
getchar();
getchar();
}
return 0;
}
④ C語言 學生管理系統
#include
#include
#include
#include
#define max 20
typedef struct student //學生
{
char sno[max]; // 學號
char sname[max]; //姓名
char sex[max]; //性別
char age[max]; //年齡
char depart[max]; //系
char classs[max]; //班
char grade[max]; //年級
struct student* next;
} student;
student* head;
int LogOn() //登錄模塊,已實現輸入密碼不回顯,如果中途發現輸錯某幾位,可退格鍵重輸
{
char username[max],password[max];
printf("\n請輸入用戶名:");
scanf("%s",username);
printf("\n請輸入密碼(最多15位):");
//開始以不回顯且支持退格方式獲取輸入密碼
int i=0;
while((i>=0)&&(password[i++]=getch())!=13)//條件i>=0是用於限制退格的范圍
{
if(password[i-1]=='\b')//對退格鍵的處理
{
printf("%c%c%c",'\b','\0','\b');
i=i-2;
}
else
printf("*");
}
password[--i]='\0';
//已獲取密碼。驗證用戶身份
if(!strcmp(username,"zhang")&&!strcmp(password,"8147086"))
{
printf("\n登錄成功!");
return 1;
}
else
return 0;
}
void regist()
{
char ch;
student *s,*ptr; //s用來建新結點,ptr用來暫存頭結點
do
{
s=(student*)malloc(sizeof(student)); // 新建一個學生結點
printf("\n開始注冊..."); //開始注冊
printf("\n請輸入該學生的學號:");
scanf("%s",s->sno);
printf("\n請輸入該學生的姓名:");
scanf("%s",s->sname);
printf("\n請輸入該學生的性別:");
scanf("%s",s->sex);
printf("\n請輸入該學生的年齡:");
scanf("%s",s->age);
printf("\n請輸入該學生的系:");
scanf("%s",s->depart);
printf("\n請輸入該學生所在的班:");
scanf("%s",s->classs);
printf("\n請輸入該學生所在的年級");
scanf("%s",s->grade);
ptr=head;
head=s;//將新結點插入隊頭
s->next=ptr;
fflush(stdin);
printf("\n請問是否繼續注冊?(Y/N)");
scanf("%c",&ch);
}while(ch=='Y'||ch=='y');
return;
}
void ElePrint(char str[]) //輸出單個元素
{
if(str==NULL) exit(0);
printf("%s",str);
for(unsigned int i=0;i<12-strlen(str);i++) printf(" ");//為了對齊輸出,需插入一些空格
return;
}
int LinePrint(student *ptr) //輸出一行
{
if(ptr==NULL) //檢查傳進來的指針
return 0;
printf("\n");
ElePrint(ptr->sno);
ElePrint(ptr->sname);
ElePrint(ptr->age);
ElePrint(ptr->sex);
ElePrint(ptr->depart);
ElePrint(ptr->classs);
ElePrint(ptr->grade);
return 1;
}
void print() //輸出全部學生信息
{
student *ptr=head;
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
while(ptr)
{
LinePrint(ptr);
ptr=ptr->next;
}
printf("\n");
return;
}
void search()//查詢模塊
{
int method;//查詢方式
char no[max],name[max],departm[max],clss[max],grades[max]; //用來接收查詢關鍵字
while(1)
{
printf("\n請選擇查詢方式");
printf("\n1.按學號查詢");
printf("\n2.按姓名查詢");
printf("\n3.按所在系查詢");
printf("\n4.按所在班級查詢");
printf("\n5.按所在年級查詢");
printf("\n6.列印全部學生信息");
printf("\n7.返回主菜單\n");
scanf("%d",&method);
student *p=head,*temp;
switch(method)
{
case 1:
printf("\n請輸入要查詢的學號:");
scanf("%s",no);
while(p)
{
if(!strcmp(p->sno,no))
break;
else
{
temp=p;
p=p->next;
}
}
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
LinePrint(p);
break;
case 2:
printf("\n請輸入要查詢的姓名:");
scanf("%s",name);
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
while(p)
{
if(!strcmp(p->sname,name))
LinePrint(p);
p=p->next;
}
break;
case 3:
printf("\n請輸入學生所在的系:");
scanf("%s",departm);
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
while(p)
{
if(!strcmp(p->depart,departm))
LinePrint(p);
p=p->next;
}
break;
case 4:
printf("\n請輸入學生所在的班:");
scanf("%s",clss);
printf("\n請輸入學生所在的年級:");
scanf("%s",grades);
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
while(p)
{
if(!strcmp(p->classs,clss)&&!strcmp(p->grade,grades))
LinePrint(p);
p=p->next;
}
break;
case 5:
printf("\n請輸入學生所在的年級:");
scanf("%s",grades);
printf("\n學號 姓名 年齡 性別 系 班 年級 ");
while(p)
{
if(!strcmp(p->grade,grades))
LinePrint(p);
p=p->next;
}
break;
case 6:
print();
break;
case 7:
return;
default:
printf("很抱歉,暫無此查詢方式!");
break;
}
}
}
void modify()//修改學生信息
{
char num[max];
student *p=head;
printf("\n請輸入要修改的學生的學號:");
scanf("%s",num);
while(p)
{
if(!strcmp(p->sno,num))
break;
else
p=p->next;
}
if(p==NULL)
{
printf("\n錯誤:沒有此學生的信息!\n");
return;
}
LinePrint(p);
printf("\n請輸入要修改的該學生的信息:");
printf("\n1.姓名");
printf("\n2.性別");
printf("\n3.年齡");
printf("\n4.所在的系");
printf("\n5.所在的班");
printf("\n6.所在的年級");
char name1[max],sex1[max],age1[max],depart1[max],class1[max],grade1[max];
int select;
fflush(stdin);
scanf("%d",&select);
printf("\n請輸入新的信息:");
switch(select)
{
case 1:
scanf("%s",name1);
strcpy(p->sname,name1);
break;
case 2:
scanf("%s",sex1);
strcpy(p->sex,sex1);
break;
case 3:
scanf("%s",age1);
strcpy(p->age,age1);
break;
case 4:
scanf("%s",depart1);
strcpy(p->depart,depart1);
break;
case 5:
scanf("%s",class1);
strcpy(p->classs,class1);
break;
case 6:
scanf("%s",grade1);
strcpy(p->grade,grade1);
break;
default:
printf("\nError!");
break;
}
LinePrint(p);
return;
}
void del()// 刪除某學生的信息
{
student *p=head,*temp=head,*s;
char num1[max];
printf("\n請輸入要刪除的學生的學號:");
scanf("%s",num1);
while(p)//查找該學生所在的結點
{
if(!strcmp(p->sno,num1))
break;
else
{
temp=p;
p=p->next;
}
}//while
if(!p)
{
printf("\n不存在此學生的信息.");
return;
}
LinePrint(p);//輸出該學生的信息
printf("\n請問真的要刪除該學生的信息嗎?(Y/N)");
char ch;
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
s=p->next;
temp->next=s;
free(p);
printf("\n已經刪除該學生的信息.");
}
return;
}
void sort() //排序模塊。將學生記錄按學號從小到大排列。用起泡排序演算法實現
{
student *ptr,*s=head,*p;
int count=0,count1;
while(s)//統計鏈表結點個數
{
count++;
s=s->next;
}
for(int i=1;i<count;i++)
{
ptr=head;
p=NULL;
count1=count-i; //用來控制每輪起泡排序的終點,即每次把學號最小的結點移到倒數第i個結點
while(ptr&&ptr->next&&(count1--))
{
if(strcmp(ptr->sno,ptr->next->sno)>0)
{
s=ptr->next;
ptr->next=s->next;
if(p==NULL) //ptr處於隊頭時
head=s;
else
p->next=s;
s->next=ptr;
p=s;
}
else
{
ptr=ptr->next;
if(p==NULL) //ptr處於隊頭時
p=head;
else
p=p->next;
}
}
}
return;
}
void quit()
{
char ch;
printf("\n真的要退出?(Y/N)");
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
exit(0);
return;
}
int main()
{
int option;
printf("\nCopyright@2005 KongXinCai All rights reserved.");
printf("\n歡迎使用學生信息管理系統!\n");
//登錄模塊
int icheck=0;
while(icheck<3)
{
if(LogOn()==0)
icheck++;
else
break;
}
if(icheck==3)
{
printf("\n連續登錄三次不成功,退出!");
exit(0);
}
//系統界面
while(1)
{
printf("\n\n請選擇需要的服務:");
printf("\n1.注冊");
printf("\n2.查詢");
printf("\n3.修改");
printf("\n4.刪除");
printf("\n5.排序");
printf("\n7.求平均");
printf("\n6.退出\n");
scanf("%d",&option);
switch(option)
{
case 1:
regist();
break;
case 2:
search();
break;
case 3:
modify();
break;
case 4:
del();
break;
case 5:
sort();
break;
case 6:
quit();
break;
}
}
return 0;
}
⑤ c語言 學生管理系統
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct Node//定義鏈表結點
{
char* class_0;//班級
int number;
char* name;//姓名
float elec;//電子技術成績
float c_prog;//C程序設計成績
float media;//多媒體技術成績
float eng;//大學英語成績
float math;//高等數學成績
float sport;//大學體育成績
float polity;//馬克思主義政治經濟學成績
float ave;//平均成績
int order;//名次
Node* link;
Node(){link=NULL;}
Node(int _number,char* _class_0,char* _name,float _elec,
float _c_prog,float _media,float _eng,float _math,
float _sport,float _polity,float _ave,int _order,Node* next)
{
number=_number;
class_0=new char[21];
strcpy(class_0,_class_0);
name=new char[9];
strcpy(name,_name);
elec=_elec;
c_prog=_c_prog;
media=_media;
eng=_eng;
math=_math;
sport=_sport;
polity=_polity;
ave=_ave;
order=_order;
link=next;
}
~Node()
{
delete []class_0;
delete []name;
}
};
class StudentScore
{
private:
Node* first;//鏈表的頭指針
int choice;//選擇數據的讀入方式
int fileNum;//當前文件數減一
int fileLoc;//定位當前文件
string* fileName;
int operChoice;
int RecordLength;
public:
StudentScore();
void Save();
void BuildList();//手工建立成績鏈表
void ReadInfo(int k);//從內存中讀入學生信息
void ClearList();
void Statistic();
void Sort();
void Add();
void Delete();
void PrintList();
void Menu();
};
StudentScore::StudentScore()
{
RecordLength=0;
operChoice=0;
first=NULL;
choice=0;
fileLoc=0;
fileNum=0;
fileName=new string[10];//最多可以存10個文件
}
int GetOrder(Node* first,float ave);
void StudentScore::BuildList()
{
int _number;//學號
char* _class_0=new char[21];//班級
char* _name=new char[9];//姓名
float _elec;//電子技術成績
float _c_prog;//C程序設計成績
float _media;//多媒體技術成績
float _eng;//大學英語成績
float _math;//高等數學成績
float _sport;//大學體育成績
float _polity;//馬克思主義政治經濟學成績
float _ave;//平均成績
int _order;//名次
char c;
Node *p,*r=NULL;
first=NULL;
cout<<"您要輸入學生成績信息?"<<endl;
while((c=getchar())=='n');
while(tolower(c)!='n')
{
cin>>_class_0;//班級
cin>>_number;
cin>>_name;//姓名
cin>>_elec;
cin>>_c_prog;
cin>>_media;
cin>>_eng;
cin>>_math;
cin>>_sport;
cin>>_polity;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//求得平均成績
_order=GetOrder(first,_ave);
p=new Node(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);//建立一個新的結點儲存信息
if(first!=NULL)
r->link=p;
else first=p;
r=p;
RecordLength++;
cout<<"您要輸入學生成績信息?"<<endl;
while((c=getchar())=='n');
}
}
int GetOrder(Node* first,float ave)//名次記錄有嚴重問題
{
int order=1;
Node* temp=first;
for(;temp;temp=temp->link)
{ if(temp->ave>ave) order++;
if(temp->ave<ave) (temp->order)++;
}
return order;
}
void StudentScore::Statistic()
{
Node* temp=first;
float a_elec=0.0;//電子技術成績
float a_c_prog=0.0;//C程序設計成績
float a_media=0.0;//多媒體技術成績
float a_eng=0.0;//大學英語成績
float a_math=0.0;//高等數學成績
float a_sport=0.0;//大學體育成績
float a_polity=0.0;//馬克思主義政治經濟學成績
int i=0;
while(temp)
{
a_elec+=temp->elec;
a_c_prog+=temp->c_prog;
a_media+=temp->media;
a_eng+=temp->eng;
a_math+=temp->math;
a_sport+=temp->sport;
a_polity+=temp->polity;
i++;
temp=temp->link;
}
a_elec=a_elec/i;
a_c_prog=a_c_prog/i;
a_media=a_media/i;
a_eng=a_eng/i;
a_math=a_math/i;
a_sport=a_sport/i;
a_polity=a_polity/i;
cout<<"電子技術平均成績為:"<<a_elec<<endl;
cout<<"c程序設計平均成績為:"<<a_c_prog<<endl;
cout<<"多媒體技術平均成績為:"<<a_media<<endl;
cout<<"英語平均成績為:"<<a_eng<<endl;
cout<<"高等數學平均成績為:"<<a_math<<endl;
cout<<"體育平均成績為:"<<a_sport<<endl;
cout<<"政治平均成績為:"<<a_polity<<endl;
}
void StudentScore::Delete()
{
int studNum;
Node* p;
Node* temp=first;
cout<<"請輸入要刪除的學生學號"<<endl;
cin>>studNum;
float average;
for(;temp;temp=temp->link)
{
cout<<temp->number;
if(temp->number==studNum)
{
average=temp->ave;
if(temp==first)//說明是第一次
{
first=first->link;
delete temp;
break;//如果不跳出的話 temp=temp->link會出錯
}
else
{
p->link=temp->link;
delete temp;
break;
}
}
p=temp;
RecordLength--;
}
//下面修改學生排名
temp=first;
for(;temp;temp=temp->link)
if(temp->ave<average) temp->order--;
}
void StudentScore::Add()
{
int _number;//學號
char* _class_0=new char[21];//班級
char* _name=new char[9];//姓名
float _elec;//電子技術成績
float _c_prog;//C程序設計成績
float _media;//多媒體技術成績
float _eng;//大學英語成績
float _math;//高等數學成績
float _sport;//大學體育成績
float _polity;//馬克思主義政治經濟學成績
float _ave;//平均成績
int _order;//名次
char c;
Node *p,*r=NULL;
r=first;
while(r->link)
r=r->link;
// first=NULL;
cout<<"您要輸入學生成績信息?"<<endl;
while((c=getchar())=='n');
while(tolower(c)!='n')
{
cin>>_class_0;//班級
cin>>_number;
cin>>_name;//姓名
cin>>_elec;
cin>>_c_prog;
cin>>_media;
cin>>_eng;
cin>>_math;
cin>>_sport;
cin>>_polity;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//求得平均成績
//寫一個返回排名的程序
_order=GetOrder(first,_ave);
p=new Node(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);//建立一個新的結點儲存信息
if(first!=NULL)
r->link=p;
else first=p;
r=p;
RecordLength++;
cout<<"您要輸入學生成績信息?"<<endl;
while((c=getchar())=='n');
}
}
void StudentScore::Sort()//簡單bubble排序從高分到低分排序
{
int i=0;
Node* temp=first;
Node* before;
// Node* p=first;
for(;temp->link;)
{
if(temp->ave<temp->link->ave)
{
if(temp==first)//說明是第一個結點
{
first=first->link;
// p=temp;
// temp=temp->link;
temp->link=temp->link->link;
first->link=temp;
before=first;
}
else//不是第一個結點
{
before->link=temp->link;
temp->link=temp->link->link;
before->link->link=temp;
before=before->link;
}
}
else
{
temp=temp->link;
}
i++;//計算次數
}
for(;i>0;i--)
{
temp=first;
for(int j=0;j<i;j++)
{
if(temp->ave<temp->link->ave)
{
cout<<"small!"<<endl;
if(temp==first)//說明是第一個結點
{
first=first->link;
// p=temp;
// temp=temp->link;
temp->link=temp->link->link;
first->link=temp;
before=first;
}
else//不是第一個結點
{
before->link=temp->link;
temp->link=temp->link->link;
before->link->link=temp;
before=before->link;
}
}
else
{
temp=temp->link;
}
}
}
}
/*
bool IsSorted(Node* first)
{
for(;first;first=first->link)
if(first->ave<first->link->ave) return false;
return true;
}*/
void StudentScore::PrintList()//列印鏈表程序
{
cout<<"The list contains:"<<endl;
Node* temp=first;
for(;temp;temp=temp->link)
{
cout<<temp->class_0<<","<<temp->name<<endl;
cout<<temp->order<<endl;
}
}
void StudentScore::ClearList()//清除鏈表
{
Node* p=new Node;
while(first)
{
p=first->link;
delete first;
first=p;
}
}
//讀函數
void StudentScore::ReadInfo(int k)//讀第k個文件的信息存入鏈表
{
// int wordLength;//記錄子段長度
int _number;//學號
char* _class_0=new char[21];//班級
char* _name=new char[9];//姓名
float _elec;//電子技術成績
float _c_prog;//C程序設計成績
float _media;//多媒體技術成績
float _eng;//大學英語成績
float _math;//高等數學成績
float _sport;//大學體育成績
float _polity;//馬克思主義政治經濟學成績
float _ave;//平均成績
int _order;//名次
Node *p,*r=NULL;
first=NULL;
ifstream Infile(fileName[k].c_str());
if(!Infile)
{
cout<<"file is not present!"<<endl;
return;
}
Infile>>RecordLength;
cout<<RecordLength;
for(int i=0;i<RecordLength;i++)
{
Infile>>_class_0;//班級
// cout<<_class_0;
Infile>>_number;
Infile>>_name;//姓名
Infile>>_elec;
Infile>>_c_prog;
Infile>>_media;
Infile>>_eng;
Infile>>_math;
Infile>>_sport;
Infile>>_polity;
Infile>>_ave;
Infile>>_order;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//求得平均成績
//寫一個返回排名的程序
_order=GetOrder(first,_ave);
p=new Node(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);//建立一個新的結點儲存信息
if(first!=NULL)
r->link=p;
else first=p;
r=p;
}
}
void StudentScore::Save()
{
string tempName;
cout<<"請輸入將要保存的文件名:"<<endl;
//要判斷是否跟現有文件重名
cin>>tempName;
ofstream savefile(tempName.c_str());//要做一個轉換
Node* temp=first;
savefile<<RecordLength<<endl;
for(;temp;temp=temp->link)
{
savefile<<temp->class_0<<" "<<temp->number<<" "<<temp->name<<" "<<temp->elec<<" "
<<temp->c_prog<<" "<<temp->media<<" "<<temp->eng<<" "<<temp->math<<" "
<<temp->sport<<" "<<temp->polity<<" "<<temp->ave<<" "<<temp->order<<endl;
}
savefile.close();
//讀取文件表信息
ifstream Readfileinfo("FileRecord.txt");
Readfileinfo>>fileNum;
for(int i=0;i<fileNum;i++)
Readfileinfo>>fileName[i];
Readfileinfo.close();
fileNum++;
fileName[i]=tempName;
//修改文件表信息
ofstream changefile("FileRecord.txt");
changefile<<fileNum<<endl;
for(i=0;i<fileNum;i++)
changefile<<fileName[i]<<endl;
changefile.close();
}
void StudentScore::Menu()
{
cout<<"請您選擇數據的讀入方式:"<<endl;
cout<<"(1) 重新手動建立一份新的數據表"<<endl;
cout<<"(2) 從文件中讀入數據"<<endl;
cout<<"請選擇:";
cin>>choice;
if(choice==1)
{
BuildList();
}
if(choice==2)
{
cout<<"當前有如下文件,請選擇讀入文件:"<<endl;
ifstream fileRecord("fileRecord.txt");
if(!fileRecord)
{
cout<<"fileRecord is not present!"<<endl;
return;
}
fileRecord>>fileNum;
cout<<"當前有"<<fileNum<<"個文件:"<<endl;
for(int i=0;i<fileNum;i++)
{
fileRecord>>fileName[i];
cout<<fileName[i]<<" ";
}
cout<<"請您選擇一個文件:";
cin>>fileLoc;
ReadInfo(fileLoc-1);
PrintList();
}
cout<<"請選擇您需要的操作:"<<endl;
cout<<"(1) 統計學生各科成績"<<endl;
cout<<"(2) 刪除某個學生成績記錄"<<endl;
cout<<"(3) 增加某個學生成績記錄"<<endl;
cout<<"(4) 在鏈表中為所有學生成績記錄排序"<<endl;
cin>>operChoice;
if(operChoice==1)
Statistic();
if(operChoice==2)
Delete();
if(operChoice==3)
Add();
if(operChoice==4)
Sort();
Save();
ClearList();
}
int main()
{
cout<<"//////////////////////////////////"<<endl;
cout<<"歡迎使用學生成績管理系統!"<<endl;
cout<<"//////////////////////////////////"<<endl;
cout<<endl;
cout<<endl;
StudentScore s;
s.Menu();
return 0;
}
⑥ 學生管理系統C語言
#include<stdio.h>
#define N 30
int Input1(long xuehao[],int score[],int n);
int Sum(int score[],int n);
int No3(long xuehao[],int score[],int n);
int No4(long xuehao[],int score[],int n);
int No5(long xuehao[],int score[],int n);
int No6(int score[],int n);
int Input1(long xuehao[],int score[],int n){
int i;
printf("輸入學號和成績\n");
for(i=0;i<n;i++){
scanf("%ld %d",&xuehao[i],&score[i]);
}
// for(i=0;i<n;i++){
// printf("學號%ld 成績%d\n",xuehao[i],score[i]);
//}
}
int Sum(int score[],int n){
int sum;
float aver;
sum=0; aver=0;
int i;
for(i=0;i<n;i++){
sum=sum+score[i];
}
aver=(float)sum/n;
printf("總分為%d,平均分為%.2f",sum,aver);
}
int No3(long xuehao[],int score[],int n){
int i,j,k,temp1;
long temp2;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++){
if(score[j]>score[k]){ k=j; }
}
if(k!=i){
/*交換成績*/
temp1=score[k];score[k]=score[i];score[i]=temp1;
/*交換學號*/
temp2=xuehao[k];xuehao[k]=xuehao[i];xuehao[i]=temp2;
}
}
int a;
printf("按成績高低排序\n");
for(a=0;a<n;a++){
printf("學號%ld 成績%d\n",xuehao[a],score[a]);
}
}
int No4(long xuehao[],int score[],int n){
int i,j,k,temp1;
long temp2;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++){
if(xuehao[j]>xuehao[k]){ k=j; }
}
if(k!=i){
/*交換學號*/
temp1=xuehao[k];xuehao[k]=xuehao[i];xuehao[i]=temp1;
/*交換成績*/
temp2=score[k];score[k]=score[i];score[i]=temp2;
}
}
int a;
printf("按學號排序\n");
for(a=0;a<n;a++){
printf("學號%ld 成績%d\n",xuehao[n-1-a],score[n-1-a]);
}
}
int No5(long xuehao[],int score[],int n){
int i,a;
long x;
No3(xuehao,score,n);
printf("輸入學號\n");
scanf("%ld",&x);
for(i=0;i<n;i++){
if(xuehao[i]==x){
a=i;
break;
}
}
printf("學號%ld 成績%d 排名%d\n ",xuehao[a],score[a],a+1);
}
int No6(int score[],int n){
int i;
int a=0,b=0,c=0,d=0,e=0;
float a1,b1,c1,d1,e1;
for(i=0;i<n;i++){
if(score[i]>=90) {a++; }
else if(score[i]>=80){b++; }
else if(score[i]>=70) {c++; }
else if(score[i]>=60) {d++; }
else {e++; printf("e is%d",e);}
}
a1=(float)a/n*100;b1=(float)b/n*100;c1=(float)c/n*100;d1=(float)d/n*100;e1=(float)e/n*100;
printf("優秀%d %.1f%%\n良好%d %.1f%% \n中等%d %.1f%% \n及格%d %.1f%%\n不及格%d %.1f%%\n",a,a1,b,b1,c,c1,d,d1,e,e1);
// printf("%.2f %.2f %.2f %.2f %.2f\n",a1,b1,c1,d1,e1);
}
int No7(long xuehao[],int score[],int n){
int i;
for(i=0;i<n;i++){
printf("學號%ld 成績%d\n",xuehao[i],score[i]);
}
Sum(score,n);
}
main(){
int score[N];
long xuehao[N];
int n;
printf("1.Input record\n");
printf("2.caculate total and average score of course\n");
printf("3.sort in descending order by score\n");
printf("4.sort in ascending order by score\n");
printf("5.search by number \n");
printf("6.statistic analysis\n");
printf("7.list record\n");
printf("0.exit\n");
int num;
printf("人數(不許超過30!不許超過30!不許超過30)\n");
do{scanf("%d",&n);}while(n<1 || n>30);
if(n>30) printf("wrong!\n");
//printf("輸入選項\n");
//scanf("%d",&num);
int p=1; //控制結束
do{
printf("輸入選項\n");
scanf("%d",&num);
switch(num){
case 1:
Input1(xuehao,score,n);
break;
case 2: Sum(score,n);
break;
case 3: No3(xuehao,score,n);
break;
case 4: No4(xuehao,score,n);
break;
case 5: No5(xuehao,score,n);
break;
case 6: No6(score,n);
break;
case 7: No7(xuehao,score,n);
break;
case 0: p=-1;
break;
}
}while(p!=-1);
return 0;
}
⑦ 用C語言編寫一個學生管理系統。
學生信息管理系統
#include<stdio.h>
#inelude<stdlib.h>
#include<stnng.h
#define BUFLEN 100
#define LEN 15
#define N 100
#strucet record
char codc[LEN+I J;
char name[LEN-1];
int age:
char sex 13l:
char timc[1.KN-I J;
char add[301;
char tcl [l.EN+1 J:
char mail[30]:
}stu[N]:
int k=1.n,m.
void readfilcO;
void seekO;
void modify(;
void insert();
void del();
void display(;
void save();
void menu(;
int main(
{
While(k)
menu();
system("pause");
一℃himl 0:
}
void help()
{
printf(" nO.歡迎使用系統幫助, );
printf(" 1.進入系統後,先制新學生信息,再查詢: 』);
printf(" 2.按照菜單提示鍵入數字代號
printf(" 3. 增加學生信息後,切記保存按;.n」
printf(" 4. 謝謝您的仗用! ");
}
void n:adlilcO
r
r
char *p-"studcnt.txt'
FILE *fp,
hit i-0;
if ((fp=fopen("studcnt.txt","r" ))`=NULL)
{
printf("Open file %s error' Strike any key to exit! P);
system("pause");
exit(0);
}
while(fscanf(fp,"%s 0os0od0,os 0os %s %s 0os",stu[i].code,stu[i1.name,&stu(i1.age,
stu[i].sex,stuLiJ.time,stuLiJ.add,stu[iJ.tel.stu [iJ.mail)"==8)
{
i++;
i-i;
}
char codc[LEN+1 J;
char name[LEN-1 ];
nit age;
char sex [3I;
char timc[LEN-I J;
char add[30];
char tcl[LEN+I I;
char mail[30J;
)stu[N];
int k=1.n,m;
void readfilcO;
void seek();
void modify();
void insert();
void delO;
void display();
void save();
void menu();
int main()
{
while(k)
menu();
systcm("pause");
return 0:
}
void help()
{
printf(" nO.歡迎仗用系統幫助, ");
printf(" }n1.進入系統後,先刷新學生信息,再查詢: );
printf("in2.按照菜單提示鍵入數字代號加 );
printf("1n,. t}加學生信息後,切記保存按鈕 」
printf("'nd. i$:41您的使用 );
}
void readfile()
{
char *p-"studcnLtxt";
FILE*fp
int i=0;
if ((fp=fopcn("student. tx t","r'' )卜=NULL)
{
printf("Open file %s error' Strike any key to exit!".p);
systcm("pause");
exit(0);
}
i++;
i=i;
}
printf("請選擇菜單編號:』』);
scanf("%d",&num);
switch(num)
{
case 0:help();break;
cast 1:readflic();break;
case 2:seek();break;
case 3:modify();break;
case 4:insert();break;
case 5:del();break:
case 6:display();break;
case 7:savc();break;
case 8:k=0,break:
defaalt:prinf(」請在一8之間選擇 "):
}
}
拓展資料
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
⑧ c語言編寫學生信息管理系統
稍微用了點c++(你給的分太低)
如下圖所示:
studf.txt
操作日誌文件:
⑨ C語言 學生成績管理系統
#include <stdio.h>
#define MAX 40
typedef struct{
char name[15];
int num;
int C;
int E;
int M;
int sum;
}student_t;
typedef struct{
int n;
student_t stu[MAX];
}class_t;
enum{
ADD_STUDENT = 1,
SHOW_STUDENT = 2,
DELETE_STUDENT = 3,
SORT_STUDENT = 4,
FIND_STUDENT = 5,
QUIT
};
void input_student(student_t *pstu)
{
int ret;
again_input:
printf("學號\t姓名\tC語言\t英語\t數學\t\n");
ret = scanf("%d %s %d %d %d",&pstu->num,pstu->name,&pstu->C,&pstu->E,&pstu->M);
if(ret < 5){
printf("Input error,must input string,int,int\n");
while ( getchar() != '\n')
;
goto again_input;
}
pstu->sum=(pstu->C+pstu->E+pstu->M);
printf("input end!\n");
return;
}
int add_student(class_t *pclass,student_t *pstu)
{
if(pclass->n >= MAX){
printf("The class is full!\n");
return -1;
}
pclass->stu[pclass->n ++] = *pstu;
return 0;
}
void show(student_t *pstu)
{
printf("%d %s %d %d %d %d\n",pstu->num,pstu->name,pstu->C,pstu->E,pstu->M,pstu->sum);
return;
}
void show_student(class_t *pclass)
{
int i;
printf("學號\t姓名\tC語言\t英語\t數學\t總分\t\n");
for(i = 0;i < pclass->n;i ++){
show(&pclass->stu[i]);
}
return;
}
int delete_student(class_t *pclass,char *stu_name)
{
int i,j;
for(i = 0, j = 0;i < pclass->n;i ++){
if(strcmp(pclass->stu[i].name,stu_name) != 0){
pclass->stu[j++] = pclass->stu[i];
}
}
if(i == j){
printf("The delete student:%s is not exist!\n",stu_name);
return 0;
}else{
pclass->n = j;
return i - j;
}
}
void sort_student(class_t *pclass)
{
int i,j;
int flag;
student_t student;
for(i = 0;i < pclass->n - 1;i ++){
for(j = 0,flag = 0;j < pclass->n - 1 - i;j ++){
if(pclass->stu[j].sum > pclass->stu[j + 1].sum){
student = pclass->stu[j];
pclass->stu[j] = pclass->stu[j+1];
pclass->stu[j+1] = student;
flag = 1;
}
}
if(!flag){
break;
}
}
return;
}
int find_student(class_t *pclass,char *stu_name)
{
int i;
int count = 0;
for(i = 0;i < pclass->n;i ++){
if(strcmp(pclass->stu[i].name,stu_name) == 0){
show(&pclass->stu[i]);
count ++;
}
}
return count;
}
int main(int argc, const char *argv[])
{
int n;
int choice;
char name[15];
class_t class = {0};
student_t student;
while(1)
{
puts("------------------------------------------");
puts("1.添加 2.查詢 3.刪除 4.排序 5.查找 6.退出");
puts("------------------------------------------");
printf("choice > ");
scanf("%d",&choice);
switch(choice){
case ADD_STUDENT:
input_student(&student);
add_student(&class,&student);
break;
case SHOW_STUDENT:
show_student(&class);
break;
case DELETE_STUDENT:
printf("Input delete student name : ");
scanf("%s",name);
n = delete_student(&class,name);
if(n > 0){
printf("Delete %d students!\n",n);
}
break;
case SORT_STUDENT:
sort_student(&class);
show_student(&class);
break;
case FIND_STUDENT:
printf("Input find student name : ");
scanf("%s",name);
n = find_student(&class,name);
printf("Find %d students!\n",n);
break;
case QUIT:
printf("quit student system!\n");
goto quit;
}
}
quit:
return 0;
}