c語言學生成績管理系統,c語言學生成績管理系統課程設計

本文目錄一覽:

C語言編寫一個簡單的學生成績管理系統

C語言程序:

#include stdio.h

#include string.h

typedef struct student

{

char name[20]; /* 姓名 */

int code; /* 學號 */

int kor, eng, math; /* 3門課程的成績 */

}STUDENT;

/* 返回輸入數據 */

STUDENT Input();

/* 輸出所有輸入的數據 */

void Output(STUDENT info[], int cnt);

/* 將輸入分數轉換為A-F */

char grade(int score);

int main()

{

STUDENT S[10];

int cnt = 0, select;

int i, j;

int code;

while(1)

{

printf(“\t學生信息管理系統\n\n”);

printf(“\t\t1\t添加\n”);

printf(“\t\t2\t刪除\n”);

printf(“\t\t3\t查詢\n”);

printf(“\t\t0\t結束\n”);

printf(“\t\t您的選擇[0-3]:”);

scanf(“%d”, select);

if(select  0 || select  3)

continue;

if(select == 0)

{

printf(“退出系統!\n”);

break;

}

if(select == 1) /* 添加 */

{

S[cnt++] = Input();

}

else if(select == 2) /* 刪除 */

{

printf(“\t\t待刪除學生的學號:”);

scanf(“%d”, code);

for(i=0; icnt; i++)

if(S[i].code == code)

break;

if(i = cnt)

{

printf(“學號不存在,刪除失敗!\n”);

}

else {

for(j=i+1; jcnt; j++)

{

strcpy(S[j-1].name, S[j].name);

S[j-1].code = S[j].code;

S[j-1].kor = S[j].kor;

S[j-1].eng = S[j].eng;

S[j-1].math = S[j].math;

}

cnt–;

printf(“刪除成功!\n”);

}

}

else /* 查詢 */

{

printf(“\t\t待查找學生的學號:”);

scanf(“%d”, code);

for(i=0; icnt; i++)

if(S[i].code == code)

break;

if(i = cnt)

{

printf(“學號不存在,查找失敗!\n”);

}

else

{

printf(“\t查詢結果:\n”);

Output(S, i);

}

}

}

return 0;

}

/* 返回輸入數據 */

STUDENT Input()

{

STUDENT stu;

printf(“\t\t新學生信息\n”);

printf(“\t\t學號:”);

scanf(“%d”, stu.code);

printf(“\t\t姓名:”);

getchar();

gets(stu.name);

printf(“\t\t3門課程成績(以空格分隔):”);

scanf(“%d%d%d”, stu.kor, stu.eng, stu.math);

return stu;

}

/* 輸出所有輸入的數據 */

void Output(STUDENT info[], int cnt)

{

printf(“學號:%d\n”,info[cnt].code);

printf(“姓名:”);

puts(info[cnt].name);

printf(“成績:%c %c %c\n”, grade(info[cnt].kor), grade(info[cnt].eng), grade(info[cnt].math));

}

/* 將輸入分數轉換為A-F */

char grade(int score)

{

if(score  0 || score  100)

return ‘F’;

if(score = 90)

return ‘A’;

if(score = 80)

return ‘B’;

if(score = 70)

return ‘C’;

if(score =60)

return ‘D’;

else

return ‘E’;

}

運行測試:

用C語言設計一個學生成績管理系統

#include stdio.h

#include string.h

#include stdlib.h

#define MAX 1000

/*定義學生成績信息結構*/

struct stu

