




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGEPAGEword文檔可自由復(fù)制編輯C語言程序設(shè)計課程設(shè)計評語:考勤(10)紀(jì)律(10)過程(40)設(shè)計報告(30)答辯(10)總成績(100)專業(yè):自動控制班級:控2姓名:學(xué)號:指導(dǎo)教師:一、引言《C語言課程設(shè)計》是為電子科學(xué)與技術(shù)等專業(yè)學(xué)生開設(shè)的專業(yè)基礎(chǔ)實(shí)踐課程,本課程是一門必修課,是在學(xué)習(xí)《C語言程序設(shè)計》課程之后進(jìn)行的一個實(shí)踐教學(xué)環(huán)節(jié)。課程設(shè)計的目的是:1、進(jìn)一步培養(yǎng)學(xué)生結(jié)構(gòu)化程序設(shè)計的思想,加深對高級語言基本語言要素和控制結(jié)構(gòu)的理解。2、針對C語言中的重點(diǎn)和難點(diǎn)內(nèi)容進(jìn)行訓(xùn)練,獨(dú)立完成有一定工作量的程序設(shè)計任務(wù),同時強(qiáng)調(diào)好的程序設(shè)計風(fēng)格。3、掌握C語言的編程技巧和上機(jī)調(diào)試程序的方法。4、掌握程序設(shè)計的常用算法。二、基礎(chǔ)題1.題目編寫求以下函數(shù)。2.解題思路用三個for循環(huán)先分別計算出m,n.(m-n)的階乘,然后計算函數(shù)。3.源程序#include<stdio.h>intmain(){ intm,n,i,j,k; intC,C1=1,C2=1,C3=1; printf("輸入兩個正整數(shù)m,n(m>n):\n"); scanf("%d%d",&m,&n); for(i=1;i<=m;i++) { C1=C1*i; } for(j=1;j<=n;j++) { C2=C2*j; } for(k=1;k<=(m-n);k++) { C3=C3*k; } C=C1/(C2*C3); printf("m=%d\nn=%d\n",m,n); printf("C=%d\n",C); return0;}4.流程圖圖1.1基礎(chǔ)題流程圖5.運(yùn)行結(jié)果在程序中輸入正整數(shù)10和8運(yùn)行結(jié)果如圖1.2所示。圖1.2二、改錯題1.題目給定程序MODI1.C中,fun函數(shù)的功能是:先從鍵盤上輸入一個3行3列矩陣的各個元素的值,然后輸出主對角線元素之積。請改正程序中的錯誤,或在橫線處填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。程序如下:#include<stdio.h>intfun(){inta[3][3],sum;inti,j;_____;for(i=0;i<3;i++){for(j=0;j<3;j++)
scanf(〃%d〃a[i][j]);}for(i=0;i<3;i++)sum=sum*a[i][i];printf(〃Sum=%dn〃,sum);}main(){fun();}2.錯誤分析#include<stdio.h>intfun(){inta[3][3],sum;inti,j;____//sum未附初值for(i=0;i<3;i++){for(j=0;j<3;j++)scanf(〃%d〃a[i][j]);//輸入的格式控制符不對,后面的變量未取地址}for(i=0;i<3;i++)sum=sum*a[i][i];printf(〃Sum=%dn〃,sum);//換行符缺少“\”}main(){fun();}3.流程圖圖2.1調(diào)用函數(shù)流程圖圖2.2主函數(shù)流程圖4.改正后的源程序#include<stdio.h>intfun(){inta[3][3],sum;inti,j;sum=1;for(i=0;i<3;i++){for(j=0;j<3;j++)scanf("%d",&a[i][j]);}for(i=0;i<3;i++)sum=sum*a[i][i];printf("Sum=%d\n",sum);}main(){fun();}5.運(yùn)行結(jié)果該函數(shù)的功能是計算一個三階矩陣的對角線個元素的乘積,輸入1、2、3、6、5、4、7、8、9對角線的元素分別為1、5、9,運(yùn)行結(jié)果如圖2.3所示。圖2.3三、綜合題1.題目問題描述:對一個有N個學(xué)生的班級,通過該系統(tǒng)實(shí)現(xiàn)對該班級學(xué)生的基本信息進(jìn)行錄入、顯示、修改、刪除、保存等操作的管理。功能要求:本系統(tǒng)采用一個包含N個數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:學(xué)號、姓名、性別、年齡、備注。本系統(tǒng)顯示這樣的菜單:請選擇系統(tǒng)功能項(xiàng):a.學(xué)生基本信息錄入b.學(xué)生基本信息顯示c.學(xué)生基本信息保存d.學(xué)生基本信息刪除e.學(xué)生基本信息修改(要求先輸入密碼)f.學(xué)生基本信息查詢(1)按學(xué)號查詢(2)按姓名查詢(3)按性別查詢(4)按年齡查詢g.退出系統(tǒng)執(zhí)行一個具體的功能之后,程序?qū)⒅匦嘛@示菜單。將學(xué)生基本信息保存到文件中。進(jìn)入系統(tǒng)之前要先輸入密碼。算法提示:數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)體類型數(shù)組數(shù)據(jù)庫結(jié)構(gòu):下表構(gòu)成該系統(tǒng)的基本數(shù)據(jù)庫。姓名學(xué)號性別年齡備注charcharcharintchar測試數(shù)據(jù):學(xué)生人數(shù)N=10其它:對該系統(tǒng)有興趣的同學(xué)可以在實(shí)現(xiàn)上述基本功能后,完善系統(tǒng)的其它功能。2.解題思路2.1程序的模塊組成:本程序由voidmenu()函數(shù)、voidinput()函數(shù)、voidsave(int)函數(shù)、voiddisplay()函數(shù)、voiddel()函數(shù)、voidadd()函數(shù)、voidsearch()函數(shù)、voidsearch_num()函數(shù)、voidsearch_name()函數(shù)、voidsearch_sex()函數(shù)、voidsearch_age()函數(shù)voidmodify()函數(shù)共十二個函數(shù)組成。2.2各個調(diào)用函數(shù)的功能的實(shí)現(xiàn)如下:1)信息的錄入主要運(yùn)用循環(huán)語句將各個學(xué)生的信息依次輸入。2)信息的顯示主要運(yùn)用循環(huán)語句將各個學(xué)生的信息依次顯示出來。3)信息的保存是將信息重寫到保存文件中,信息保存在c:\\student.text中。4)信息的刪除是運(yùn)用字符串運(yùn)用函數(shù),將空格復(fù)印到信息字符上達(dá)到刪除效果。5)信息的修改是輸入學(xué)號用循環(huán)語句將需修改的信息顯示出來,然后再輸入新信息。6)信息的查詢是通過switch語句將查詢方式連接起來,并在各個查詢方式中用循環(huán)語句將要查詢的信息顯示出來。3.流程圖圖3.1主函數(shù)模塊圖圖3.2save函數(shù)流程圖圖3.3del函數(shù)流程圖4.源程序:#include<stdio.h>#include<windows.h>#include<string.h>#defineN100structstudent{charnum[10];charname[10];charsex;charage[10];charbeizhu[50];charpass[10];}st[100];voidmenu();voidinput();voidsave(int);voiddisplay();voiddel();voidadd();voidsearch();voidsearch_num();voidsearch_name();voidsearch_sex();voidsearch_age();voidmodify();voidmenu(){printf("\n");printf("****歡****迎****使****用****\n");printf("\n");printf("\n");printf("\n");printf("******************學(xué)生檔案管理****************\n");printf("\n");printf("1.錄入學(xué)生信息");printf("2.顯示學(xué)生信息\n");printf("3.查詢學(xué)生信息");printf("4.刪除學(xué)生信息\n");printf("5.添加學(xué)生信息");printf("6.修改學(xué)生信息\n");printf("7.退出\n");printf("\n");printf("*********************謝謝使用******************\n");printf("\n");printf("\n");printf("∮☆☆☆自動控制☆☆☆∮\n");printf("\n");printf("\n");printf("管理員:馬軍馬建華李雪菲\n");printf("\n");printf("\n");}voidmain(){menu();//調(diào)用菜單函數(shù)//intn,flag;chara;do{printf("請選擇你需要操作的步驟(1--7):\n");scanf("%d",&n);if(n>=1&&n<=7){flag=1;break;}else{flag=0;printf("您輸入有誤,請重新選擇!");}}while(flag==0);while(flag==1){switch(n){case1:printf("※※輸入學(xué)生信息※※\n");printf("\n");input();break;case2:printf("※※顯示學(xué)生信息※※\n");printf("\n");display();break;case3:printf("※※查詢學(xué)生信息※※\n");printf("\n");search();break;case4:printf("※※刪除學(xué)生信息※※\n");printf("\n");del();break;case5:printf("※※添加學(xué)生信息※※\n");printf("\n");add();break;case6:printf("※※修改學(xué)生信息※※\n");printf("\n");modify();break;case7:printf("歡迎下次光臨\n");exit(0);break;default:break;}getchar();printf("\n");printf("是否繼續(xù)進(jìn)行(yorn):\n");scanf("%c",&a);if(a=='y'){flag=1;system("cls");menu();printf("請再次選擇你需要操作的步驟(1--7):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}voidinput(){inti,m;printf("請輸入需要創(chuàng)建信息的學(xué)生人數(shù)(1--100):\n");scanf("%d",&m);for(i=0;i<m;i++){printf("請輸入學(xué)號:");scanf("%s",st[i].num);getchar();printf("請輸入姓名:");scanf("%s",st[i].name);getchar();printf("請輸入性別(f--女m--男):");scanf("%c",&st[i].sex);printf("請輸入年齡:");scanf("%s",&st[i].age);getchar();printf("請輸入備注:");scanf("%s",st[i].beizhu);printf("請輸入密碼:");scanf("%s",st[i].pass);getchar();printf("\n");}printf("\n創(chuàng)建完畢!\n");save(m);}voidsave(intm){inti;FILE*fp;if((fp=fopen("c:\\student.txt","wb"))==NULL){printf("cannotopenfile\n");exit(0);}for(i=0;i<m;i++)if(fwrite(&st[i],sizeof(structstudent),1,fp)!=1)printf("filewriteerror\n");fclose(fp);}intload(){FILE*fp;inti=0;if((fp=fopen("c:\\student.txt","rb"))==NULL){printf("cannotopenfile\n");exit(0);}else{do{fread(&st[i],sizeof(structstudent),1,fp);i++;}while(feof(fp)==0);//判斷指針是否已經(jīng)到達(dá)文件尾部//}fclose(fp);return(i-1);}voiddisplay(){inti;intm=load();printf("\n學(xué)號姓名性別年齡備注\n");for(i=0;i<m;i++)printf("\n%5s%s\t%8c\t%7s\t%s\n",st[i].num,st[i].name,st[i].sex,st[i].age,st[i].beizhu);}voiddel(){intm=load();inti,j,n,t,flag;charname[20];printf("\n原來的學(xué)生信息:\n");display();//調(diào)用顯示函數(shù)//printf("\n");printf("請輸入要刪除的學(xué)生的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(st[i].name,name)==0){printf("\n已找到此人,原始記錄為:\n");printf("\n學(xué)號姓名性別年齡備注\n");printf("\n%5s%s\t%8c\t%7s\t%s\n",st[i].num,st[i].name,st[i].sex,st[i].age,st[i].beizhu);printf("\n確實(shí)要刪除此人信息請按1,不刪除請按0\n");scanf("%d",&n);if(n==1{for(j=i;j<m-1;j++){strcpy(st[j].name,st[j+1].name);strcpy(st[j].num,st[j+1].num);st[j].sex=st[j+1].sex;strcpy(st[j].age,st[j+1].age);strcpy(st[j].beizhu,st[j+1].beizhu);}flag=0;}}}if(!flag)m=m-1;elseprintf("\n對不起,查無此人!\n");printf("\n瀏覽刪除后的所有學(xué)生信息:\n");save(m);//調(diào)用保存函數(shù)//display();//調(diào)用顯示函數(shù)//printf("\n繼續(xù)刪除請按1,不再刪除請按0\n");scanf("%d",&t);switch(t){case1:del();break;case0:break;default:break;}}voidadd(){FILE*fp;intn;intcount=0;inti;intm=load();printf("\n原來的學(xué)生信息:\n");display();//調(diào)用顯示函數(shù)//printf("\n");fp=fopen("student_list","a");printf("請輸入想增加的學(xué)生數(shù):\n");scanf("%d",&n);for(i=m;i<(m+n);i++){printf("\n請輸入新增加學(xué)生的信息:\n");printf("請輸入學(xué)號:");scanf("%s",st[i].num);getchar();printf("請輸入姓名:");scanf("%s",st[i].name);getchar();printf("請輸入性別(f--女m--男):");scanf("%c",&st[i].sex);printf("請輸入年齡:");scanf("%s",&st[i].age);getchar();printf("請輸入備注:");scanf("%s",&st[i].beizhu);printf("請輸入密碼:");scanf("%s",st[i].pass);getchar();printf("\n");count=count+1;printf("已增加的人數(shù):\n");printf("%d\n",count);}printf("\n添加完畢!\n");m=m+count;printf("\n顯示增加后的所有學(xué)生信息:\n");printf("\n");save(m);display();fclose(fp);}voidsearch()//查詢函數(shù)//{intt,flag;do{printf("\n按學(xué)號查詢請按1,\n按姓名查詢請按2,\n按性別查詢請按3,\n按年齡查詢請按4,\n進(jìn)入主函數(shù)按5\n");scanf("%d",&t);if(t>=1&&t<=5){flag=1;break;}else{flag=0;printf("您輸入有誤,請重新選擇!");}}while(flag==0);while(flag==1){switch(t){case1:printf("按學(xué)號查詢\n");search_num();break;case2:printf("按姓名查詢\n");search_name();break;case3:printf("按性別查詢\n");search_sex();break; case4:printf("按年齡查詢\n");search_age();break;case5:main();break;default:break;}}}voidsearch_num(){charnum[10];inti,t;intm=load();printf("請輸入要查找的學(xué)號:\n");scanf("%s",num);for(i=0;i<m;i++)if(strcmp(st[i].num,num)==0)//比較兩個字符串//{printf("\n已找到此人,其記錄為:\n");printf("\n學(xué)號姓名性別年齡備注\n");printf("\n%5s%s\t%8c\t%7s\t%s\n",st[i].num,st[i].name,st[i].sex,st[i].age,st[i].beizhu);break;}if(i==m)printf("\n對不起,查無此人\n");printf("\n");printf("返回查詢函數(shù)請按1,繼續(xù)查詢學(xué)號請按2\n");scanf("%d",&t);switch(t){case1:search();break;case2:break;default:break;}}voidsearch_name(){charname[10];inti,t;intm=load();printf("請輸入要查找的姓名:\n");scanf("%s",name);for(i=0;i<m;i++)if(strcmp(st[i].name,name)==0){printf("\n已找到,其記錄為:\n");printf("\n學(xué)號姓名性別年齡備注\n");printf("\n%5s%s\t%8c\t%7s\t%s\n",st[i].num,st[i].name,st[i].sex,st[i].age,st[i].beizhu);break;}if(i==m)printf("\n對不起,查無此人\n");printf("\n");printf("返回查詢函數(shù)請按1,繼續(xù)查詢姓名請按2\n");scanf("%d",&t);switch(t){case1:search();break;case2:break;default:break;}}voidsearch_sex(){charsex;inti,t;intm=load();printf("請輸入要查找的性別:\n");scanf("%s",&sex);for(i=0;i<m;i++)if(sex==st[i].sex){printf("\n已找到此人,其記錄為:\n");printf("\n學(xué)號姓名性別年齡備注\n");printf("\n%5s%s\t%8c\t%7c\t%s\n",st[i].num,st[i].name,st[i].sex,st[i].age,st[i].beizhu);break;}if(i==m)printf("\n對不起,查無此人\n");printf("\n");printf("返回查詢函數(shù)請按1,繼續(xù)查詢性別請按2\n");scanf("%d",&t);switch(t){case1:search();break;case2:break;default:break;}}voidsearch_age(){charage[10];inti,t;intm=load();printf("請輸入要查找的年齡:\n");scanf("%d",&age);for(i=0;i<m;i++)if(strcmp(st[i].age,age)==0){printf("\n已找到此人,其記錄為:\n");printf("\n學(xué)號姓名性別年齡備注\n");printf("\n%5s%s\t%8c\t%7s\t%s\n",st[i].num,st[i].name,st[i].sex,st[i].age,st[i].beizhu);break;}if(i==m)printf("\n對不起,查無此人\n");printf("\n");printf("返回查詢函數(shù)請按1,繼續(xù)查詢年齡請按2\n");scanf("%d",&t);switch(t){case1:search();break;case2:break;default:break;}}voidmodify(){charnum[10];charname[10];charsex;charage[10];charbeizhu[50];charpass[10];intb,c,i,n,t,flag,w;intm=load();//導(dǎo)入文件內(nèi)的信息//printf("\n原來的學(xué)生信息:\n");display();//調(diào)用顯示函數(shù)//printf("\n");printf("請輸入要修改的學(xué)生的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(st[i].name,name)==0){printf("\n已找到此人,原始記錄為:\n");printf("\n學(xué)號姓名性別年齡備注\n");printf("\n%5s%s\t%8c\t%7s\t4%s\n",st[i].num,st[i].name,st[i].sex,st[i].age,st[i].beizhu);printf("請輸入密碼:\n");scanf("%s",pass);if(strcmp(st[i].pass,pass)==0){printf("\n確實(shí)要修改此人信息請按1;不修改請按0\n");scanf("%d",&n);if(n==1){printf("\n需要進(jìn)行修改的選項(xiàng)\n1.學(xué)號2.姓名3.性別4.年齡5.備注\n");printf("請輸入你想修改的那一項(xiàng)序號:\n");scanf("%d",&c);if(c>6||c<1)printf("\n選擇錯誤,請重新選擇!\n");}flag=0; w=0; } else { w=1; flag=0; }}}if(w==1) { printf("密碼錯誤!\n"); printf("按ENTER鍵返回\n");scanf("%d",&c);switch(c) {case1:main();break;default:main();break; }}if(flag==1)printf("\n對不起,查無此人!\n");do{switch(c) {case1:printf("學(xué)號改為:");scanf("%s",num);strcpy(st[i-1].num,num);break;case2:printf("姓名改為:");scanf("%s",name);strcpy(st[i-1].name,name);break;case3:printf("性別改為:");getchar();scanf("%c",&sex);st[i-1].sex=sex;break;case4:printf("年齡改為:");scanf("%s",&age);strcpy(st[i-1].age,age);break;case5:printf("備注改為:");scanf("%s",beizhu);strcpy(st[i-1].beizhu,beizhu);break; }printf("\n");printf("\n是否確定所修改的信息?\n是請按1;不,重新修改請按2:\n");scanf("%d",&b);}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電影票務(wù)平臺地區(qū)級代理合同
- 合同法修訂案:第一章 合同的訂立與生效
- 外資制造業(yè)-員工培訓(xùn)合同范本
- 木材采購與銷售合同模板
- 流動人口計劃生育協(xié)作合同
- 干股收益分配合同(范本)
- 企事業(yè)單位監(jiān)控布防合同模板
- 合同責(zé)任死亡賠償金額解析
- 學(xué)校食堂食材采購合同模板
- 陳獨(dú)秀生平事跡
- 2024年人教版初三數(shù)學(xué)(下冊)模擬試卷及答案(各版本)
- 《大學(xué)美育》高職全套教學(xué)課件
- 醫(yī)院CT機(jī)房裝飾改造工程施工組織設(shè)計
- DZ∕T 0213-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 石灰?guī)r、水泥配料類(正式版)
- 《行政倫理學(xué)教程(第四版)》課件 張康之 第8-13章 行政組織倫理-技術(shù)時代的行政倫理
- 《水電廠應(yīng)急預(yù)案編制導(dǎo)則》
- MOOC 跨文化交際通識通論-揚(yáng)州大學(xué) 中國大學(xué)慕課答案
- GB/T 2471-2024電阻器和電容器優(yōu)先數(shù)系
- 成人住院患者靜脈血栓栓塞癥預(yù)防護(hù)理
- 三年級道德與法治3.我很誠實(shí) 說課一等獎
評論
0/150
提交評論