當前位置:首頁 » 考試成績 » 學生成績管理系統c語言直方圖

學生成績管理系統c語言直方圖

發布時間: 2021-03-03 17:02:52

1. 用c語言實現一個簡單的學生成績管理系統,包括:學號,姓名,科目,成績

//用字元界面實現,比如按數字1,可以錄入學生所有信息;
//按數字2,顯示所有學生成績;
//按數字3,進入查詢,按學號或姓名查詢該學生是否存在,如果存在顯示他的所有信息,///否則給出不存在提示。
#include<stdio.h>
structstudent
{
charnum[6];/*學號*/
charname[10];
charsubject[20];/*科目*/
floatgrade;
}stu[10];
voidmenu()
{
printf("==================================== ");
printf("|學生成績管理系統| ");
printf("|1輸入學生成績| ");
printf("|2輸出學生成績| ");
printf("|3查詢學生成績| ");
printf("|0退出管理系統| ");
printf("==================================== ");
}
voidinput()
{
for(inti=0;i<10;i++)
scanf("%s%s%s%f",stu[i].num,stu[i].name,stu[i].subject,&stu[i].grade);
}
voidshow()
{
printf("學號 姓名 科目 成績 ");
for(inti=0;i<10;i++)
printf("%s %s %s %f ",stu[i].num,stu[i].name,stu[i].subject,stu[i].grade);
}
voidserach()
{
charobj[10];
printf("輸入要查詢的學號");
scanf("%s",obj);
for(inti=0;i<10;i++)
{
if(strcmp(obj,stu[i].num))
{
printf("學號 姓名 科目 成績 ");
printf("%s %s %s %f ",stu[i].num,stu[i].name,stu[i].subject,stu[i].grade);
}
}
}
intmain()
{
intselection;
while(true)
{
clrscr();
menu();
printf("請選擇0--3:");
scanf("%d",&selection);
switch(selection)
{
case1:input();break;
case2:show();break;
case3:search();break;
case0:exit(0);break;
default:printf("錯誤的輸入,請重新輸入:");
}
}
return0;
}

2. 學生成績管理系統C語言編程