{

char id[8];

char name[8];

擴展資料:

short:修飾int,短整型數據,可省略被修飾的int。(KR時期引入)

long:修飾int,長整型數據,可省略被修飾的int。(KR時期引入)

long long:修飾int,超長整型數據,可省略被修飾的int。(C99標準新增)

signed:修飾整型數據,有符號數據類型。(C89標準新增)

unsigned:修飾整型數據,無符號數據類型。(KR時期引入)

restrict:用於限定和約束指針,並表明指針是訪問一個數據對象的唯一且初始的方式。(C99標準新增)

複雜類型關鍵字

struct:結構體聲明。(KR時期引入)

union:聯合體聲明。(KR時期引入)

enum:枚舉聲明。(C89標準新增)

typedef:聲明類型別名。(KR時期引入)

sizeof:得到特定類型或特定類型變量的大小。(KR時期引入)

inline:內聯函數用於取代宏定義,會在任何調用它的地方展開。(C99標準新增)

參考資料來源:百度百科-c語言

c語言成績管理系統

代碼如下:

#include stdio.h

#include string.h

#define MAX 100 // 學生最大數量

#define COURSE_N 3 // 課程數

struct Student

{

unsigned int id; // 學號

char name[20]; // 姓名

int scores[COURSE_N]; // 課程分數:語文、數學、英語

int sum; // 總分

float average; // 平均分

};

struct StudentList {

struct Student students[MAX]; // 學生列表

int size; // 實際學生人數

};

struct StudentList studentList;

void PrintStudents(struct StudentList *pList)

{

int i;

printf(“學號\t姓名\t語文\t數學\t英語\t總分\t平均分\n”);

for (i = 0; i  pList-size; i++) {

printf(“%d\t%s\t%d\t%d\t%d\t%d\t%.2f\n”,

pList-students[i].id,

pList-students[i].name,

pList-students[i].scores[0],

pList-students[i].scores[1],

pList-students[i].scores[2],

pList-students[i].sum,

pList-students[i].average);

}

printf(“\n”);

}

void PrintStudent(struct Student *pStu)

{

int i;

printf(“學號\t姓名\t語文\t數學\t英語\t總分\t平均分\n”);

printf(“%d\t%s\t%d\t%d\t%d\t%d\t%.2f\n”,

pStu-id,

pStu-name,

pStu-scores[0],

pStu-scores[1],

pStu-scores[2],

pStu-sum,

pStu-average);

printf(“\n”);

}

// 通過學號查找學生

struct Student* FindStudentById(struct StudentList *pList, unsigned int id)

{

int i;

for (i = 0; i  pList-size; i++) {

if (pList-students[i].id == id) {

return pList-students[i];

}

}

return NULL;

}

// 通過姓名查找學生

struct Student* FindStudentByName(struct StudentList *pList, const char *name)

{

int i;

for (i = 0; i  pList-size; i++) {

if (strcmpi((const char *)pList-students[i].name, name) == 0) {

return pList-students[i];

}

}

return NULL;

}

// 添加學生

void AddStudent(struct StudentList *pList)

{

int ok = 0;

do {

printf(“請輸入學號:”);

scanf(“%d”, pList-students[pList-size].id);

if (FindStudentById(pList, pList-students[pList-size].id) != NULL) {

printf(“學號重複!\n”);

}

else {

ok = 1;

}

} while (!ok);

printf(“請輸入姓名:”);

scanf(“%s”, pList-students[pList-size].name);

printf(“請輸入語文分數:”);

scanf(“%d”, pList-students[pList-size].scores[0]);

printf(“請輸入數學分數:”);

scanf(“%d”, pList-students[pList-size].scores[1]);

printf(“請輸入英語分數:”);

scanf(“%d”, pList-students[pList-size].scores[2]);

pList-students[pList-size].sum = pList-students[pList-size].scores[0];

pList-students[pList-size].sum += pList-students[pList-size].scores[1];

pList-students[pList-size].sum += pList-students[pList-size].scores[2];

pList-students[pList-size].average = (float)pList-students[pList-size].sum / COURSE_N;

pList-size++;

printf(“學生添加成功!\n\n”);

}

// 修改學生信息

void ModifyStudent(struct StudentList *pList)

{

int id;

struct Student *p = NULL;

printf(“請輸入學號:”);

scanf(“%d”, id);

p = FindStudentById(pList, id);

if (p != NULL) {

printf(“請輸入姓名:”);

scanf(“%s”, p-name);

printf(“請輸入語文分數:”);

scanf(“%d”, p-scores[0]);

printf(“請輸入數學分數:”);

scanf(“%d”, p-scores[1]);

printf(“請輸入英語分數:”);

scanf(“%d”, p-scores[2]);

p-sum = p-scores[0];

p-sum += p-scores[1];

p-sum += p-scores[2];

p-average = (float)p-sum / COURSE_N;

printf(“修改學生信息成功。\n\n”);

}

else {

printf(“沒有找到學號為[%u]的學生。\n\n”, id);

}

}

void DeleteStudent(struct StudentList *pList)

{

int id, index = -1, i;

printf(“請輸入學號:”);

scanf(“%d”, id);

for (i = 0; i  pList-size; i++) {

if (pList-students[i].id == id) {

index = i;

break;

}

}

if (index != -1) {

for (i = index; i  pList-size – 1; i++) {

memcpy(pList-students[i], pList-students[i + 1], sizeof(struct Student));

}

pList-size–;

printf(“成功刪除學號為[%d]的學生。\n\n”, id);

else {

printf(“沒有找到學號為[%u]的學生。\n\n”, id);

}

}

void FindStudent(struct StudentList *pList)

{

struct Student *p;

char name[20];

printf(“請輸入學生姓名:”);

scanf(“%s”, name);

p = FindStudentByName(pList, name);

if (p != NULL) {

PrintStudent(p);

}

else {

printf(“沒有找到姓名為[%s]的學生。\n\n”, name);

}

}

// 按平均分排序

void SortByAverage(struct StudentList *pList)

{

int i, j;

struct Student temp;

for (i = 0; i  pList-size – 1; i++) {

for (j = i + 1; j  pList-size; j++) {

if (pList-students[i].average  pList-students[j].average) {

memcpy(temp, pList-students[i], sizeof(struct Student));

memcpy(pList-students[i], pList-students[j], sizeof(struct Student));

memcpy(pList-students[j], temp, sizeof(struct Student));

}

}

}

}

int main()

{

int exit = 0;

int choose = 0;

while (!exit) {

printf(“—— 學生成績管理系統 ——\n”);

printf(“1. 增加學生記錄\n”);

printf(“2. 修改學生記錄\n”);

printf(“3. 刪除學生記錄\n”);

printf(“4. 按姓名查詢學生記錄\n”);

printf(“5. 按平均成績排序\n”);

printf(“6. 退出\n”);

printf(“請選擇(1 – 6):”);

scanf(“%d”, choose);

switch (choose) {

case 1:

AddStudent(studentList);

break;

case 2:

ModifyStudent(studentList);

break;

case 3:

DeleteStudent(studentList);

break;

case 4:

FindStudent(studentList);

break;

case 5:

SortByAverage(studentList);

PrintStudents(studentList);

break;

case 6:

exit = 1;

break;

default:

printf(“無效的選項。\n”);

break;

}

}

printf(“已退出系統!\n”);

return 0;

}

運行結果:

C語言實現 學生成績管理系統(超詳細) 內附源碼

#includestdio.h

#includestring.h

#includestdlib.h

#includeconio.h

#define N 50//定義的學生數組的個數

#define M 1//定義的管理員數組的個數

int k;//錄入學生的個數

char read_door[20];//讀取文件的”門”

void Add_data(int flag);//增加數據

void Count_score(int flag);//求平均成績和總成績

void Delete_data(int flag);//根據學號刪除對應學生的成績

int Landing(int key);//登錄程序

void Load_data();//載入數據

void Updata_stu(int flag);

void Read_bigdoor(char *b);

void Rank_score(int way, int flag);//按照需求對對應的成績排序

void Read_data(char read_door);//讀取數據

void Read_door();//讀取”門”值

void Read_main_flag(int *a);

void Read_k();

void Save_bigdoor(char *b);

void Save_data(int flag);//保存數據

void Save_door();//保存”門”值

void Save_main_flag(int *a);

void Save_k(int k);

void Screen_rank();

void Screen_search();

void Screen_stu();

void Screen_teacher();

void Screen_stu_teach();

void Screen_onlyteach();

void Search_data(int way, int flag);//按學號或姓名查找查找

static struct STUDENT//學生的信息

{

char num[10];

char name[10];

float score[3];

float sum;

float aver;

int rank[4];

}stu[N];

static struct TEACHER//教師的登錄賬號和密碼

{

char num[10];

char code[10];

}teach[M] = { “18061124”,”991228″ };

int main()

{

char bigdoor =’n’;//教師可通過bigdoor控制學生的權限

char *c=bigdoor;

int order1, order2, order3;//order為用戶登錄的指令

int door1, door2, door3;

printf (“請輸入管理員登錄指令:\n”);

gets(read_door);

if (strcmp(read_door,”Lu Chen”)==0)

{

printf(“歡迎使用,您目前是擁有最高權限的管理員,請輸入您的賬號和密碼:\n\n”);

printf(“\n\n\n”);

Screen_onlyteach();

door1 = Landing(1);

if (door1 == 2)

{

printf(“\n賬號或密碼不正確”);

return 0;

}

}

else

{

Screen_stu_teach();

printf(“請輸入序號即選擇登錄選項:”);

scanf(“%d”, order1);

printf(“\n\n”);

door1 = Landing(order1);//door1確定用戶的權限

switch (door1)//提示用戶輸入出錯

{

case 1:

case 3: break;

case 2:printf(“\n輸入的賬號或密碼有誤”); return 0;

case 4:printf(“\n輸入的號碼有誤”); return 0;

}

}

if (door1 == 1)//老師界面

{

int flag = 0;

int *p=flag;

char teach_read_key;

printf(“\n是否讀取數據?(y/n):”);

scanf(“%*c%c”,teach_read_key);

if(teach_read_key==’y’)

{

Read_k();

    Read_door();

Read_main_flag(p);

Read_data(read_door[20]);

}

printf(“\n\n”);

for (int count = 1; count 0; count++)//利用死循環來重複使用功能

{

Screen_teacher();

printf(“\n請輸入序號即選擇登錄選項:”);

scanf(“%d”, order2);

printf(“\n\n”);

if (order2 == 10)

break;

switch (order2)

{

case 1:

{

Load_data();

flag=1;

Save_main_flag(p);

Save_k(k);

}break;

case 2:Updata_stu(flag); break;

case 3:

{

Screen_search();

printf(“請輸入你想查詢成績的方式:”);

scanf(“%d”, door2);

Search_data(door2, flag);

}break;

case 4:Add_data(flag);break;

case 5:Delete_data(flag);break;

case 6:

{

Screen_rank();

printf(“請輸入成績序號來選擇排序:”);

scanf(“%d”, door2);

Rank_score(door2, flag);

} break;

case 7:

{

Save_data(flag);

Save_door();

Save_k(k);

} break;

case 8:

{

bigdoor =’n’;

Save_bigdoor(c);

}break;

case 9:

{

bigdoor =’y’;

Save_bigdoor(c);

  }break;

default:printf(“您輸入的序號有誤!\n\n”);

}

}

}

else//學生界面

{

Read_k();

Read_data(‘y’);

for (int k = 1; k 0; k++)

{

Screen_stu();

printf(“請輸入下一步操作的序號:”);

scanf(“%d”, order3);

if (order3 == 3)

break;

switch (order3)

{

case 1:

{

Screen_search();

printf(“請輸入你想查詢成績的方式”);

scanf(“%d”, door3);

Search_data(door3, 1);

}break;

case 2:

{

Screen_rank();

printf(“請輸入成績序號來選擇排序:”);

scanf(“%d”, door3);

Rank_score(door3, 1);

}break;

default:printf(“輸入的操作序號有誤\n\n”);

}

}

}

return 0;

}

int Landing(int key)//登錄程序

{

char num[10];

char code[10];

if (key == 1)

{

printf(“請輸入賬號:”);

scanf(“%s”, num);

printf(“\n請輸入密碼:”);

scanf(“%s”, code);

for (int i = 0; i M; i++)

if (strcmp(teach[i].num, num) == 0 strcmp(teach[i].code, code) == 0)//判斷登陸賬號和密碼是否正確

return 1;

else

return 2;

}

else if (key == 2)

{

return 3;

}

else

{

return 4;

}

}

void Search_data(int way, int flag)//按學號或姓名查找查找

{

int Search_flag = 1;

if (flag)

{

char num[10], name[10];

int i;

if (way == 1)

{

printf(“\n請輸入學號:”);

scanf(“%s”, num);

for (i = 0; i k; i++)

{

if (strcmp(stu[i].num, num) == 0)//判斷學號存不存在

{

printf(“\n姓名:%s\n學號:%s\nsubject1:%f\nsubject2:%f\nsubject3:%f\nsum:%f\naver:%f\n”, stu[i].name, stu[i].num, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].aver);

Search_flag = 0;

break;

}

}

if (Search_flag)

printf(“\n您輸入的學號有誤\n”);

}

else if (way == 2)

{

printf(“\n請輸入姓名:”);

scanf(“%s”, name);

for (i = 0; i N; i++)

{

if (strcmp(stu[i].name, name) == 0)//判斷姓名存不存在

{

printf(“\n姓名:%s\n學號:%s\nsubject1:%f\nsubject2:%f\nsubject3:%f\nsum:%f\naver:%f\n”, stu[i].name, stu[i].num, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].aver);

flag = 0;

break;

}

}

if (flag)

printf(“\n輸入的姓名有誤\n”);

}

else

printf(“\n輸入的序號有誤\n”);

}

else

{

printf(“\n您還沒有載入數據\n”);

}

}

