版權(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)告姓名:琳學(xué)號(hào):B120604212023年5月16日~2023年6月16日目錄第一章軟件設(shè)計(jì)介紹 1第二章軟件開(kāi)發(fā)平臺(tái)簡(jiǎn)介 2第三章 軟件設(shè)計(jì)的內(nèi)容 33.1 分?jǐn)?shù)記錄軟件(A1) 33.1.1設(shè)計(jì)題目及規(guī)定 33.1.2設(shè)計(jì)思想及程序流程框圖 33.1.3邏輯功能程序 33.1.4結(jié)果及完善方向 33.2 打字軟件(A2) 33.2.1設(shè)計(jì)題目及規(guī)定 33.2.2設(shè)計(jì)思想及程序流程框圖 33.2.3邏輯功能程序 33.2.4結(jié)果及完善方向 33.3 文本編輯器(A3) 33.3.1設(shè)計(jì)題目及規(guī)定 33.3.2設(shè)計(jì)思想及程序流程框圖 43.3.3邏輯功能程序 43.3.4結(jié)果及完善方向 43.4 加密軟件(A4) 43.4.1設(shè)計(jì)題目及規(guī)定 43.4.2設(shè)計(jì)思想及程序流程框圖 43.4.3邏輯功能程序 43.4.4結(jié)果及完善方向 43.5 進(jìn)制轉(zhuǎn)換器(A5) 43.5.1設(shè)計(jì)題目及規(guī)定 43.5.2設(shè)計(jì)思想及程序流程框圖 43.5.3邏輯功能程序 43.5.4結(jié)果及完善方向 53.6 學(xué)生成績(jī)核算系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(B1) 53.6.1設(shè)計(jì)題目及規(guī)定 53.6.2設(shè)計(jì)思想及程序流程框圖 53.6.3邏輯功能程序 53.6.4結(jié)果及完善方向 53.7 模擬電信計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(B2) 53.7.1設(shè)計(jì)題目及規(guī)定 53.7.2設(shè)計(jì)思想及程序流程框圖 53.7.3邏輯功能程序 53.7.4結(jié)果及完善方向 5第四章心得體會(huì) 6第一章軟件設(shè)計(jì)介紹一、所涉及的課程及知識(shí)點(diǎn)《高級(jí)語(yǔ)言程序設(shè)計(jì)》:常量、變量、表達(dá)式的基本知識(shí);函數(shù)的定義與調(diào)用;文獻(xiàn)讀寫(xiě);數(shù)組、指針、結(jié)構(gòu)體等自定義類(lèi)型的使用;排序等知識(shí)。二、目的與任務(wù)目的:通過(guò)集中時(shí)間上機(jī)實(shí)驗(yàn),對(duì)學(xué)生的程序設(shè)計(jì)能力進(jìn)行一次綜合訓(xùn)練,使學(xué)生充足發(fā)揮已有的編程能力,熟悉編譯環(huán)境。選擇若干課題,進(jìn)行審題、分析、設(shè)計(jì)和調(diào)試,在程序準(zhǔn)備、程序?qū)崿F(xiàn)、完畢文檔、答辯驗(yàn)收過(guò)程中,將全面鞏固已學(xué)過(guò)的編程知識(shí),全面提高編程技能,在編程風(fēng)格、調(diào)試器的使用、測(cè)試技術(shù)等方面得到全面訓(xùn)練。學(xué)生在程序設(shè)計(jì)過(guò)程中,學(xué)生需要查找各種資料獲取有用信息解決實(shí)際問(wèn)題,自學(xué)相關(guān)知識(shí),提高文檔書(shū)寫(xiě)能力,加強(qiáng)團(tuán)隊(duì)合作意識(shí),提高口頭表達(dá)能力。任務(wù):《軟件設(shè)計(jì)》課題共分A、B兩檔。A檔共5題,題目較簡(jiǎn)樸,第一周完畢;B檔共2題,題目是綜合性的,較復(fù)雜,第二周完畢。三、重要儀器設(shè)備硬件:微型計(jì)算機(jī)軟件:C、C++、VisualC++等四、參考書(shū)【1】朱立華,王立柱.C語(yǔ)言程序設(shè)計(jì).北京:人民郵電出版社,2023【2】朱立華,朱建,俞瓊.面向?qū)ο蟪绦蛟O(shè)計(jì)及C++.北京:人民郵電出版社,2023【3】張引等.C程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì).浙江:浙江大學(xué)出版社,2023
第二章軟件開(kāi)發(fā)平臺(tái)簡(jiǎn)介軟件開(kāi)發(fā)平臺(tái)是一種軟件開(kāi)發(fā)工具,是以通用技術(shù)架構(gòu)(例如MVC)為基礎(chǔ),集成常用建模工具、二次開(kāi)發(fā)包、基礎(chǔ)解決方案等而成。可以大幅縮減編碼率,使開(kāi)發(fā)者有更多的時(shí)間關(guān)注客戶(hù)的需求,在項(xiàng)目的需求、設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、部署、維護(hù)等各個(gè)階段均可提供強(qiáng)大的支持。軟件開(kāi)發(fā)平臺(tái)有兩種平臺(tái)模式,一種是傳統(tǒng)的c/s架構(gòu)模式,一種是現(xiàn)在比較流行的b/s架構(gòu)模式。軟甲件開(kāi)發(fā)平臺(tái)的分類(lèi),一般有三種:一種是SUN公司的SUNONE框架平臺(tái),一種是LAMP,它是Linux、Apache、Mysql、PHP四項(xiàng)技術(shù)的縮寫(xiě),尚有一種是.NETFramework(一般簡(jiǎn)稱(chēng)為NET框架平臺(tái))。LAMP是一組常用來(lái)搭建動(dòng)態(tài)網(wǎng)站或者服務(wù)器的開(kāi)源軟件,自身都是各自獨(dú)立的程序,但是由于常被放在一起使用,擁有了越來(lái)越高的兼容度,共同組成了一個(gè)Web應(yīng)用程序平臺(tái)。隨著開(kāi)源潮流的蓬勃發(fā)展,開(kāi)放了源代碼的LAMP已經(jīng)與J2EE和.NET平臺(tái)形成了三足鼎立之勢(shì),并且該軟件開(kāi)發(fā)的項(xiàng)目在軟件方面的投資成本較低,因此手袋整個(gè)IT界的關(guān)注。從網(wǎng)站的流量上來(lái)說(shuō),70%以上的訪問(wèn)流量都是LAMP來(lái)提供的,LAMP是最強(qiáng)大的網(wǎng)站解決方案。LAMP是基于Linux、Apache、MySQL和PHP的開(kāi)放資源網(wǎng)絡(luò)開(kāi)發(fā)平臺(tái),這個(gè)術(shù)語(yǔ)來(lái)自歐洲,在那里這些程序常用來(lái)作為一種標(biāo)準(zhǔn)開(kāi)發(fā)環(huán)境。名字來(lái)源于每個(gè)程序的第一個(gè)字母。每個(gè)程序在所有權(quán)里都符合開(kāi)發(fā)源代碼標(biāo)準(zhǔn):Linux是開(kāi)放系統(tǒng),Apache是最通用的網(wǎng)絡(luò)服務(wù)器,MySQL是帶有基于網(wǎng)絡(luò)管理附加工具的關(guān)系數(shù)據(jù)庫(kù),PHP是流行的對(duì)象腳本語(yǔ)言,他包含了多數(shù)其他語(yǔ)言的優(yōu)秀特性來(lái)使得它的網(wǎng)絡(luò)開(kāi)發(fā)更加有效。雖然這些開(kāi)放源代碼程序自身并不是專(zhuān)門(mén)設(shè)計(jì)成同此外幾個(gè)程序一起工作的,但由于他們都是影響較大的開(kāi)源軟件,擁有許多共同特性,這就導(dǎo)致了這些組件經(jīng)常在一起使用。在過(guò)去的幾年里,這些軟件的兼容性不斷完善,在一起的應(yīng)用情形變得更加普遍。越來(lái)越多的供應(yīng)商、用戶(hù)和公司投資者日益結(jié)識(shí)到,通過(guò)LAMP單個(gè)組件的開(kāi)源軟件組成的平臺(tái)用來(lái)構(gòu)建以及運(yùn)營(yíng)各種商業(yè)應(yīng)用和協(xié)作構(gòu)建各種網(wǎng)絡(luò)應(yīng)用程序變?yōu)橐环N也許和實(shí)踐,變得更加具有競(jìng)爭(zhēng)力,更加吸引客戶(hù)。LAMP無(wú)論是性能、質(zhì)量還是價(jià)格都將成為公司、政府信息化所必須考慮的平臺(tái)。JAVA平臺(tái)是一種新型的軟件平臺(tái),可用來(lái)在網(wǎng)絡(luò)計(jì)算機(jī)系統(tǒng)開(kāi)發(fā)和運(yùn)營(yíng)高交互性、動(dòng)態(tài)的、安全的Java小程序和應(yīng)用程序。Java平臺(tái)有三種三種版本,這使軟件開(kāi)發(fā)人員、服務(wù)提供商和設(shè)備生產(chǎn)商可以針對(duì)特定的市場(chǎng)進(jìn)行開(kāi)發(fā)。.NET開(kāi)發(fā)平臺(tái)是一種用于建立Web服務(wù)器應(yīng)用程序和Windows桌面應(yīng)用程序的軟件組件,用該平臺(tái)創(chuàng)建的應(yīng)用程序在CommonLanguageRuntime(通用語(yǔ)言運(yùn)營(yíng)環(huán)境)的控制下進(jìn)行。CLR是一個(gè)軟件引擎,用來(lái)加載應(yīng)用程序,確認(rèn)他們可以沒(méi)有錯(cuò)誤的執(zhí)行,進(jìn)行相應(yīng)的安全許可驗(yàn)證,執(zhí)行應(yīng)用程序,然后在運(yùn)營(yíng)結(jié)束后將他們刪除。類(lèi)庫(kù)集提供了使應(yīng)用程序可以讀寫(xiě)XML數(shù)據(jù)、在Internet上通信、訪問(wèn)數(shù)據(jù)庫(kù)等的代碼。所有的類(lèi)庫(kù)都建立在一個(gè)基礎(chǔ)的類(lèi)庫(kù)之上,他提供管理使用最為頻繁的數(shù)據(jù)類(lèi)型(例如數(shù)值或文本字符串)的功能,以及諸如文獻(xiàn)輸入/輸出等底層功能。VisualStudio是微軟公司推出的開(kāi)發(fā)環(huán)境,VisualStudio可以用來(lái)創(chuàng)建Windows平臺(tái)下的Windows應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,也可以用來(lái)創(chuàng)建網(wǎng)絡(luò)服務(wù)、智能設(shè)備應(yīng)用程序和Office插件。VisualStudio是目前最流行的Windows平臺(tái)應(yīng)用程序開(kāi)發(fā)環(huán)境。VisualStudio2023涉及各種增強(qiáng)功能,例如可視化設(shè)計(jì)器(使用.NETFramework3.5加速開(kāi)發(fā))、對(duì)Web開(kāi)發(fā)工具的大量改善,以及可以加速開(kāi)發(fā)和解決所有類(lèi)型數(shù)據(jù)的語(yǔ)言增強(qiáng)功能。VisualStudio2023為開(kāi)發(fā)人員提供了所有相關(guān)的工具和框架支持,幫助創(chuàng)建引人注目的、令人印象深刻并支持AJAX的Web應(yīng)用程序。開(kāi)發(fā)人員可以運(yùn)用這些豐富的客戶(hù)端和服務(wù)器端框架輕松構(gòu)建以客戶(hù)為中心的Web應(yīng)用程序,這些應(yīng)用程序可以集成任何后端數(shù)據(jù)提供程序、在任何當(dāng)前瀏覽器內(nèi)運(yùn)營(yíng)并完全訪問(wèn)ASPNET應(yīng)用程序服務(wù)和Microsoft平臺(tái)。.NET支持多種程序設(shè)計(jì)語(yǔ)言如:C++.NET、VB.NET、ASP.NET、C等,實(shí)現(xiàn)了語(yǔ)言互用性。而Java只能用Java語(yǔ)言。隨著開(kāi)源潮流的蓬勃發(fā)展,開(kāi)放源代碼的LAMP已經(jīng)與J2EE和.NET商業(yè)軟件形成三足鼎立之勢(shì)。
軟件設(shè)計(jì)的內(nèi)容分?jǐn)?shù)記錄軟件(A1)3.1.1設(shè)計(jì)題目及規(guī)定課題內(nèi)容:設(shè)計(jì)一個(gè)分?jǐn)?shù)記錄程序。涉及學(xué)生信息的輸入輸出以及排序。通過(guò)該課題全面熟悉數(shù)組、字符串、文獻(xiàn)的使用,掌握程序設(shè)計(jì)的基本方法及和諧界面的設(shè)計(jì)。課題規(guī)定:(1)輸入某班級(jí)學(xué)生的姓名、分?jǐn)?shù);(2)對(duì)(1)的分?jǐn)?shù)進(jìn)行降冪排列并輸出;(3)具有輸入輸出界面。3.1.2設(shè)計(jì)思想及程序流程框圖設(shè)計(jì)思想為:建立學(xué)生結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體成員涉及存儲(chǔ)姓名的字符型數(shù)組以及存儲(chǔ)分?jǐn)?shù)的整型,使用for循環(huán)語(yǔ)句從輸入處獲取n個(gè)學(xué)生的姓名和成績(jī),成績(jī)輸入的信息存入結(jié)構(gòu)體數(shù)組。再選擇按成績(jī)降冪排名,將結(jié)構(gòu)體數(shù)組從頭進(jìn)行輸出。算法流程框圖為:開(kāi)始開(kāi)始輸入學(xué)生人數(shù)輸入學(xué)生人數(shù)清屏清屏N輸入是否對(duì)的?N輸入是否對(duì)的?輸入學(xué)生姓名name和分?jǐn)?shù)grade輸入學(xué)生姓名name和分?jǐn)?shù)grade自動(dòng)降冪排序自動(dòng)降冪排序輸出排序后的成績(jī)單輸出排序后的成績(jī)單結(jié)束結(jié)束3.1.3邏輯功能程序#include<stdio.h>#include<string.h>#include<stdlib.h>structstudent//存放學(xué)生信息的結(jié)構(gòu)體{ charname[20];//字符型數(shù)組存放姓名 intgrade;//成績(jī)類(lèi)型}temp,std[100];intmain(){interr;charx[5]; intn; inti; intm; charch[20]; system("colorF9");do{system("cls"); printf("\n\n"); printf("****************************************\n"); printf("\t\n");printf("~O(∩_∩)O~歡迎使用本系統(tǒng)~O(∩_∩)O~\n"); printf("\t\n"); printf("****************************************\n"); printf("\n"); printf("請(qǐng)輸入學(xué)生個(gè)數(shù)\n\n"); do{printf("\t\t學(xué)生個(gè)數(shù):"); err=0;i=0; scanf("%s",x);//輸入選項(xiàng) getchar(); while(x[i]!='\0')//依次檢查輸入的字符串是否為數(shù)字 { if(x[i]>'9'||x[i]<'0')err=1; i++; } if(err)printf("\n\t\t請(qǐng)輸入數(shù)字!\n"); }while(err);n=atoi(x);//將字符型數(shù)組x轉(zhuǎn)換成整型nfor(i=0;i<n;i++)//循環(huán)N次輸入學(xué)生信息 { printf("\n\t\t請(qǐng)輸入第%d個(gè)人的信息\n\t\t姓名:",i+1);scanf("%s",std[i].name); getchar();printf("\t\t分?jǐn)?shù):");scanf("%d",&std[i].grade); if(std[i].grade<0||std[i].grade>100) {printf("您的輸入錯(cuò)誤,請(qǐng)重新輸入:\n"); printf("\t\t分?jǐn)?shù):"); scanf("%d",&std[i].grade); } getchar(); } printf("輸入信息:\n"); printf("********************************\n"); printf("姓名成績(jī)\n\n"); for(i=0;i<n;i++) { printf("%s%d\n",std[i].name,std[i].grade); }printf("\n\n***********************************\n"); printf("\n排序后信息:\n"); for(m=0;m<n;m++)for(i=0;i<n-m-1;i++) { if(std[i].grade<std[i+1].grade) { temp=std[i]; std[i]=std[i+1]; std[i+1]=temp; //成績(jī)按降冪排序 } } printf("\n您所輸入的學(xué)生名次如下:\n\n");printf("********************************************\n");printf("名次姓名成績(jī)\n\n"); for(i=0;i<n;i++) {printf("第%d名%s%d\n",i+1,std[i].name,std[i].grade); }printf("\n\n********************************************\n");printf("\t\n"); printf("\t您是否還需要繼續(xù)?(請(qǐng)按Y鍵繼續(xù)/任意鍵退出)");//選擇是否繼續(xù) printf("\t\n"); scanf("%s",ch);printf("\t感謝使用此軟件,歡迎下次光顧~O(∩_∩)O~\n");}while(ch[0]=='Y'||ch[0]=='y');//與開(kāi)頭組成do-while結(jié)構(gòu)循環(huán) printf("\t"); return0;}3.1.4結(jié)果及完善方向?qū)嶒?yàn)結(jié)果:初始界面:輸入學(xué)生信息之后直接排序,界面如圖所示:若所輸入的學(xué)生成績(jī)?cè)谟行Х秶?~100)之外系統(tǒng)將會(huì)提醒輸入錯(cuò)誤,界面如下圖:程序分析:此程序功能上滿(mǎn)足基本的題目規(guī)定,可以做到輸入學(xué)生的姓名和成績(jī),可以按成績(jī)降冪排列并輸出。完善方向:基本功能已實(shí)現(xiàn),對(duì)于實(shí)際的系統(tǒng),接下來(lái)完善的功能的是可以選擇不同的科目進(jìn)行輸入,可以選擇進(jìn)行降冪或者升冪排序,同時(shí)能添加或刪除學(xué)生信息,對(duì)于成績(jī)相同的學(xué)生進(jìn)行并列排名。打字軟件(A2)3.2.1設(shè)計(jì)題目及規(guī)定課題內(nèi)容:設(shè)計(jì)一個(gè)打字程序。涉及隨機(jī)產(chǎn)生字符串,以及字符串比較和記錄。通過(guò)此課題,純熟掌握數(shù)組、格式輸出、字符串解決等。課題規(guī)定:(1)隨機(jī)產(chǎn)生一字符串,每次產(chǎn)生的字符串內(nèi)容、長(zhǎng)度都不同;(2)根據(jù)(1)的結(jié)果,輸入字符串,判斷輸入是否對(duì)的,輸出對(duì)的率;(3)具有輸入輸出界面。3.2.2設(shè)計(jì)思想及程序流程框圖設(shè)計(jì)思想為:運(yùn)用函數(shù)庫(kù)里提供的產(chǎn)生隨機(jī)函數(shù)rand()產(chǎn)生隨機(jī)的字符串長(zhǎng)度,默認(rèn)將長(zhǎng)度定位在1至10個(gè)字符。再產(chǎn)生一串由大小寫(xiě)字母以及數(shù)字組成的隨機(jī)字符串,每產(chǎn)生一個(gè)字符串就按字保存至數(shù)組里。顯示產(chǎn)生的字符串,開(kāi)始打字后,將輸入字符串保存至數(shù)組,打字完畢。再與產(chǎn)生字符進(jìn)行逐個(gè)比較,若相同,則對(duì)的個(gè)數(shù)加1,最終得出對(duì)的率,輸出顯示。算法流程框圖為:開(kāi)始開(kāi)始隨機(jī)產(chǎn)生字符串隨機(jī)產(chǎn)生字符串輸入字符串輸入字符串依次比較,計(jì)算對(duì)的率依次比較,計(jì)算對(duì)的率 輸出對(duì)的率輸出對(duì)的率YY是否繼續(xù)是否繼續(xù)NN結(jié)束結(jié)束3.2.3邏輯功能程序#include<stdio.h>#include<time.h>#include<stdlib.h>#include<iostream>voidmain(void){inti,num,flag,m=0,k,over=1; charstr[100];//產(chǎn)生隨機(jī)數(shù)組 charstr1[100];//輸入隨機(jī)數(shù)組 charc; floatp; system("colorF9"); while(over)//選擇是否繼續(xù) { num=0;//產(chǎn)生字符長(zhǎng)度num初始化為0 m=0;//記錄對(duì)的個(gè)數(shù)變量m初始化為0 system("cls");//清除屏幕 printf("\n\n\n"); printf("***************************************\n"); printf("~O(∩_∩)O~歡迎使用本系統(tǒng)~O(∩_∩)O~\n"); printf("***************************************\n"); printf("*********打字軟件*******\n"); srand(time(NULL));//提取系統(tǒng)時(shí)間,以時(shí)間為seed產(chǎn)生隨機(jī)數(shù) num=1+rand()%10;//產(chǎn)生長(zhǎng)度不大于10的字符串 for(k=0;k<num;k++) {flag=rand()%3;//隨機(jī)產(chǎn)生小于3的數(shù)if(flag==0)str[k]='A'+rand()%26;//產(chǎn)生大寫(xiě)字母elseif(flag==1)str[k]='a'+rand()%26;//產(chǎn)生小寫(xiě)字母 elsestr[k]='0'+rand()%9;//產(chǎn)生數(shù)字 } str[k]='\0'; printf("\n\n\t\t*************************************\n"); printf("隨機(jī)字符串個(gè)數(shù):\t\t%d\n",num); printf("隨機(jī)產(chǎn)生的字符串:\t%s\n",str); printf("\t\t*************************************\n\n"); printf("請(qǐng)輸入上面的字符串:"); scanf("%s",str1);//輸入字符串 getchar(); for(i=0;str1[i]!='\0'&&str[i]!='\0';i++)//進(jìn)行比較 {if(str[i]==str1[i])m++;//m為對(duì)的字符個(gè)數(shù)}p=(float)m/num; printf("\n\n\n*************************************\n\n"); printf("對(duì)的率為:%.1f%%\n",p*100); printf("對(duì)的個(gè)數(shù)為:%d\n",m); printf("\n*************************************\n\n\n"); printf("\n"); printf("是否還需繼續(xù)練習(xí)?(任意鍵繼續(xù)/N鍵退出)\n"); scanf("%c",&c);//輸入選項(xiàng) getchar(); if(c=='N'||c=='n')over=0; }}\3.2.4結(jié)果及完善方向初始界面:即隨機(jī)產(chǎn)生的字符串為輸出頁(yè)面當(dāng)輸入的字符串與隨機(jī)產(chǎn)生的字符串一致時(shí),對(duì)的率為100%,如圖:當(dāng)輸入的字符串與隨機(jī)產(chǎn)生的字符串不一致時(shí),程序?qū)⒂?jì)算對(duì)的率并給出輸入對(duì)的的個(gè)數(shù),如圖:程序結(jié)果分析:此程序能保證每次產(chǎn)生的字符串不同樣,且能對(duì)的地輸出準(zhǔn)確率,基本完畢了打字訓(xùn)練的任務(wù)。考慮到程序的實(shí)用性,可認(rèn)為程序添加計(jì)時(shí)功能、記錄保存功能等,可以使使用者更加靈活地運(yùn)用打字軟件。程序完善方向:對(duì)于這個(gè)程序,局限性的就是可以添加計(jì)時(shí)功能,在打字前,可以詢(xún)問(wèn)用戶(hù)是否進(jìn)行計(jì)時(shí),還可以添加功能,由用戶(hù)自己選擇可從從其他文獻(xiàn)導(dǎo)入一段字符串。文本編輯器(A3)3.3.1設(shè)計(jì)題目及規(guī)定課題內(nèi)容:設(shè)計(jì)一個(gè)簡(jiǎn)樸的文本編輯器,該系統(tǒng)規(guī)定對(duì)一個(gè)文本文獻(xiàn)中的內(nèi)容進(jìn)行各種常規(guī)操作,如:插入、刪除、查找、替換等功能。通過(guò)此課題,純熟掌握文本文獻(xiàn)的操作及用字符數(shù)組或字符指針實(shí)現(xiàn)字符串操作的功能。課題規(guī)定:(1)編輯文本;(2)保存、打開(kāi)指定位置的文本文獻(xiàn);(3)具有輸入輸出界面。3.3.2設(shè)計(jì)思想及程序流程框圖設(shè)計(jì)思想為:在主菜單可選擇建立文本、編輯文本、讀取文本和退出程序。以只寫(xiě)方式編輯文本,若文本不存在則提醒“不能打開(kāi)文獻(xiàn)”,打開(kāi)的文獻(xiàn)則輸入的內(nèi)容以“#”作為結(jié)束標(biāo)記;讀取文獻(xiàn)時(shí),提醒需要讀取的目的文本途徑,將文本里的內(nèi)容輸出。算法流程框圖為:開(kāi)始開(kāi)始輸出功能菜單輸出功能菜單輸入選項(xiàng)chooseN輸入選項(xiàng)chooseNNNNchoose=4choose=3choose=2choose=1Nchoose=4choose=3choose=2choose=1NN輸入途徑輸入途徑輸入途徑輸入途徑輸入途徑輸入途徑文獻(xiàn)不存在文獻(xiàn)不存在文獻(xiàn)不存在文獻(xiàn)不存在文獻(xiàn)不存在文獻(xiàn)不存在YNNYNNYYN建立文本編輯文本YYN建立文本編輯文本輸出文本輸出文本結(jié)束結(jié)束3.3.3邏輯功能程序#include<stdio.h>#include<time.h>#include<stdlib.h>voidmenu1(){printf("\n\n"); printf("*********~O(∩_∩)O~歡迎使用此軟件~O(∩_∩)O~********\n\n"); printf("****文本編輯器****\n\n");printf(">>>>>>>1.建立文獻(xiàn)<<<<<<<\n");printf(">>>>>>>2.查看文獻(xiàn)<<<<<<<\n");printf(">>>>>>>3.編輯文獻(xiàn)<<<<<<<\n");printf(">>>>>>>0.退出<<<<<<<\n\n"); }voidmenu2(){printf("\n\n"); printf("*******編輯文獻(xiàn)功能*******\n"); printf("\n"); printf(">>>>>1.查找<<<<<\n");printf(">>>>>2.刪除<<<<<\n");printf(">>>>>3.插入<<<<<\n");printf(">>>>>4.替換<<<<<\n");printf(">>>>>0.返回上級(jí)菜單<<<<<\n"); }intoutput(){charfilepath[30];//途徑 FILE*fp; charch;printf("\n請(qǐng)輸入文獻(xiàn)途徑(如D:\\name.txt:"); scanf("%s",filepath);//輸入途徑 getchar();//接受Enter字符 fp=fopen(filepath,"r"); printf("\n文獻(xiàn)內(nèi)容如下:\n"); rewind(fp);//返回文獻(xiàn)首,輸出整個(gè)文獻(xiàn)的內(nèi)容do {ch=fgetc(fp);putchar(ch); }while(ch!=EOF); fclose(fp); return0;}intedit(intn){inti=0,x=0,fc=0,fch=0,fs=0,ft=0,a; char*p;intc=0,j;chartest[500]; charm; charch; charhou; charhuan;charfilepath[30];//途徑chart; FILE*fp;switch(n){case1://查找功能printf("\n請(qǐng)輸入文獻(xiàn)途徑:"); scanf("%s",filepath);//輸入途徑 getchar();//接受Enter字符 fp=fopen(filepath,"r"); printf("\n文獻(xiàn)內(nèi)容如下:\n"); rewind(fp);//返回文獻(xiàn)首,輸出整個(gè)文獻(xiàn)的內(nèi)容do {ch=fgetc(fp);putchar(ch);test[i]=ch;i++; }while(ch!=EOF); test[i]='\0';//串尾標(biāo)記符 fclose(fp); p=test; do { a=0,x=0; printf("\n請(qǐng)輸入要查找字符:"); scanf("%c",&t); getchar(); while(x<i) { if(t==*(p+x)) { printf("\n您要查找的字為:%c,它是第%d個(gè)\n",t,x+1); a=1; } x++; } if(a==0) printf("\n對(duì)不起,您要找的字不存在!\n"); printf("\n是否還需要繼續(xù)查找?(任意鍵繼續(xù)/0退出)\n"); scanf("%c",&m); if(m=='0') fc=1; }while(!fc); break; case2://刪除功能 do {inta=0,x=0;printf("\n請(qǐng)輸入文獻(xiàn)途徑(如D:\\name.txt:"); scanf("%s",filepath);//輸入途徑 getchar();//接受Enter字符 fp=fopen(filepath,"r"); printf("\n文獻(xiàn)內(nèi)容如下:\n"); rewind(fp);//返回文獻(xiàn)首,輸出整個(gè)文獻(xiàn)的內(nèi)容do {ch=fgetc(fp);putchar(ch);test[i]=ch;i++; }while(ch!=EOF); test[i]='\0';//串尾標(biāo)記符 fclose(fp); printf("\n請(qǐng)輸入要?jiǎng)h除字符:"); scanf("%c",&t); getchar();while(x<(i-a)) { if(test[x]==t) { a++; for(c=x;c<(i-a);c++) test[c]=test[c+1]; test[i-a-1]='\0'; x--; } x++; fp=fopen(filepath,"w");for(j=0;j<(i-a);j++){ch=test[j];fputc(ch,fp);} fclose(fp); } if(a==0) printf("\n對(duì)不起,此字符不存在,無(wú)法刪除!\n");printf("\n文獻(xiàn)已保存!\n"); getchar();printf("\n是否還需要繼續(xù)刪除?(任意鍵繼續(xù)/0退出)\n"); scanf("%c",&m); if(m=='0') fs=1; }while(!fs);break;case3://插入功能 do { inta=0; i=0;//i的復(fù)位 printf("\n請(qǐng)輸入文獻(xiàn)途徑:"); scanf("%s",filepath);//輸入途徑 getchar();//接受Enter字符 fp=fopen(filepath,"r"); printf("\n文獻(xiàn)內(nèi)容如下:\n"); rewind(fp);//返回文獻(xiàn)首,輸出整個(gè)文獻(xiàn)的內(nèi)容do {ch=fgetc(fp);putchar(ch);test[i]=ch;i++; }while(ch!=EOF); test[i]='\0';//串尾標(biāo)記符 fclose(fp); p=test; printf("\n請(qǐng)輸入要插入到哪個(gè)字符后面:\n"); scanf("%c",&hou); getchar(); while(x<i+a) { if(hou==*(p+x)) a=1; x++; } if(a==0) { printf("\n此字符不存在,輸入有誤!\n"); getchar(); return0; }printf("\n請(qǐng)輸入要插入的字符:\n"); scanf("%c",&t); getchar(); intx=0,b=0; while(x<i+b) { if(hou==*(p+x)) { for(j=i+b-1;j>x;j--) { test[j+1]=test[j]; }test[x+1]=t; test[i+b+1]='\0'; b++; } x++; } fp=fopen(filepath,"w");for(j=0;j<i+1;j++){ch=test[j];fputc(ch,fp);}fclose(fp);printf("\n文獻(xiàn)已保存!\n"); getchar(); printf("\n是否還需要繼續(xù)插入?(任意鍵繼續(xù)/0退出)\n"); scanf("%c",&m); if(m=='0') fch=1; }while(!fch);break;case4://替換功能 do { inta=0;printf("\n請(qǐng)輸入文獻(xiàn)途徑(如D:\\name.txt:"); scanf("%s",filepath);//輸入途徑 getchar();//接受Enter字符 fp=fopen(filepath,"r"); printf("\n文獻(xiàn)內(nèi)容如下:\n"); rewind(fp);//返回文獻(xiàn)首,輸出整個(gè)文獻(xiàn)的內(nèi)容do {ch=fgetc(fp);putchar(ch);test[i]=ch;i++; }while(ch!=EOF); test[i]='\0';//串尾標(biāo)記符 fclose(fp); p=test;printf("\n請(qǐng)輸入文章中要替換的字符:\n"); scanf("%c",&t);getchar();while(x<i) { if(t==*(p+x)) a=1; x++; }if(a==0) { printf("\n對(duì)不起,找不到您要替換的字符!\n"); getchar(); return0; }printf("請(qǐng)輸入您想要替換的字符:\n"); scanf("%c",&huan); getchar(); intx=0; while(x<i) { if(t==*(p+x)) test[x]=huan; x++; } fp=fopen(filepath,"w");for(j=0;j<i+1;j++){ch=test[j];fputc(ch,fp);}fclose(fp);printf("\n文獻(xiàn)已保存!\n"); getchar(); printf("\n是否還需要繼續(xù)替換?(任意鍵繼續(xù)/0退出)\n"); scanf("%c",&m); if(m=='0') ft=1; }while(!ft);break;case0:break;default:printf("\n輸入錯(cuò)誤!");return0; }return0;}voidmain(){system("colorf9");inti=0,quitflag=0,a;//標(biāo)志符intn;charch; charfilepath[30];//途徑 FILE*fp;while(!quitflag)//若為選擇退出則繼續(xù){system("cls");//清屏 menu1();printf("請(qǐng)選擇:"); scanf("%d",&a);//輸入選擇 getchar(); //接受Enter鍵字符 switch(a) { case1://寫(xiě)入文獻(xiàn) printf("請(qǐng)輸入文獻(xiàn)途徑(如D:\\name.txt):"); scanf("%s",filepath);//輸入途徑 getchar();//接受Enter字符 fp=fopen(filepath,"w+"); if(fp==NULL)printf("文獻(xiàn)不存在!\n");else { printf("請(qǐng)輸入內(nèi)容(以#結(jié)束)\n"); while((ch=getchar())!='#')//若不為"#"繼續(xù)輸入 {fputc(ch,fp); }fclose(fp);printf("\n文獻(xiàn)已保存!\n");break; }case2://查看文獻(xiàn)output(); getchar(); break; case3://編輯文獻(xiàn)menu2();printf("請(qǐng)選擇:");scanf("%d",&n); edit(n);break;case0:quitflag=1;break;//若輸入0,則退出標(biāo)志符為1default:printf("輸入錯(cuò)誤!"); }}}3.3.4結(jié)果及完善方向初始界面:建立文本:讀取文本:編輯文本子界面:查找:若輸入多個(gè)字符則以第一個(gè)為準(zhǔn):若輸入不存在的字符,系統(tǒng)將提醒并重新輸入刪除:插入:替換:程序結(jié)果分析:本程序可以根據(jù)指定文獻(xiàn)名進(jìn)行建立文獻(xiàn)、讀取文獻(xiàn)、編輯文獻(xiàn)等操作。程序完善方向:在編輯文本階段,只是以覆蓋的方式進(jìn)行編輯,這樣會(huì)導(dǎo)致文獻(xiàn)以前的內(nèi)容完全丟失。應(yīng)當(dāng)在編輯函數(shù)中增長(zhǎng)“追加編輯”的功能,這樣可以使使用者靈活的通過(guò)“覆蓋方式”“追加方式”進(jìn)行文獻(xiàn)編輯。加密軟件(A4)3.4.1設(shè)計(jì)題目及規(guī)定課題內(nèi)容:設(shè)計(jì)一個(gè)加密程序。涉及明文與密鑰的轉(zhuǎn)換。通過(guò)此課題,純熟掌握數(shù)組、格式輸出、字符串解決、類(lèi)型轉(zhuǎn)換等。課題規(guī)定:(1)輸入任意一段明文M,以及密鑰K;(2)根據(jù)以下公式將其轉(zhuǎn)換為密文C。Ci=mi+K,其中i=0,1,……n-1,K為密鑰;(3)具有輸入輸出界面。3.4.2設(shè)計(jì)思想及程序流程框圖設(shè)計(jì)思想為:輸入明文,保存在字符串中,輸入密鑰,以字符數(shù)組形式獲取,若為數(shù)字字符,則取其數(shù)值,若為其他,則取其ASCII碼值,最后轉(zhuǎn)換成十進(jìn)制數(shù),將每個(gè)字符+密鑰后生成密文字符,然后按順序輸出顯示密文。算法流程框圖為:開(kāi)始開(kāi)始輸入明文和密鑰輸入明文和密鑰密鑰轉(zhuǎn)換密鑰轉(zhuǎn)換加密加密輸出密文輸出密文Y解密Y解密輸出明文輸出明文NN結(jié)束結(jié)束3.4.3邏輯功能程序#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#include<ctype.h>voidmenu();intitn(chars[]);voidJiami(charm[],intk);voidJiemi(charm[],chary[]);intmain(){charm[1000];//輸入的明文chary[1000];//輸入的密鑰chars[10];charm1[1000];charch;intk,choice;inti,n; system("colorfd");do{system("cls");menu(); printf("\n\n\n*****************************************\n");printf("請(qǐng)輸入一段明文:");gets(m);strcpy(m1,m);printf("\n請(qǐng)輸入密鑰(按#號(hào)鍵結(jié)束):");for(i=0;;i++)//密鑰輸入不顯示字符,顯示*{ch=getch();if(ch=='#'){y[i]='\0';break;}putchar('*');y[i]=ch;}k=itn(y);Jiami(m,k);printf("是否需要解密?(y/n):");ch=getchar();getchar();if(ch=='y'||ch=='Y')Jiemi(m1,y);printf("\n繼續(xù)請(qǐng)按1,退出請(qǐng)按0:");scanf("%d",&n);getchar();if(!n)printf("\n\n\t\t\t***********謝謝使用!***********\n\n");}while(n);return0;}voidmenu(){printf("\n\n\n\t****************~O(∩_∩)O~歡迎進(jìn)入此軟件~O(∩_∩)O~******************\n");printf("\t******************************************************************\n");printf("\t>>>>>>>>>>加密系統(tǒng)<<<<<<<<<<\n");printf("\t******************************************************************\n\n");}intitn(chars[]){//輸入字符串轉(zhuǎn)換為數(shù)值inti,k=0,l; l=strlen(s);for(i=0;i<l;i++) { if(isdigit(s[i])) k=k*10+(int)(s[i])-48;//輸入字符為數(shù)字,就轉(zhuǎn)換為數(shù)值 else k=k*10+(int)(s[i]); //輸入為字母,則取其ASCII碼 }if(k>127) k=k%128; returnk;}voidJiami(charm[],intk){//加密inti,l;l=strlen(m); printf("\t\t\t\n\n***********密文如下:**********\n\n");for(i=0;i<l;i++)//其間為可打印字符 { m[i]=m[i]+k; if(m[i]<0) m[i]=m[i]+127; if(m[i]>126) m[i]=m[i]-127; if(m[i]<33) m[i]=m[i]+33;printf("%c",m[i]); }printf("\n\n\n");}voidJiemi(charm[],chary[]){intcount=0,i,f;chars[1000],ch;do{f=0;printf("\n請(qǐng)輸入密鑰(按#號(hào)鍵結(jié)束):");for(i=0;;i++)//密鑰輸入不顯示字符,顯示*{ch=getch();if(ch=='#'){s[i]='\0';break;}putchar('*');s[i]=ch;}if(strcmp(s,y)==0){printf("\n\n解密成功,明文為:");puts(m);}else{printf("密鑰錯(cuò)誤!!\n");f=1;count++;}if(count==3){printf("\n您輸入的3次密鑰均錯(cuò)誤,解密失敗!!\n");break;}}while(f);}3.4.4結(jié)果及完善方向初始界面:加密過(guò)程:解密過(guò)程:密匙輸入錯(cuò)誤時(shí):當(dāng)密匙三次輸入錯(cuò)誤時(shí),解密失敗:F.退出界面程序結(jié)果分析:此程序基本完畢功能,能實(shí)現(xiàn)字符串的加密與解密,具有較和諧的界面,能實(shí)現(xiàn)多次加密與解密。程序完善方向:此程序沒(méi)有將加密和解密模塊分開(kāi),應(yīng)在程序上加以完善。界面可以做得更和諧。進(jìn)制轉(zhuǎn)換器(A5)3.5.1設(shè)計(jì)題目及規(guī)定課題內(nèi)容:設(shè)計(jì)一個(gè)進(jìn)制轉(zhuǎn)換器程序。涉及二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù)互相轉(zhuǎn)換。通過(guò)此課題,純熟掌握字符串、格式輸出、進(jìn)制換算的各種操作。課題規(guī)定:(1)可輸入二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù);(2)將已輸入的數(shù)轉(zhuǎn)換成其余進(jìn)制的數(shù);(3)具有輸入輸出界面。3.5.2設(shè)計(jì)思想及程序流程框圖設(shè)計(jì)思想:(1)輸入“輸入進(jìn)制”base1;(2)輸入一個(gè)base1進(jìn)制的數(shù)n,檢查n數(shù)字的合法性;(3)輸入“輸出進(jìn)制”base2;(4)將n轉(zhuǎn)換成十進(jìn)制數(shù)temp,再將temp轉(zhuǎn)換成base2進(jìn)制數(shù);(5)為防止數(shù)據(jù)溢出,限制數(shù)據(jù)位數(shù)為6位。算法流程框圖為:開(kāi)始開(kāi)始輸出功能菜單輸出功能菜單輸入n輸入nnn12340十六進(jìn)制八進(jìn)制二進(jìn)制十進(jìn)制0十六進(jìn)制八進(jìn)制二進(jìn)制十進(jìn)制N十六進(jìn)制轉(zhuǎn)換二進(jìn)制、十進(jìn)制轉(zhuǎn)換二進(jìn)制、十進(jìn)制轉(zhuǎn)換二進(jìn)制是否繼續(xù)?轉(zhuǎn)成并輸出其他進(jìn)制轉(zhuǎn)成并輸出其他進(jìn)制轉(zhuǎn)成并輸出其他進(jìn)制轉(zhuǎn)成并輸出其他進(jìn)制轉(zhuǎn)換十進(jìn)制二進(jìn)制十進(jìn)制八進(jìn)制NNNN十六進(jìn)制轉(zhuǎn)換二進(jìn)制、十進(jìn)制轉(zhuǎn)換二進(jìn)制、十進(jìn)制轉(zhuǎn)換二進(jìn)制是否繼續(xù)?轉(zhuǎn)成并輸出其他進(jìn)制轉(zhuǎn)成并輸出其他進(jìn)制轉(zhuǎn)成并輸出其他進(jìn)制轉(zhuǎn)成并輸出其他進(jìn)制轉(zhuǎn)換十進(jìn)制二進(jìn)制十進(jìn)制八進(jìn)制結(jié)束YYYY結(jié)束YYYYYYYYYN3.5.3邏輯功能程序#include"stdio.h"#include<iostream>voidbishow(intm);voidmain(){ charx,w; charc[10]; inti=0,err=0,quitflag=0; intnum=0; system("colorfd");do{ system("cls"); printf("\n\n\n"); printf("\t******~O(∩_∩)O~歡迎使用此軟件~O(∩_∩)O~*****\n\n"); printf("\t*********************************************\n"); printf("\t>>>>>>數(shù)制轉(zhuǎn)換系統(tǒng)<<<<<<<\n"); printf("\t*********************************************\n"); printf("\t\n"); printf("\t***************************************************\n"); printf("\t>>>>>>1二進(jìn)制<<<<<<\n"); printf("\t>>>>>>2八進(jìn)制<<<<<<\n"); printf("\t>>>>>>3十進(jìn)制<<<<<<\n"); printf("\t>>>>>>4十六進(jìn)制<<<<<<\n"); printf("\t>>>>>>0退出<<<<<<\n"); printf("\t***************************************************\n"); printf("\n\t請(qǐng)選擇:"); do{ err=0; scanf("%c",&x);//輸入選項(xiàng) getchar(); if(x>'4'||x<'0')//若輸入非法,則重新輸入 { err=1; printf("\n輸入錯(cuò)誤,請(qǐng)重新輸入\n"); } }while(err); switch(x) { case'1': //輸入二進(jìn)制 do{ err=0;i=0;num=0; printf("\n\t請(qǐng)輸入二進(jìn)制數(shù):"); scanf("%s",c); getchar(); while(c[i]!='\0')//'\0'字符結(jié)尾 { if(c[i]!='1'&&c[i]!='0')err=1;//若輸入數(shù)字不為1或0則輸入錯(cuò)誤 i++; } if(err)printf("\n\t輸入數(shù)值錯(cuò)誤,不是二進(jìn)制數(shù)!\n"); }while(err);//err為1反復(fù)上面,否則繼續(xù) i=0; while(c[i]!='\0')//二進(jìn)制轉(zhuǎn)換為十進(jìn)制 { num=num*2; if(c[i]=='1')num=num+1; i++; } printf("\n\t二進(jìn)制數(shù)%s轉(zhuǎn)換為其他進(jìn)制:\n\n",c); printf("\t********************************************\n"); printf("\t八進(jìn)制:%o\n",num);//輸出八進(jìn)制 printf("\t十進(jìn)制:%d\n",num);//輸出十進(jìn)制 printf("\t十六進(jìn)制:%x\n",num);//輸出十六進(jìn)制 printf("\t********************************************\n\n"); printf("\t是否需要繼續(xù)?(任意鍵繼續(xù)N鍵退出)"); scanf("%c",&w); getchar(); if(w=='N'||w=='n')quitflag=1; break; case'2'://輸入八進(jìn)制 do{ err=0;i=0;num=0; printf("\n\t請(qǐng)輸入八進(jìn)制數(shù):"); scanf("%s",c); getchar(); while(c[i]!='\0') { if(c[i]>'7'||c[i]<'0')err=1;//若輸入數(shù)據(jù)不在0~7間則輸入錯(cuò)誤 i++; } if(err)printf("\n輸入數(shù)值錯(cuò)誤,不是八進(jìn)制數(shù)!\n"); }while(err); i=0; while(c[i]!='\0') { num=num*8; num=num+c[i]-48; i++; } printf("\n\t八進(jìn)制數(shù)%s轉(zhuǎn)換為其他進(jìn)制:\n\n",c); printf("\t********************************************\n"); bishow(num); printf("\t十進(jìn)制:%d\n",num); printf("\t十六進(jìn)制:%x\n",num); printf("\t********************************************\n\n"); printf("\t是否繼續(xù)?(任意鍵繼續(xù)N鍵退出)");scanf("%c",&w); getchar(); if(w=='N'||w=='n')quitflag=1; break; case'3'://輸入十進(jìn)制 do{ err=0;i=0;num=0; printf("\n\t請(qǐng)輸入十進(jìn)制數(shù):"); scanf("%s",c); getchar(); while(c[i]!='\0') { if(c[i]>'9'||c[i]<'0')err=1;//若輸入數(shù)據(jù)為非數(shù)字符號(hào),則錯(cuò)誤 i++; } if(err)printf("\n輸入數(shù)值錯(cuò)誤,不是十進(jìn)制數(shù)!\n"); }while(err); i=0; while(c[i]!='\0') { num=num*10; num=num+c[i]-48; i++; } printf("\n\t十進(jìn)制數(shù)%s轉(zhuǎn)換為其他進(jìn)制:\n\n",c); printf("\t********************************************\n");bishow(num); printf("\t八進(jìn)制:%o\n",num); printf("\t十六進(jìn)制:%x\n",num); printf("\t********************************************\n\n"); printf("\t是否需要繼續(xù)?(任意鍵繼續(xù)N鍵退出)"); scanf("%c",&w);getchar(); if(w=='N'||w=='n')quitflag=1; break; case'4'://輸入十六進(jìn)制 do{ err=0;i=0;num=0; printf("\n\t請(qǐng)輸入十六進(jìn)制數(shù):"); scanf("%s",c); getchar(); while(c[i]!='\0') { if(c[i]<='9'&&c[i]>='0')err=0;//若輸入數(shù)據(jù)為非數(shù)字符號(hào),則錯(cuò)誤 elseif(c[i]>='a'&&c[i]<='f')err=0; elseif(c[i]>='A'&&c[i]<='F')err=0; elseerr=1; i++; } if(err)printf("\n輸入數(shù)值錯(cuò)誤,不是十六進(jìn)制數(shù)!\n"); }while(err); i=0; while(c[i]!='\0') { num=num*16; if('0'<=c[i]&&c[i]<='9')num=num+c[i]-48; if('a'<=c[i]&&c[i]<='f')num=num+c[i]-97+10; if('A'<=c[i]&&c[i]<='F')num=num+c[i]-65+10; i++; } printf("\n\t十六進(jìn)制數(shù)%s轉(zhuǎn)換為其他進(jìn)制:\n\n",c); printf("\t********************************************\n");bishow(num); printf("\t八進(jìn)制:%o\n",num); printf("\t十進(jìn)制:%d\n",num); printf("\t********************************************\n\n"); printf("\t是否需要繼續(xù)?(任意鍵繼續(xù)N鍵退出)"); scanf("%c",&w);getchar(); if(w=='N'||w=='n')quitflag=1; break; case'0': quitflag=1; break; } }while(!quitflag); }voidbishow(intm)//轉(zhuǎn)換成二進(jìn)制數(shù){ intb[20]; inti=0;while(m){ b[i]=m%2; m=m/2; i++;}i--; printf("\t二進(jìn)制:"); if(m==0)printf("%d",0);while(i>=0){ printf("%d",b[i--]);//輸出二進(jìn)制數(shù)} printf("\n");}3.5.4結(jié)果及完善方向初始界面:當(dāng)輸入為二進(jìn)制時(shí):當(dāng)輸入為八進(jìn)制時(shí):當(dāng)輸入為十進(jìn)制時(shí):當(dāng)輸入為十六進(jìn)制時(shí):輸入錯(cuò)誤時(shí),程序?qū)⑻嵝演斎脲e(cuò)誤并回到輸入界面,如圖所示:程序結(jié)果分析:本程序基本實(shí)現(xiàn)功能,且能實(shí)現(xiàn)16以下的任意進(jìn)制間的互相轉(zhuǎn)換,在輸入非法進(jìn)制數(shù)時(shí)能報(bào)錯(cuò)提醒,并可以多次轉(zhuǎn)換。程序完善方向:本程序只能實(shí)現(xiàn)整數(shù)進(jìn)制之間的轉(zhuǎn)換,應(yīng)對(duì)代碼進(jìn)行進(jìn)一步優(yōu)化,以實(shí)現(xiàn)小數(shù)進(jìn)制間的互相轉(zhuǎn)換;數(shù)字的大小受到一定的限制,可以嘗試用數(shù)組解決大數(shù)間進(jìn)制轉(zhuǎn)換問(wèn)題;題輸出界面可以進(jìn)一步美化。學(xué)生成績(jī)核算系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(B1)3.6.1設(shè)計(jì)題目及規(guī)定課題內(nèi)容:設(shè)計(jì)一個(gè)學(xué)生成績(jī)核算系統(tǒng)。能實(shí)現(xiàn)從文獻(xiàn)中讀取學(xué)生成績(jī)資料,并提供成績(jī)查詢(xún)記錄服務(wù)。通過(guò)此課題,純熟掌握文獻(xiàn)、數(shù)組、結(jié)構(gòu)體的各種操作以及和諧界面的設(shè)計(jì)。課題規(guī)定:(1)按班級(jí)按課程從文獻(xiàn)中讀入相應(yīng)的平時(shí)成績(jī)、期中考試成績(jī)和期末考試成績(jī)。(2)三個(gè)成績(jī)對(duì)總評(píng)成績(jī)的比例被定義為常數(shù),各占總成績(jī)的30%、30%和40%。(3)計(jì)算每位學(xué)生的總評(píng)成績(jī)。(4)計(jì)算該班級(jí)本課程的總平均成績(jī)。(5)計(jì)算處在優(yōu)、良、中、及格、不及格的學(xué)生人數(shù)以及占總?cè)藬?shù)的比例。其中100-90為優(yōu),89-80為良,79-70為中,69-60為及格,60分以下為不及格。(6)按規(guī)定輸出成績(jī)?cè)趦?yōu)、良、中、及格、不及格各區(qū)間的學(xué)生學(xué)號(hào)、成績(jī)。3.6.2設(shè)計(jì)思想及程序流程框圖設(shè)計(jì)思想:先顯示一個(gè)功能菜單供用戶(hù)選擇所需功能。菜單功能分別為:1、顯示學(xué)生成績(jī);2、顯示學(xué)生的總評(píng)成績(jī)及該班級(jí)本課程的總平均成績(jī);3、顯示學(xué)生的成績(jī)等級(jí)及占總?cè)藬?shù)的比例;4、顯示成績(jī)?cè)诟鞯燃?jí)區(qū)間的學(xué)生學(xué)號(hào)、成績(jī);5、退出程序。程序先判斷讀取的文獻(xiàn)是否存在,不存在則顯示打開(kāi)文本錯(cuò)誤;存在則讀取文獻(xiàn)中的學(xué)生的信息,然后設(shè)計(jì)程序?qū)⒚课粚W(xué)生的總評(píng)成績(jī)以及該班級(jí)本課程的總平均成績(jī)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年中衛(wèi)客運(yùn)資格證仿真考試題
- 2024年客運(yùn)資格考試考題及答案
- 2024年常德辦理客運(yùn)從業(yè)資格證版試題
- 實(shí)+用法律基礎(chǔ)-形成性考核任務(wù)三-國(guó)開(kāi)(ZJ)-參考資料
- 煙草公司宿舍電費(fèi)管理方法
- 林業(yè)資源樣本庫(kù)建設(shè)
- 國(guó)際藝術(shù)畫(huà)廊租賃協(xié)議
- 酒店門(mén)窗裝飾工程協(xié)議
- 藥品生產(chǎn)許可證申辦指南
- 客戶(hù)服務(wù)滿(mǎn)意度評(píng)價(jià)
- 醫(yī)院感染管理質(zhì)量持續(xù)改進(jìn)反饋表
- 臺(tái)背填土現(xiàn)場(chǎng)質(zhì)量檢驗(yàn)報(bào)告單
- 旅游行政管理第二章旅游行政管理體制課件
- 學(xué)生崗位實(shí)習(xí)家長(zhǎng)(或法定監(jiān)護(hù)人)知情同意書(shū)
- 衛(wèi)生院關(guān)于召開(kāi)基本公共衛(wèi)生服務(wù)項(xiàng)目培訓(xùn)會(huì)的通知
- JJF(電子)0036-2019 示波器電流探頭校準(zhǔn)規(guī)范-(高清現(xiàn)行)
- 飛機(jī)試飛運(yùn)行管理+調(diào)機(jī)飛行運(yùn)行管理規(guī)定
- 蓄水池防水施工方案
- 管理咨詢(xún)公司關(guān)鍵績(jī)效考核指標(biāo)
- 隧道的襯砌計(jì)算(85頁(yè)清楚明了)
- 人教版八年級(jí)(初二)數(shù)學(xué)上冊(cè)全冊(cè)課件PPT
評(píng)論
0/150
提交評(píng)論