||#include<stdio.h> /*引用庫函數*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定義結構體數組*/
{
char num[10]; /*學號*/
char name[20]; /*姓名*/
int score; /*成績*/
}Student;
Student stu[80]; /*結構體數組變數*/
int menu_select() /*菜單函數*/
{
char c;
do{
system("cls"); /*運行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜單選擇*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*讀入選擇*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回選擇*/
}
int Input(Student stud[],int n) /*輸入若干條記錄*/
{int i=0;
char sign,x[10]; /*x[10]為清除多餘的數據所用*/
while(sign!='n'&&sign!='N') /*判斷*/
{ printf("\t\t\tstudent's num:"); /*交互輸入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多餘的輸入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*輸入判斷*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*顯示所有記錄*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式頭*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循環輸入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十個暫停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按學號排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一條記錄*/
{char x[10]; /*清除多餘輸入所用*/
printf("\t\t\tstudent's num:"); /*互動式輸入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*調用排序函數*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,刪除一條記錄*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*互動式問尋*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失敗信息*/
return(n);
}
for(j=i;j<n-1;j++) /*刪除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找並顯示一個記錄*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*互動式輸入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*輸入失敗信息*/
return;

}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*輸出該學生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,輸出統計信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成績平均值*/
for(i=0;i<n;i++) /*循環輸入判斷*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*總共記錄數*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*從文件中讀入數據*/
{ int i=0,num;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*輸入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打開文件*/
{ printf("\t\t\tcann't open the file\n"); /*打開失敗信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*讀入總記錄量*/
while(i<num) /*循環讀入數據*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*關閉文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/
{
int i=0;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*輸入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打開文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循環寫入數據*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*關閉文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函數*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*選擇判斷*/
{
case 1:
printf("\t\t\tInput Records\n"); /*輸入若干條記錄*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*顯示所有記錄*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按學號排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找並顯示一個記錄*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,輸出統計信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,輸出統計信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循環寫入數據*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*結束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}

四、函數調用關系圖
註:「→」代表調用
Input函數
列印鏈表記錄
Display函數
輸入若干條記錄
menu_select()函數
選擇菜單
Sort_by_num函數
顯示所有記錄
Delete_a_record函數
按姓名查找,刪除一條記錄
Query_a_record查找並顯示一條記錄
Statistic函數
輸出統計信息 (新增)
AddfromText函數
從正文中添加數據到結構體數組中
Main函數
Insert_a_record插入一條記錄
WritetoText函數 將所有數據寫入文件中
退出程序
Reverse(head)函數
按學號排序
五、設計測試流程
1、進入界面
2、輸入選項1,回車;
按提示輸入數據:
3、回到主菜單;
輸入選項7,回車;
輸入文件名:data.txt,回車;
出現成功提示,則讀入文件操作成功。
4、回到主菜單,輸入2,回車
每10個暫停顯示數據
5、回到主菜單,輸入3,回車
出現排序成功信息。
6、回到主菜單,輸入4,回車
按提示插入一組數據
7、回到主菜單,輸入5,回車
按提示輸入姓名,刪除數據
出現刪除成功的信息
8、回到主菜單,輸入6,回車
輸入姓名進行查詢
9、回到主菜單,輸入7,回車
出現統計信息
10、回到主菜單,輸入9,回車
輸入result.txt,回車
出現成功寫入文件的信息
11、回到主菜單,輸入0,回車退出系統
回答者:kingkey001 - 試用期 一級 7-14 22:38
修改答復: kingkey001,您要修改的答復如下: 積分規則 關閉
C語言課程設計報告-------學生成績簡單管理程序
一、系統菜單的主要功能
(1)輸入若干條記錄
(2)顯示所有記錄
(3)按學號排序
(4)插入一條記錄
(5)按姓名查找,刪除一條記錄
(6)查找並顯示一條記錄
(7)輸出統計信息 (新增)
(8)從正文中添加數據到結構體數組中
(9)將所有數據寫入文件中
(0)退出程序
二、題目分析
該題主要考察學生對結構體,指針,文件的操作,以及C語言演算法的掌握,所以完成此道題目要求較強的設計能力,尤其是要有一種大局觀的意識。如何調程序也非常重要,通過這個程序可以學習到以前調試短程序沒有的的經驗。
菜單中的每一個選項都對應一個子程序,子程序的演算法幾乎囊獲了所有C語言學過的技巧,下面就各個子程序中的功能進行說明:
功能1和4的演算法相似,輸入一條記錄到結構體中去,其中有一部很關鍵,就是通過gets將所有的多餘的字元,回車讀去,否則就會出錯。
功能2是顯示所有的記錄,通過循環輸出,格式也比較重要。
功能3為按學號排序,因為學號定義成了字元數組的形式,因此在運用冒泡法進行排序的時候,要用到strcmp,strcpy等函數。
功能5為按姓名刪除記錄,先輸入姓名,再一一比較,如果沒有則返回失敗信息,如果找到就將此記錄都向前移一位,返回n-1。
功能6的演算法在5中就已經體現了,輸入姓名,一一比較。
功能7為新增的功能,因為考慮到原來給出的函數中竟然沒有對學生成績的統計功能,因此新增此功能,可以得出所有的記錄個數,最高、最低、平均分,並輸出相關的學生信息等。
功能8和9是對文件的操作,提前准備好數據。
三、程序正文部分
#include<stdio.h> /*引用庫函數*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定義結構體數組*/
{
char num[10]; /*學號*/
char name[20]; /*姓名*/
int score; /*成績*/
}Student;
Student stu[80]; /*結構體數組變數*/
int menu_select() /*菜單函數*/
{
char c;
do{
system("cls"); /*運行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜單選擇*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*讀入選擇*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回選擇*/
}
int Input(Student stud[],int n) /*輸入若干條記錄*/
{int i=0;
char sign,x[10]; /*x[10]為清除多餘的數據所用*/
while(sign!='n'&&sign!='N') /*判斷*/
{ printf("\t\t\tstudent's num:"); /*交互輸入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多餘的輸入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*輸入判斷*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*顯示所有記錄*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式頭*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循環輸入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十個暫停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按學號排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一條記錄*/
{char x[10]; /*清除多餘輸入所用*/
printf("\t\t\tstudent's num:"); /*互動式輸入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*調用排序函數*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,刪除一條記錄*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*互動式問尋*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失敗信息*/
return(n);
}
for(j=i;j<n-1;j++) /*刪除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找並顯示一個記錄*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*互動式輸入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*輸入失敗信息*/
return;

}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*輸出該學生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,輸出統計信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成績平均值*/
for(i=0;i<n;i++) /*循環輸入判斷*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*總共記錄數*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*從文件中讀入數據*/
{ int i=0,num;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*輸入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打開文件*/
{ printf("\t\t\tcann't open the file\n"); /*打開失敗信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*讀入總記錄量*/
while(i<num) /*循環讀入數據*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*關閉文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/
{
int i=0;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*輸入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打開文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循環寫入數據*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*關閉文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函數*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*選擇判斷*/
{
case 1:
printf("\t\t\tInput Records\n"); /*輸入若干條記錄*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*顯示所有記錄*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按學號排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找並顯示一個記錄*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,輸出統計信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,輸出統計信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循環寫入數據*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*結束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}

四、函數調用關系圖
註:「→」代表調用
Input函數
列印鏈表記錄
Display函數
輸入若干條記錄
menu_select()函數
選擇菜單
Sort_by_num函數
顯示所有記錄
Delete_a_record函數
按姓名查找,刪除一條記錄
Query_a_record查找並顯示一條記錄
Statistic函數
輸出統計信息 (新增)
AddfromText函數
從正文中添加數據到結構體數組中
Main函數
Insert_a_record插入一條記錄
WritetoText函數 將所有數據寫入文件中
退出程序
Reverse(head)函數
按學號排序
五、設計測試流程
1、進入界面
2、輸入選項1,回車;
按提示輸入數據:
3、回到主菜單;
輸入選項7,回車;
輸入文件名:data.txt,回車;
出現成功提示,則讀入文件操作成功。
4、回到主菜單,輸入2,回車
每10個暫停顯示數據
5、回到主菜單,輸入3,回車
出現排序成功信息。
6、回到主菜單,輸入4,回車
按提示插入一組

3. 學生成績管理系統,使用c語言程序編寫。

給一個我以前寫過的吧,功能應該差不多

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<queue>
#include<stack>
#include<cmath>
usingnamespacestd;

/*定義學生結構體*/

structStudent

{

charID[20];

charName[20];

floatMark1;

floatMark2;

floatMark3;

floatAverage;

};


/*聲明學生數組及學生數量*/

structStudentstudents[1000];

intnum=0;/*求平均值*/

floatAvg(structStudentstu)

{

return(stu.Mark1+stu.Mark2+stu.Mark3)/3;

}/*通過學號返回數組下標*/

intStudent_SearchByIndex(charid[])

{

inti;

for(i=0;i<num;i++)

{

if(strcmp(students[i].ID,id)==0)

{

returni;

}

}

return-1;

}/*通過姓名返回數組下標*/

intStudent_SearchByName(charname[])

{

inti;

for(i=0;i<num;i++)

{

if(strcmp(students[i].Name,name)==0)

{

returni;

}

}

return-1;

}/*顯示單條學生記錄*/

voidStudent_DisplaySingle(intindex)

{

printf("%10s%10s%8s%8s%8s%10s ","學號","姓名","成績","成績","成績","平均成績");

printf("------------------------------------------------------------- ");

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f ",students[index].ID,students[index].Name,

students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);

}/*插入學生信息*/

voidStudent_Insert()

{

while(1)

{

printf("請輸入學號:");

scanf("%s",&students[num].ID);

getchar();printf("請輸入姓名:");

scanf("%s",&students[num].Name);

getchar();printf("請輸入成績:");

scanf("%f",&students[num].Mark1);

getchar();printf("請輸入成績:");

scanf("%f",&students[num].Mark2);

getchar();printf("請輸入成績:");

scanf("%f",&students[num].Mark3);

getchar();students[num].Average=Avg(students[num]);

num++;printf("是否繼續?(y/n)");

if(getchar()=='n')

{

break;

}

}}/*修改學生信息*/

voidStudent_Modify()

{

//floatmark1,mark2,mark3;

while(1)

{

charid[20];

intindex;

printf("請輸入要修改的學生的學號:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if(index==-1)

{

printf("學生不存在! ");

}

else

{

printf("你要修改的學生信息為: ");

Student_DisplaySingle(index);

printf("--請輸入新值-- ");


printf("請輸入學號:");

scanf("%s",&students[index].ID);

getchar();


printf("請輸入姓名:");

scanf("%s",&students[index].Name);

getchar();


printf("請輸入成績:");

scanf("%f",&students[index].Mark1);

getchar();


printf("請輸入成績:");

scanf("%f",&students[index].Mark2);

getchar();


printf("請輸入成績:");

scanf("%f",&students[index].Mark3);

getchar();


students[index].Average=Avg(students[index]);

}

printf("是否繼續?(y/n)");

if(getchar()=='n')

{

break;

}

}

}/*刪除學生信息*/

voidStudent_Delete()

{

inti;

while(1)

{

charid[20];

intindex;

printf("請輸入要刪除的學生的學號:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if(index==-1)

{

printf("學生不存在! ");

}

else

{

printf("你要刪除的學生信息為: ");

Student_DisplaySingle(index);

printf("是否真的要刪除?(y/n)");

if(getchar()=='y')

{

for(i=index;i<num-1;i++)

{

students[i]=students[i+1];//把後邊的對象都向前移動

}

num--;

}

getchar();

}

printf("是否繼續?(y/n)");

if(getchar()=='n')

{

break;

}

}

}/*按姓名查詢*/

voidStudent_Select()

{

while(1)

{

charname[20];

intindex;

printf("請輸入要查詢的學生的姓名:");

scanf("%s",&name);

getchar();

index=Student_SearchByName(name);

if(index==-1)

{

printf("學生不存在! ");

}

else

{

printf("你要查詢的學生信息為: ");

Student_DisplaySingle(index);

}

printf("是否繼續?(y/n)");

if(getchar()=='n')

{

break;

}

}

}/*按平均值排序*/

voidStudent_SortByAverage()

{

inti,j;

structStudenttmp;

for(i=0;i<num;i++)

{

for(j=1;j<num-i;j++)

{

if(students[j-1].Average<students[j].Average)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}

}/*顯示學生信息*/

voidStudent_Display()

{

inti;

printf("%10s%10s%8s%8s%8s%10s ","學號","姓名","成績","成績","成績","平均成績");

printf("------------------------------------------------------------- ");

for(i=0;i<num;i++)

{

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f ",students[i].ID,students[i].Name,

students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);

}

}/*將學生信息從文件讀出*/

voidIO_ReadInfo()

{

FILE*fp;

inti;

if((fp=fopen("Database.txt","rb"))==NULL)

{

printf("不能打開文件! ");

return;

}

if(fread(&num,sizeof(int),1,fp)!=1)

{

num=-1;

}

else

{

for(i=0;i<num;i++)

{

fread(&students[i],sizeof(structStudent),1,fp);

}

}

fclose(fp);

}/*將學生信息寫入文件*/

voidIO_WriteInfo()

{

FILE*fp;

inti;

if((fp=fopen("Database.txt","wb"))==NULL)

{

printf("不能打開文件! ");

return;

}

if(fwrite(&num,sizeof(int),1,fp)!=1)

{

printf("寫入文件錯誤! ");

}

for(i=0;i<num;i++)

{

if(fwrite(&students[i],sizeof(structStudent),1,fp)!=1)

{

printf("寫入文件錯誤! ");

}

}

fclose(fp);

}

/*主程序*/

voidmain()

{

intchoice;

IO_ReadInfo();

while(1)

{

/*主菜單*/

printf(" ------學生成績管理系統------ ");

printf("1.增加學生記錄 ");

printf("2.修改學生記錄 ");

printf("3.刪除學生記錄 ");

printf("4.按姓名查詢學生記錄 ");

printf("5.按平均成績排序 ");

printf("6.退出 ");

printf("請選擇(1-6):");

scanf("%d",&choice);

getchar();

switch(choice)

{

case1:

Student_Insert();

break;

case2:

Student_Modify();

break;

case3:

Student_Delete();

break;

case4:

Student_Select();

break;

case5:

Student_SortByAverage();

Student_Display();

break;

case6:

exit(0);

break;

}

IO_WriteInfo();

}

}

4. 學生成績管理系統c語言

#include <stdio.h>#include <string.h>#include <stdlib.h>#define CH 20 // 最大字元#define N 100 // 學生的最大個數
typedef struct student//學生的結構體{ char name[CH]; // 姓名 char no[CH]; //學號 float math; //高數 float iEn; //英語 float physics; //大學物理 float C_language; //C語言 float fAvage; //平均分數 float S_all; //總分數}student;
student s[N]; //學生數組int num; //學生個數
/*程序輔助函數*//* 歡迎界面 */void welcome(){ printf("\n\n\n\n\n"); printf("\t\t ╭═══════┤成績管理系統├═══════╮\n"); printf("\t\t║ \t║\n"); printf("\t\t║ \t║\n"); printf("\t\t║ 歡迎使用該成績管理系統 \t║\n"); printf("\t\t║ \t║\n"); printf("\t\t║ 作者:某某 \t║\n"); printf("\t\t║ \t║\n"); printf("\t\t║ 按回車鍵繼續…… \t║\n"); printf("\t\t║ \t║\n"); printf("\t\t║ \t║\n"); printf("\t\t╰═══════════════════════╯\n"); getchar();}/* 菜單 */void meun(){ system("cls"); //屏幕清空 printf("\n\n\n\n\n"); printf("\t\t ╭═══════┤成績管理系統├═══════╮\n"); /*菜單選擇*/ printf("\t\t║ …………某某製作 \t║\n"); printf("\t\t║ 學 生 成 績 管 理 系 統 \t║\n"); printf("\t\t║ 主菜單 \t║\n"); printf("\t\t║ 1. 錄入學生數據 \t║\n"); printf("\t\t║ 2. 刪除學生數據 \t║\n"); printf("\t\t║ 3. 修改學生數據 \t║\n"); printf("\t\t║ 4. 顯示學生數據 \t║\n"); printf("\t\t║ 5. 排序輸出 \t║\n"); printf("\t\t║ 6. 查詢成績 \t║\n"); printf("\t\t║ 7. 退出成績管理系統 \t║\n"); printf("\t\t║ \t║\n"); printf("\t\t╰═══════════════════════╯\n"); printf("\t\t \1選擇菜單選項(1-7):");}void read_from_file()//從文件中讀取學生的信息{ FILE *fp; int i=0; fp=fopen("data.db","rb"); if(!fp) { printf("打開文件data.db失敗!\n"); return ; }
fread(&num,1,sizeof(num),fp); //先讀取學生的個數 for(i=0;i<num;i++) fread(&s[i],1,sizeof(student),fp); //讀取每個學生的信息存放到結構體
fclose(fp);//關閉文件
}
void write_to_file()//從文件中讀取學生的信息{ FILE *fp; int i=0; fp=fopen("data.db","wb+"); if(!fp) { printf("打開文件data.db失敗!\n"); return ; }
fwrite(&num,1,sizeof(num),fp); //先寫入學生的個數 for(i=0;i<num;i++) fwrite(&s[i],1,sizeof(student),fp); //寫入每個學生的信息
fclose(fp);//關閉文件
}
void Add()//添加學生信息{ int i=num;
printf("請輸入姓名:"); scanf("%s",s[i].name); printf("請輸入學號:"); scanf("%s",s[i].no);
printf("請輸入高數:"); scanf("%f",&s[i].math);
printf("請輸入英語:"); scanf("%f",&s[i].iEn);
printf("請輸入大學物理:"); scanf("%f",&s[i].physics);
printf("請輸入C語言:"); scanf("%f",&s[i].C_language);
s[i].S_all=s[i].math+s[i].iEn+s[i].physics+s[i].C_language; //計算出總分數
s[i].fAvage=s[i].S_all/4; //計算出平均分
num++;
}
void Delete()//刪除學生信息{
int i=0,j=0; char no[CH]; //學號
printf("請輸入你要刪除的學生學號:");
scanf("%s",no);
for(i=0;i<num;i++)//先找到該學號對應的序號 if(strcmp(s[i].no,no)==0) { for(j=i;j<num-1;j++) s[j]=s[j+1];
num--; //數量減少 1
return; }
printf("沒有這個學號!");
}
void Delete_infor()//修改學生信息{
int i=0; char no[CH]; //學號 printf("請輸入你要修改的學生學號:");
scanf("%s",no);
for(i=0;i<num;i++)//先找到該學號對應的序號 if(strcmp(s[i].no,no)==0) { printf("請輸入姓名:"); scanf("%s",s[i].name); printf("請輸入學號:"); scanf("%s",s[i].no);
printf("請輸入高數:"); scanf("%f",&s[i].math);
printf("請輸入英語:"); scanf("%f",&s[i].iEn);
printf("請輸入大學物理:"); scanf("%f",&s[i].physics);
printf("請輸入C語言:"); scanf("%f",&s[i].C_language);
s[i].S_all=s[i].math+s[i].iEn+s[i].physics+s[i].C_language; //計算出總分數
s[i].fAvage=s[i].S_all/4; //計算出平均分

return; }
printf("沒有這個學號!");
}
void Show_s()//顯示學生信息{ int i=0; printf("姓名 學號 高數 英語 大學物理 C語言 總分數 平均分\n"); for(i=0;i<num;i++) printf("%s%10s%11.2f%11.2f%11.2f%11.2f%11.2f%11.2f\n",s[i].name,s[i].no,s[i].math,s[i].iEn,s[i].physics,s[i].C_language,s[i].S_all,s[i].fAvage);
}
void Sort_s()//用平均值排序{ int i=0,j=0; student t;//用於排序交換的臨時變數 student s1[N]; //學生數組,用來排序的臨時數組
for(i=0;i<num;i++) s1[i]=s[i];
for(i=0;i<num;i++) for(j=i+1;j<num;j++) if(s1[i].fAvage<s1[j].fAvage) { t=s1[i]; s1[i]=s1[j]; s1[j]=t; }
printf("姓名 學號 高數 英語 大學物理 C語言 總分數 平均分\n"); for(i=0;i<num;i++) printf("%s%10s%11.2f%11.2f%11.2f%11.2f%11.2f%11.2f\n",s1[i].name,s1[i].no,s1[i].math,s1[i].iEn,s1[i].physics,s1[i].C_language,s1[i].S_all,s1[i].fAvage);

}
void Search()//查詢學生成績{
int i=0; char no[CH]; //學號 printf("請輸入你要查詢的學生學號:");
scanf("%s",no);
for(i=0;i<num;i++)//先找到該學號對應的序號 if(strcmp(s[i].no,no)==0) { printf("姓名 學號 高數 英語 大學物理 C語言 總分數 平均分\n"); printf("%s%10s%11.2f%11.2f%11.2f%11.2f%11.2f%11.2f\n",s[i].name,s[i].no,s[i].math,s[i].iEn,s[i].physics,s[i].C_language,s[i].S_all,s[i].fAvage);
return; }
printf("沒有這個學號!");
} void secede()//退出查詢 { printf("謝謝使用學生成績評定系統!再見!\n"); }void main(){ int choose=0; num=0;//初始化學生個數為0 //read_from_file(); //讀取文件 welcome(); meun(); scanf("%d",&choose); printf("\n"); while(choose>0&&choose<8) {
switch(choose) { case 1:Add();system("pause");break; case 2:Delete();system("pause");break; case 3:Delete_infor();system("pause");break; case 4:Show_s();system("pause");break; case 5:Sort_s();system("pause");break; case 6:Search();system("pause");break; case 7:secede();system("pause");break; } printf("\n"); meun(); scanf("%d",&choose); printf("\n"); }
write_to_file();//寫入文件
getchar();
}

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