void Count_score(int flag)//求平均成績和總成績

{

if (flag)

{

for (int i = 0; i k; i++)

{

stu[i].sum = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];

stu[i].aver = stu[i].sum / 3;

}

}

else

{

printf(“\n您還沒有載入數據\n”);

}

}

void Load_data()//載入數據

{

printf(“輸入錄入學生成績個數:”);

scanf(“%d”, k);

for (int i = 0; i k; i++)

{

scanf(“%s%s%f%f%f”, stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2]);

Count_score(1);

}

}

void Rank_score(int way, int flag)//按照需求對對應的成績排序

{

int i, j, n, temp;

if (flag)

{

for (i = 0; i 4; i++)

for (j = 0; j k; j++)

stu[j].rank[i] = j + 1;

if (way == 1)

{

for (i = 0; i 3; i++)

for (j = 0; j k; j++)

for (n = j + 1; n k; n++)

if (stu[j].score[i] stu[n].score[i])

{

temp = stu[j].rank[i];

stu[j].rank[i] = stu[n].rank[i];

stu[n].rank[i] = temp;

}

printf(“\n”);

for (i = 0; i k; i++)

printf(“姓名:%s 學號:%s subject1:%d subject2:%d subject3:%d\n”, stu[i].name, stu[i].num, stu[i].rank[0], stu[i].rank[1], stu[i].rank[2]);

}

else if (way == 2)

{

for (j = 0; j k; j++)

for (n = j + 1; n k; n++)

if (stu[j].sum stu[n].sum)

{

temp = stu[j].rank[3];

stu[j].rank[3] = stu[n].rank[3];

stu[n].rank[3] = temp;

}

printf(“\n”);

for (i = 0; i k; i++)

printf(“姓名:%s 學號:%s sum: %d\n”, stu[i].name, stu[i].num, stu[i].rank[3]);

}

else

{

printf(“\n輸入的序號有誤\n”);

}

}

else

{

printf(“\n您還沒有載入數據\n”);

}

}

