




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、信息科學與技術學院程序設計基礎課程設計報告題目名稱:學生姓名:學 號:專業班級:指導教師:學生考勤管理系統郭晨晨201350809313級計科(3)班郭理2013年6月6日專業資料目錄目錄11 .課程設計題目與要求21.1 課題目的和要求21.3 課題意義22總體設計32.1 功能模塊設計32.2 系統設計方案43詳細設計41.1 數據結本勾設計51.2 主模塊設計51.2.1 建立學生缺課記錄子模塊51.2.2 修改學生缺課記錄子模塊61.2.3 修改學生缺課記錄子模塊71.2.4 查看單科曠課記錄子模塊81.2.5 查看學生曠課記錄子模塊91.2.6 載入學生曠課記錄子模塊101.2.7
2、儲存學生曠課記錄子模快114 .運行結果134.1 運行135 .課程設計總結16結束語16參考文獻17附錄:源代碼171 .課程設計題目與要求1.1 課題目的和要求設計目的:要現一“學生考勤管理程序”記錄學生的缺課情況,它包括:缺課日期、第幾節課、課程名稱、學生姓名、缺課類型(遲到、早退、請假及曠課)。1.2 設計要求:1 .錄入學生的缺課記錄;2 .修改某個學生的缺課記錄;3 .查詢某個學生的缺課情況;4 .統計某段時間,某門課曠課學生姓名及曠課次數,按曠課次數由多到少排序;5 .統計某段時間,有學生曠課的課程及曠課人次,按曠課人次由多到少排序;6 .系統以菜單方式工作。1.3課題意義程序
3、實踐是本科生重要教學環節之一。通過程序實踐,強化學生的計算機應用技能,使學生驗證、鞏固和充實所學的理論知識,加深對相關容的理解,拓寬知識面,培養學生的創新精神和實踐能力學生考勤管理程序可以大大減緩學生考勤人員的工作量,方便了平時上課學生的出勤率的管理。2總體設計2.1功能模塊設計根據分析整個系統主要劃分為7個功能模塊,分別執行要求中的功能。數據管理中可以對學生的基本信息、課程的基本信息、學生缺課的查詢、添加、刪除和修改。查詢管理通過根據學生姓名,課程姓名時間段兒等信息,查詢單個學生的缺課記錄,單科課的曠課記錄,單個學生的曠課記錄。功能模塊圖如圖1所示:學生考勤管理程序建立學生課記錄修改學生缺課
4、記錄查詢學生缺課記錄查看單科曠課記錄查看學生曠課記錄載入學生1廣1記錄儲 存學生曠課記錄圖1功能模塊圖2.2系統設計方案這個程序是過程性語言設計的。運用多種條件語句,主體采用的是鏈表指針。系統的設計采用了數組語句、選擇語句和循環語句,在需要處理大量同類數據時,這樣就使程序書寫更加簡潔。程序使用了布爾函數。選擇語句多采用if多分支選擇結構與switch語句。首先計算switch表達式,然后在caes子句中尋找值相等的常量表達式,并以此為入口符號,由此開始順序執行。循環語句采用了for語句等、do-while語句,for語句用于已知循環次數的循環結構,括號中的三個量分別用來表示循環變量初值、循環終
5、值和循環增量。do-while語句先循環后判斷,Break語句在switch語句中,保證多分支情況的正確執行,在循環語句中,強制終止本層循環。保存和讀取函數是典型的函數功能,一個程序是由若干個函數組成的,保存和讀取函數是和其他函數互相調用的。3詳細設計3.1數據結構設計structxuekecharxueke_name50;intpeople_num;;這是定義了一個xueke結構體,用來存放一個學科名及其相應的曠課人數;structstudentcharname50;longtime;intlesson_time;charlesson_name50;intchidao_num;intzaot
6、ui_num;intqingjia_num;intkuangke_num;structstudent*next;這是定義了一個student的結構體,用來存放一個學生的考勤記錄,其中有,字符數組name50,lesson_name50,分別存放學生名字,缺課課程名字;int型變量lesson_time,chidao_num,zaotui_num,qingjia_num,kuangke_num,分別來存放,缺課節次,遲到次數,早退次數,請假次數,曠課次數long型變量time,記錄時間。3.2主模塊設計3.2.1 建立學生缺課記錄子模塊要建立的學生人數,學生基本信息(包括缺課時間、學生姓名、課程
7、名稱、節次、遲到次數、早退次數、請假次數、曠課次數)可用creat()函數如圖1.開始圖13.2.2 修改學生缺課記錄子模塊根據要修改的學生姓名以及科目名稱找到相應的信息,再選擇要修改的項目進行單項修開始charxiugai_name50;charxiugai_xueke_name50;intk;printf("請輸入要修改的學 生姓名與學科名稱:");scanf("%s%s",xiugai_name ,xiugai_xueke_name);structstudent*p1,*p2;p2=(structstudent*)malloc(LEN);p1=he
8、ad;p1=p1->next;選擇修改項目并完 成修改3.2.3 修改學生缺課記錄子模塊根據人名可以查出該學生的所有缺課記錄如圖31開始-+-inti=0;charchaxun_name50;structstudent*p;p=head;*/printf("請輸入要;查詢的人名:");/scanf("%s",chaxun_name);<5i<studentnum7i+-strcmp(chaxun_name"-,p->name)=0;/輸出p所指,向的結構體,數據.(好束圖33.2.4查看單科曠課記錄子模塊根據學科名稱和時
9、間圍查出所有在該圍曠課的學生以及次數如圖4printf("請輸入要查看白學科名稱:”);scanf("%s",lesson);printf("請輸入要查看的時間范圍");scanf("%ld%ld",&look_time1,&look_time2);3.2.5 查看學生曠課記錄子模塊根據要查詢的學科名稱及時間段查出在改時間段該門課上曠課的人數如圖5開始intn,i,j,zhongjian;structstudent*p1;charzhongjian_name50;longlook_time1,look_tim
10、e2;*printf("請輸入第%d個學科名稱:”,i+1);scanf("%s",ai.xueke_name);ai.people_num=0;printf("請輸入要查看的時間范圍由小到大");scanf("%ld%ld",&look_time1,&look_time2);p1=head;i=0;3.2.6 載入學生曠課記錄子模塊可以載入實現儲存在當前文件夾中txt文件中所儲存的數據如圖6開始3.2.7 儲存學生曠課記錄子模快進入系統界面,順序的完成各項操作,進行數據的輸入,信息的保存調用相應的函數打開相
11、應的地址,查詢各項信息。如圖7開始4.1運行4.運行結果開始菜單圖1開始菜單主菜單錄量杲錄rlf; 一 ± 士ru rd nJ dJn-nEI出 ms cnlZmL mr.m: B-一1 -nF士一二 M 課講餅/H 缺粒賽才廣葉丁管勤亭?一季萱 立改樂-M建造杳1_2_:5_b 7 ±"C:U5trsGuochenCeskrop郭晨晨Debuq1,exe看引布關信息$外抬抬制外抬抬外河外杯外$抬抬抬岸抬抬抬打抬抬抬抬制外打外打外警打$抬抬抬抬圖2主菜單建立學生缺課記錄"UUsers(juochenTeskrop同層Debuq1fexe"X欣次
12、欣次次次青300李i空心張S3業HH->>生生生生生生M建=工X/LZ345b:一一二:£要珞第第單第第第間數間數3間數甥驟清I政黨011B:M:.與-lflg;4寸第1;狗,投狗軻狗狗軻軸遙51說SJ譚4血22i000i:寫名n黑醬吃難卷小池捻:徐欣L;*電b扇前05斜靠生退篇生退篇生退人人近八八夕八命;曾畬稔稔狀nlZAIN-rBK".JL:.gJHJJs-:JJE裝噎將志孟專田千320周業帥4444D字旻于愚.子星亍曷子昱子早UI0I0修月國100好暫辰玉篦耨101&121010M31gzij請謂請請請I>下:«+*下:el
13、7;下:6+*下那一下:eT下:2數數數數皴數次K杖K根長津保臬保悌說戰仁語裝修北曠語廣高英高線高英工,:"»S:»稱稱稱t名:0名20名:0名羯名甜名:1a2裝裝欄數裝曩售01凌需深心斕出集或笈圖2建立學生缺課記錄儲存學生曠課記錄"C:Users(juochenLeskcop郭晨震Debuq1fexe"生露生生生勤Z 3 4 5 6 7 8唳ErEf-ln儲存成功錄錄錄杲錄錄專riJ riJ己士|1-日三 出ml PIE mL mF.q£B-lE-nL.±r- H 課講餅/K 缺款賽才廣葉丁管 生差科生生生劭 亭?一李萱一
14、 立A選 建里杏3w12 345679 M圖3儲存學生曠課記錄5.課程設計總結課程設計順利完成,題目所要求的功能基本實現,可以對學生的缺課信息進行添加,修改,刪除以及查詢的顯示。不過這個程序還不夠完善,例如不能往當前文件夾中的txt文件中添加記錄。結束語整個系統的設計過程對于我來說是個學習、探索的過程,通過借鑒別人,學習設計程序,在整個設計過程中,出現過很多的問題,很多繁瑣的東西都需要反復的修改,主要是因為前期的學習不認真,對系統的需求分析的要求認識不清楚,使得在后邊的工作中不得不經常反復請教別人去修改。使我體會到設置中每一步的重要性。所以在分析一個問題時,我們需要站在一個有遠見的高度。通過此
15、次設計,我對C+語言編程有了深刻的認識,積累了使用軟件工程的思想來開發軟件的經驗,更重要的是學會了在對待問題時應該考慮到哪些方面和怎么解決問題。雖然時間緊迫但我學會了不少,感到自身知識的貧乏,希望在日后積極學習并嘗試努力中能做出完善的系統。參考文獻譚浩強.C+語言程序設計.清華大學出版社科技.VisualC+6.0信息系統開發.人民郵電出版社附錄:源代碼#include<cstdio>/cstdio是將stdio.h的容用C+頭文件的形式表示出來#include<iostream>#include<malloc.h>/malloc的全稱是memoryallo
16、cation,中文叫動態存分配,當無法知道存具體位置的時候,想要綁定真正的存空間,就需要用到動態的分配存。#include<cstring>當調用庫函數,客戶程序提供的是string類型參數,而庫函數部實現用的是c-串,因此需要將string對象,車專化為char*對象,而c_str()提供了這樣一種方法,它返回一個客戶程序可讀不可改的指向字符數組的指針。#include<iomanip>/i/o流控制頭文件#defineNULL0#defineguding10#defineLENsizeof(structstudent)usingnamespacestd;intstu
17、dent_num;FILE*fp1;structxuekecharxueke_name50;intpeople_num;structstudentcharname50;longtime;intlesson_time;charlesson_name50;intchidao_num;intzaotui_num;intqingjia_num;intkuangke_num;structstudent*next;voidchaxun(structstudent*head)inti;charchaxun_name50;cin>>chaxun_name;structstudent*p;if(he
18、ad=NULL)cout<<"聯系人為空"p=head;for(i=0;i<student_num;i+)if(strcmp(chaxun_name,p->name)=0)cout<<"缺課時間:"<<p->time<<"學生姓名:"<<p->name<<"課程名稱:"<<p->lesson_name<<"節次:"<<p->lesson_time<
19、<endl<<"遲到次數:"<<p->chidao_num<<"早退次數:"<<p->zaotui_num<<"請假次數:"<<p->qingjia_num<<”曠課次數:"<<p->kuangke_num<<endl;p=p->next;structstudent*xiugai(structstudent*head)charxiugai_name50;charxiugai_xuek
20、e_name50;intk;cout<<”請輸入要修改的學生姓名與學科名稱【格式:學生姓名(空格)學科名cin>>xiugai_name>>xiugai_xueke_name;structstudent*p1,*p2;p2=(structstudent*)malloc(LEN);p1=head;if(head=NULL)cout<<"沒有學生信息n"returnhead;while(strcmp(xiugai_name,p1->name)!=0|strcmp(xiugai_xueke_name,p1->lesson
21、_name)!=0)&&(p1->next!=NULL)p1=p1->next;if(strcmp(xiugai_name,p1->name)=0&&strcmp(xiugai_xueke_name,p1->lesson_name)=0)cout<<"=修改1-修改缺課時間2-修改學生姓名3-修改課程名稱=n"cout<<"n"cout<<"n"cout<<"n"cout<<"4-修改第幾節
22、缺課n"cout<<"5-修改遲到次數n"cout<<"6-修改早退次數n"cout<<"7-修改請假次數n"cout<<"8-修改曠課次數nn"cout<<"=n"cin>>k;switch(k)case1:cout<<"請輸入新的缺課時間:"cin>>p1->time;break;cout<<”請輸入新的學生姓名cin>>p1->n
23、ame;break;case 2:cout<<”請輸入新的課程名稱cin>>p1->lesson_name;break;case 3:cout<<"請輸入新的缺課節次cin>>p1->lesson_time;break;case 4:cout<<”請輸入新的遲到次數cin>>p1->chidao_num;break;case 5:cout<<”請輸入新的早退次數cin>>p1->zaotui_num;break;case 6:cout<<”請輸入新的請假
24、次數cin>>p1->qingjia_num;break;case 7:cout<<"請輸入新的曠課次數:";cin>>p1->kuangke_num;break;returnhead;structstudent*creat()inti,b;structstudent*head,*p1,*p2;cout<<”請輸入要建立資料的學生人數:"cin>>b;head=p2=NULL;p1=(structstudent*)malloc(LEN);cout<<”【輸入格式:缺課時間(空格)學
25、生姓名(空格)課程名稱(空格)第幾節(空格)遲到次數(空格)早退次數(空格)請假次數(空格)曠課次數n”;cout<<”請輸入第1名學生信息:”;cin>>p1->time>>p1->name>>p1->lesson_name>>p1->lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>>p1->kuangke_num;head=p1;p2=p1;student_num
26、+=1;for(i=1;i<b;i+)(p1=(structstudent*)malloc(LEN);cout<<"請輸入第"<<i+1<<"名學生信息:";cin>>p1->time>>p1->name>>p1->lesson_name>>p1->lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>>p1-
27、>kuangke_num;p2->next=p1;p2=p1;student_num+=1;p2->next=NULL;returnhead;voidprint(structstudent*head)structstudent*p;p=head;if(p=NULL)cout<<"沒有學生信息n"while(p!=NULL)cout<<”缺課時間:"<<p->time<<"學生姓名:"<<setw(10)<<p->name<<&quo
28、t;課程名稱:"<<p->lesson_name<<"節次:"<<p->lesson_time<<endl<<"遲到次數:"<<p->chidao_num<<"早退次數:"<<p->zaotui_num<<"請假次數:"<<p->qingjia_num<<"曠課次數:"<<p->kuangke_num<
29、<endl;p=p->next;structstudent*tongji_lesson(structstudent*head)structstudent*p1,*p2,*p3;charlesson50;longlook_time1,look_time2;intxunhuan_num=0;p3=(structstudent*)malloc(LEN);if(head=NULL)cout<<"沒有學生信息”;return(head);p1=head;p2=p1->next;while(xunhuan_num<student_num)while(p2!=N
30、ULL)if(p2->kuangke_num>p1->kuangke_num)p3->chidao_num=p2->chidao_num;p3->kuangke_num=p2->kuangke_num;p3->qingjia_num=p2->qingjia_num;p3->zaotui_num=p2->zaotui_num;p3->lesson_time=p2->lesson_time;p3->time=p2->time;strcpy(p3->lesson_name,p2->lesson_na
31、me);strcpy(p3->name,p2->name);p2->chidao_num=p1->chidao_num;p2->kuangke_num=p1->kuangke_num;p2->qingjia_num=p1->qingjia_num;p2->zaotui_num=p1->zaotui_num;p2->lesson_time=p1->lesson_time;p2->time=p1->time;strcpy(p2->lesson_name,p1->lesson_name);strcpy(p
32、2->name,p1->name);p1->chidao_num=p3->chidao_num;p1->kuangke_num=p3->kuangke_num;p1->qingjia_num=p3->qingjia_num;p1->zaotui_num=p3->zaotui_num;p1->lesson_time=p3->lesson_time;p1->time=p3->time;strcpy(p1->lesson_name,p3->lesson_name);strcpy(p1->name,p
33、3->name);p1=p2;p2=p2->next;p1=head;p2=p1->next;xunhuan_num+;cout<<”請輸入要查看的學科名稱:"cin>>lesson;cout<<”請輸入要查看的時間圍【輸入格式:時間(空格)時間】”;cin>>look_time1>>look_time2;p1=head;while(p1!=NULL)if(strcmp(lesson,p1->lesson_name)=0&&look_time1<=p1->time&
34、&p1->time<=look_time2)cout<<"學生姓名:"<<p1->name<<”曠課次數:"<<p1->kuangke_num<<endl;p1=p1->next;returnhead;structstudent*tongji_student(structstudent*head)structxuekea10;intn,i,j,zhongjian;structstudent*p1;charzhongjian_name50;longlook_time1,
35、look_time2;if(head=NULL)cout<<"沒有學生信息n"returnhead;cout<<”請輸入一共的學科數:"cin>>n;for(i=0;i<n;i+)cout<<"請輸入第"<<i+1<<"個學科名稱:"cin>>ai.xueke_name;ai.people_num=0;cout<<”請輸入要查看的時間圍由小到大【輸入格式:時間(空格)時間】cin>>look_time1>&
36、gt;look_time2;p1=head;for(i=0;i<n;i+)while(p1!=NULL&&look_time1<=p1->time&&p1->time<=look_time2)if(ai.xueke_name=p1->lesson_name)ai.people_num+=p1->kuangke_num;p1=p1->next;p1=head;for(j=0;j<n-1;j+)for(i=0;i<n-1-j;i+)if(ai.people_num<ai+1.people_num)zh
37、ongjian=ai+1.people_num;ai+1.people_num=ai.people_num;ai.people_num=zhongjian;strcpy(zhongjian_name,ai+1.xueke_name);strcpy(ai+1.xueke_name,ai.xueke_name);strcpy(ai.xueke_name,zhongjian_name);elseif(ai.people_num=ai+1.people_num&&strcmp(ai.xueke_name,ai+1.xueke_name)>0)zhongjian=ai+1.peop
38、le_num;ai+1.people_num=ai.people_num;ai.people_num=zhongjian;strcpy(zhongjian_name,ai+1.xueke_name);strcpy(ai+1.xueke_name,ai.xueke_name);strcpy(ai.xueke_name,zhongjian_name);for(i=0;i<n;i+)曠課次cout<<"學科名稱:"<<ai.xueke_name<<"數:"<<ai.people_num<<end
39、l;returnhead;returnhead;structstudent*zairu()structstudent*p1=NULL,*p2=NULL,*head=NULL;structstudentstudent_ziliao100;inti=0,n=0;if(fp1=fopen("xueshengziliao.txt","rb+")=NULL)printf("cannotopenfilen");return(head);while(!feof(fp1)if(fread(&student_ziliaoi,LEN,1,fp1)
40、!=1)if(feof(fp1)fclose(fpl);break;printf("filereaderrorn");i+;n=i;student_num=n;p1=p2=(structstudent*)malloc(LEN);head=p1;for(i=0;i<n;i+)p1->chidao_num=student_ziliaoi.chidao_num;p1->kuangke_num=student_ziliaoi.kuangke_num;strcpy(p1->lesson_name,student_ziliaoi.lesson_name);p1->lesson_time=student_ziliaoi.lesson_time;strcpy(p1->n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國普及型彩色攝像機市場調查研究報告
- 2025屆四川省成都市蓉城名校聯考高三上學期開學考-物理試題(含答案)
- 2025年中國新量子亞健康檢測儀市場調查研究報告
- 2025年中國數字鏈路復接器數據監測報告
- 小兒假膜性腸炎護理
- 2025-2030年中國三級綜合醫院行業發展前景調研及投資規劃報告
- 肇慶市實驗中學高中生物三:2免疫調節導學案(第課時)
- 新疆科信職業技術學院《體育基礎》2023-2024學年第二學期期末試卷
- 新疆莎車縣2025屆初三第一次摸底考試英語試題試卷含答案
- 新鄉市紅旗區2025年數學三下期末監測模擬試題含解析
- 《尼爾斯騎鵝旅行記》讀書分享課件
- 邏輯學導論 第4章 謬誤
- 第六章學習法治思想提升法治素養講解
- 無錫地鐵線網文旅融合一體化發展策略研究
- 8S管理介紹課件
- 押運員管理考核規定(4篇)
- 夜市現場管理制度內容
- 醫療診斷中的批判性思維應用
- 健康管理考試題庫及答案
- 高三臨界生會議課件
- 安徽省2024年中考道德與法治真題試卷(含答案)
評論
0/150
提交評論