版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目 錄陳一、程序分析與設(shè)計(jì)1二、流程圖1三、源程序清單1四、調(diào)試過程2五、程序有待改進(jìn)的地方2六、本次實(shí)習(xí)的收獲和建議3附錄319 / 20文檔可自由編輯打印一、程序分析與設(shè)計(jì)(標(biāo)題四號(hào)宋體加黑,正文五號(hào)宋體,行間距固定值18,首行縮進(jìn)2字符)1題目描述初始化輸入:N-參賽院系總數(shù),M-男子競(jìng)賽項(xiàng)目數(shù),W-女子競(jìng)賽項(xiàng)目數(shù);即要求輸入一些基礎(chǔ)數(shù)據(jù),如院系名稱,每個(gè)院系參賽選手及選手編號(hào)。競(jìng)賽項(xiàng)目名稱與代號(hào)。這些數(shù)據(jù)存儲(chǔ)在文本文件中,不需要每次都單條錄入。各項(xiàng)目名次取法有如下幾種: 取前4名:第1名得分6,第2名得分4,第3名得分2,第4名得分1;由程序提醒用戶填寫比賽結(jié)果,輸入各項(xiàng)目獲獎(jiǎng)運(yùn)動(dòng)員的
2、信息。所有信息記錄完畢后,用戶可以查詢各個(gè)院系或個(gè)人的比賽成績(jī),生成團(tuán)體總分報(bào)表,查看參賽院系信息、獲獎(jiǎng)運(yùn)動(dòng)員、比賽項(xiàng)目信息等。2需求分析 根據(jù)題目要求應(yīng)提供鍵盤式菜單實(shí)現(xiàn)功能選擇,還應(yīng)提供信息的輸入操作,由于在程序中提供查詢功能所以應(yīng)有顯示、查找等操作。3總體設(shè)計(jì)根據(jù)上面的需求分析,可以將這個(gè)系統(tǒng)的設(shè)計(jì)分為1、信息輸入模塊 2、比賽結(jié)果錄入模塊 3、查詢模塊。具體校際運(yùn)動(dòng)會(huì)管理系統(tǒng)分為 信息的輸入、結(jié)果的輸入、學(xué)校各個(gè)項(xiàng)目的得分的查尋、總體報(bào)表的生成。4詳細(xì)設(shè)計(jì)(1)主函數(shù)主函數(shù)一般設(shè)計(jì)的比較簡(jiǎn)潔,只提供輸入,處理和輸出部分的函數(shù)調(diào)用。其中功能模塊用菜單方式選擇。(2)密碼登陸函數(shù)首先進(jìn)入歡
3、迎界面,提示用戶輸入密碼進(jìn)入系統(tǒng),密碼輸入次數(shù)限制為三次,三次輸入錯(cuò)誤則退出系統(tǒng),登陸成功顯示菜單欄(3)菜單函數(shù)提醒用戶根據(jù)要求選擇功能,以及多次功能選?。?)輸入函數(shù)進(jìn)入該功能后提醒用戶輸入相應(yīng)信息,即數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)采用結(jié)構(gòu)體的形式,選手結(jié)構(gòu)體成員包括選手的姓名、編號(hào)、各項(xiàng)目的成績(jī)排名、選手所在學(xué)院等。(5)查找函數(shù)提醒用戶輸入運(yùn)動(dòng)員的姓名或編號(hào),根據(jù)姓名或編號(hào)逐一比對(duì)信息,若條件滿足則輸出該選手的數(shù)據(jù),若不滿足則返回你要找的運(yùn)動(dòng)員未找到(6)排序函數(shù)根據(jù)運(yùn)動(dòng)員的百米成績(jī)進(jìn)行冒泡排序,并輸出結(jié)果(7)修改函數(shù)提醒用戶輸入運(yùn)動(dòng)員的姓名,根據(jù)姓名逐一比對(duì)信息,若找到則提供修改選項(xiàng),對(duì)數(shù)據(jù)進(jìn)
4、行覆蓋(8)得分計(jì)算函數(shù)根據(jù)用戶輸入各項(xiàng)成績(jī)排名,進(jìn)行得分運(yùn)算并得出學(xué)院排名(9)刪除函數(shù)用于輸入信息的刪除(10)插入函數(shù)用于輸入新的信息(11)保存函數(shù)將用戶輸入的信息保存到文本文件中(12)顯示函數(shù)顯示用戶保存的信息二、流程圖三、源程序清單(此部分采用小五號(hào)宋體,行間距固定值14)#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include <time.h>#define load sizeof(student)#define N 7
5、void read();void save();int size=3;struct studentchar num10;char name20;int scorem,scoreq,scoreg,scorey;char ximing20;stuN,temp;void input() /輸入原始數(shù)據(jù)/system("cls");printf("t*輸入界面*n");printf("請(qǐng)輸入運(yùn)動(dòng)員號(hào)碼,姓名,100成績(jī),鉛球成績(jī),跳高成績(jī),跳遠(yuǎn)成績(jī),系名:n");for(int i=0;i<size;i+)scanf("%s%
6、s%d%d%d%d%s",&stui.num,&,&stui.scorem,&stui.scoreq,&stui.scoreg,&stui.scorey,&stui.ximing);printf("輸出運(yùn)動(dòng)員號(hào)碼,姓名,100成績(jī),鉛球成績(jī),跳高成績(jī),跳遠(yuǎn)成績(jī),系名:n");for(i=0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.
7、scoreg,stui.scorey,stui.ximing);void find() /查找函數(shù)/system("cls");printf("t*查找界面*n");char fs20;read();printf("輸入你要查找運(yùn)動(dòng)員的號(hào)碼或姓名:");scanf("%s",&fs);for(int i=0;i<size;i+)if(strcmp(stui.num,fs)=0)printf("你要找的運(yùn)動(dòng)員已找到:n");printf("該生的號(hào)碼,姓名,100米成績(jī),鉛
8、球成績(jī),跳高成績(jī),跳遠(yuǎn)成績(jī),系名:n");printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);break;else if(strcmp(,fs)=0)printf("你要找的運(yùn)動(dòng)員已找到:n");printf("該生的號(hào)碼,姓名,100米成績(jī),鉛球成績(jī),跳高成績(jī),跳遠(yuǎn)成績(jī),系名:n");printf("%st%st%dt%dt%d
9、t%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);break;else printf("你要找的運(yùn)動(dòng)員未找到:n");printf("該運(yùn)動(dòng)員缺賽或不存在!");break;void paixu() /排序函數(shù)/system("cls");printf("t*排序界面*n");printf("對(duì)一百米的成績(jī)排序:n");for(int i=0;i<siz
10、e;i+)for(int j=i+1;j<size;j+)if(stui.scorem<stuj.scorem) temp=stui; stui=stuj; stuj=temp; printf("排序后:n");for(i=0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);void xiugai() /修改函數(shù)/system("cls
11、");printf("t*修改界面*n");char ch220,c;char num10,name20;int scorem,scoreq,scoreg,scorey,i;char ximing20;printf("原始數(shù)據(jù):n");/*for(int i=0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);*/read();
12、printf("輸入你要修改運(yùn)動(dòng)員的姓名:");scanf("%s",ch2);for(i=0;i<size;i+)if(strcmp(,ch2)=0)printf("1.修改號(hào)碼n2.修改姓名n3.修改100米成績(jī)n4.修改鉛球成績(jī)n5.修改跳高成績(jī)n6.修改跳遠(yuǎn)成績(jī)n7.修改系名n");scanf("%d",&c);switch(c)case 1:printf("請(qǐng)輸入你修改的運(yùn)動(dòng)員號(hào)碼:");scanf("%s",&num);st
13、rcpy(stui.num,num);break;case 2:printf("輸入你修改的運(yùn)動(dòng)員姓名:n");scanf("%s",&name);strcpy(,name);break;case 3:printf("輸入你修改的運(yùn)動(dòng)員100米成績(jī):");scanf("%d",&scorem);stui.scorem=scorem;break;case 4:printf("輸入你修改運(yùn)動(dòng)員鉛球成績(jī):");scanf("%d",&sco
14、req);stui.scoreq=scoreq;break;case 5:printf("輸入你修改運(yùn)動(dòng)員跳高成績(jī):");scanf("%d",&scoreg);stui.scoreq=scoreq;break;case 6:printf("輸入你修改運(yùn)動(dòng)員跳遠(yuǎn)成績(jī):");scanf("%d",&scorey);stui.scorey=scorey;break;case 7:printf("輸入你修改運(yùn)動(dòng)員系名:");scanf("%s",&ximin
15、g);strcpy(stui.ximing,ximing);break;default:printf("你的輸入有誤:n");printf("修改后的運(yùn)動(dòng)員數(shù)據(jù):n");for(int i=0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);save();void defen()/得分函數(shù)system("cls");p
16、rintf("t*得分界面*n");int x,y,z,w,o,p,q,i;char ch120="ruanjian",ch220="shumei",ch320="guangdian"printf("原始數(shù)據(jù):n");/*for(int i=0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.x
17、iming);*/read();printf("各系的得分總分排序:n");for(i=0;i<size;i+)if(stui.scorem=1) x=3;else if(stui.scorem=2) x=2;else if(stui.scorem=3) x=1;else x=0;if(stui.scoreq=1) y=3;else if(stui.scoreq=2) y=2;else if(stui.scoreq=3) y=1;else y=0;if(stui.scoreg=1) z=3;else if(stui.scoreg=2) z=2;else if(stui
18、.scoreg=3) z=1;else z=0;if(stui.scorey=1) w=3;else if(stui.scorey=2) w=2;else if(stui.scorey=3) w=1;else w=0;for(i=0;i<size;i+)if(strcmp(stui.ximing,ch1)=0)o=x+y+z+w;printf("軟件系總得分:%dn",o);else if(strcmp(stui.ximing,ch2)=0)p=x+y+z+w;printf("數(shù)媒系總得分:%dn",p);else if(strcmp(stui.x
19、iming,ch3)=0)q=x+y+z+w;printf("光電系總得分:%dn",q);void shancchu()/刪除函數(shù)/system("cls");printf("t*刪除界面*n");char ch120;printf("原始數(shù)據(jù):n");int i;/*for(int i=0;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stu
20、i.scorey,stui.ximing);*/read();printf("輸入你要?jiǎng)h除的運(yùn)動(dòng)員的姓名:n");scanf("%s",&ch1);for(i=0;i<size;i+)if(strcmp(,ch1)=0)for(int j=i;j<size-1;j+)stuj=stuj+1;printf("刪除后的運(yùn)動(dòng)員數(shù)據(jù):n");for(i=0;i<size-1;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,
21、stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);size-;save();void charu()/插入函數(shù)system("cls");int a;printf("t*插入界面*n");printf("請(qǐng)輸入要插入的運(yùn)動(dòng)員個(gè)數(shù):");scanf("%d",&a);for(int j=0;j<a;j+)printf("輸入要插入的運(yùn)動(dòng)員數(shù)據(jù):n");printf("號(hào)碼:");scanf(&
22、quot;%s",&stusize.num);printf("姓名:");scanf("%s",&);printf("100米成績(jī):");scanf("%d",&stusize.scorem);printf("鉛球成績(jī):");scanf("%d",&stusize.scoreq);printf("跳高成績(jī):");scanf("%d",&stusize.scoreg
23、);printf("跳遠(yuǎn)成績(jī):");scanf("%d",&stusize.scorey);printf("系名:");scanf("%s",&stusize.ximing);for(int i=0;i<size+1;i+)for(int j=i+1;j<size+1;j+)if(stui.scorem<stuj.scorem)temp=stui;stui=stuj;stuj=temp;size+;printf("插入后運(yùn)動(dòng)員數(shù)據(jù):n");for(int i=0
24、;i<size;i+)printf("%st%st%dt%dt%dt%dt%sn",stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);save();void save()/保存數(shù)據(jù)到文件函數(shù)FILE *fp;/定義指向文件的指針/char out; /printf("輸出文件例如:c:score Enter out example c:scoren"); /scanf("%s",outfile); if(fp=fopen
25、("e:xiao.txt","w")=NULL)/為輸出打開一個(gè)二進(jìn)制文件,為只寫方式 printf("打不開文件Cannot open the filen"); return;/若打不開則返回菜單 printf("n保存中.Saving the file.n"); /fprintf(fp,"運(yùn)動(dòng)員號(hào)碼,姓名,100成績(jī),鉛球成績(jī),跳高成績(jī),跳遠(yuǎn)成績(jī),系名:n");for(int i=0;i<size;i+)fprintf(fp,"%st%st%dt%dt%dt%dt%sn&qu
26、ot;,stui.num,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);fclose(fp);/關(guān)閉文件printf("保存成功.Save the !n"); void read()FILE *fp;/定義指向文件的指針if(fp=fopen("e:xiao.txt","r")=NULL)/為輸出打開一個(gè)二進(jìn)制文件,為只寫方式 printf("打不開文件Cannot open the filen"); return;/若
27、打不開則返回菜單 fscanf(fp,"運(yùn)動(dòng)員號(hào)碼,姓名,100成績(jī),鉛球成績(jī),跳高成績(jī),跳遠(yuǎn)成績(jī),系名:n");for(int i=0;i<size;i+)fscanf(fp,"%st%st%dt%dt%dt%dt%sn",&stui.num,&,&stui.scorem,&stui.scoreq,&stui.scoreg,&stui.scorey,&stui.ximing);printf("%st%st%dt%dt%dt%dt%sn",stui.num
28、,,stui.scorem,stui.scoreq,stui.scoreg,stui.scorey,stui.ximing);fclose(fp);/關(guān)閉文件int login(char password)/密碼校對(duì)函數(shù)* static char key10="12345" if(strcmp(password,key)=0)/比較輸入字符和系統(tǒng)設(shè)定的密碼是否相同 return 1; else return 0;void Logon()char a;printf("n");printf("*歡迎進(jìn)入校運(yùn)動(dòng)會(huì)管理界面*n&quo
29、t;);printf("*n");printf("*登陸請(qǐng)按回車鍵*n");printf("*n");printf("n");scanf("%c",&a);if(a='n')FILE *fp;char password10;int count=0,s;printf("您有三次輸入機(jī)會(huì)!nn");printf("請(qǐng)輸入密碼:n");scanf("%s",password);s=login(password);if(
30、s=1) fp=fopen("C:UsersAdministratorDesktop實(shí)訓(xùn)password.txt","w");fprintf(fp,"%s",password);fclose(fp);system("CLS");printf("密碼正確!n");printf("*n");printf("*歡迎進(jìn)入*n");printf("*nnn");if(s=0)count+;while(count!=3)printf("請(qǐng)
31、再次輸入密碼:n");scanf("%s",password);s=login(password);if(s=1) fp=fopen("C:UsersAdministratorDesktop實(shí)訓(xùn)password.txt","w");fprintf(fp,"%s",password);fclose(fp);system("CLS");printf("密碼正確!n");printf("*n");printf("*歡迎進(jìn)入*n");
32、printf("*n");return ;if(s=0) count+;if(count=3) printf("你已經(jīng)錯(cuò)誤輸入3次,系統(tǒng)退出!n");exit(0);elseexit(1);void menu()int ch1;char ch2;struct tm *pt; /*定義時(shí)間結(jié)構(gòu)體*/time_t t;t=time(NULL);pt=localtime(&t); /*讀取系統(tǒng)日期并把它放到結(jié)構(gòu)體中*/doprintf("tt當(dāng)前系統(tǒng)日期:%d-%d-%dn",pt->tm_year+1900,pt->t
33、m_mon+1,pt->tm_mday); /*顯示當(dāng)前系統(tǒng)日期*/printf("=菜單=n");printf("1.輸入2.查找n");printf("3.排序4.修改n");printf("5.得分6.刪除n");printf("7.插入8.保存n");printf("9.顯示0.退出n");printf("=n");printf("請(qǐng)選擇功能<1-8>: bb");/getchar();scanf("
34、%d",&ch1); switch(ch1) case 1:input();break;case 2:find();break;case 3:paixu();break;case 4:xiugai();break;case 5:defen();break;case 6:shancchu();break;case 7:charu();break;case 8:save();break;case 9:read();break;case 0:exit(0);default:printf("未進(jìn)行任何操作!"); printf("n");pri
35、ntf("想要繼續(xù)操作請(qǐng)按yn");getchar();scanf("%2c",&ch2);while(ch2='y');/條件判斷void main()system("color 3f");/Logon();menu();四、調(diào)試過程在程序運(yùn)行的過程中,出現(xiàn)了很多的錯(cuò)誤。有很復(fù)雜的問題,也不乏許多低級(jí)的錯(cuò)誤。在寫入文件的時(shí)候,首先我用的是fwrite,而在讀入文件的時(shí)候用的是fread,后來才發(fā)現(xiàn)這兩個(gè)語句都只是對(duì)二進(jìn)制的文件進(jìn)行操作,實(shí)際上我們要用到的fscanf、fprintf這兩個(gè)語句。修改完的代碼FILE *fp;/定義指向文件的指針if(fp=fopen("e:xiao.txt","r")=NULL)/為輸出打開一個(gè)二進(jìn)制文件,為只寫方式 printf("打不開文件Cannot open the fi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)一年級(jí)語文課前三分鐘小故事10篇
- 2024年兩系雜交水稻新組合項(xiàng)目建議書
- 第23課《得道多助失道寡助》教學(xué)設(shè)計(jì) 統(tǒng)編版語文八年級(jí)上冊(cè)
- 3 1 倒數(shù)的認(rèn)識(shí)(同步測(cè)試)六年級(jí)上冊(cè)數(shù)學(xué)人教版
- 2024-2025版高中地理第三章地理信息技術(shù)的應(yīng)用第三節(jié)地理信息系統(tǒng)的應(yīng)用學(xué)案中圖版必修3
- 2024-2025學(xué)年高考數(shù)學(xué)一輪復(fù)習(xí)專題5.1任意角和蝗制及任意角的三角函數(shù)知識(shí)點(diǎn)講解含解析
- 2024年飛行管理系統(tǒng)合作協(xié)議書
- 2024年FS-L系列柔軟劑項(xiàng)目合作計(jì)劃書
- 2024年電力測(cè)量?jī)x表項(xiàng)目合作計(jì)劃書
- 玉溪師范學(xué)院《國畫基礎(chǔ)》2021-2022學(xué)年第一學(xué)期期末試卷
- 《助產(chǎn)學(xué)》考試試題及答案
- GB/T 18385-2024純電動(dòng)汽車動(dòng)力性能試驗(yàn)方法
- 期末+(試題)+-2024-2025學(xué)年人教PEP版英語六年級(jí)上冊(cè)
- 類風(fēng)濕關(guān)節(jié)炎前狀態(tài)診療專家共識(shí)(2024)解讀
- 八年級(jí)生物上冊(cè) 第五單元 第二章 第三節(jié) 社會(huì)行為教案2 (新版)新人教版
- ICD-10疾病編碼完整版
- 2023年山東青島局屬高中自主招生物理試卷真題(含答案詳解)
- 《搭船的鳥》 第一課時(shí)公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 滴灌安裝工程合同2024年
- 2024考研英語二試題及答案解析
- Unit 4 Section B(2a-2b)課件人教版2024新教材七年級(jí)上冊(cè)英語
評(píng)論
0/150
提交評(píng)論