void Delete_data(int flag)//根據學號刪除對應學生的成績

{

if (flag)

{

int i, j;

char num[10];

printf(“\n請輸入您想要刪除信息的學號:”);

scanf(“%s”, num);

for (i = 0; i k; i++)

{

if (strcmp(stu[i].num, num) == 0)

for (j = i + 1; j k; j++)

{

stu[i] = stu[j];

Count_score(1);

}

}

k–;

Save_k(k);

}

else

{

printf(“\n您還沒有載入數據\n”);

}

}

void Updata_stu(int flag)//根據學號修改學生的成績

{

int Updata_flag = 1;

if (flag)

{

char num[10];

float subject1, subject2, subject3;

printf(“\n請輸入您想要修改學生的學號:”);

scanf(“%s”, num);

printf(“\n請輸入您想要更改的學生三科的成績:”);

scanf(“%f%f%f”, subject1, subject2, subject3);

for (int i = 0; i k; i++)

if (strcmp(stu[i].num, num) == 0)

{

stu[i].score[0] = subject1;

stu[i].score[1] = subject2;

stu[i].score[2] = subject3;

Updata_flag = 0;

Count_score(1);

}

if (Updata_flag)

{

printf(“\n輸入學號有誤\n”);

}

}

else

{

printf(“\n您還沒有載入數據\n”);

}

}

