大一上c語言學生管理系統
你好!如果這是你第一次使用 c語言做完整的一個簡單小程序,以下內容包括每個功能函數。如果你想學習c語言不那麼枯燥, 可以仔細閱讀這篇文章,瞭解一下c語言的基本語法知識。
**
ps:個人主頁有完整版代碼
**
主要函數功能
1.打印功能菜單。
2. 錄入學生信息。
3. 計算所以學生總分和平均分。
4. 根據學生分數由高到低輸出學生信息。
5. 根據學生學號由小到大輸出學生信息。
6. 輸入學生學號查找該學生對應的信息。
7. 優秀、合格,不合格等所佔百分比及人數。
8. 輸出所有學生信息。
學生信息結構體
學生信息 | 數據類型 |
---|---|
姓名 | 字符串數組 |
學號 | long |
分數 | int |
##這是我們的主函數##
注:主函數的n是學生總人數,是隨着錄入學生信息函數的修改而變化的。
int main()
{
int n=0;
while(1)
{
void List(); //輸出列表
void Input(STU stu[],int *n); //輸入學生數據
void Sumandave(STU stu[],int n); //和與平均值
void Hightolow(STU stu[],int n); //分數由大到小
void Smalltolarge(STU stu[],int n); //學號由小到大
void Search(STU stu[],int n); //查找某個學生信息
void Percentage(STU stu[],int n); //所佔人數和百分比
void Outputinformation(STU stu[],int n); //輸出所以學生信息
system("cls"); //清屏
List(); //輸出列表
char c=getch(); //頭文件conio,按下某個字符時,函數自動讀取,無需按回車.
switch(c)
{
case '1':
Input(&stu1,&n);
break;
case '2':
Sumandave(&stu1,n);
break;
case '3':
Hightolow(&stu1,n);
break;
case '4':
Smalltolarge(stu1,n);
break;
case '5':
Search(stu1,n);
break;
case '6':
Percentage(&stu1,n);
break;
case '7':
Outputinformation(&stu1,n);
break;
case '0':
exit(0);
break; //exit(0)退出程序
}
}
1、打印功能菜單函數
//輸出列表
void List()
{
printf("*****************************************************************\t\t\t\n");
printf("*\t\t歡迎使用高校學生成績管理系統ws版\t\t*\n");
printf("*\t\t\t 請選擇功能\t\t\t\t*\n");
printf("*****************************************************************\t\t\t\n");
printf("*\t 1.Input record\t\t\t\t\t*\n");
printf("*\t 2.Caculate total and average socre of course\t\t*\n");
printf("*\t 3.Sort in descending older by score\t\t\t*\n");
printf("*\t 4.Sort in ascending older by number\t\t\t*\n");
printf("*\t 5.Search by number\t\t\t\t\t*\n");
printf("*\t 6.Statistic analysis\t\t\t\t\t*\n");
printf("*\t 7.List record\t\t\t\t\t\t*\n");
printf("*\t 0.Exit\t\t\t\t\t\t*\n");
printf("*****************************************************************\t\t\t\n");
}
2、錄入學生信息函數
//輸入n個學生信息
void Input(STU stu[],int *n) //取n地址,及時更新人數數量,以便更新數據
{
int m;
static int i=0;
printf("請輸入要錄入的學生人數:");
scanf("%d",&m);
for(; i<m+*n; i++)
{
printf("請輸入學生姓名:");
scanf("%s",stu[i].name);
printf("請輸入學生學號:");
scanf("%ld",&stu[i].id);
printf("請輸入學生分數:");
scanf("%d",&stu[i].score);
printf("***********************\n");
}
*n+=m;
printf("學生信息錄入成功!!!\n");
system("pause");
}
3、計算所以學生總分和平均分函數
//計算總分和平均分
void Sumandave(STU stu[],int n)
{
int i,sum=0;
float ave;
for(i=0; stu[i].score; i++)
{
sum+=stu[i].score;
}
ave=(float)sum/n;
printf("%d名同學的sum:%d\n",i,sum);
printf("%d名同學的ave:%.2f\n",i,ave);
system("pause");
}
4、 根據學生分數由高到低輸出學生信息函數
//分數由高到低排序
void Hightolow(STU stu[],int n)
{
char x[100];
int i,j;
long int t;
for(i=0; i<n-1; i++)
{
for(j=i; j<n; j++)
{
if(stu[i].score<stu[j].score)
{
t=stu[i].score;
stu[i].score=stu[j].score;
stu[j].score=t;
t=stu[i].id;
stu[i].id=stu[j].id;
stu[j].id=t;
strcpy(x,stu[i].name);
strcpy(stu[i].name,stu[j].name);
strcpy(stu[j].name,x);
}
}
}
printf("%d名同學分數由高到低:\n",n);
printf("姓名:");
for(int p=0; p<n; p++)
{
printf("%10s",stu[p].name);
}
printf("\n");
printf("分數:");
for(int p=0; p<n; p++)
{
printf("%10d",stu[p].score);
}
printf("\n");
printf("學號:");
for(int p=0; p<n; p++)
{
printf("%10ld",stu[p].id);
}
printf("\n");
system("pause");
}
5、 根據學生學號由小到大輸出學生信息函數
//學號由小到大排序
void Smalltolarge(STU stu[],int n)
{
char x[100];
int i,j;
long int t;
for(i=0; i<n-1; i++)
{
for(j=i; j<n; j++)
{
if(stu[i].id>stu[j].id)
{
t=stu[i].score;
stu[i].score=stu[j].score;
stu[j].score=t;
t=stu[i].id;
stu[i].id=stu[j].id;
stu[j].id=t;
strcpy(x,stu[i].name);
strcpy(stu[i].name,stu[j].name);
strcpy(stu[j].name,x);
}
}
}
printf("%d名同學學號由低到高:\n",n);
printf("姓名:");
for(int p=0; p<n; p++)
{
printf("%10s",stu[p].name);
}
printf("\n");
printf("分數:");
for(int p=0; p<n; p++)
{
printf("%10d",stu[p].score);
}
printf("\n");
printf("學號:");
for(int p=0; p<n; p++)
{
printf("%10ld",stu[p].id);
}
printf("\n");
system("pause");
}
6、 輸入學生學號查找該學生對應的信息函數
//輸入學號查找學生輸出對應信息
void Search(STU stu[],int n)
{
int i;
long int p;
printf("請輸入要查找的學生學號:");
scanf("%ld",&p);
for(i=0; i<n; i++)
{
if(p==stu[i].id)
{
printf("該學生姓名:%s\n",stu[i].name);
printf("該學生學號:%d\n",stu[i].id);
printf("該學生成績:%d",stu[i].score);
break;
}
}
if(i==n)
printf("Not found!\n");
printf("\n");
system("\npause");
}
7、 優秀、合格,不合格等所佔百分比及人數函數
//每級別人數所佔百分比
void Percentage(STU stu[],int n)
{
int m;
static int a[5]= {0},i=0;
float b[i];
for(; i<n; i++) //找各級別所佔人數
{
m=stu[i].score;
m/=10;
switch(m) //計算各級別人數
{
case 10:
case 9:
a[4]++;
break;
case 8:
a[3]++;
break;
case 7:
a[2]++;
break;
case 6:
a[1]++;
break;
default:
a[0]++;
break;
}
}
printf("總人數爲:%d人\n",n); //各級別人數百分比
printf("優秀人數爲%d人。所佔百分比爲:%.2f%%\n",a[4],(float)100*a[4]/n);
printf("良好人數爲%d人。所佔百分比爲:%.2f%%\n",a[3],(float)100*a[3]/n);
printf("中等人數爲%d人。所佔百分比爲:%.2f%%\n",a[2],(float)100*a[2]/n);
printf("及格人數爲%d人。所佔百分比爲:%.2f%%\n",a[1],(float)100*a[1]/n);
printf("不及格人數爲%d人。所佔百分比爲:%.2f%%\n",a[0],(float)100*a[0]/n); //%%打出%
system("pause");
}
8、 輸出所有學生信息函數
//輸出每個學生學號和成績
void Outputinformation(STU stu[],int n)
{
int i;
for(i=0; i<n; i++) //輸出n個學號和分數
{
printf("\n學生姓名:%s\n學號:%ld\n分數:%d\n****************",stu[i].name,stu[i].id,stu[i].score);
}
printf("\n");
system("pause");
}