本文目錄一覽:
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