void Save_data(int flag)//保存數據

{

if(flag)

{

FILE *fp;

if((fp=fopen(“load.txt”,”w”))==NULL)

{

printf(“Save_data error!”);

exit(0);

}

for(int i=0;ik;i++)

{

fwrite(stu[i],sizeof(STUDENT),1,fp);

}

fclose(fp);

printf(“成功保存數據!\n\n”);

read_door[20]=’y’;

}

else

{

printf(“\n您還沒有載入數據\n”);

}

}

void Read_data(char read_door)//讀取數據

{

if(read_door==’y’)

{

FILE *fp;

if((fp=fopen(“load.txt”,”r”))==NULL)

{

printf(“Read_data error!”);

exit(0);

}

for(int i=0;ik;i++)

{

fread(stu[i],sizeof(STUDENT),1,fp);

}

fclose(fp);

}

else

{

printf(“\n沒有保存數據的記錄\n”);

}

}

void Save_door()//保存”門”值

{

FILE *fp;

if((fp=fopen(“door.txt”,”w”))==NULL)

{

printf(“Save_door error!”);

exit(0);

}

fputc(read_door[20],fp);

fclose(fp);

}

void Read_door()//讀取”門”值

{

FILE *fp;

if((fp=fopen(“door.txt”,”r”))==NULL)

{

printf(“Read_door error!”);

exit(0);

}

read_door[20]=fgetc(fp);

fclose(fp);

}

