C语言的成绩查询系统,c语言 成绩查询系统
設計目標
1.掌握用c語言進行程序設計的基本方法。
2.熟悉運用windows對文本進行的加工。
3.初步完成一個應用程序的設計和編碼,以及編碼的調試,了解程序設計的過程,鍛煉個人的邏輯思維和程序設計能力。
通過c語言設計一個系統,實現學生成績的查詢和添加,在查詢模塊可以分別按學號查詢和以班級查詢,并且當輸入一個課程名時可以查詢并顯示出不及格學生的成績。
課題分析與設計
1、課題分析
(1)主函數模塊,實現結構體數字組的定義,函數的聲明,用二進制數據文件存放學生成績信息,同時實現操作的選擇。
(2)菜單顯示模塊,通過設計程序實現提示用戶要查詢的信息
(3)成績添加模塊,通過設計實現學生成績的手動添加
(4)成績查詢模塊,可分為三個函數實現,在一個函數中調用其他兩個函數,分別實現按學號查詢和按班級查詢的目標
(5)課程不及格模塊,輸入課程名,查詢并顯示不及格學生的成績
詳細設計
(1)主函數模塊,定義頭文件,定義結構體類型,結構體數字組,通過
(2)菜單顯示模塊,通過輸出函數printf提示用戶可以進行那些選擇。
(3)成績添加模塊,定義指向文件型數據的指針變量,分別用fopen函數和?fclose函數打開和關閉數據文件,實現成績的添加。
(4)成績顯示模塊,利用for循環和fopen函數實現文件里數據的輸出,輸出全部學生的成績。
(5)成績查詢模塊,運用switch語句實現按學號查詢和按班級查詢的功能,
在兩個被調函數中運用strcmp函數實現成績的輸出。
(6)課程不及格模塊,運用switch語句實現課程的選擇,在被調函數中運用if語句實現不及格成績的輸出
程序清單
#include
#include
#include
struct student
{
char num[12];
char name[60];
char banji[60];
char term[60];
float English;
float math;
float cyvyan;
};int dq(struct student stu[]);//
void showmenu();
void add();
void xianshi();
void chaxun();
void xhcz();
void bjcz();
void bujige();
void yy();
void gs();
void cyy();
int number=0;//記錄總的學生人數即文件里面的學生人數
struct student stu[1000];//該數組用來保存所有學生的成績信息
void main()
{
int choose=0;
showmenu();
printf("請輸入要進行的操作步驟");
scanf("%d",&choose);
switch(choose)
{
case 1:break;//退出系統
case 2:add();//添加學生成績
case 3:xianshi();break;//輸出所有學生的成績
case 4:chaxun();break;//根據學號或班級查詢該生或該班級的成績
case 5:bujige();break;//根據課程名查詢并輸出該課程所有不及格成績
default:printf("輸入錯誤\n");break;
}
}
void showmenu()
{
printf("**************************************************\n");
printf("歡迎使用成績查詢系統!\n");
printf("請輸入要進行的操作:\n");
printf("1.退出系統\n");
printf("2.添加學生成績\n");
printf("3.輸出所有學生的成績\n");
printf("4.查詢成績\n");
printf("5.輸入課程名查詢并輸出該課程所有不及格成績\n");
printf("謝謝使用本系統,下次再見!\n");
printf("***************************************************\n");
}
void add()//向文件c:\stu.dat中追加一條成績信息,成績信息可以分多次錄入
{
int i=0;
char ch;
FILE *fp;//定義一個指向文件型數據的指針變量
struct student?stu;?//struct?student為自己聲明的結構體類型,可以表示成績信息
fp=fopen("c:\\stu.dat","ab+");?//以ab+(讀寫)的方式打開數據文件c:\stu.dat
if(fp==NULL)
{
printf("打開文件失敗!\n");
exit(0);
}
do
{
printf("請輸入第%d個學生的成績:學號,姓名,班級,學期,英語成績,高數成績,c語言成績\n",i+1);
scanf("%s%s%s%s%f%f%f",stu.num,stu.name,stu.banji,stu.term,&stu.English,&stu.math,&stu.cyvyan);
fwrite(&stu,sizeof(struct student),1,fp);
number++;?//全局變量,用來統計成績總數
printf("繼續輸入嗎?繼續輸入請按y,結束輸入請按n\n");
ch=getchar();
i++;
}
while(ch=='y');
fclose(fp);
}
void xianshi()?//逐條輸出二進制數據文件c:\stu.dat中的成績信息
{
FILE *fp;
struct?student stu;
fp=fopen("c:\\stu.dat","rb");
//打開保存成績信息的數據文件c:\stu.dat,打開方式為rb(只讀)
if(fp==NULL)
{
printf("打開文件失敗!\n");
exit(0);
}
printf("全體學生的成績為:\n");
fread(&stu,sizeof(struct
student),1,fp);?//先讀一條成績信息,保存到結構體變量xj中
while(!feof(fp))?//判斷文件是否結束
{
//若文件沒結束,則輸出剛讀到的成績信息
printf("%s\t%s\t%s\t%s\t%f\t%f\t%f\n",stu.num, stu.name, stu.banji,
stu.term, stu.English, stu.math, stu.cyvyan);
fread(&stu,sizeof(struct
student),1,fp);?//繼續讀下一條成績信息
}
fclose(fp);
}
void chaxun()//查找學生成績
{
int n=0;
printf("1.按學號查找\n");
printf("2.按班級查找\n");
scanf("%d",&n);
switch(n)
{
case 1:xhcz();break;
case 2:bjcz();break;
default :printf("輸入有誤,結束!\n");break;
}
}
void xhcz()//按學號查找學生成績
{
char num[12];
int i=0;
printf("請輸入要查找學生的學號:\n");
scanf("%s",num);
system("cls");//清楚屏幕先前的顯示內容
printf("\t姓名\t學號\t英語成績\t高數成績\tc語言成績\n");
for(i=0;i
{
if(strcmp(num,stu[i].num)==0)//字符串比較函數,如果輸入的學號與數組中的學號一致
//則輸出該學號對應的成績
{
printf("\t%s\t%s\t%f\t%f\t%f\n",stu[i].name,stu[i].num,stu[i].English,stu[i].math,stu[i].cyvyan);
}
}
void bjcz() //按班級查詢成績
{
char banji[60];
int i=0;
printf("請輸入查詢的班級:\n");
scanf("%s",banji);
for(i=0;i
{
if(strcmp(banji,stu[i].banji)==0)
{
printf("\t%s\t%s\t%f\t%f\t%f\n",stu[i].banji,stu[i].name,stu[i].English,stu[i].math,stu[i].cyvyan);
}
}
}
void bujige()//輸入課程名,查詢并顯示該課程所有不及格成績
{
int m=0;
printf("1.英語課程\n");
printf("2.高數課程\n");
printf("3.c語言課程\n");
scanf("%d",&m);
switch(m)
{
case 1:yy();break;
case 2:gs();break;
case 3:cyy();break;
default:printf("輸入錯誤\n");break;
}
}
void yy()?//輸出英語不及格的成績
{
int i=0;
printf("以下是不及格\n");
printf("\t姓名\t學號\t成績\n");
for(i=0;i
{
if(stu[i].English<60)
{
printf("\t%s\t%s\t%f\n",stu[i].name,stu[i].num,stu[i].English);
}
}
}
void gs() //輸出高數不及格的成績
{
int i=0;
printf("以下是不及格\n");
printf("\t姓名\t學號\t成績\n");
for(i=0;i
{
if(stu[i].math<60)
{
printf("\t%s\t%s\t%f\n",stu[i].name,stu[i].num,stu[i].math);
}
}
}
void cyy() //輸出c語言成績不及格的成績
{
int i=0;
printf("以下是不及格\n");
printf("\t姓名\t學號\t成績\n");
for(i=0;i
{
if(stu[i].cyvyan<60)
{
printf("\t%s\t%s\t%f\n",stu[i].name,stu[i].num,stu[i].cyvyan);
}
}
}
總結
以上是生活随笔為你收集整理的C语言的成绩查询系统,c语言 成绩查询系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斗地主程序设计c语言,C语言斗地主游戏v
- 下一篇: 计算机二级c语言可以提前交卷吗,软考考试