




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)報(bào)告課程名稱(chēng):C語(yǔ)言程序設(shè)計(jì)課設(shè)項(xiàng)目名稱(chēng):學(xué)籍管理系統(tǒng)學(xué)院:專(zhuān)業(yè):姓名:學(xué)號(hào):指導(dǎo)教師:成績(jī):2010年6月4日TOC\o"1-5"\h\z\o"CurrentDocument"第1部分課程設(shè)計(jì)題目與要求1\o"CurrentDocument"問(wèn)題描述1\o"CurrentDocument"功能要求1\o"CurrentDocument"任務(wù)分工3\o"CurrentDocument"第2部分《學(xué)籍管理系統(tǒng)》的設(shè)計(jì)與功能實(shí)現(xiàn)4\o"CurrentDocument"總體設(shè)計(jì)4\o"CurrentDocument"數(shù)據(jù)結(jié)構(gòu)5\o"CurrentDocument"算法設(shè)計(jì)5\o"CurrentDocument"程序代碼設(shè)計(jì)11\o"CurrentDocument"測(cè)試與調(diào)試19\o"CurrentDocument"第3部分課程設(shè)計(jì)總結(jié)28\o"CurrentDocument"個(gè)人總結(jié)28\o"CurrentDocument"結(jié)束語(yǔ)29\o"CurrentDocument"附錄1程序清單30\o"CurrentDocument"附錄11用戶(hù)使用說(shuō)明書(shū)57\o"CurrentDocument"參考文獻(xiàn)60第1部分課程設(shè)計(jì)題目與要求問(wèn)題描述為了分析教學(xué)效果并進(jìn)行相應(yīng)的學(xué)籍處理,各學(xué)校每到學(xué)期末都對(duì)綜合成績(jī)進(jìn)行分類(lèi)統(tǒng)計(jì)、上報(bào)成績(jī)匯總結(jié)果等,這給每位老師和學(xué)籍管理人員帶來(lái)很大的工作量。使用學(xué)籍管理系統(tǒng)可以減少工作者的工作負(fù)擔(dān)。為了方便管理人員查找學(xué)生信息,在創(chuàng)新功能中,增加查詢(xún)成績(jī)功能,增加按學(xué)科成績(jī)排名的功能,由于學(xué)籍管理系統(tǒng)涉及學(xué)生成績(jī)及信息的安全,所以有必要給系統(tǒng)增加密碼保護(hù)的功能,以保護(hù)系統(tǒng)信息的安全。功能要求循環(huán)顯示如圖-1所示的主菜單。其中,原始數(shù)據(jù)的排列是無(wú)序的。系統(tǒng)應(yīng)能夠保留原始成績(jī)單。請(qǐng)輸入選項(xiàng)編號(hào)E?4〉:成感子耍系
入計(jì)理新
錄統(tǒng)處創(chuàng)秦
-----
-----
12成感子耍系
入計(jì)理新
錄統(tǒng)處創(chuàng)秦
-----
-----
123450在主菜單選擇1:可以進(jìn)行成績(jī)的錄入。在主菜單選擇2:進(jìn)入如圖-2的子菜單,并統(tǒng)計(jì)成績(jī)。在此可以計(jì)算平均、統(tǒng)計(jì)各分?jǐn)?shù)段、按學(xué)號(hào)排序、按平均分排序。在子菜單選擇1時(shí),將該班學(xué)生的成績(jī)按學(xué)號(hào)升序排序后的順序存入std.dat文件中,以方便打印。在子菜單選擇2時(shí),求出每位學(xué)生的平均分,并按平均分從高到低的順序進(jìn)行排序后,寫(xiě)入文件sort.dat中。在子菜單選擇3時(shí),統(tǒng)計(jì)出各門(mén)課、各分?jǐn)?shù)段學(xué)生的人數(shù),并如下表的形式輸出。在子菜單選擇4,返回主菜單;選擇0,退出整個(gè)系統(tǒng)。序排段
鬻均統(tǒng)
號(hào)平平系
學(xué)回出
按*返退
-----
-----
12340圖-2在主菜單選擇3:進(jìn)入如圖-3所示的子菜單,處理學(xué)籍。在子菜單中選擇1,為不及格的學(xué)生打印重考通知單時(shí),應(yīng)在通知單上寫(xiě)明重考的課程、時(shí)間和地點(diǎn)(由鍵盤(pán)輸入)。為了參加多門(mén)課重考的學(xué)生完成補(bǔ)考,應(yīng)避免時(shí)間重復(fù)。在子菜單中選擇2,為3門(mén)以上不及格的學(xué)生打印退學(xué)通知單。通知單上應(yīng)寫(xiě)明學(xué)生的學(xué)號(hào)、姓名、退學(xué)原因(幾門(mén)課不及格,成績(jī)是多少)。在子菜單中選擇3時(shí),刪除已退學(xué)的學(xué)生信息,將該班中升入高年級(jí)的學(xué)生信息寫(xiě)入文件next.dat中。在子菜單選擇4,返回主菜單;選擇0,退出整個(gè)系統(tǒng)。單單nn*矢誦通冊(cè)考著鷹新nrnrnrEEE統(tǒng)■汗開(kāi)開(kāi)系成成成回出生造造返退---------12340圖-3在主菜單中選擇4:進(jìn)入如圖-4所示的子菜單,在子菜單中選擇1時(shí),可以用學(xué)生的學(xué)號(hào)或姓名查詢(xún)學(xué)生的成績(jī)。在子菜單中選擇2時(shí),可以選擇5門(mén)課查看五門(mén)單科成績(jī)排名,在子菜單中選擇3,可以對(duì)系統(tǒng)程序進(jìn)行密碼設(shè)置,以保護(hù)系統(tǒng)程序中的信息安全。名---績(jī)膏護(hù)統(tǒng)
成我系
宣子碼回出
查塹良退
-----
-----
12340圖-4在主菜單中選擇5:可以顯示我們組成員信息。如圖-5所示。圖-5在主菜單中選擇0:顯示結(jié)束信息。按任意鍵后,退出系統(tǒng)。主菜單和子菜單能夠循環(huán)出現(xiàn),每一項(xiàng)菜單執(zhí)行之后,詢(xún)問(wèn)用戶(hù)是否繼續(xù)進(jìn)行。從子菜單可以返回到主菜單。3.任務(wù)分工我們小組成員有C,B和A。此程序是由我們共同完成的。由C負(fù)責(zé)錄入成績(jī)模塊(voidmycreatevoidmyprintf1()voidmyprintf2()voidmyprintf3()voidmyrintf4()函數(shù)),B負(fù)責(zé)統(tǒng)計(jì)成績(jī)模塊(voidmychongji函數(shù),其中包括voidmypiauxu1()、voidmypianxu2()、voidmypianxu3()函數(shù)),A負(fù)責(zé)主模塊,學(xué)籍處理模塊和創(chuàng)新功能模塊(包括voidchulixueji()voidchuanxin函數(shù),其中包括voidbukao(),voidtuixue(),voidshengxue(),voidchaxun(),voidxueke(),voidshezhimima()函數(shù))。第2部分《學(xué)籍管理系統(tǒng)》的設(shè)計(jì)與功能實(shí)現(xiàn)1.總體設(shè)計(jì)第2部分《學(xué)籍管理系統(tǒng)》的設(shè)計(jì)與功能實(shí)現(xiàn)根據(jù)題目要求,本系統(tǒng)分為一個(gè)主模塊和五個(gè)子模塊,其中,子模塊包括錄入成績(jī)模塊、統(tǒng)計(jì)成績(jī)模塊、處理學(xué)籍模塊、創(chuàng)新功能模塊和關(guān)于我們等五個(gè)模塊。系統(tǒng)功能結(jié)構(gòu)圖如下圖所示:主模塊錄入成績(jī)模塊統(tǒng)計(jì)成績(jī)模塊錄入成績(jī)模塊統(tǒng)計(jì)成績(jī)模塊處理學(xué)籍模塊創(chuàng)新功關(guān)于我能模塊們模塊已有記錄無(wú)記錄按學(xué)號(hào)排序計(jì)算平均分并排序統(tǒng)計(jì)各分?jǐn)?shù)段生成并打印補(bǔ)考通知單生成并打印退學(xué)通知單生成并打印新名冊(cè)查詢(xún)成績(jī)按學(xué)科成績(jī)排名密碼保護(hù)本系統(tǒng)包括以下12個(gè)函數(shù):(1)voidmyprintf1();函數(shù)功能:輸出主菜單。(2)voidmyprintf2();函數(shù)功能:輸出成績(jī)統(tǒng)計(jì)子菜單。(3)voidmyprintf3();函數(shù)功能:輸出學(xué)籍處理子菜單。(4)voidmyprintf4();函數(shù)功能:輸出創(chuàng)新功能子菜單。(5)voidmyprintf5();函數(shù)功能:輸出關(guān)于我們模塊內(nèi)容。(6)voidmycreate();函數(shù)功能:定義錄入成績(jī)函數(shù),通過(guò)鍵盤(pán)輸入學(xué)生學(xué)號(hào),姓名和各科成績(jī)并存放到文件中。(7)voidpianxu1(structstudentstu[],intn);函數(shù)功能:定義按學(xué)號(hào)排序函數(shù),將所有學(xué)生的信息通過(guò)學(xué)號(hào)進(jìn)行排序(被voidmytongji函數(shù)調(diào)用)。(8)voidpianxu2(structstudentstu[],intn);函數(shù)功能:定義按平均分排序函數(shù),將所有學(xué)生的信息通過(guò)其平均分進(jìn)行排序(被voidmytongji函數(shù)調(diào)用)。(9)voidpianxu3(structstudentstu[],intn);函數(shù)功能:定義統(tǒng)計(jì)各科分?jǐn)?shù)段函數(shù),將所有學(xué)生的各科成績(jī)進(jìn)行統(tǒng)計(jì),按分?jǐn)?shù)段進(jìn)行輸出(被voidmytongji函數(shù)調(diào)用)。voidmytongji();函數(shù)功能:定義成績(jī)統(tǒng)計(jì)函數(shù)。voidbukao(structstudentstu[],intn);函數(shù)功能:定義生成并打印補(bǔ)考通知單(被voidchulixueji函數(shù)調(diào)用)。voidtuixue(structstudentstu[],intn);函數(shù)功能:定義生成并打印退學(xué)通知單(被chulixueji函數(shù)調(diào)用)。voidshengxue(structstudentstu[],intn);函數(shù)功能:定義生成并打印新名冊(cè)(被chulixueji函數(shù)調(diào)用)。voidchulixueji();函數(shù)功能:定義處理學(xué)籍函數(shù)。voidchaxun(structstudentstu[],intn);函數(shù)功能:定義查詢(xún)成績(jī)函數(shù)(被函數(shù)voidchuanxin()調(diào)用)。voidxueke(structstudentstu[],intn);函數(shù)功能:定義學(xué)科成績(jī)排名函數(shù)(被函數(shù)voidchuanxin()調(diào)用)。voidshezhimima();函數(shù)功能:定義密碼保護(hù)函數(shù)(被函數(shù)voidchuanxin()調(diào)用)。voidchuanxin();函數(shù)功能:定義創(chuàng)新功能函數(shù)。數(shù)據(jù)結(jié)構(gòu)學(xué)生信息項(xiàng)用結(jié)構(gòu)體student表示,其中包括7個(gè)屬性,學(xué)號(hào)num,姓名name,5門(mén)成績(jī)chengji[5]。structstudent{charnum[10],name[15];intchengji[5];};學(xué)生補(bǔ)考信息項(xiàng)用結(jié)構(gòu)體bukaoxinxi表示,其中包括6個(gè)屬性,補(bǔ)考時(shí)間time1,補(bǔ)考地點(diǎn)size1,補(bǔ)考時(shí)間time2,補(bǔ)考地點(diǎn)size2,補(bǔ)考時(shí)間time3,補(bǔ)考地點(diǎn)size3。structbukaoxinxi{chartime1[10],time2[10],time3[10],size1[10],size2[10],size3[10];};算法設(shè)計(jì)系統(tǒng)主函數(shù)mian()設(shè)計(jì)錄入成績(jī)模塊函數(shù)voidmycreate設(shè)計(jì)打開(kāi)文件成績(jī)統(tǒng)計(jì)模塊函數(shù)voidtongji設(shè)計(jì)輸入choose23其它4011r1處理學(xué)籍模塊函數(shù)voidchulixueji設(shè)計(jì)輸入choose23其它4011r1創(chuàng)新功能模塊函數(shù)voidchuanxin設(shè)計(jì)4.程序代碼設(shè)計(jì)主模塊函數(shù)部分代碼do{myprintf1();printf("");choose=getch();printf("\n");switch(choose){case'1':/*錄入成績(jī)*/mycreate();break;case'2':/*統(tǒng)計(jì)成績(jī)*/mytongji();break;case'3':/*處理學(xué)籍*/chulixueji();break;case'4':/*創(chuàng)新功能*/chuanxin();break;case'5':/*關(guān)于我們*/myprintf5();break;case'0':/*退出系統(tǒng)*/{system("cls");printf("\n\n\n\n\n\n\n============================\n感謝使用本軟件,已正常退出,按任意鍵結(jié)束!\n============================\n\n\n\n");};exit(0);default:{printf("%c為非法選項(xiàng),請(qǐng)重新輸入!按任意鍵繼續(xù)!\n",choose);getch();};}}while(choose!='0');此為主模塊的主要代碼。用do-while循環(huán),顯示主菜單,再用getch來(lái)輸入要選擇的項(xiàng)choose,用switch來(lái)判斷所選的,然后執(zhí)行相應(yīng)的函數(shù),如選擇1,就執(zhí)行mycreate函數(shù)等。如果輸入的不是0-5,就會(huì)一直的循環(huán),直到輸入的是0-5選項(xiàng)。錄入成績(jī)模塊函數(shù)部分代碼fp=fopen("chengji.dat","a");do{fflush(stdin);〃清除緩存printf("請(qǐng)輸入學(xué)生的成績(jī):\n");printf("學(xué)號(hào)?(按#結(jié)束輸入):");do{gets(temp.num);}while(strcmp(temp.num,"")==0);printf("姓名(按#結(jié)束輸入):");do{gets();}while(strcmp(,"")==0);printf(-請(qǐng)依次輸入高數(shù)、英語(yǔ)、物理、編程、馬哲成績(jī):,scanf("%d%d%d%d%d”,&temp.chengji[0],&temp.chengji[1],&temp.chengji[2],&temp.chengji[3],&temp.chengji[4]);if(temp.num[0]!='#'&&[0]!='#')fprintf(fp,"%s%s%d%d%d%d%d\n”,temp.num,,temp.chengji[0],temp.chengji[1],temp.chengji[2],temp.chengji[3],temp.chengji[4]);}while(temp.num[0]!='#'&&[0]!='#');fclose(fp);程序開(kāi)始先以“a”方式打開(kāi)文件chengji.dat,顯示提示輸入內(nèi)容,用do-while循環(huán)將輸入成績(jī)包裹在內(nèi),當(dāng)輸入的不是“#”號(hào),就繼續(xù)執(zhí)行循環(huán),繼續(xù)輸入成績(jī)。循環(huán)內(nèi)又鑲有do-while循環(huán),要判斷輸入的是不是為空,若為空,則重新輸入。然后將輸入的內(nèi)容寫(xiě)入文件chengji.dat中,當(dāng)輸入的為“#”號(hào)時(shí),跳出循環(huán),結(jié)束輸入。統(tǒng)計(jì)成績(jī)模塊函數(shù)部分代碼for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(strcmp(stu[k].num,stu[j].num)>0)k=j;t=stu[k];stu[k]=stu[i];stu[i]=t;}這是用選擇排序法對(duì)學(xué)生的信息按學(xué)號(hào)進(jìn)行排序。for(i=0;i<n;i++)ave[i]=(stu[i].chengji[0]+stu[i].chengji[1]+stu[i].chengji[2]+stu[i].chengji[3]+stu[i].chengji[4])/5.0;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(ave[k]>ave[j])k=j;t2=stu[k];stu[k]=stu[i];stu[i]=t2;t1=ave[k];ave[k]=ave[i];ave[i]=t1;}用for循環(huán)計(jì)算每一位學(xué)生的平均分ave,再用選擇排序法對(duì)每一位學(xué)生按平均分進(jìn)行排序。for(i=0;i<n;i++)//統(tǒng)計(jì)高數(shù)各分?jǐn)?shù)段的人數(shù){if(stu[i].chengji[0]/10<6)gaoshu[4]++;else{if(stu[i].chengji[0]/10==10)gaoshu[0]++;elsegaoshu[9-(stu[i].chengji[0]/10)]++;}}這是統(tǒng)計(jì)高數(shù)各分?jǐn)?shù)段的人數(shù)。用for循環(huán)對(duì)每一位學(xué)生的高數(shù)成績(jī)進(jìn)行判斷,stu[i].chengji[0]/10<6是指學(xué)生的成績(jī)小于60分,并在高數(shù)60分以下的人數(shù)增一。stu[i].chengji[0]/10==10是指學(xué)生的成績(jī)等于100分,并在高數(shù)90分以上的人數(shù)增一。gaoshu[9-(stu[i].chengji[0]/10)]++;是指對(duì)學(xué)生的每一分?jǐn)?shù)段的人數(shù)進(jìn)行統(tǒng)計(jì),并在相應(yīng)的人數(shù)段增一。do{myprintf2();printf("");choose=getch();printf("\n");switch(choose){case'1':pianxu1(stu,i);break;case'2':pianxu2(stu,i);break;case'3':pianxu3(stu,i);break;case'4':return;case'0':{system("cls");printf("\n\n\n\n\n\n\n============================\n感謝使用本軟件,已正常退出,按任意鍵結(jié)束!\n============================\n\n\n\n");};exit(0);default:{printf("%c為非法選項(xiàng),請(qǐng)重新輸入!按任意鍵繼續(xù)!”,choose);getch();};}}while(choose!='0');此為成績(jī)統(tǒng)計(jì)功能模塊的主要代碼。用do-while循環(huán),顯示成績(jī)統(tǒng)計(jì)模塊子菜單,再用getch來(lái)輸入要選擇的項(xiàng)choose,用switch來(lái)判斷所選的,然后執(zhí)行相應(yīng)的函數(shù)。如果輸入的不是0-4,就會(huì)一直的循環(huán),直到輸入的是0-4選項(xiàng)。學(xué)籍處理模塊函數(shù)部分代碼for(i=0;i<n;i++){if(count[i]>0&&count[i]<=3){k=0;for(j=0;j<5;j++){if(stu[i].chengji[j]<60){k++;if(k==1){switch(j){case0:{printf("%15s學(xué)生高數(shù)不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):",stu[i].name);scanf("%s%s”,&bukaoren[i].time1,&bukaoren[i].size1);};break;case1:{printf("%15s學(xué)生英語(yǔ)不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):",stu[i].name);scanf("%s%s”,&bukaoren[i].time1,&bukaoren[i].size1);};break;case2:{printf("%15s學(xué)生物理不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):",stu[i].name);scanf("%s%s”,&bukaoren[i].time1,&bukaoren[i].size1);};break;case3:{printf("%15s學(xué)生編程不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):",stu[i].name);scanf("%s%s”,&bukaoren[i].time1,&bukaoren[i].size1);};break;default:{printf("%15s學(xué)生馬哲不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):",stu[i].name);scanf("%s%s”,&bukaoren[i].time1,&bukaoren[i].size1);};break;}}if(k==2){do{l=0;switch(j){case0:{printf("高數(shù)不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):");scanf("%s%s”,&bukaoren[i].time2,&bukaoren[i].size2);};break;case1:{printf("英語(yǔ)不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):");scanf("%s%s”,&bukaoren[i].time2,&bukaoren[i].size2);};break;case2:{printf("物理不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):");scanf("%s%s”,&bukaoren[i].time2,&bukaoren[i].size2);};break;case3:{printf("編程不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):");scanf("%s%s”,&bukaoren[i].time2,&bukaoren[i].size2);};break;default:{printf("馬哲不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):");scanf("%s%s”,&bukaoren[i].time2,&bukaoren[i].size2);};break;}if(strcmp(bukaoren[i].time2,bukaoren[i].time1)==0){l=1;printf("您輸入的時(shí)間沖突!請(qǐng)重新輸入!\n");}}while(l==1);}if(k==3){do{l=0;switch(j){case0:{printf("高數(shù)不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):");scanf("%s%s”,&bukaoren[i].time3,&bukaoren[i].size3);};break;case1:{printf("英語(yǔ)不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):");scanf("%s%s”,&bukaoren[i].time3,&bukaoren[i].size3);};break;case2:{printf("物理不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):");scanf("%s%s”,&bukaoren[i].time3,&bukaoren[i].size3);};break;case3:{printf("編程不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):");scanf("%s%s”,&bukaoren[i].time3,&bukaoren[i].size3);};break;default:{printf("馬哲不及格,請(qǐng)輸入他的補(bǔ)考時(shí)間和地點(diǎn):");scanf("%s%s”,&bukaoren[i].time3,&bukaoren[i].size3);};break;}if(strcmp(bukaoren[i].time3,bukaoren[i].time1)==0){l=1;printf("您輸入的時(shí)間沖突!請(qǐng)重新輸入!\n");}if(strcmp(bukaoren[i].time3,bukaoren[i].time2)==0){l=1;printf("您輸入的時(shí)間沖突!請(qǐng)重新輸入!\n");}}while(l==1);}}}}}}這是對(duì)成績(jī)不及格科目少于等于3科的學(xué)生生成并打印補(bǔ)考通知單的代碼,先對(duì)學(xué)生成績(jī)不及格科目進(jìn)行統(tǒng)計(jì),若學(xué)生不及格科目數(shù)count大于0而小于等3時(shí),該學(xué)生就要進(jìn)行補(bǔ)考,利用for循環(huán),對(duì)每一個(gè)學(xué)生每一門(mén)科進(jìn)行判斷,若該門(mén)科不及格,就要求為他輸入補(bǔ)考的時(shí)間和地點(diǎn),用switch要判斷學(xué)生是哪門(mén)科不及格,再用if來(lái)判斷學(xué)生的補(bǔ)考時(shí)間是否有沖突。最后,再用for循環(huán)逐一將需要補(bǔ)考的學(xué)生顯示出來(lái)。for(i=0;i<n;i++){for(j=0;j<5;j++)if(stu[i].chengji[j]<60)count[i]++;if(count[i]>3){printf("%-15s%-15s",stu[i].num,stu[i].name);for(j=0;j<5;j++){if(stu[i].chengji[j]<60){switch(j){case0:printf("高數(shù)%-4d”,stu[i].chengji[0]);break;case1:printf("英語(yǔ)%-4d”,stu[i].chengji[1]);break;case2:printf("物理%-4d”,stu[i].chengji[2]);break;case3:printf("編程%-4d”,stu[i].chengji[3]);break;default:printf("馬哲%-4d”,stu[i].chengji[4]);break;}}}printf("\n");}}這是學(xué)生退學(xué)名單的代碼,用for循環(huán)對(duì)不及格科目大于3科的學(xué)生進(jìn)行統(tǒng)計(jì),再用switch將其每一門(mén)不及格的科目顯示出來(lái)。for(i=0;i<n;i++){for(j=0;j<5;j++)if(stu[i].chengji[j]<60)count[i]++;if(count[i]<=3){printf("%-15s%-15s%-7d%-7d%-7d%-7d%-7d\n”,stu[i].num,stu[i].name,stu[i].chengji[0],stu[i].chengji[1],stu[i].chengji[2],stu[i].chengji[3],stu[i].chengji[4]);fprintf(fp,"%s%s%d%d%d%d%d\n”,stu[i].num,stu[i].name,stu[i].chengji[0],stu[i].chengji[1],stu[i].chengji[2],stu[i].chengji[3],stu[i].chengji[4]);}}用for循環(huán)對(duì)每一位學(xué)生的每一不及格門(mén)科進(jìn)行統(tǒng)計(jì),再用if判斷每一個(gè)學(xué)生的不及格科目是否不大于3,當(dāng)不及格科目count不大于3時(shí),將其輸出并寫(xiě)入文件next.dat中。創(chuàng)新功能模塊函數(shù)部分代碼printf(-請(qǐng)輸入要查詢(xún)的學(xué)號(hào):,gets(a);for(i=0;i<n;i++){if(strcmp(a,stu[i].num)==0){s=1;system("cls");//清屏printf("\n\n\n==================================\n");printf("您要查詢(xún)的成績(jī)?nèi)缦?\n");printf("==================================\n");printf("學(xué)號(hào)學(xué)生姓名高數(shù)英語(yǔ)物理編程馬哲\n");printf("%-15s%-15s%-7d%-7d%-7d%-7d%-7d\n”,stu[i].num,stu[i].name,stu[i].chengji[0],stu[i].chengji[1],stu[i].chengji[2],stu[i].chengji[3],stu[i].chengji[4]);printf("==================================\n");printf("按任意鍵繼續(xù)!");getch();}}if(s==0){printf("沒(méi)有找到!按任意鍵繼續(xù)!");getch();}這是按學(xué)號(hào)進(jìn)行查詢(xún),用gets(a);輸入要查詢(xún)的學(xué)號(hào),在for循環(huán)中對(duì)每一位學(xué)號(hào)的學(xué)號(hào)比較,如果輸入的要查詢(xún)的學(xué)號(hào)a與記錄中的一個(gè)學(xué)號(hào)相同的話(huà),就輸出這個(gè)學(xué)生的所有信息。同理,按姓名查詢(xún)?cè)O(shè)計(jì)也基本相同。do{i=0;system("cls");//清屏printf("\n\n\n\n請(qǐng)輸入新密碼(不超過(guò)15個(gè)字符):");while((mima2[i]=getch())!='\r'){printf("*");i++;}mima2[i]='\0';printf("\n");printf("請(qǐng)?jiān)佥斎胍槐?不超過(guò)15個(gè)字符):");i=0;while((mima3[i]=getch())!='\r'){printf("*");i++;}mima3[i]='\0';printf("\n");if(strcmp(mima2,mima3)!=0){printf(-兩次密碼不一致,請(qǐng)重新輸入!");getch();}}while(strcmp(mima2,mima3)!=0);}這是設(shè)置密碼函數(shù)的代碼,while((mima2[i]=getch())!='\r'){printf("*");i++;
是在每輸入一個(gè)密碼后,顯示一個(gè)星號(hào),這樣可以保護(hù)密碼,不讓其他在場(chǎng)的人看到密碼的內(nèi)容。通過(guò)輸入兩次新密碼,再對(duì)兩次新密碼的判斷是否相同,在外面再鑲上do-while循環(huán),如果兩次密碼不一致,再重新輸入。完整程序代碼請(qǐng)參見(jiàn)附錄A。5■測(cè)試與調(diào)試本系統(tǒng)程序是在以MicrosoftVisualC++6.0下進(jìn)行的,采用分模塊調(diào)試的方法進(jìn)行編譯,即完成一個(gè)函數(shù)功能模塊就編譯一個(gè)功能模塊,最后再進(jìn)行整體編譯并生成可執(zhí)行文件。調(diào)試過(guò)程中會(huì)在有些語(yǔ)句前加些其它語(yǔ)句,或者把要求生成的文件格式由.dat格式文件暫時(shí)替換成.txt格式文件,以方便調(diào)試查看問(wèn)題,找出錯(cuò)誤所在。待到所有完成之后,將調(diào)試過(guò)程中所加的語(yǔ)句刪除,將.txt格式文件再替換回.dat格式文件。在調(diào)試的過(guò)程中,碰到了以下問(wèn)題:1、清屏函數(shù)在TC中使用的clrsrc()函數(shù),但在VC6.0中沒(méi)有該函數(shù)也沒(méi)有相應(yīng)的函數(shù)。查資料,發(fā)現(xiàn)在VC6.0中可使用system("cls")函數(shù)來(lái)實(shí)現(xiàn)清屏功能。道輸入第1個(gè)學(xué)生的成績(jī);2、在使用C語(yǔ)言系統(tǒng)函數(shù)進(jìn)行數(shù)據(jù)輸入的時(shí)候,發(fā)現(xiàn)使用gets()函數(shù)輸入字符和字符串的時(shí)候,系統(tǒng)經(jīng)常跳過(guò)相應(yīng)的輸入語(yǔ)句,無(wú)法輸入數(shù)據(jù)。如下圖,詢(xún)問(wèn)老師得知,是C系統(tǒng)的輸入處理的輸入緩存問(wèn)題,解決方法是在進(jìn)行字符和字符串輸入的時(shí)候,先使用fflush(stdin)函數(shù)清除輸入緩存,即可正常輸入字符和字符串。道輸入第1個(gè)學(xué)生的成績(jī);姓名《用it結(jié)束輸入〉;al次輸入高數(shù);英語(yǔ)、物理、編程、馬哲成績(jī)'al3、在調(diào)試過(guò)程中,系統(tǒng)報(bào)出大量的相同或相似的錯(cuò)誤,比如語(yǔ)句printf("高數(shù)%-10s%-10s”,bukaoren[i]->time1,bukaoren[i]->size1);錯(cuò)誤errorC2232:'->time1':leftoperandhas'struct'type,use'.',經(jīng)查是運(yùn)算符的優(yōu)先級(jí)的問(wèn)題,按照系統(tǒng)指示,將“->”改成“.”問(wèn)題就解決了。4、整個(gè)程序調(diào)試如下(1)運(yùn)行主程序,出現(xiàn)主界面按任意鍵后,出現(xiàn)主菜單界面如下(2)調(diào)試1功能,出現(xiàn)提示信息請(qǐng)輸入選項(xiàng)編號(hào)<0^5>:SS8
成感子至系
入計(jì)理新
錄統(tǒng)處創(chuàng)^
-----
-----
123450成績(jī)單中已有記錄,是否繼續(xù)錄入5?因?yàn)樵杏涗洠虼溯斎胧⑤斎雽W(xué)生“帶頭大哥”的成績(jī),如圖優(yōu)p有記錄,是否繼續(xù)錄入>:109302127請(qǐng)輸入學(xué)生的成H翼1偵頭巍、編2哲成晰80808080然后輸入#號(hào)結(jié)束輸入,跳回主菜單。功能1運(yùn)行正常。(3)調(diào)試功能2,出現(xiàn)成績(jī)統(tǒng)計(jì)子菜單,如圖輸入1后,程序顯示如圖學(xué)號(hào)姓名高數(shù)英語(yǔ)物理編程馬哲252861147118175624136897370888888987887477856589968998759983219899261220190733960675466877934557467776687878576897226638796253835895280887578888789386847898776888761677931974977218233443070869987689883767556888887888566863882877469857661869900678578778776253516778676768且易基師哥嫣道玉竹淳棉慶晝蠢水秋之復(fù)河太大篇譽(yù)蕖碧遂玉靈星正紅住寇晶有喜因慈坦容星4賣(mài)4毒段王阿阿木阿壁無(wú)天109302101109302102109302103109302104109302105109302106109302107109302108109302109109302110109302111109302112109302113109302114109302115109302116109302117109302118109302119109302120109302121109302122109302123109302124109302125109302126109302127成績(jī)單正常。按y后返回成績(jī)統(tǒng)計(jì)子菜單。輸入2后,程序顯示學(xué)號(hào)姓名高數(shù)英語(yǔ)物理編程馬哲平均分109382125109302110109302109109302120109302126109302121109302107109302127109302108109302105109302122109302103109302106109302123109302102109302101109302112109302116109302119109302111109302124109302104109302114109302118109302115109302113109302117打師哥姥骨基河竹大也關(guān)寶之堂羲淳慶水阿洪星星玉朱重_晶富應(yīng)紅山春正容矗律蘇阮鐘?甘阿玄段虛WK天王W:元阿耶797882768178807876688683767665677876776724158089918387808387849177846687648287676877795182768688858280827978768?7987988288838973663745899879797660828071686767717349707152817783978084869882816985827886518187887764754184.684.483.082.881.681.080.480.079.679.078.878.278.277.877.274.073.673.473.471.869.068.445.0成績(jī)統(tǒng)計(jì)正常。這時(shí),驗(yàn)證“要繼續(xù)選擇嗎(Y/N)?”,按N后,程序運(yùn)行顯示按任意鍵后,程序自動(dòng)關(guān)閉。重啟程序,并回到成績(jī)統(tǒng)計(jì)子菜單,選擇3后,程序運(yùn)行顯示各門(mén)課、各分?jǐn)?shù)段學(xué)生的入數(shù)科目州分以上80^8?分70-79分印?的分印分以下數(shù)語(yǔ)理尊口
高英寓馬032數(shù)語(yǔ)理尊口
高英寓馬0321514694151253程序運(yùn)行結(jié)果正常。輸入丫,再輸入0后,運(yùn)行結(jié)果如下程序運(yùn)行結(jié)果正常。(4)重啟程序,選擇3,調(diào)試功能3,程序顯示處理學(xué)籍子菜單請(qǐng)輸入選項(xiàng)編號(hào)<0^4>:9999■ttrT-itrrnn誦誦冊(cè)考WnurnurnurEEE統(tǒng)■?f?f開(kāi)系成成成回出生造造返退----------12340選擇1,并為補(bǔ)學(xué)生輸入補(bǔ)考時(shí)間和地點(diǎn),程序運(yùn)行顯示不及格同學(xué)補(bǔ)考時(shí)間和地點(diǎn)打名骨姓嫣芬阿淳生譽(yù)與一春顏正打名骨姓嫣芬阿淳生譽(yù)與一春顏正為匾王段H{元段科目應(yīng)補(bǔ)考時(shí)間、
編程08:30
蜀數(shù)08=00
r§]§08=00
^^10:00
高§08=00
編程08:30地點(diǎn)實(shí)跚跚{^4003攵陽(yáng)蹈攵7004攵陽(yáng)蹈實(shí)跚跚科目及補(bǔ)考時(shí)間、地點(diǎn)科目及補(bǔ)考時(shí)間、地點(diǎn)實(shí)跚跚實(shí)跚跚程序運(yùn)行正常。返回子菜單,選擇2,程序運(yùn)行顯示2554呈里i2554呈里i高高12
45
折異U
馬馬109302117耳K律洪基程序運(yùn)行結(jié)果正常。返回子菜單,選擇3,程序運(yùn)行顯示升入高年級(jí)學(xué)生名單及信息:li薨函金菖藪一勇蓿―斯國(guó)一境呈—U音109302103109302104109302102109302101109302118109302114109302122109302105109302103109302104109302102109302101109302118109302114109302122109302105109302126109302108109302120109302119109302107109302109109302106109302125109302115109302123109302116109302111109302124109302110109302112109302121109302127打師骨姥哥嫣大寶秋清河阿之0*大譽(yù)玉劍嘉靈碧星黑_山正容星紅因頭6865768608668239968798710857665676777788737776768816678747733291707427394309968668888886978786878688687539898238267269235685076887877889888886788679889957067861912939132938900547675667777876878637966828524786743117135961718608888679898859789768888798程序能正常返回主菜單。(5)調(diào)試功能4,程序運(yùn)行顯示創(chuàng)新功能子菜單
選擇1,輸入乂,按學(xué)號(hào)查詢(xún),程序顯示按學(xué)號(hào)<x>或姓名5,查詢(xún):請(qǐng)新X柬查詢(xún)的學(xué)號(hào)=109302106回車(chē)后程序運(yùn)行結(jié)果正確。按姓名查詢(xún)?nèi)缦鲁绦蜻\(yùn)行正常。當(dāng)輸入一個(gè)錯(cuò)誤的查詢(xún)學(xué)號(hào),如109302100按學(xué)號(hào)或姓名5〉查詢(xún)二祠南學(xué)號(hào)=109302100蘇荏意鍵繼續(xù)、程序運(yùn)行結(jié)果正確。返回,選擇2,程序運(yùn)行顯示輸入1打師哥骨姥基嫣竹大淳之寶秋河大阿復(fù)住¥^棉害崖=靈星朱榮正峰坦荽玉劍因春星頭紫顏碧延:^山律王瞽阮天耶打師哥骨姥基嫣竹大淳之寶秋河大阿復(fù)住¥^棉害崖=靈星朱榮正峰坦荽玉劍因春星頭紫顏碧延:^山律王瞽阮天耶611977774433320097739876421999888888888888877776666665排名學(xué)號(hào)姓名成績(jī)109302104109302103109302109109302110109302105109302126109302111109302101109302123109302122109302108109302120109302121109302119109302125109302127109302113109302115109302106109302124109302107109302118109302114109302102109302112109302116109302117按任意鍵繼續(xù)程序運(yùn)行結(jié)果正常。返回選擇3,進(jìn)入密碼設(shè)置,因先前并無(wú)設(shè)置密碼,因此程序運(yùn)行顯示請(qǐng)輸入新密碼<不超過(guò)15個(gè)字符》二輸入密碼后i直輸A新密嗎<不超也姑個(gè)寶笈"******請(qǐng)啻輸入一箱,木超過(guò)姑個(gè)學(xué)特“******回車(chē)為了驗(yàn)證密碼是否已設(shè)置,再進(jìn)入密碼設(shè)置請(qǐng)輸入密碼二返回,結(jié)果程序運(yùn)行,重啟,驗(yàn)證是否密碼生效程序運(yùn)行顯示請(qǐng)輸入密碼二此時(shí),在程序啟動(dòng)后,要求輸入密碼,若密碼輸入錯(cuò),則程序顯示密曜饕贏入,.輸入正常密碼后,程序順利進(jìn)入主菜單。功能4正常。(6)調(diào)試功能5,即關(guān)于我們模塊,主菜單下,選擇5,程序運(yùn)行顯示按任意鍵后,程序返回到主菜單。關(guān)于我們模塊正常。(7)主菜單下,選擇0,程序自動(dòng)關(guān)閉。(8)主菜單下,輸入除0-5外的字符,程序顯示d為非法選項(xiàng),請(qǐng)重新輸入?按任意鍵繼續(xù)!經(jīng)過(guò)調(diào)試,程序功能正常,運(yùn)行結(jié)果正確。第3部分課程設(shè)計(jì)總結(jié)1■個(gè)人總結(jié)2009110302104C通過(guò)這兩周的C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)課程,我對(duì)C語(yǔ)言中比較基礎(chǔ)而實(shí)用的部分如:各種語(yǔ)句,數(shù)組,循環(huán)以及指針等知識(shí)進(jìn)一步加深了解。我們組在經(jīng)過(guò)了這兩個(gè)星期的努力奮斗后完成了這個(gè)學(xué)籍管理的程序。在學(xué)習(xí)c語(yǔ)言3個(gè)月后,我們進(jìn)行了。語(yǔ)言實(shí)訓(xùn),嘗試編寫(xiě)一個(gè)學(xué)籍管理系統(tǒng)。在這為期兩周的時(shí)間中,我們這些其他組的同學(xué)都感受到:C語(yǔ)言實(shí)訓(xùn)和平時(shí)上課所學(xué)是有很大不同的,在這期間我們也受到了許多的困難和挑戰(zhàn)。好在搭檔們精誠(chéng)合作,分工明確,共同攻克了。語(yǔ)言實(shí)訓(xùn)中許多的困難。而我作為他們中的一員,著實(shí)感觸頗多。在這次實(shí)訓(xùn)中,我對(duì)C語(yǔ)言有了一個(gè)更深的了解認(rèn)識(shí),也對(duì)這個(gè)學(xué)期學(xué)的知識(shí)得到鞏固,并且還嘗試運(yùn)行這些編程,在每次運(yùn)行成功后都會(huì)感到一股由衷的歡喜,從而對(duì)下一個(gè)程序充滿(mǎn)期望,這些都令我對(duì)C語(yǔ)言編程興趣增加。在這次實(shí)訓(xùn)中,最大的特點(diǎn)就是合作做項(xiàng)目,雖然那只是一個(gè)很小的編程。每天大家都來(lái)得很早并在一起學(xué)習(xí)互相取長(zhǎng)補(bǔ)短。在實(shí)訓(xùn)中我增長(zhǎng)了知識(shí)提高了學(xué)習(xí)熱情。在實(shí)訓(xùn)中我深切體會(huì)到了老師認(rèn)真和熱情。讓我深受感動(dòng)。通過(guò)這次實(shí)訓(xùn),也使我們發(fā)現(xiàn)了多問(wèn)題。在這次實(shí)訓(xùn)中,我們認(rèn)識(shí)到自己還有很多的知識(shí)沒(méi)學(xué)好,基礎(chǔ)知識(shí)沒(méi)有理清也沒(méi)有熟練運(yùn)用,而且許多東西還要去翻書(shū),去上網(wǎng)搜索。而且遇到一些小錯(cuò)誤運(yùn)行不出來(lái),就會(huì)煩躁不安,我認(rèn)為我以后要克服這些問(wèn)題,盡量保持一顆良好的心態(tài),學(xué)好C語(yǔ)言,跟要努力學(xué)習(xí)以后的課程。首先我要繼續(xù)學(xué)習(xí)好C語(yǔ)言的基礎(chǔ)知識(shí),并能在電腦上熟練運(yùn)用。然后每天堅(jiān)持編寫(xiě)一些編程,上網(wǎng)時(shí)候多看一些優(yōu)秀的教程和優(yōu)秀的代碼。遇到問(wèn)題時(shí)多和同學(xué)討論,并且多進(jìn)行實(shí)習(xí),多鍛煉自己編程能力和與同學(xué)合作的能力。總之,這一切種種只不過(guò)是我人生歷程中的一部分,也是在C語(yǔ)言編程上的一個(gè)里程碑,總之我會(huì)為將來(lái)努力奮斗的。2009110302108B通過(guò)本次實(shí)訓(xùn)對(duì)C語(yǔ)言的學(xué)習(xí),我掌握了許多有關(guān)C語(yǔ)言的知識(shí)。在本次實(shí)訓(xùn)中,我的C語(yǔ)言知識(shí)更加豐富了,比如,對(duì)函數(shù)的調(diào)用有了更深一部的了解,但是還是發(fā)現(xiàn)有些知識(shí)點(diǎn)掌握不是很勞,所以我會(huì)努力學(xué)習(xí),掌握所學(xué)知識(shí)。在實(shí)訓(xùn)中,我發(fā)現(xiàn)其實(shí)錯(cuò)誤并不可怕,而且他是通往成功的必經(jīng)之路,我在剛開(kāi)始編程時(shí),剛編完一小部分,運(yùn)行一試,錯(cuò)誤竟然達(dá)到60多個(gè),當(dāng)時(shí)我就不值所措了,還好我組同學(xué)積極幫助我,給我講解,幫我改正錯(cuò)誤。就這樣,我在同組同學(xué)的幫助下順利完成了我的編程工作,所以我意識(shí)到團(tuán)隊(duì)的合作也是非常重要的,只有團(tuán)隊(duì)的合作好了,小組的水平才能得到最大的發(fā)揮,讓每一個(gè)人的到最大的提高。我認(rèn)為學(xué)校組織實(shí)訓(xùn)的目的有兩個(gè),第一是讓我們更好的掌握所學(xué)的知識(shí),因?yàn)橹髮?shí)踐才能更好的讓我們把所學(xué)的東西記住,之后達(dá)到掌握。第二是增強(qiáng)團(tuán)隊(duì)意識(shí),學(xué)會(huì)與人合作,團(tuán)隊(duì)合作是一件非常重要的事情,一個(gè)團(tuán)隊(duì)的人要學(xué)會(huì)如何發(fā)揮每一個(gè)隊(duì)員的長(zhǎng)處,每一個(gè)人的力量是微薄的,但是一個(gè)團(tuán)隊(duì)的人的力量合起來(lái)就很大,不論是現(xiàn)在的學(xué)習(xí)還是今后走向社會(huì),團(tuán)隊(duì)合作意識(shí)是不可缺少的,個(gè)人之后完美的融入團(tuán)隊(duì)才能發(fā)揮出個(gè)人的最大力量。以上就是我在這次實(shí)訓(xùn)中學(xué)到的東西,今后我還會(huì)繼續(xù)努力學(xué)習(xí)。2009110302134A忙碌了一個(gè)多星期,我們總算將程序設(shè)計(jì)出來(lái),這真是一個(gè)堅(jiān)苦而又漫長(zhǎng)的過(guò)程啊,這也是我們學(xué)了半年了C語(yǔ)言之后的第一次編寫(xiě)這么大的程序啊,看著我們自己做的程序,自己的勞動(dòng)成果,覺(jué)得特別有成就感和自豪感。我很榮幸成為我們組的組長(zhǎng),因?yàn)槲覀兘M組員的水平參差不齊,所以做為組長(zhǎng),我需要根據(jù)組員的具體情況合理地為他們分配任務(wù),由于C和B同學(xué)在此方面比較弱,所以我給他們分配比較簡(jiǎn)單的任務(wù),而自己則負(fù)責(zé)比較復(fù)雜的任務(wù)。通過(guò)此次C語(yǔ)言程序設(shè)計(jì)實(shí)踐,我覺(jué)得受益非淺,學(xué)到了很多東西。開(kāi)始設(shè)計(jì)的時(shí)候,不知道要從哪兒下手。結(jié)果,一個(gè)上午時(shí)間內(nèi),沒(méi)做多少東西。終于慢慢的,就有了一些眉目了,后來(lái)慢慢的也就把整個(gè)程序都做出來(lái)的,我們組興奮不已。雖然整個(gè)程序都做出來(lái)了,但是我們發(fā)現(xiàn)了很多的問(wèn)題,我們慢慢的細(xì)心的仔細(xì)尋找問(wèn)題出錯(cuò)的原因,最后,在我們的努力下,將錯(cuò)誤都解決了。為了找出問(wèn)題的所在,也為了能讓程序更完美,我查閱了很多的資料,每一次程序成功的運(yùn)行,都讓我們感到由衷的歡喜。通過(guò)這次實(shí)訓(xùn),我學(xué)到了很多東西,也讓我對(duì)C語(yǔ)言程序有了一個(gè)更深層次的了解和認(rèn)識(shí),它不僅讓我對(duì)過(guò)去一學(xué)期所學(xué)的知識(shí)得到了鞏固,也讓我認(rèn)識(shí)到自己的不足,它讓我知道了分工合作的快樂(lè)和意義,讓我們的知識(shí)有了更一步的拓展,這次的實(shí)訓(xùn)就像是人生中的一次磨煉,讓我成熟了很多。在今后,我還會(huì)再努力。2?結(jié)束語(yǔ)在兩個(gè)星期的學(xué)習(xí)過(guò)程中,我們學(xué)習(xí)到了很多,在我們?cè)O(shè)計(jì)程序的時(shí)候,我們的輔導(dǎo)老師孫力紅老師給了我們很大的幫助和支持,曹正男同學(xué)也給了我們很大的幫助,在此特向他們表示真摯的感謝。附錄1程序清單#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>structstudent//定義學(xué)生成績(jī)信息數(shù)據(jù)類(lèi)型{charnum[15],name[15];intchengji[5];};structbukaoxinxi//定義補(bǔ)考學(xué)生補(bǔ)考信息數(shù)據(jù)類(lèi)型{chartime1[10],time2[10],time3[10],size1[10],size2[10],size3[10];};voidmyprintf1();//輸出主菜單voidmyprintf2();//輸出成績(jī)統(tǒng)計(jì)子菜單voidmyprintf3();〃輸出學(xué)籍處理子菜單voidmyprintf4();//輸出創(chuàng)新功能子菜單voidmyprintf5();〃輸出關(guān)于我們內(nèi)容voidmycreate();//定義錄入成績(jī)函數(shù)voidpianxu1(structstudentstu[],intn);//定義按學(xué)號(hào)排序函數(shù)(被mytongji函數(shù)調(diào)用)voidpianxu2(structstudentstu[],intn);//定義按平均分排序函數(shù)(被mytongji函數(shù)調(diào)用)voidpianxu3(structstudentstu[],intn);//定義統(tǒng)計(jì)各科分?jǐn)?shù)段函數(shù)(被mytongji函數(shù)調(diào)用)voidmytongji();//定義成績(jī)統(tǒng)計(jì)函數(shù)voidbukao(structstudentstu[],intn);//定義生成并打印補(bǔ)考通知單(被chulixueji函數(shù)調(diào)用)voidtuixue(structstudentstu[],intn);//定義生成并打印退學(xué)通知單(被chulixueji函數(shù)調(diào)用)voidshengxue(structstudentstu[],intn);//定義生成并打印新名冊(cè)(被chulixueji函數(shù)調(diào)用)voidchulixueji();//定義處理學(xué)籍函數(shù)voidchaxun(structstudentstu[],intn);//定義查詢(xún)成績(jī)函數(shù)(被函數(shù)voidchuanxin()調(diào)用)voidxueke(structstudentstu[],intn);//定義學(xué)科成績(jī)排名函數(shù)(被函數(shù)voidchuanxin()調(diào)用)voidshezhimima();//定義密碼保護(hù)函數(shù)(被函數(shù)voidchuanxin()調(diào)用)voidchuanxin();//定義創(chuàng)新功能函數(shù)main()//主函數(shù){inta=0,i=0;charchoose='\0',mima0[15]={0},mima1[15]={0},mima2[15]={0},yes_no='\0';structstudentstu[100]={0};FILE*fp=NULL;//指向存放密碼的文件printf("\n\n\n===========================\n\n\n\n");printf(-歡迎使用學(xué)籍管理系統(tǒng)\n\n\n\n");printf("按任意鍵繼續(xù)\n\n");printf("===========================\n\n\n");getch();system("cls");//清屏fp=fopen("mima.dat","a");fclose(fp);//確保mina.dat文件的存在fp=fopen("mima.dat","r");fscanf(fp,”%s”,&mima1);if(strcmp(mima1,"")!=0){do{system("cls");printf("\n\n\n\n\n\n");printf("請(qǐng)輸入密碼:");i=0;while((mima2[i]=getch())!='\r'){printf("*");i++;}mima2[i]='\0';printf("\n");if(strcmp(mima1,mima2)!=0){printf("密碼錯(cuò)誤,請(qǐng)重新輸入!");getch();}}while(strcmp(mima1,mima2)!=0);fclose(fp);}〃驗(yàn)證密碼do{myprintf1();printf("");choose=getch();printf("\n");switch(choose){case'1':/*錄入成績(jī)*/mycreate();break;case'2':/*統(tǒng)計(jì)成績(jī)*/mytongji();break;case'3':/*處理學(xué)籍*/chulixueji();break;case'4':/*創(chuàng)新功能*/chuanxin();break;case'5':/*關(guān)于我們*/myprintf5();break;case'0':/*退出系統(tǒng)*/{system("cls");printf("\n\n\n\n\n\n\n============================\n感謝使用本軟件,已正常退出,按任意鍵結(jié)束!\n============================\n\n\n\n");};exit(0);default:{printf("%c為非法選項(xiàng),請(qǐng)重新輸入!按任意鍵繼續(xù)!\n",choose);getch();};}}while(choose!='0');}//主函數(shù)結(jié)束voidmyprintf1()//輸出主菜單{system("cls");//清屏printf("\n\n\n=========================\n");printf("請(qǐng)輸入選項(xiàng)編號(hào)(0~5):\n");printf("=========================\n");printf("1--錄入成績(jī)\n");printf("2--統(tǒng)計(jì)成績(jī)");printf("3--處理學(xué)籍\n");printf("4--創(chuàng)新功能");printf("5--關(guān)于我們\n");printf("0--退出系統(tǒng)^”);printf("=========================\n");}voidmyprintf2()//輸出成績(jī)統(tǒng)計(jì)子菜單{system("cls");//清屏printf("\n\n\n=========================\n");printf("請(qǐng)輸入選項(xiàng)編號(hào)(0~4):\n");printf("=========================\n");printf(-1--按學(xué)號(hào)排序\n");printf("2--計(jì)算平均分并排序\n");printf("3--統(tǒng)計(jì)平均分?jǐn)?shù)段\n");printf("4--返回\n");printf("0--退出系統(tǒng)\^);printf("=========================\n");}voidmyprintf3()//輸出學(xué)籍處理子菜單{system("cls");//清屏printf("\n\n\n=========================\n");printf("請(qǐng)輸入選項(xiàng)編號(hào)(0~4):\n");printf("=========================\n");printf("1--生成并打印補(bǔ)考通知單\n");printf("2--造成并打印退學(xué)通知單\n");printf("3--造成并打印新名冊(cè)\n");printf("4--返回\n");printf("0--退出系統(tǒng)\^);printf("=========================\n");}voidmyprintf4()//輸出創(chuàng)新功能子菜單{system("cls");//清屏printf("\n\n\n=========================\n");printf("請(qǐng)輸入選項(xiàng)編號(hào)(0~4):\n");printf("=========================\n");printf("1--查詢(xún)成績(jī)");printf("2--按學(xué)科成績(jī)排名\n");printf("3--密碼保護(hù)\n");printf("4--返回\n");printf("0--退出系統(tǒng)\^);printf("=========================\n");}voidmyprintf5()//輸出關(guān)于我們內(nèi)容{system("cls");//清屏printf("\n\n");printf("============================\n");printf("關(guān)于我們");printf("============================\n\n\n");printf("北京聯(lián)合大學(xué)0911030201班\n\n");printf("20091103020104C\n");printf("20091103020108B\n");printf("20091103020134A\n\n\n");printf("============================\n");printf("反對(duì)盜版!盜版必究!\n\n");printf("按任意鍵返回!\n");printf("============================\n");getch();return;}voidmycreate()//定義錄入成績(jī)函數(shù){charyes_no='\0',a[15]={0};structstudenttemp={0};FILE*fp=NULL;system("cls");//清屏fp=fopen("chengji.dat”,"a”);fclose(fp);//確保chengji.dat文件存在fp=fopen(”chengji.dat”,”r”);fscanf(fp,”%s”,&a);fclose(fp);if(strcmp(a,"")!=0)//判斷是否已經(jīng)有記錄{printf(-\n成績(jī)單中已有記錄,是否繼續(xù)錄入(Y/N)?");do{yes_no=getche();if(yes_no='N'llyes_no='n'){printf("\n");return;}}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');printf("\n");}fp=fopen("chengji.dat”,"a”);do{fflush(stdin);//清除緩存printf("請(qǐng)輸入學(xué)生的成績(jī):\n");printf("學(xué)號(hào)(按#結(jié)束輸入):");do{gets(temp.num);}while(strcmp(temp.num,"")==0);printf("姓名(按#結(jié)束輸入):");do{gets();}while(strcmp(,"")==0);printf(-請(qǐng)依次輸入高數(shù)、英語(yǔ)、物理、編程、馬哲成績(jī):,scanf("%d%d%d%d%d”,&temp.chengji[0],&temp.chengji[1],&temp.chengji[2],&temp.chengji[3],&temp.chengji[4]);if(temp.num[0]!='#'&&[0]!='#')fprintf(fp,"%s%s%d%d%d%d%d\n”,temp.num,,temp.chengji[0],temp.chengji[1],temp.chengji[2],temp.chengji[3],temp.chengji[4]);}while(temp.num[0]!='#'&&[0]!='#');fclose(fp);}voidpianxu1(structstudentstu[],intn)//定義按學(xué)號(hào)排序函數(shù)(被mytongji函數(shù)調(diào)用){inti=0,k=0,j=0;charyes_no='\0';structstudentt={0};FILE*fp=NULL;system("cls");//清屏for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(strcmp(stu[k].num,stu[j].num)>0)k=j;t=stu[k];stu[k]=stu[i];stu[i]=t;}fp=fopen(”std.dat”,”w”);printf("\n==============================\n");printf("學(xué)號(hào)姓名高數(shù)英語(yǔ)物理編程馬哲\n");printf("\n");for(i=0;i<n;i++){printf("%-15s%-15s%5d%5d%5d%5d%5d\n”,stu[i].num,stu[i].name,stu[i].chengji[0],stu[i].chengji[1],stu[i].chengji[2],stu[i].chengji[3],stu[i].chengji[4]);fprintf(fp,"%s%s%d%d%d%d%d\n”,stu[i].num,stu[i].name,stu[i].chengji[0],stu[i].chengji[1],stu[i].chengji[2],stu[i].chengji[3],stu[i].chengji[4]);}printf("==============================\n");fclose(fp);printf("\n此名單已經(jīng)寫(xiě)入std.dat文件中,要繼續(xù)選擇嗎(Y/N)?”);do{yes_no=getche();if(yes_no=='N'||yes_no='n'){printf("\n");system("cls");//清屏printf("\n\n\n\n\n\n\n============================\n");printf("感謝使用本軟件,已正常退出,按任意鍵結(jié)束!\n");printf("============================\n\n\n\n");exit(0);}}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');printf("\n");}voidpianxu2(structstudentstu[],intn)//定義按平均分排序函數(shù)(被mytongji函數(shù)調(diào)用){inti=0,k=0,j=0;floatave[100]={0},t1;charyes_no='\0';structstudentt2;FILE*fp=NULL;system("cls");//清屏fp=fopen("sort.dat","w");for(i=0;i<n;i++)ave[i]=(stu[i].chengji[0]+stu[i].chengji[1]+stu[i].chengji[2]+stu[i].chengji[3]+stu[i].chengji[4])/5.0;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(ave[k]<ave[j])k=j;t2=stu[k];stu[k]=stu[i];stu[i]=t2;t1=ave[k];ave[k]=ave[i];ave[i]=t1;}printf("==================================\n");printf("學(xué)號(hào)姓名高數(shù)英語(yǔ)物理編程馬哲平均分^,printf("\n");for(i=0;i<n;i++){printf("%-15s%-15s%5d%5d%5d%5d%5d%5.1f\n”,stu[i].num,stu[i].name,stu[i].chengji[0],stu[i].chengji[1],stu[i].chengji[2],stu[i].chengji[3],stu[i].chengji[4],ave[i]);fprintf(fp,"%s%s%d%d%d%d%d%f\n”,stu[i].num,stu[i].name,stu[i].chengji[0],stu[i].chengji[1],stu[i].chengji[2],stu[i].chengji[3],stu[i].chengji[4],ave[i]);}printf("==================================\n");fclose(fp);printf("\n此名單已經(jīng)寫(xiě)入sort.dat文件中,要繼續(xù)選擇嗎(Y/N)?");do{yes_no=getche();if(yes_no=='N'||yes_no='n'){printf("\n");system("cls");//清屏printf("\n\n\n\n\n\n\n============================\n");printf("感謝使用本軟件,已正常退出,按任意鍵結(jié)束!\n");printf("============================\n\n\n\n");exit(0);}}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');printf("\n");}voidpianxu3(structstudentstu[],intn)//定義統(tǒng)計(jì)各科分?jǐn)?shù)段函數(shù)(被mytongji函數(shù)調(diào)用){inti=0,gaoshu[5]={0},english[5]={0},wuli[5]={0},biancheng[5]={0},mazhe[5]={0};charyes_no='\0';system("cls");//清屏for(i=0;i<n;i++)//統(tǒng)計(jì)高數(shù)各分?jǐn)?shù)段的人數(shù){if(stu[i].chengji[0]/10<6)gaoshu[4]++;else{if(stu[i].chengji[0]/10==10)gaoshu[0]++;elsegaoshu[9-(stu[i].chengji[0]/10)]++;}}for(i=0;i<n;i++)//統(tǒng)計(jì)英語(yǔ)各分?jǐn)?shù)段的人數(shù){if(stu[i].chengji[1]/10<6)english[4]++;else{if(stu[i].chengji[1]/10==10)english[0]++;elseenglish[9-(stu[i].chengji[1]/10)]++;}}for(i=0;i<n;i++)//統(tǒng)計(jì)物理各分?jǐn)?shù)段的人數(shù){if(stu[i].chengji[2]/10<6)wuli[4]++;else{if(stu[i].chengji[2]/10==10)wuli[0]++;elsewuli[9-(stu[i].chengji[2]/10)]++;}}for(i=0;i<n;i++)//統(tǒng)計(jì)編程各分?jǐn)?shù)段的人數(shù){if(stu[i].chengji[3]/10<6)biancheng[4]++;else{if(stu[i].chengji[3]/10==10)biancheng[0]++;elsebiancheng[9-(stu[i].chengji[3]/10)]++;}}for(i=0;i<n;i++)//統(tǒng)計(jì)馬哲各分?jǐn)?shù)段的人數(shù){if(stu[i].chengji[4]/10<6)mazhe[4]++;else{if(stu[i].chengji[4]/10==10)mazhe[0]++;elsemazhe[9-(stu[i].chengji[4]/10)]++;}printf("\n\n\n\n\n=—\n);printf("各門(mén)課、各分?jǐn)?shù)段學(xué)生的人數(shù)\n”);printf("\n");printf("科目90分以上80?89分70?79分60?69分60分以T\n");printf("\n");printf("高數(shù)%2d%2d%2d%2d%d\n",gaoshu[0],gaoshu[1],gaoshu[2],gaoshu[3],gaoshu[4]);printf("英語(yǔ)%2d%2d%2d%2d%d\n",english[0],english[1],english[2],english[3],english[4]);printf("物理%2d%2d%2d%2d%d\n",wuli[0],wuli[1],wuli[2],wuli[3],wuli[4]);printf("編程%2d%2d%2d%2d%d\n",biancheng[0],biancheng[1],biancheng[2],biancheng[3],biancheng[4]);printf("馬哲%2d%2d%2d%2d%d\n",mazhe[0],mazhe[1],mazhe[2],mazhe[3],mazhe[4]);printf("============================\n");printf("\n要繼續(xù)選擇嗎(Y/N)?”);do{yes_no=getche();if(yes_no='N'llyes_no='n'){printf("\n");system("cls”);//清屏printf("\n\n\n\n\n\n\n============================\n");printf("感謝使用本軟件,已正常退出,按任意鍵結(jié)束!\n");printf("============================\n\n\n\n");exit(0);}}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');printf("\n");}voidmytongji()//定義統(tǒng)計(jì)統(tǒng)計(jì)函數(shù){charchoose='\0';inti=0;structstudentstu[100];FILE*fp=NULL;system("cls");//清屏fp=fopen("chengji.dat","r");if(fp==NULL){printf("找不到文件!\n");exit(0);}while(feof(fp)==0){fscanf(fp,"%s%s%d%d%d%d%d\n”,&stu[i].num,&stu[i].name,&stu[i].chengji[0],&stu[i].chengji[1],&stu[i].chengji[2],&stu[i].chengji[3],&stu[i].chengji[4]);i++;}do{myprintf2();printf("");choose=getch();printf("\n");switch(choose){case'1':pianxu1(stu,i);break;case'2':pianxu2(stu,i);break;case'3':pianxu3(stu,i);break;case'4':return;case'0':{system("cls");printf("\n\n
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 海水淡化處理中的蒸發(fā)技術(shù)應(yīng)用考核試卷
- 火力發(fā)電廠施工信息技術(shù)應(yīng)用考核試卷
- 電機(jī)在實(shí)驗(yàn)儀器中的應(yīng)用考核試卷
- 裝飾材料企業(yè)產(chǎn)品創(chuàng)新與市場(chǎng)接受度考核試卷
- 營(yíng)養(yǎng)食品在極端環(huán)境適應(yīng)中的研究考核試卷
- 物聯(lián)網(wǎng)智能電網(wǎng)數(shù)據(jù)分析考核試卷
- 輕質(zhì)建筑材料制造續(xù)考核試卷
- 稀土金屬提煉過(guò)程中的政策引導(dǎo)與市場(chǎng)機(jī)制構(gòu)建研究分析考核試卷
- 腫瘤表觀遺傳學(xué)研究進(jìn)展
- 情感出軌方獨(dú)立承擔(dān)擔(dān)保責(zé)任及財(cái)產(chǎn)分割協(xié)議
- 2024-2025年遼寧省面試真題
- 2024年高考真題-地理(河北卷) 含答案
- 單位駕駛員勞務(wù)派遣投標(biāo)方案投標(biāo)文件(技術(shù)方案)
- 資本經(jīng)營(yíng)-終結(jié)性考試-國(guó)開(kāi)(SC)-參考資料
- 2024年浙江省中考科學(xué)試卷
- 拆除工程地坪拆除施工方案
- 軟件授權(quán)書(shū)范本
- 招聘筆試題與參考答案(某大型國(guó)企)2025年
- DB34∕T 2570-2015 祁紅香螺加工技術(shù)規(guī)程
- 安徽合肥濱湖投資控股集團(tuán)有限公司招聘筆試題庫(kù)2024
- 2024年四年級(jí)英語(yǔ)下冊(cè) Module 4 Things we enjoy Unit 12 The ugly duckling第3課時(shí)教案 牛津滬教版(三起)
評(píng)論
0/150
提交評(píng)論