void Save_main_flag(int *a)

{

FILE *fp;

if((fp=fopen(“flag.txt”,”w”))==NULL)

{

printf(“Save_main_flag error!”);

exit(0);

}

fprintf(fp,”%d”,*a);

fclose(fp);

}

void Read_main_flag(int *a)

{

FILE *fp;

if((fp=fopen(“flag.txt”,”r”))==NULL)

{

printf(“Read_main_flag error!”);

exit(0);

}

fscanf(fp,”%d”,a);

fclose(fp);

}

void Save_bigdoor(char *b)

{

FILE *fp;

if((fp=fopen(“bigdoor.txt”,”w”))==0)

{

printf(“Save_bigdoor error!”);

exit(0);

}

fputc(*b,fp);

fclose(fp);

}

void Read_bigdoor(char *b)

{

FILE *fp;

if((fp=fopen(“bigdoor.txt”,”r”))==0)

{

printf(“Read_bigdoor error!”);

exit(0);

}

*b=fgetc(fp);

fclose(fp);

}

void Save_k(int k)

{

FILE *fp;

if((fp=fopen(“k.txt”,”w”))==0)

{

printf(“Save_k error!”);

exit(0);

}

fprintf(fp,”%d”,k);

fclose(fp);

}

void Read_k()

{

FILE *fp;

if((fp=fopen(“k.txt”,”r”))==0)

{

printf(“Read_k error!”);

exit(0);

}

fscanf(fp,”%d”,k);

fclose(fp);

}

void Add_data(int flag)//增加數據

{

int i, j,count=k;

char num[10], name[10];

float subject1, subject2, subject3;

if (flag)

{

printf(“\n輸入您想增加的數據條數:”);

scanf(“%d”, i);

for (j = 0; j i; j++)

{

printf(“\n輸入增加的學生學號,姓名,三門科目成績”);

scanf(“%s%s%f%f%f”, num, name, subject1, subject2, subject3);

strcpy(stu[count + j].num, num);

strcpy(stu[count+ j].name, name);

stu[count+ j].score[0] = subject1;

stu[count + j].score[1] = subject2;

stu[count+ j].score[2] = subject3;

k++;

Count_score(1);

}

Save_k(k);

}

else

{

printf(“\n輸入您想增加的數據條數:”);

scanf(“%d”, i);

for (j = 0; j i; j++)

{

printf(“\n輸入增加的學生學號,姓名,三門科目成績”);

scanf(“%s%s%f%f%f”, num, name, subject1, subject2, subject3);

strcpy(stu[j].num, num);

strcpy(stu[j].name, name);

stu[j].score[0] = subject1;

stu[j].score[1] = subject2;

stu[j].score[2] = subject3;

k++;

Count_score(1);

}

}

}

