(c語言課程設計)學生成績管理系統
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h> #include<string.h> #include<algorithm> char buf[255]; char c=14; char path[]="D:\\data"; char tmp[]="D:\\tmp"; struct Student { char Name[20]; char No[20]; char Dept[20]; char ClassNo[20]; double Math,Chinese,English; double Ave; bool Pass; }students[500]; bool cmp1(Student s1,Student s2) { return s1.Chinese>s2.Chinese; } bool cmp2(Student s1,Student s2) { return s1.Math>s2.Math; } bool cmp3(Student s1,Student s2) { return s1.English>s2.English; } bool cmp4(Student s1,Student s2) { return s1.Ave>s2.Ave; } //---------------------------------------------------------void Sort(int cmd) /* 1 ChineseSort 2 MathSort 3 EnglishSort 4 AveSort */ int Sort(int cmd) { Student stu; FILE *fp=fopen(path,"ab+"); int n,cnt=0; while((n=fread(&stu,sizeof(stu),1,fp)>0)) { students[cnt++]=stu; } fclose(fp); switch(cmd) { case 1: std::sort(students,students+cnt,cmp1); break; case 2: std::sort(students,students+cnt,cmp2); break; case 3: std::sort(students,students+cnt,cmp3); break; case 4: std::sort(students,students+cnt,cmp4); break; default: exit(0); } return cnt; } //---------------------------------------------------------PrintTitle() void PrintTitle() { printf("%-8s%-12s%-12s%-8s%-7s%-7s%-7s%-7s%-s\n","姓名","班級","學號","系院","語文","數學","英語","平均分","及格"); } //---------------------------------------------------------Print(Student stu) void Print(Student stu) { printf("%-8s%-12s%-12s%-8s%-7.2lf%-7.2lf%-7.2lf%-7.2lf%-s\n",stu.Name,stu.ClassNo,stu.No,stu.Dept,stu.Chinese,stu.Math,stu.English,stu.Ave,stu.Pass?"是":"否"); } //---------------------------------------------------------PrintNo(char No[]) void PrintNo(char No[]) { Student stu; int n; bool find=0; FILE *fp=fopen(path,"ab+");//以ab+方式開啟防止data檔案不存在時發生錯誤 while((n=fread(&stu,sizeof(stu),1,fp))>0) { if(!strcmp(stu.No,No)) { find=1; break; } } fclose(fp); if(find) { PrintTitle(); Print(stu); } else puts("未找到!"); } //---------------------------------------------------------PrintClass(char ClassNo[]) void PrintClass(char ClassNo[]) { Student stu; FILE *fp=fopen(path,"ab+"); int n,cnt=0; while((n=fread(&stu,sizeof(stu),1,fp)>0)) { if(!strcmp(stu.ClassNo,ClassNo)) { if(cnt==0) PrintTitle(); Print(stu); cnt++; } } fclose(fp); if(cnt==0) puts("無資料"); else printf("共%d條\n",cnt); } //---------------------------------------------------------PrintDept(char Dept[]) void PrintDept(char Dept[]) { Student stu; FILE *fp=fopen(path,"ab+"); int n,cnt=0; while((n=fread(&stu,sizeof(stu),1,fp)>0)) { if(!strcmp(stu.Dept,Dept)) { if(cnt==0) PrintTitle(); Print(stu); cnt++; } } fclose(fp); if(cnt==0) puts("無資料"); else printf("共%d條\n",cnt); } //---------------------------------------------------------PrintAll() void PrintAll() { Student stu; FILE *fp=fopen(path,"ab+"); int n,cnt=0; while((n=fread(&stu,sizeof(stu),1,fp)>0)) { if(cnt==0) PrintTitle(); Print(stu); cnt++; } fclose(fp); if(cnt==0) puts("無資料"); else printf("共%d條\n",cnt); } //---------------------------------------------------------Input() Student Input() { Student stu; puts("請輸入姓名、班級、學號、系院:"); scanf("%s%s%s%s",&stu.Name,&stu.ClassNo,&stu.No,&stu.Dept); puts("請輸入各科成績:語文、數學、英語"); scanf("%lf%lf%lf",&stu.Chinese,&stu.Math,&stu.English); stu.Ave=(stu.Chinese+stu.Math+stu.English)/3; if(stu.Chinese>=60&&stu.Math>=60&&stu.English>=60) stu.Pass=1; else stu.Pass=0; return stu; } //---------------------------------------------------------Insert() void Insert() { int cmd; do{ Student stu=Input(); FILE *fp=fopen(path,"ab+"); fwrite(&stu,sizeof(stu),1,fp); fclose(fp); puts("錄入成功"); puts("繼續錄入嗎?[1]是[0]否"); scanf("%d",&cmd); }while(cmd==1); } //---------------------------------------------------------Del() void Del() { int cmd,cmd2; char No[20]; do{ puts("請輸入要刪除的學號:"); scanf("%s",&No); Student stu; FILE *fp=fopen(path,"ab+"); FILE *fp2=fopen(tmp,"wb"); int n,find=0; while((n=fread(&stu,sizeof(stu),1,fp))>0) { if(!strcmp(stu.No,No)) { find=1; Print(stu); puts("確定要刪除嗎?[1]確定[0]取消"); scanf("%d",&cmd2); if(cmd2==1) puts("已刪除"); else fwrite(&stu,sizeof(stu),1,fp2); } else fwrite(&stu,sizeof(stu),1,fp2); } fclose(fp); fclose(fp2); if(find==0) { printf("未找到學號%s\n",No); remove(tmp); } else { remove(path); rename(tmp,path); } puts("繼續刪除嗎?[1]是[0]否"); scanf("%d",&cmd); }while(cmd==1); } //---------------------------------------------------------Change() void Change() { int cmd; char No[20]; do{ puts("請輸入要更改的學號:"); scanf("%s",&No); Student stu; int find=0; FILE *fp=fopen(path,"ab+"); FILE *fp2=fopen(tmp,"wb"); int n; while((n=fread(&stu,sizeof(stu),1,fp))>0) { if(!strcmp(stu.No,No)) { find=1; stu=Input(); fwrite(&stu,sizeof(stu),1,fp2); } else fwrite(&stu,sizeof(stu),1,fp2); } fclose(fp); fclose(fp2); if(find) { remove(path); rename(tmp,path); puts("更改成功!"); } else { printf("未找到學號%s\n",No); remove(tmp); } puts("繼續更改嗎?[1]是[0]否"); scanf("%d",&cmd); }while(cmd==1); } //---------------------------------------------------------AboutCourse void Chinese() { double sum=0,ave; int pass=0,fail=0,better=0; Student stu; FILE *fp=fopen(path,"ab+"); int n,cnt=Sort(1); while((n=fread(&stu,sizeof(stu),1,fp))>0) { sum+=stu.Chinese; if(stu.Chinese>=60) { pass++; if(stu.Chinese>=80) better++; } else fail++; } ave=sum/cnt; puts("語文成績分析……"); printf("共有%d學生\n優秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n",cnt,better,pass,fail,100.0*pass/cnt); printf("%-8s%-10s%-12s%-s\n","名次","姓名","學號","語文"); for(int i=0;i<cnt;i++) { printf("第%2d名 %-10s%-12s%-8.2lf\n",i+1,students[i].Name,students[i].No,students[i].Chinese); } printf("平均分:%.2lf\n",ave); } void Math() { double sum=0,ave; int pass=0,fail=0,better=0; Student stu; FILE *fp=fopen(path,"ab+"); int n,cnt=Sort(2); while((n=fread(&stu,sizeof(stu),1,fp))>0) { sum+=stu.Math; if(stu.Math>=60) { pass++; if(stu.Math>=80) better++; } else fail++; } ave=sum/cnt; puts("數學成績分析……"); printf("共有%d學生\n優秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n",cnt,better,pass,fail,100.0*pass/cnt); printf("%-8s%-10s%-12s%-s\n","名次","姓名","學號","數學"); for(int i=0;i<cnt;i++) { printf("第%2d名 %-10s%-12s%-8.2lf\n",i+1,students[i].Name,students[i].No,students[i].Math); } printf("平均分:%.2lf\n",ave); } void English() { double sum=0,ave; int pass=0,fail=0,better=0; Student stu; FILE *fp=fopen(path,"ab+"); int n,cnt=Sort(3); while((n=fread(&stu,sizeof(stu),1,fp))>0) { sum+=stu.English; if(stu.English>=60) { pass++; if(stu.English>=80) better++; } else fail++; } ave=sum/cnt; puts("英語成績分析……"); printf("共有%d學生\n優秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n",cnt,better,pass,fail,100.0*pass/cnt); printf("%-8s%-10s%-12s%-s\n","名次","姓名","學號","英語"); for(int i=0;i<cnt;i++) { printf("第%2d名 %-10s%-12s%-8.2lf\n",i+1,students[i].Name,students[i].No,students[i].English); } printf("平均分:%.2lf\n",ave); } void Average() { Student stu; int n,cnt=Sort(4); double sum=0; FILE *fp=fopen(path,"ab+"); while((n=fread(&stu,sizeof(stu),1,fp))>0) { sum+=stu.Chinese; sum+=stu.Math; sum+=stu.English; } puts("平均成績分析……"); printf("%-8s%-10s%-12s%-s\n","名次","姓名","學號","平均成績"); for(int i=0;i<cnt;i++) { printf("第%2d名 %-10s%-12s%-8.2lf\n",i+1,students[i].Name,students[i].No,students[i].Ave); } printf("平均分:%.2lf\n",sum/cnt/3); } //---------------------------------------------------------Search() void Search() { int cmd,cmd2; while(1) { system("cls"); puts("[1] 按學號查詢"); puts("[2] 按班級查詢"); puts("[3] 輸出全部"); puts("[4] 按系別查詢"); puts("[5] 課程分析"); puts("[0] 返回主介面"); scanf("%d",&cmd); if(cmd==0) break; switch(cmd) { case 1: { char No[20]; puts("請輸入要查詢的學號:"); scanf("%s",&No); PrintNo(No); } break; case 2: { char ClassNo[20]; puts("請輸入要查詢班級號:"); scanf("%s",&ClassNo); PrintClass(ClassNo); } break; case 3: PrintAll(); break; case 4: { char Dept[20]; puts("請輸入要查詢的系別:"); scanf("%s",&Dept); PrintDept(Dept); } break; case 5: while(1) { puts("[1] 語文成績分析"); puts("[2] 數學成績分析"); puts("[3] 英語成績分析"); puts("[4] 平均成績分析"); puts("[0] 返回上一級"); scanf("%d",&cmd2); if(cmd2==0) break; switch(cmd2) { case 1: Chinese(); break; case 2: Math(); break; case 3: English(); break; case 4: Average(); break; default: puts("不合法指令!"); } } break; default: puts("不合法指令!"); } while(1) { puts("[0] 返回"); puts("[1] 錄入"); puts("[2] 刪除"); puts("[3] 修改"); scanf("%d",&cmd2); if(cmd2==0) break; switch(cmd2) { case 1: Insert(); break; case 2: Del(); break; case 3: Change(); break; default: puts("不合法指令!"); } } } } //---------------------------------------------------------Menu() void ShowMenu1() { int i; puts(""); printf(" "); for(i=0;i<14;i++) putchar(c); printf("成績管理分析系統"); for(i=0;i<14;i++) putchar(c); puts(""); printf(" %c %c\n",c,c); printf(" %c 請輸入指令 %c\n",c,c); printf(" %c %c\n",c,c); printf(" %c [0] 退出 %c\n",c,c); printf(" %c %c\n",c,c); printf(" %c [1] 錄入 %c\n",c,c); printf(" %c %c\n",c,c); printf(" %c [2] 刪除 %c\n",c,c); printf(" %c %c\n",c,c); printf(" %c [3] 查詢 %c\n",c,c); printf(" %c %c\n",c,c); printf(" %c [4] 更改 %c\n",c,c); printf(" %c %c\n",c,c); printf(" "); for(i=0;i<44;i++) putchar(c); puts(""); } void ShowMenu2() { int i; puts(""); printf(" "); for(i=0;i<14;i++) putchar(c); printf("成績管理分析系統"); for(i=0;i<14;i++) putchar(c); puts(""); printf(" %c %c\n",c,c); printf(" %c 請輸入指令 %c\n",c,c); printf(" %c %c\n",c,c); printf(" %c [0] 退出 %c\n",c,c); printf(" %c %c\n",c,c); printf(" %c [1] 錄入 %c\n",c,c); printf(" %c %c\n",c,c); printf(" %c [2] 刪除 %c\n",c,c); printf(" %c %c\n",c,c); printf(" %c [3] 查詢 %c\n",c,c); printf(" %c %c\n",c,c); printf(" %c [4] 更改 %c\n",c,c); printf(" %c %c\n",c,c); printf(" "); for(i=0;i<44;i++) putchar(c); puts(""); } //---------------------------------------------------------void RandColor() void RandColor() { int a,b; char param[20]="color ",param2[10]; do{ a=rand()%16; b=rand()%16; }while(a==b); sprintf(param2,"%x%x",a,b); strcat(param,param2); system(param); } //---------------------------------------------------------main() int main() { int cmd; srand(time(NULL)); for(int i=0;i<8;i++) { RandColor(); system("cls"); ShowMenu1(); system("cls"); ShowMenu2(); } system("color 0a"); while(1) { system("cls"); ShowMenu1(); printf("[ ]\b\b"); scanf("%d",&cmd); if(cmd==0) break; switch(cmd) { case 1: Insert(); break; case 2: Del(); break; case 3: Search(); break; case 4: Change(); break; default: puts("命令不合法!"); } } return 0; }
相關推薦
(c語言課程設計)學生成績管理系統
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h> #include<string.h> #include<algo
大一c語言課程設計原始碼——學生成績管理系統,鍵盤移動
部落格目錄 學生成績管理系統 ---------------------------->>>>>>>>>>>>>資源傳送門<<<<<<<<----
C語言課程設計之學生資訊管理系統
#include"stdio.h" //標準的輸入輸出函式檔案頭部說明 #include"math.h" // 數學函式頭部說明 #include"string.h" #include"stdlib.h" //通過該函式頭部裡的
JAVA語言 實現簡單的學生成績管理系統(總分+平均分+排名)
import java.util.*;public class test14{public static void main(String[] args){Scanner in =new Scanner(System.in);System.out.println("輸入學生人
資料結構課程設計【學生資訊管理系統(煙大版)】
/* * Copyright (c) 2016, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:student.project * 作者:李瀟 * 完成日期:2016年12月28日 * 版本號:DEVC+
資料結構程式設計回顧(六).學生成績管理系統-冒泡、快排、希爾、雙向冒泡和堆排
題目六:學生成績處理系統 設計要求:本設計要求採用順序儲存結構,實現關於學生成 績處理的相關問題,包括:學生資訊的錄入、查詢、修改、 排序、確定名次以及資訊的輸出。其中學生資訊包括:學號、 姓名、四門課、總分以及排名;排序方法包括:雙向冒泡排 序、希爾排序、快速排序、堆排序等方法。 選單內容:
C++課程設計:學生資訊管理系統
課程設計內容 1.)學生資訊的錄入:錄入新的學生的資訊; 2.)學生資訊的新增:新增新的學生的資訊; 3.) 學生資訊的刪除:刪除不需要的學生的資訊。 4.)學生資訊的查詢:查詢你需要的學生的資訊。 5.)學生資訊的修改:修改錯誤的學生的資訊。 6.)學生資訊的顯示:顯示所
課程設計:學生檔案管理系統
一、 程式設計的題目 ——學生檔案管理系統 二、 程
linux下使用C語言實現簡易的學生資訊管理系統
該專案資料儲存方式使用的是動態陣列,所以需要用到動態陣列庫,具體庫檔案參考->我的動態陣列庫<-上的兩個檔案 ArrayLib.h 和 ArrayLib.c 學生管理系統的檔案有三個 main.c、stuSystem.h 和 stuSystem.c,
【qduoj - 夏季學期創新題】C語言課程設計-階梯問題(dp,高精度大數)
題幹: 描述 N級階梯,人可以一步走一級,也可以一步走兩級,求人從階梯底端走到頂端可以有多少種不同的走法。 輸入 一個整數n,代表臺階的階數。 輸出 求人從階梯底端走到頂端可以有多少種不同的走法,輸出結果的格式為大整數
c語言學生成績管理系統(可以將學生資訊儲存至txt檔案中)
程式截圖: 標頭檔案說明; 定義全域性變數; 定義、編寫輸入函式; 定義、編寫顯示函式; 定義、編寫修改函式; 定義、編寫查詢函式; 定義、編寫新增函式; 定義、編寫排序函式; 定義、編寫刪除函式; 定義、編
學生成績管理系統(C語言實現)
今天,我來介紹一個C語言的小專案 --- 學生成績管理系統。在該系統中,主要是完成對學生資訊的錄入,新增,刪除,修改,查詢以及按照要求完成學生資訊的排序,此外還包括系統的初始化和清空。 整個專案包括三個檔案main.c , Sort.
學生成績管理系統(資料結構課程設計)
學生成績管理問題 問題描述:建立兩個學生成績資訊表1、2,以檔案的形式分別進行儲存命名為1.txt和2.txt,然後實現將兩個檔案合併成一個新的檔案3.txt。 新檔案中有補考的學生查詢到,儲存到另一個檔案4.txt中。 基本要求:
c語言課程設計—學生成績管理系統
學生成績管理系統是比較適合初學者的。它涵蓋了c語言幾乎知識。對於學了c語言的人,把這個課程設計搞好(當然自己能設計出來是要有很好的基礎)。不管自己能不能夠完成,最重要的是能弄懂。參考其他資料,試著自己編寫是不錯的選擇。這個課程設計也是我參照資料,自己編寫的。自己適當地增加了
C語言課程設計——簡易公交車管理系統(陣列實現)
/**************************標頭檔案宣告************************************/ #include "stdio.h" #include "stdlib.h" #include "string.h" #includ
學生成績管理系統(C語言)
//////////////////////////////////////////////////////////////// 工程名稱:學生成績管理系統// 工程檔案:C語言課程設計// 作 者:張誠華// 日期:2016-06-18//////////////////
c++的復制構造函數,(鄭莉 c++語言程序設計)
三次 返回值 參數 .html article 構造 局部變量 class html 1. https://www.cnblogs.com/BlueTzar/articles/1223313.html 以上博客講了深拷貝和淺拷貝的區別,即: 在某些狀況下,類內成員變量需要動
漢諾塔的故事(C語言——遞歸)
code log 圓盤 印度 return 16px move class baidu 漢諾塔: 漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤
資料結構---棧(C語言陣列實現)
https://blog.csdn.net/morixinguan/article/details/51374184 資料結構---棧(C語言陣列實現) 棧的全名稱為堆疊,棧其實就是與佇列相反的過程,佇列是先進先出,而棧便是先進後出了,如下圖:
資料結構---佇列(C語言陣列實現)
https://blog.csdn.net/morixinguan/article/details/51374296 資料結構---佇列(C語言陣列實現) 佇列是先進先出的過程。簡單地畫一幅畫來描述一下佇列: 一個簡單的、由陣列實現的佇列,可以由以下幾種最基本的操