C語言程序:

#include<stdio.h>
#include<string.h>

typedefstructstudent
{
charname[20]; /*姓名*/
intcode; /*學號*/
intkor,eng,math; /*3門課程的成績*/
}STUDENT;

/*返回輸入數據*/
STUDENTInput();

/*輸出所有輸入的數據*/
voidOutput(STUDENTinfo[],intcnt);

/*將輸入分數轉換為A-F*/
chargrade(intscore);

intmain()
{
STUDENTS[10];
intcnt=0,select;
inti,j;
intcode;

while(1)
{
printf(" 學生信息管理系統 ");
printf(" 1 添加 ");
printf(" 2 刪除 ");
printf(" 3 查詢 ");
printf(" 0 結束 ");
printf(" 您的選擇[0-3]:");
scanf("%d",&select);

if(select<0||select>3)
continue;
if(select==0)
{
printf("退出系統! ");
break;
}

if(select==1) /*添加*/
{
S[cnt++]=Input();
}
elseif(select==2) /*刪除*/
{
printf(" 待刪除學生的學號:");
scanf("%d",&code);

for(i=0;i<cnt;i++)
if(S[i].code==code)
break;
if(i>=cnt)
{
printf("學號不存在,刪除失敗! ");
}
else{
for(j=i+1;j<cnt;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("刪除成功! ");
}
}
else /*查詢*/
{
printf(" 待查找學生的學號:");
scanf("%d",&code);

for(i=0;i<cnt;i++)
if(S[i].code==code)
break;
if(i>=cnt)
{
printf("學號不存在,查找失敗! ");
}
else
{
printf(" 查詢結果: ");
Output(S,i);
}
}
}

return0;
}

/*返回輸入數據*/
STUDENTInput()
{
STUDENTstu;
printf(" 新學生信息 ");
printf(" 學號:");
scanf("%d",&stu.code);
printf(" 姓名:");
getchar();
gets(stu.name);
printf(" 3門課程成績(以空格分隔):");
scanf("%d%d%d",&stu.kor,&stu.eng,&stu.math);

returnstu;
}

/*輸出所有輸入的數據*/
voidOutput(STUDENTinfo[],intcnt)
{
printf("學號:%d ",info[cnt].code);
printf("姓名:");
puts(info[cnt].name);
printf("成績:%c%c%c ",grade(info[cnt].kor),grade(info[cnt].eng),grade(info[cnt].math));
}

/*將輸入分數轉換為A-F*/
chargrade(intscore)
{
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';
}


運行測試:

6. 求C語言編寫的「學生成績管理系統」的程序帶有流程圖的最好~!

#include "stdio.h" #include "string.h" #include "stdlib.h" #include "conio.h"#include "mem.h" #include "ctype.h"#include "alloc.h"#define N 4struct student
{
long num;
char name[20];
char sex;
int chinese;
int math;
int english;
};
struct student stu[N];
int n;
int choose;
void fun1();
void fun2();
void fun3();
void fun4();void fun1()
{
int i;
for(i=0;i<N;i++)
{
printf("Please shuru xuehao:\n"); /*請輸入學號*/
scanf("%ld",&stu[i].num);
printf("Please shuru mingzi:\n"); /*請輸入名字*/
scanf("%s",stu[i].name);
getchar();
printf("Please shuru sex:\n"); /*請輸入性別*/
scanf("%c",&stu[i].sex);
printf("Please shuru yuwen score:\n"); /*請輸入語文分數*/
scanf("%d",&stu[i].chinese);
printf("Please shuru shuxue score:\n"); /*請輸入數分數*/ scanf("%d",&stu[i].math); printf("Please input yingyu score:\n"); /*請輸入英語分數*/ scanf("%d",&stu[i].English); printf("Please input jisuji score:\n"); /*請輸入計算機分數*/
scanf("%d",&stu[i]. jisuji); printf("Please input zheng score:\n"); /*請輸入政治分數*/ scanf("%d",&stu[i]. zheng);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.scor e[3]+data. score[4]; /*顯示總分*/ fwrite(&data,sizeof(data),1,fp); printf("another?y/n"); ch=getch(); if(ch=='n'||ch=='N') break; } }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; /*用break結束本次循環*/ } getch(); fclose(fp);}void fun2()
{ int i;
for(i=0;i<N;i++)
{
printf("%ld\t%s\t%c\n",stu[i].num,stu[i].name,stu[i].sex);
printf("%d\t%d\t%d\n",stu[i].chinese,stu[i].math,stu[i].English);
}
}void fun3()
{ char name[20];
int k,f=0;
printf("Please shuru the person's name that to check to seek: "); /*請輸入您所要查找的姓名*/
gets(name);
for(k=0;k<2;k++)
if(strcmp(name,stu[k].name)==0)
{ printf("%ld,%s,%c,%d,%d,%d",stu[k].num,stu[k].name,stu[k].sex,stu[k].chinese,stu[k].math,stu[k].english);
f=1;
}
if(f=0)
printf("Have no this person ~~~TOT"); /*沒有這個人*/

}void fun4()
{ int k;
char newname[20];
printf("Please input the name of this student!\n"); /*請輸入該學生的名字*/
gets(newname);
printf("The record of all students is:\n"); /*所有學生記錄為*/
fun2();
for(k=0;k<2;k++)
if(strcmp(newname,stu[k].name)==0)
{
printf("Student whom you choose is:\n"); ?* 你選擇的學生為*/
printf("%ld,%s,%c,%d,%d,%d",stu[k].num,stu[k].name,stu[k].sex,stu[k].chinese,stu[k].math,stu[k].english);
stu[k].num=stu[k+1].num;
strcpy(stu[k].name,stu[k+1].name);
stu[k].sex=stu[k+1].sex;
stu[k].chinese=stu[k+1].chinese;
stu[k].math=stu[k+1].math;
stu[k].english=stu[k+1].english; }
printf("The student's record was delete to complete!"); /*學生記錄刪除完畢*/}while(1){ clrscr(); /*清屏幕*/ gotoxy(1,1); /*移動游標*/ textcolor(RED); /*設置文本顯示顏色為紅色*/ textbackground(WHTIE); /*設置背景顏色為白色*/ window(1,1,99,99); /* 製作顯示菜單的窗口,大小根據菜單條數設計*/ clrscr(); printf("******************************************************\n");
printf("***********welcome to use student manage**************\n");
printf ("*******************************************************\n");
printf("*************designer:jisuanjikexueyujishu************\n");printf ("***************************Procer:*****************\n");
printf ("***************chenjian,fusong,guoqingwen**************\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 the operation that you have to carry on:\n"); /*請輸入您要進行的操作*/
scanf("%d",&choose);
while(choose!=1&&choose!=2&&choose!=3&&choose!=4)
{ printf("The numeral have another also the form press wrong~~~~ Please press one more time ^_^"); /*數字多也表按錯~~~~請再按一遍*/
scanf("%d",&choose);
}
while(choose==1||choose==2||choose==3||choose==4)
{switch(choose)<br> {<br> case 1:fun1(); break;<br> case 2:fun2(); break;<br> case 3:fun3(); break;<br> case 4:fun4(); break;<br> }
printf("Please input the operation that you have to carry on:\n");/*請輸入您要進行的操作*/
scanf("%d",&choose);
} 我這有N個~~來我宿舍,給你啊~~~呵呵

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

#include <stdio.h>
#include <string.h>

#include <stdlib.h>
#defineMAX1000

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

char id[8];
char name[8];


(7)學生成績管理系統c語言直方圖擴展閱讀:

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

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

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

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

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

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

復雜類型關鍵字

struct:結構體聲明。(K&R時期引入)

union:聯合體聲明。(K&R時期引入)

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

typedef:聲明類型別名。(K&R時期引入)

sizeof:得到特定類型或特定類型變數的大小。(K&R時期引入)

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

8. 學生成績管理系統C語言代碼

#include"stdio.h"
#include<string.h>
#include<stdlib.h>

#define N 30
struct student
{
int num;
char name[20];
int age;
int Math;
int English;
int Physical;
long int sum;
}stu[N];

enter()
{int i,n;
printf("How many students(1-%d)?:",N);
scanf("%d",&n);
printf("\nEnter data now\n\n");
for(i=0;i<n;i++)
{printf("\n Input %dth student record.\n",i+1);
input(i);
}
if(i!=0) save(n);
printf_back(); /* browse or back */
}

add()
{int i,n,m,k;
FILE *fp;
n=load();
printf("How many students are you want to add(1-%d)?:",N-n);
scanf("%d",&m);
k=m+n;
for(i=n;i<k;i++)
{printf("\n Input %dth student record.\n",i+1);
input(i);
}
if((fp=fopen("score.txt","ab"))==NULL)
{printf("Cannot open file.\n");
}
for(i=n;i<k;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error.\n");
fclose(fp);
printf_back();
}

/* insert()
{int n,c;
struct student s;
n=load();
puts("\n Input one data.\n");
do
{input(n);
printf_face();
printf_one(n);
printf("\n\nAre you sure?\n\n\t 1.Sure\t2.cancel and again\t3.Back without save [ ]\b\b");
scanf("%d",&c);
if(c==1)
{
save(n+1);
printf_back();
}
else if(c!=2) menu();
}
while(c==2);
} */

modify()
{struct student s;
FILE *fp;
int i,n,k,w0=1,w1,w2=0;
n=load();
do
{
k=-1;
printf_face();
for(i=0;i<n;i++)
{if((i!=0)&&(i%10==0))
{printf("\n\nRemember NO.031073- which needed modify.Pass any key to continue ...");
getch();
puts("\n\n");
}
printf_one(i);
printf("\n");
}
do
{printf("\n\nEnter NO.031073- that you want to modify! NO.:031073-");
scanf("%d",&s.num);
for(i=0;i<n;i++)
if(s.num==stu[i].num)
{k=i;
s=stu[i]; /* chengji beifei */
}
if(k==-1) printf("\n\nNO exist!please again");
}
while(k==-1);
printf_face();
printf_one(k);
w1=modify_data(k,n);
if(w1==1)
{printf("\nSuccessful ^_^.\n\nAre you modify another?\n\n\t1.Yes2.Back with save\t[ ]\b\b");
scanf("%d",&w0);
w2=1;
}
else
{w0=0; /* end */
if(w2==1)
stu[k]=s;
}
if(w0!=1&&w2==1) save(n); /* w0!=1 return w2==1 modify */
}
while(w0==1);
menu();
}

delete()
{struct student s;
FILE *fp;
int i,n,k,w0=1,w1,w2=0;
n=load();
do
{
k=-1;
printf_face();
for(i=0;i<n;i++)
{if((i!=0)&&(i%10==0))
{printf("\n\nRemember NO.031073- which needed delete.Pass any key to continue ...");
getch();
puts("\n\n");
}
printf_one(i);
printf("\n");
}
do
{printf("\n\nEnter NO.031073- that you want to delete! NO.:031073-");
scanf("%d",&s.num);
for(i=0;i<n;i++)
if(s.num==stu[i].num)
{k=i;
s=stu[i]; /* chengji beifei */
}
if(k==-1) printf("\n\nNO exist!please again");
}
while(k==-1);
printf_face();
printf_one(k);
printf("\nAre you sure?\n\n\t1.Sure2.Back without save in this time [ ]\b\b");
scanf("%d",&w1);
if(w1==1)
{
stu[k].sum=0;
printf("\nSuccessful ^_^.\n\nAre you delete another?\n\n\t1.Yes2.Back with save\t[ ]\b\b");
scanf("%d",&w0);
w2=1;
}
else
{w0=0; /* end */
if(w2==1)
stu[k]=s;
}
if(w0!=1&&w2==1) save(n);
}
while(w0==1);
menu();
}

modify_score()
{struct student s;
FILE *fp;
int i,n,k,w0=1,w1,w2=0;
n=load();
do
{
k=-1;
printf_face();
for(i=0;i<n;i++)
{if((i!=0)&&(i%10==0))
{printf("\n\nRemember NO.031073 which score needed modify.Pass any key to continue ...");
getch();
puts("\n\n");
}
printf_one(i);
printf("\n");
}
do
{printf("\n\nEnter NO.031073- that you want to modify! NO.:031073-");
scanf("%d",&s.num);
for(i=0;i<n;i++)
if(s.num==stu[i].num)

{k=i;
s=stu[i]; /* chengji beifei */
}
if(k==-1) printf("\n\nNO exist!please again");
}
while(k==-1);
printf_face();
printf_one(k);
w1=modify_score1(k);
if(w1==1)
{printf("\nSuccessful ^_^.\n\nAre you modify another score?\n\n\t1.Yes2.Back with save\t[ ]\b\b");
scanf("%d",&w0);
w2=1;
}
else
{w0=0; /* end */
if(w2==1)
stu[k]=s;
}
if(w0!=1&&w2==1) save(n); /* w0!=1 return w2==1 modify */
}
while(w0==1);
menu();
}

order()
{int i,j,k,n;
struct student s;
n=load();
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(stu[j].num<stu[k].num) k=j;
s=stu[i];stu[i]=stu[k];stu[k]=s;
}
save(n);
puts("\n\n");
printf_back();
}

browse()
{int i,j,n;
n=load();
printf_face();
for(i=0;i<n;i++)
{if((i!=0)&&(i%10==0))
{printf("\n\nPass any key to contiune ...");
getch();
puts("\n\n");
}
printf_one(i);
printf("\n");
}
printf("\tThere are %d record.\n",n);
printf("\nPass any key to back...");
getch();
menu();
}

save(int n)
{FILE *fp;
int i;
if((fp=fopen("score.txt","wb"))==NULL)
{printf("\nCannot open file\n");
return NULL;
}
for(i=0;i<n;i++)
if(stu[i].sum!=0)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}

load()
{FILE *fp;
int i;
if((fp=fopen("score.txt","rb"))==NULL)
{printf("\nCannot open file\n");
return NULL;
}
for(i=0;!feof(fp);i++)
fread(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}

no_input(int i,int n)
{int k,w1;
do
{w1=0;
printf("NO.:031073-");
scanf("%d",&stu[i].num);
if(stu[i].num<1 || stu[i].num>N)
{puts("Input error! Only be made up of(1-N).Please reinput!\n");
w1=1;
}
if(w1!=1)
for(k=0;k<n;k++)
if(k!=i&&(stu[k].num==stu[i].num))
{puts("This record is exist. Please reinput!\n");
w1=1;break;
}
}
while(w1==1);
}

enter_score(int i)
{printf("Math English Physical");
scanf("%d %d %d",&stu[i].Math,&stu[i].English,&stu[i].Physical);
}
sum(int i)
{
stu[i].sum=stu[i].Math+stu[i].English+stu[i].Physical;
}

input(int i)
{no_input(i,i);
printf("name: age:");
scanf("%s %d",stu[i].name,&stu[i].age);
enter_score(i);
sum(i);
}

modify_score1(int i)
{int c,w1;
do
{
puts("\nmodify by=>\n\n 1.Math 2.English 3.Physical4.all score 5.cancel and back");
printf("Which you needed?:[ ]\b\b");
scanf("%d",&c);
if(c>5||c<1)
{puts("\nChoice error! Please again!");
getchar();
}
}
while(c>5||c<1);
do
{switch(c)
{
case 1:printf("Math:");scanf("%d",&stu[i].Math);break;
case 2:printf("English:");scanf("%d",&stu[i].English);break;
case 3:printf("Physical:");scanf("%d",&stu[i].Physical);break;
case 4:enter_score(i);break;
case 5:break;
}
if(c>0&&c<5) sum(i);
puts("\nNow:\n");
printf_face();
printf_one(i);
printf("\nAre you sure?\n\n\t1.Sure 2.No and remodify3.Back without save in this time [ ]\b\b");
scanf("%d",&w1);
}
while(w1==2);
return(w1);
}

modify_data(int i,int n)
{int c,w1;
do
{
puts("\nmodify by=>\n\n 1.NO. 2.name 3.age 4.Math 5.English 6.Physical7.all score 8.all data 9.cancel and back");
printf("Which you needed?:[ ]\b\b");
scanf("%d",&c);
if(c>9||c<1)
{puts("\nChoice error! Please again!");
getchar();
}
}
while(c>9||c<1);
do
{switch(c)
{case 1:no_input(i,n);break;
case 2:printf("name:");scanf("%s",stu[i].name);break;
case 3:printf("age:");scanf("%d",&stu[i].age);break;
case 4:printf("Math:");scanf("%d",&stu[i].Math);break;
case 5:printf("English:");scanf("%d",&stu[i].English);break;
case 6:printf("Physical:");scanf("%d",&stu[i].Physical);break;
case 7:enter_score(i);break;
case 8:input(i);break;
case 9:break;
}
if(c>3&&c<8) sum(i);
puts("\nNow:\n");
printf_face();
printf_one(i);
printf("\nAre you sure?\n\n\t1.Sure 2.No and remodify3.Back without save in this time [ ]\b\b");
scanf("%d",&w1);
}
while(w1==2);
return(w1);
}

printf_face()
{printf("\nNO.031073 name age Math English Physical sum\n");
}

printf_one(int i)
{
printf("%6d %8s %4d",stu[i].num,stu[i].name,stu[i].age);
printf("%5d %5d %8d %10d",stu[i].Math,stu[i].English,stu[i].Physical,stu[i].sum);
}

printf_back()
{int k,w;
printf("\n\n\tSuccessful.^_^\n\n");
printf("What do you want to do?\n\n\t1.Browse all now\t2.Back:[ ]\b\b");
scanf("%d",&w);
if(w==1) browse();
else menu();
}
menu()
{int w1;
char n;
do
{
puts("\t\t****************MENU****************\n\n");
puts("\t\t\t\tA.Enter new data");
puts("\t\t\t\tB.Addition data");
puts("\t\t\t\tC.Modify data");
puts("\t\t\t\tD.Delete data");
puts("\t\t\t\tE.Modify score");
puts("\t\t\t\tF.Order by number");
puts("\t\t\t\tG.Browse all");
puts("\t\t\t\tH.Exit");
puts("\n\n\t\t************************************\n");
printf("Choice your number(A-H):[ ]\b\b");
n=getchar();
printf("\n");
if(n<'A'||n>'H')
w1=1;
else w1=0;
}
while(w1==1);
switch(n)
{case 'A':enter();break;
case 'B':add();break;
case 'C':modify();break;
case 'D':delete();break;
case 'E':modify_score();break;
case 'F':order();break;
case 'G':browse();break;
case 'H':exit(0);
}
}
char password[7]="123456";
main()
{
char s[7];
printf("\t\t請輸入密碼:\n\t\t\n\t\t");
scanf("%s",s);
if(!strcmp(s,password))
{
printf("\n\t\t恭喜你進入學生成績管理系統\n");
menu();
}
else
{
printf("\t\t 密碼錯誤\n\n");
main();
}
}

9. C語言 成績統計直方圖

寫了前面的兩個功能:
#include<stdio.h>
#include<string.h>
#define N 30

int main(){
char xm[N][20], nm[20];
int cj[N];
int cnt,i,n=0,x;
float aver=0;
//輸入成績並求平均分
printf("請依次輸入每個同學的姓名和成績(績為負值時表示數據結束):\n");
scanf("%s %d",nm, &x);
while(x>=0){
strcpy(xm[n],nm);
cj[n]=x;
aver+=x;
n++;
scanf("%s %d",nm, &x);
}
aver/=n;
//統計不及格人數並列印不及格學生名單
printf("不及格學生名單及人數如下:\n");
cnt=0;
for(i=0; i<n; i++){
if(cj[i]<60){
cnt++;
printf("%s\t%d\n",xm[i], cj[i]);
}
}
printf("共有 %d 個學生不及格。\n",cnt);
//統計成績在全班平均分及平均分之上的學生人數,並列印這些學生的名單
printf("成績在全班平均分及平均分(%.2f)之上的學生名單及人數如下:\n",aver);
cnt=0;
for(i=0; i<n; i++){
if(cj[i]>aver){
cnt++;
printf("%s\t%d\n",xm[i], cj[i]);
}
}
printf("共有 %d 個學生成績在全班平均分及平均分之上。\n",cnt);
return 0;
}

10. 學生成績管理系統(c語言程序設計)

其實很簡單的啦~你上論壇去問、很多高手的。

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919