void Screen_search()//查詢界面

{

printf(“*****************學生成績查詢界面*******************\n\n\n”);

printf(“——————————————————————————\n”);

printf(“|              ①  學生學號查詢                    |\n”);

printf(“|              ②  學生姓名查詢                    |\n”);

printf(“——————————————————————————\n”);

}

void Screen_rank()//成績排名方式界面

{

printf(“*****************學生成績排名界面*******************\n\n\n”);

printf(“——————————————————————————\n”);

printf(“|              ①    subject                      |\n”);

printf(“|              ②      sum                        |\n”);

printf(“——————————————————————————\n”);

}

void Screen_teacher()

{

printf(“*****************教師管理操作界面*******************\n\n\n”);

printf(“——————————————————————————\n”);

printf(“|              ①    數據載入                      |\n”);

printf(“|              ②    修改數據                      |\n”);

printf(“|              ③    查詢數據                      |\n”);

printf(“|              ④    添加數據                      |\n”);

printf(“|              ⑤    刪除數據                      |\n”);

printf(“|              ⑥    成績排序                      |\n”);

printf(“|              ⑦    保存數據                      |\n”);

printf(“|              ⑧    學生限制                      |\n”);

printf(“|              ⑨    學生開放                      |\n”);

printf(“|              ⑩      退出                        |\n”);

printf(“——————————————————————————\n”);

}

void Screen_stu_teach()

{

printf(“*****************學生成績管理系統*******************\n\n\n”);

printf(“——————————————————————————\n”);

printf(“|              ① 教師管理員登錄                  |\n”);

printf(“|              ②  學生端登錄                    |\n”);

printf(“——————————————————————————\n”);

}

void Screen_onlyteach()

{

printf(“*****************教師登陸操作界面*******************\n\n\n”);

printf(“——————————————————————————\n”);

printf(“|              ① 教師管理員登錄                  |\n”);

printf(“——————————————————————————\n”);

}

void Screen_stu()

{

printf(“*****************學生用戶操作界面*******************\n\n\n”);

printf(“——————————————————————————\n”);

printf(“|              ①  學生成績查詢                    |\n”);

printf(“|              ②  成績排名查詢                    |\n”);

printf(“|              ③      退出                        |\n”);

printf(“——————————————————————————\n”);

}

以上內容僅是本人通過多方瀏覽網上資料,自己敲出來的。

如有問題,大家可以在評論區下方留言!!!

本人已親測,可用

C語言 學生成績管理系統?

附錄* 綜合實例——學生成績查詢系統

這是一個用c語言編寫的小軟件——學生成績查詢系統,同學們可以將其作為一個綜合實例,對其進行仔細的閱讀和研究,體驗編程處理問題的過程,加深對編程語言的理解,提高處理問題的綜合能力。

1、程序的功能:

1)可以根據用戶輸入的輸入、輸出文件名,讀入學生成績,完成數據的初始化。

2)可以查詢指定學生的成績,可以是指定科目的成績,也可以是全部科目的成績。

3)友好退出。

2、使用說明:

1)將輸入文件放到指定的目錄下(即../student/)

圖1

2)啟動管理程序student.exe

3)在程序的使用界面,首先輸入輸入文件名和輸出文件名,完成程序的初始化,操作如下圖所示

圖2

然後,按照按照提示,輸入學生姓名和需要程序的成績(此軟件暫時只設置了五成成績,同學們可以按照需要擴展)科目代碼,也可以輸入查詢所有成績的代碼。程序成績,如下圖所示

圖3

4)輸入代碼「q」退出程序。

3、程序代碼

#include

#include

#include

FILE *f1,*f2;

char file1[20],file2[20],name[200][20],name1[15];

int n,m,data[200][10];

void init(){

int i,j;

char ch=’ ‘;

printf(“%20c歡迎使用班級成績管理系統\n\n”,ch);

printf(“請輸入輸入和輸出文件名(中間用一個空格隔開):\n”);

scanf(“%s %s”,file1,file2);// 1)該條語句的功能是什麼?

f1=fopen(file1,”r”);

f2=fopen(file2,”w”);

fscanf(f1,”%d%d”,n,m); // 2)該條語句的功能是什麼?

for(i=1;i=n;i++)

{

fscanf(f1,”%s”,name[i]); // 3)該條語句的功能是什麼?

data[i][0]=0; // 4)該條語句的功能是什麼?沒有這條語句可不可以?

for(j=1;j=m;j++)

{

fscanf(f1,”%d”,data[i][j]);

data[i][0]+=data[i][j]; // 5)該條語句的功能是什麼?

}

}

fprintf(f2,”name\tyuwen\tshuxue\tyingyu\twuli\thuaxue\tzongfen\n “);

for(i=1;i=n;i++)

{

fprintf(f2,”%s\t”,name[i]);

for(j=1;j=m;j++)

fprintf(f2,”%d\t”,data[i][j]);

fprintf(f2,”%d\n”,data[i][0]);

}

fclose(f1);// 6)問什麼可以在這關閉輸入文件?

fclose(f2);

}

void search(char na[],char num){

int i=1,j;

while((i=n)(strcmp(na,name[i])!=0))i++;

if(i=n){

switch(num){

case ‘1’:printf(“%s的語文成績為%d!\n”,na,data[i][1]);break;

case ‘2’:printf(“%s的數學成績為%d!\n”,na,data[i][2]);break;

case ‘3’:printf(“%s的英語成績為%d!\n”,na,data[i][3]);break;

case ‘4’:printf(“%s的物理成績為%d!\n”,na,data[i][4]);break;

case ‘5’:printf(“%s的化學成績為%d!\n”,na,data[i][5]);break;

case ‘a’:

printf(“%s的各科成績為:\n”,name[i]);

printf(“語文\t數學\t英語\t物理\t化學\t總成績\n”);

for(j=1;j=m;j++)

printf(“%d\t”,data[i][j]);

printf(“%d\n”,data[i][0]);

break;

default: printf(“沒有這種查詢方式,請確認後再次輸入!\n”);

}

}

else printf(“查無此人,請確認後再次查詢!\n”);

printf(“\n\n”);

}

main(){

init();//數據初始化

printf(“數據初始化結束!\n\n”);

printf(“————————————————\n\n”);

char na[20];

char num;

while(1){ // 7)該條語句的功能是什麼?

//scanf(“%s%c%c”,na,num,num); // 8)此處的輸入可不可以用這條語句?

printf(“請輸入學生的姓名和要查詢成績的科目代碼(中間用一個空格隔開):\n(1 語文 2 數學 3 英語 4 物理 5 化學 a 所有科目成績 q 退出)\n”);

scanf(“%s”,na);

if(strcmp(na,”q”)==0)break; // 9)問什麼要用這條語句strcmp(na,”q”)==0?

scanf(“%c%c”,num,num); // 10)為什麼用了兩次num?

search(na,num);

printf(“————————————————\n\n”);

printf(“\n請輸入新的查詢:\n\n”);

}

system(“pause”);

}

這是我以前的一個程序,你改改吧,應該很好改

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/295762.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-27 12:57
下一篇 2024-12-27 12:57

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python數據處理課程設計

    本文將從多個方面對Python數據處理課程設計進行詳細闡述,包括數據讀取、數據清洗、數據分析和數據可視化四個方面。通過本文的學習,讀者將能夠了解使用Python進行數據處理的基本知…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 數據結構學生成績管理系統

    在現代教育中,學生成績的管理已經成為了一個不可或缺的部分。藉助數據結構,一個高效、可靠的學生成績管理系統可以被輕鬆實現。 一、數據結構的選擇 在構建學生成績管理系統時,選擇合適的數…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28

發表回復

登錄後才能評論