欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      java教學(xué)計(jì)劃編制的全部代碼

      時(shí)間:2019-05-12 17:36:35下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《java教學(xué)計(jì)劃編制的全部代碼》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《java教學(xué)計(jì)劃編制的全部代碼》。

      第一篇:java教學(xué)計(jì)劃編制的全部代碼

      package curriculumProject;

      //非連通圖的深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷

      import linearList.Queue.SeqQueue;

      //順序循環(huán)隊(duì)列類(lèi)

      public abstract class AbstractGraph implements GGraph//抽象圖類(lèi)

      {

      public abstract int vertexCount();

      //返回頂點(diǎn)數(shù),方法由子類(lèi)實(shí)現(xiàn)

      public abstract E get(int i);

      //返回頂點(diǎn)vi的數(shù)據(jù)域

      public abstract int getFirstNeighbor(int i);

      //返回頂點(diǎn)vi的第一個(gè)鄰接頂點(diǎn)的序號(hào)

      public abstract int getNextNeighbor(int i, int j);

      //返回vi在vj后的下一個(gè)鄰接頂點(diǎn)的序號(hào)

      //

      public abstract AbstractGraph prim();

      public void DFSTraverse(int v)

      //從頂點(diǎn)v出發(fā)對(duì)非連通圖的一次深度優(yōu)先搜索遍歷

      {

      boolean[] visited = new boolean[vertexCount()];

      //訪(fǎng)問(wèn)標(biāo)記數(shù)組,元素初值為false,表示未被訪(fǎng)問(wèn)

      int i=v;

      do

      {

      if(!visited[i])

      點(diǎn)vi未被訪(fǎng)問(wèn)

      {

      System.out.print(“{ ”);

      depthfs(i, visited);

      點(diǎn)vi出發(fā)的一次深度優(yōu)先搜索遍歷

      System.out.print(“} ”);

      }

      i =(i+1)% vertexCount();

      他連通分量中尋找未被訪(fǎng)問(wèn)頂點(diǎn)

      } while(i!=v);

      System.out.println();

      }

      private void depthfs(int v, boolean[] visited)

      //若頂

      //從頂

      //在其//從頂點(diǎn)v開(kāi)

      始發(fā)的一次深度優(yōu)先搜索遍歷

      {

      //遍歷一個(gè)連通分量

      System.out.print(this.get(v)+“ ”);

      //訪(fǎng)問(wèn)該頂點(diǎn)

      visited[v] = true;

      已訪(fǎng)問(wèn)標(biāo)記

      int w = getFirstNeighbor(v);

      第一個(gè)鄰接頂點(diǎn)

      while(w!=-1)

      若存在鄰接頂點(diǎn)

      {

      if(!visited[w])

      鄰接頂點(diǎn)w未被訪(fǎng)問(wèn)

      depthfs(w, visited);

      w出發(fā)的深度優(yōu)先搜索遍歷,遞歸調(diào)用

      w = getNextNeighbor(v, w);

      回v在w后的下一個(gè)鄰接頂點(diǎn)的序號(hào)

      }

      }

      //置

      //獲得

      //

      //若

      //從

      //返

      public void BFSTraverse(int v)

      //從頂點(diǎn)v出發(fā)對(duì)非連通圖進(jìn)行一次廣度優(yōu)先搜索遍歷

      {

      boolean[] visited = new boolean[vertexCount()];

      //訪(fǎng)問(wèn)標(biāo)記數(shù)組

      int i=v;

      do

      {

      if(!visited[i])

      點(diǎn)vi未被訪(fǎng)問(wèn)

      {

      System.out.print(“{ ”);

      breadthfs(i, visited);

      點(diǎn)vi出發(fā)的廣度優(yōu)先搜索遍歷

      System.out.print(“} ”);

      }

      i =(i+1)% vertexCount();

      他連通分量中尋找未被訪(fǎng)問(wèn)頂點(diǎn)

      } while(i!=v);

      System.out.println();

      }

      //若頂//從頂//在其

      private void breadthfs(int v, boolean[] visited)

      //從頂點(diǎn)v出發(fā)的廣度優(yōu)先搜索遍歷

      {

      //遍歷一個(gè)連通分量

      System.out.print(this.get(v)+“ ”);

      visited[v] = true;

      SeqQueue

      que

      = SeqQueue(vertexCount());

      //創(chuàng)建順序隊(duì)列

      que.enqueue(new Integer(v));

      問(wèn)過(guò)的頂點(diǎn)v的序號(hào)入隊(duì)

      while(!que.isEmpty())

      隊(duì)列不空時(shí)循環(huán)

      {

      v = que.dequeue().intValue();

      int w = getFirstNeighbor(v);

      頂點(diǎn)v的第一個(gè)鄰接頂點(diǎn)序號(hào)

      while(w!=-1)

      當(dāng)鄰接頂點(diǎn)存在時(shí)循環(huán)

      {

      if(!visited[w])

      該頂點(diǎn)未訪(fǎng)問(wèn)過(guò)

      new

      //訪(fǎng)

      //當(dāng)//出隊(duì) //獲得

      //

      //若

      {

      System.out.print(this.get(w)+“ ”);

      //訪(fǎng)問(wèn)頂點(diǎn)

      visited[w] = true;

      que.enqueue(new Integer(w));

      //訪(fǎng)問(wèn)過(guò)的頂點(diǎn)w的序號(hào)入隊(duì)

      }

      w = getNextNeighbor(v, w);

      回v在w后的下一個(gè)鄰接頂點(diǎn)的序號(hào)

      }

      }

      }

      }

      //返 package curriculumProject;

      //圖的鄰接表

      import dataStructure.linearList.SeqList;

      //順序表類(lèi) import linearList.linkedList.SortedHSLinkedList;

      //排序的帶頭結(jié)點(diǎn)的單鏈表類(lèi)

      //public class AdjListGraph implements GGraph

      //鄰接表表示的圖類(lèi)

      public class AdjListGraph extends AbstractGraph implements GGraph //鄰接表表示的圖類(lèi)

      {

      protected SeqList> vertexlist;

      //頂點(diǎn)表

      public AdjListGraph(int n)

      //構(gòu)造方法,n指定頂點(diǎn)數(shù)

      {

      this.vertexlist = new SeqList>(n);

      }

      public AdjListGraph(E[] vertices, Edge[] edges)

      //以頂點(diǎn)集合和邊集合構(gòu)造一個(gè)圖

      {

      this(vertices.length);

      for(int i=0;i

      insertVertex(vertices[i]);

      //插入一個(gè)頂點(diǎn)

      for(int j=0;j

      insertEdge(edges[j]);

      }

      public int vertexCount()

      數(shù)

      {

      return this.vertexlist.length();

      }

      public E get(int i)

      vi的數(shù)據(jù)元素

      {

      return this.vertexlist.get(i).data;

      }

      //插入一條

      //返回頂點(diǎn)

      //返回頂點(diǎn)

      public boolean insertVertex(E vertex)

      //插入一個(gè)頂點(diǎn),若插入成功,返回true

      {

      return this.vertexlist.add(new Vertex(vertex));//在順序表最后插入一個(gè)元素

      }

      public boolean insertEdge(int i, int j)

      //插入一條權(quán)值為weight的邊〈vi,vj〉

      {

      if(i>=0 && i=0 && j

      {

      //SortedHSLinkedList SortedHSLinkedList();

      SortedHSLinkedList slink = this.vertexlist.get(i).adjlink;//

      slink = this.vertexlist.get(i).adjlink;//

      System.out.println(this.vertexlist.get(i));

      return slink.add(new Edge(i,j));//在第i條單鏈表最后增加邊結(jié)點(diǎn)

      }

      slink

      =

      new

      return false;

      }

      public boolean insertEdge(Edge edge)

      //插入一條邊

      {

      if(edge!=null)

      return insertEdge(edge.start, edge.dest);

      return false;

      }

      public String toString()

      //獲得圖的頂點(diǎn)集合和鄰接表

      {

      String str= “頂點(diǎn)集合:”+vertexlist.toString()+“n”;

      str += “出邊表:n ”;

      //+edgeCount+“條邊 n”;

      for(int i=0;i

      str += this.vertexlist.get(i).adjlink.toString()+“n”;

      //遍歷第i條單鏈表

      return str;

      }

      public boolean removeEdge(int i, int j)

      //刪除邊〈vi,vj〉,i、j指定頂點(diǎn)序號(hào)

      {

      if(i>=0 && i=0 && j

      {

      SortedHSLinkedList slink = this.vertexlist.get(i).adjlink;//獲得第i條邊單鏈表

      return slink.remove(new Edge(i,j));

      }

      return false;

      }

      public boolean removeVertex(int v)

      //刪除序號(hào)為v的頂點(diǎn)及其關(guān)聯(lián)的邊

      {

      //若刪除成功,返回true

      int n=vertexCount();

      //刪除之前的頂點(diǎn)數(shù)

      if(v>=0 && v

      {

      SortedHSLinkedList

      slink

      = this.vertexlist.get(v).adjlink;//獲得欲刪除的第v條邊單鏈表

      int i=0;

      Edge edge = slink.get(i);

      while(edge!=null)

      {

      this.removeEdge(edge.dest, edge.start);

      //刪除對(duì)稱(chēng)的邊

      i++;

      edge = slink.get(i);

      }

      this.vertexlist.remove(v);

      //刪除順序表的第i個(gè)元素,頂點(diǎn)數(shù)已減一

      for(i=0;i

      //未刪除的邊結(jié)點(diǎn)更改某些頂點(diǎn)序號(hào)

      {

      slink = this.vertexlist.get(i).adjlink;

      //獲得第i條邊單鏈表

      int j=0;

      edge = slink.get(j);

      while(edge!=null)

      {

      if(edge.start>v)

      edge.start--;

      //頂點(diǎn)序號(hào)減一

      if(edge.dest>v)

      edge.dest--;

      j++;

      edge = slink.get(j);

      }

      }

      return true;

      }

      return false;

      }

      public int getFirstNeighbor(int v)

      第一個(gè)鄰接頂點(diǎn)的序號(hào)

      {

      存在第一個(gè)鄰接頂點(diǎn),則返回-1

      return getNextNeighbor(v,-1);

      }

      //返回頂點(diǎn)v的 //若不

      public int getNextNeighbor(int v, int w)

      //返回v在w后的下一個(gè)鄰接頂點(diǎn)的序號(hào)

      {

      //若不存在下一個(gè)鄰接頂點(diǎn),則返回-1

      if(v>=0 && v=-1 && w

      {

      SortedHSLinkedList

      slink

      = this.vertexlist.get(v).adjlink;//獲得第v條邊單鏈表

      Edge edge = slink.get(0);

      //返回單鏈表的第一個(gè)結(jié)點(diǎn)表示的邊

      int i=0;

      while(edge!=null)

      //尋找下一個(gè)鄰接頂點(diǎn)

      {

      if(edge.dest>w)

      return edge.dest;

      //返回下一個(gè)鄰接頂點(diǎn)的序號(hào)

      i++;

      edge = slink.get(i);

      //返回單鏈表的第一個(gè)結(jié)點(diǎn)表示的邊

      }

      }

      return-1;

      } }

      package curriculumProject;

      //帶權(quán)圖的邊類(lèi)

      public class Edge implements Comparable {

      //帶權(quán)值的邊類(lèi)

      public int start;

      //邊的起點(diǎn)序號(hào)

      public int dest;

      //邊的終點(diǎn)序號(hào)

      //public int weight;

      //邊的權(quán)值

      public Edge(int start, int dest)

      {

      this.start = start;

      this.dest = dest;

      //this.weight = weight;

      }

      public String toString()

      {

      return “(”+start+“,”+dest+“)”;

      }

      public int compareTo(Edge e)

      較大小的規(guī)則

      {

      if(this.start!=e.start)

      return this.starte.dest;

      }

      }

      package curriculumProject;//圖接口

      public interface GGraph

      //圖接口

      {

      int vertexCount();

      //返回頂點(diǎn)數(shù)

      E get(int i);

      //返回頂點(diǎn)vi的數(shù)據(jù)元素

      boolean insertVertex(E vertex);頂點(diǎn)

      boolean insertEdge(int i, int j);

      〈vi,vj〉

      boolean removeVertex(int v);

      為v的頂點(diǎn)及其關(guān)聯(lián)的邊

      boolean removeEdge(int i, int j);

      int getFirstNeighbor(int v);

      的第一個(gè)鄰接頂點(diǎn)的序號(hào)

      int getNextNeighbor(int v, int w);后的下一個(gè)鄰接頂點(diǎn)的序號(hào)

      }

      //插入一個(gè)//插入一條權(quán)值為weight的邊

      //刪除序號(hào)

      //刪除邊〈vi,vj〉

      //返回頂點(diǎn)v

      //返回v在w

      package curriculumProject;

      import java.util.*;

      import linearList.Queue.SeqQueue;;

      public class Graph_Main2 {

      /** * @param args */ int bian;// 定義邊數(shù)

      HashSet array = new HashSet();// 定義一個(gè)集合保存頂點(diǎn)的值 ArrayList list2 = new ArrayList();// 保存優(yōu)先關(guān)系頂點(diǎn)的值 ArrayList listrudu = new ArrayList();// 保存頂點(diǎn)的入度 ArrayList result = new ArrayList();// 保存拓?fù)渑判虻慕Y(jié)果 ArrayList credit2 = new ArrayList();// 保存學(xué)分信息 ArrayList credit3 = new ArrayList();// 保存學(xué)分信息 int[][] relation;// 保存輸入優(yōu)先關(guān)系的所有值 int[][] c_relation;Scanner scanner = new Scanner(System.in);

      public void input(){

      System.out.println(“請(qǐng)輸入課程總數(shù),按回車(chē)確認(rèn)”);Scanner reader=new Scanner(System.in);int Input=reader.nextInt();System.out.println(“請(qǐng)依次輸入各個(gè)課程的學(xué)分:”);int[] credit = new int[Input];for(int i = 0;i < Input;i++){

      }

      String[] vertices = new String[Input];for(int n = 0;n < Input;n++){

      }

      Scanner reader2=new Scanner(System.in);System.out.println(“請(qǐng)輸入課程之間的關(guān)系總和,即有多少條if(n < 9){ vertices[n] = ”C0“ +(n + 1);credit[i] = reader.nextInt();credit2.add(credit[i]);} else { } vertices[n] = ”C“ +(n + 1);邊?,按回車(chē)確認(rèn)”);

      bian = reader2.nextInt();relation = new int[bian][2];List list = new ArrayList();System.out.println(“比如:C01是C02的先修課,則輸入 01 02”);for(int i = 0;i < bian;i++){

      }

      Edge[] edges = list.toArray(new Edge[0]);

      AdjListGraph

      graph

      =

      new System.out.print(“請(qǐng)輸入第” +(i + 1)+ “條邊的優(yōu)先關(guān)系”);for(int j = 0;j < 2;j++){ } list.add(new Edge(relation[i][0],relation[i][1]));relation[i][j] = reader.nextInt();AdjListGraph(vertices,edges);

      System.out.println(“帶權(quán)有向圖,”+graph.toString());System.out.println(“深度優(yōu)先搜索遍歷”);for(int i=0;i

      System.out.println(“廣度優(yōu)先搜索遍歷”);

      for(int i=0;i

      graph.BFSTraverse(i);

      } }

      public void sort(){

      for(int i = 0;i < bian;i++){

      for(int j = 0;j < 2;j++){

      array.add(relation[i][j]);

      } }

      Iterator iter = array.iterator();

      while(iter.hasNext()){

      Object s = iter.next();list2.add(s);// 將各頂點(diǎn)的值保存在list里,方便后面查找入度時(shí)使用

      }

      int count = 0;// 定義一個(gè)記入度的計(jì)數(shù)器

      for(int i = 0;i < list2.size();i++){

      } for(int j = 0;j < bian;j++){

      } listrudu.add(list2.get(i));listrudu.add(count);count = 0;if(list2.get(i).equals(relation[j][1])){ } count++;System.out.println();boolean flag = true;while(flag){

      int check = 0;// 檢查有沒(méi)有入度為0 for(int i = 0;i < listrudu.size();i = i + 2){

      if(listrudu.get((i + 1)).equals(0)){

      result.add(listrudu.get(i));

      for(int j=0;j

      credit3.add(credit2.get(j));// // //

      //credit3.add(credit2.get(i));for(int j = 0;j < list2.size();j++){

      if(listrudu.get(i).equals(list2.get(j))){

      for(int j2 = 0;j2 < bian;j2++){

      if(list2.get(j).equals(relation[j2][0])){

      relation[j2][1] =-9999;// 如果這個(gè)前驅(qū)是要被刪除的話(huà),那么把他的后繼改值

      “);

      } flag = false;

      } if(check == listrudu.size()/2){ System.out.println(”課程關(guān)系輸入錯(cuò)誤,有環(huán),無(wú)法排序

      }

      } }

      list2.remove(j);} } else { } check++;

      int count1 = 0;// 定義一個(gè)記入度的計(jì)數(shù)器 for(int i = 0;i < list2.size();i++){

      } if(list2.size()== 0){

      } System.out.println(“存在拓?fù)渑判颉?;flag = false;for(int j = 0;j < bian;j++){

      } listrudu.add(list2.get(i));listrudu.add(count1);count1 = 0;if(list2.get(i).equals(relation[j][1])){ }

      count1++;}// while循環(huán)結(jié)束

      }

      public void print(){ /* * 這個(gè)for循環(huán)的作用是:因?yàn)槲疑厦孀龅氖歉鶕?jù)listrudu來(lái)找的,* 所以它每進(jìn)行一次循環(huán)就把前面的入度為0的值再保存了一遍,其實(shí)最后的結(jié)果是最后一次循環(huán)所得的值,打印的時(shí)候要把前面重復(fù)的去掉

      */ for(int i = result.size()-1;i >= 0;i--){

      } for(int i = 0;i < result.size();i++){ for(int j = 0;j < i;j++){

      } if(result.get(j).equals(result.get(i))){ } result.remove(j);

      System.out.print(result.get(i)+ “-->”);

      }

      System.out.println();System.out.println();System.out.println(“請(qǐng)輸入你的總學(xué)期數(shù)”);Scanner reader3=new Scanner(System.in);

      為:“);

      int term = reader3.nextInt();System.out.println(”請(qǐng)輸入學(xué)期學(xué)分上線(xiàn)“);int sum_credit = reader3.nextInt();System.out.println(”如果要使課程均勻分布在各個(gè)學(xué)期,則int sum=0;int sum2=0;for(int i = 0;i < result.size();i++){ for(int j=0;j

      Object res2 = result.get(j);

      Integer r2 = Integer.parseInt(res2.toString());

      Object obj = credit2.get(r2-1);Integer a = Integer.parseInt(obj.toString());sum += a;j=j+2;break;} double value =(double)credit2.size()/(double)term;int value2=0;if(value<=1.0)

      value=1.0;

      if((int)value==value)value2=(int)value;else

      value2 =(int)value+1;if((i+1)%(value2)==0){ System.out.print(result.get(i)+ “-->”);System.out.println();}else{

      if(sum<=sum_credit){

      for(int j3=0;j3

      Integer r = Integer.parseInt(res.toString());Object obj2 = credit2.get(r-1);

      Integer a2 = Integer.parseInt(obj2.toString());sum += a2;break;}

      if(sum<=sum_credit)

      System.out.print(result.get(i)+ “-->”);//System.out.print(result.get(i)+ “-->”);else{

      sum = 0;

      “);

      }

      }

      }

      System.out.print(result.get(i)+ ”-->“);}else{

      }

      System.out.println();sum = 0;

      System.out.print(result.get(i)+ ”-->“);System.out.println();System.out.println();System.out.println(”如果要使課程分布在前幾個(gè)學(xué)期,則為:

      int j_=0;int j=0;

      for(int i = 0;i < result.size();i++){

      //for(int j=0;j

      Object res4 = result.get(j);Integer r4 = Integer.parseInt(res4.toString());

      //

      //

      Object obj4 = credit2.get(r4-1);Integer a4 = Integer.parseInt(obj4.toString());sum += a4;j=j+1;//break;//} if(sum<=sum_credit){ //for(int j=0;j

      System.out.print(result.get(i)+ “-->”);if(sum<=sum_credit&&)

      System.out.print(result.get(i)+ “-->”);else{

      sum = 0;

      System.out.print(result.get(i)+ “-->”);

      }

      } }else{

      }

      if(sum<=sum_credit){

      System.out.print(result.get(i)+ “-->”);System.out.print(result.get(i)+ “-->”);System.out.println();sum = 0;// // // // // // //

      } }else{

      }

      System.out.println();sum = 0;

      System.out.print(result.get(i)+ “-->”);public static void main(String[] args){

      // TODO Auto-generated method stub

      Graph_Main2 s = new Graph_Main2();s.input();

      s.sort();s.print();

      } }

      package curriculumProject;

      import linearList.linkedList.SortedHSLinkedList;單鏈表類(lèi)

      public class Vertex

      //排序的帶頭結(jié)點(diǎn)的//頂點(diǎn)表

      元素 {

      public E data;

      //頂點(diǎn)數(shù)據(jù)域

      public SortedHSLinkedList adjlink;

      //該頂點(diǎn)的邊單鏈表

      public Vertex(E data, SortedHSLinkedList adjlink)

      {

      this.data = data;

      this.adjlink = adjlink;

      }

      public Vertex(E data)

      {

      this(data, new SortedHSLinkedList());

      //構(gòu)造結(jié)點(diǎn)時(shí)創(chuàng)建空單鏈表

      }

      public String toString()

      {

      return this.data.toString();

      } }

      第二篇:JAVA代碼注釋規(guī)范

      JAVA代碼注釋規(guī)范

      一、規(guī)范存在的意義

      1.好的注釋規(guī)范可以讓人一眼看明白這是干什么的,特別是對(duì)于我們這種行業(yè);共同合作完成一個(gè)項(xiàng)目需要分工明確,所以也需要有明了的注釋規(guī)范。

      2.正確的應(yīng)用注釋規(guī)范可以增加代碼的可讀性、理解性。3.好的代碼規(guī)范可以提高團(tuán)隊(duì)的開(kāi)發(fā)效率,從而節(jié)省時(shí)間。4.長(zhǎng)期的堅(jiān)持代碼規(guī)范可以讓程序員養(yǎng)成一個(gè)良好的習(xí)慣,甚至鍛煉出思維。

      二、命名規(guī)范

      1.一般概念

      1)盡量使用完整的英文描述。2)采用相對(duì)好理解的術(shù)語(yǔ)。

      3)采用駱駝命名的規(guī)范使名字增加可讀性。4)盡量少用縮寫(xiě)提高可讀性。5)避免名字過(guò)長(zhǎng)。

      6)避免使用類(lèi)似的名字。7)避免使用特殊符號(hào)。2.主要的運(yùn)用

      1)類(lèi)(class)的命名

      2)接口(interface)的命名 +方法(method)的命名 3)參數(shù)(param)的命名

      三、注釋規(guī)范

      1.一般概念

      1)注釋?xiě)?yīng)該增加代碼的清晰度 2)保持代碼的整潔

      3)在寫(xiě)代碼之前或同時(shí)注意寫(xiě)上注釋

      4)注釋出為什么做這件事,做這件事的結(jié)果 2.注釋那些部分

      1)java文件:版權(quán)信息、創(chuàng)建時(shí)間、創(chuàng)建人 2)類(lèi):目的、所完成功能、版權(quán)信息、創(chuàng)建人 3)方法:參數(shù)含義、返回值 4)屬性:字段描述

      5)接口:目的、創(chuàng)建人、版本號(hào)、創(chuàng)建時(shí)間

      四、代碼格式規(guī)范

      1.單行注釋://注釋內(nèi)容,一般與代碼后空4-8格,注釋必須對(duì)齊 2.塊狀注釋?zhuān)?*注釋內(nèi)容*/,一般是注釋從以/*開(kāi)始,以*/結(jié)束中的所有內(nèi)容。3.文檔注釋?zhuān)?**......*/所以注釋文 檔必須書(shū)寫(xiě)在類(lèi)、域、構(gòu)造函數(shù)、方法,以及字段(field)定義之前.注釋文檔由兩部分組成——描述、塊標(biāo)記。4.javadoc注釋標(biāo)簽

      @author 對(duì)類(lèi)的說(shuō)明 標(biāo)明開(kāi)發(fā)該類(lèi)模塊的作者

      @version 對(duì)類(lèi)的說(shuō)明 標(biāo)明該類(lèi)模塊的版本

      @see 對(duì)類(lèi)、屬性、方法的說(shuō)明 參考轉(zhuǎn)向,也就是相關(guān)主題

      @param 對(duì)方法的說(shuō)明 對(duì)方法中某參數(shù)的說(shuō)明

      @return 對(duì)方法的說(shuō)明 對(duì)方法返回值的說(shuō)明

      @exception 對(duì)方法的說(shuō)明 對(duì)方法可能拋出的異常進(jìn)行說(shuō)明

      五、java注釋具體實(shí)現(xiàn)

      1.源文件注釋

      /** *文件名 *創(chuàng)建人 *創(chuàng)建時(shí)間 *修改人 *描述 *版本號(hào) */ 2.類(lèi)注釋

      /** *對(duì)此類(lèi)的描述信息 *創(chuàng)建人 *版本號(hào) *創(chuàng)建時(shí)間 */ 3.方法的注釋

      /** *方法的用處 *該方法的參數(shù)列 *該方法返回的值 */ 4.屬性的注釋

      /** *字段的描述 */ 5.接口注釋

      /** *對(duì)此接口的描述 *創(chuàng)建人 *創(chuàng)建時(shí)間 *版本號(hào) */ 6.構(gòu)造方法注釋

      /** *描述該構(gòu)造方法的用處 *該構(gòu)造方法的參數(shù)列 *參數(shù)的類(lèi)型 */

      六、Jsp代碼格式規(guī)范

      1.多行注釋:,一般是注釋從以結(jié)束中的所有內(nèi)容。

      2.文本注釋:<%--內(nèi)容--%>,主要是對(duì)該頁(yè)面的一些描述,目的、創(chuàng)建人、創(chuàng)建時(shí)間、版本號(hào)、文件名、備注、修改人等.例如: <%---創(chuàng)建人-創(chuàng)建時(shí)間-版本號(hào)-文件名-備注-修改人--%> 3.偽劣標(biāo)簽注釋:<% java語(yǔ)句塊 %> 例如: <% JAVA代碼塊 %> 4.單行注釋?zhuān)?/注釋內(nèi)容,一般與代碼后空4-8格,注釋必須對(duì)齊

      七、JS代碼格式規(guī)范

      1.文本注釋:/** 注釋內(nèi)容 **/,主要是對(duì)該頁(yè)面的一些描述,目的、創(chuàng)建人、創(chuàng)建時(shí)間、版本號(hào)、文件名、備注、修改人等.也可以用于注釋代碼塊。例如: /** *創(chuàng)建人 *創(chuàng)建時(shí)間 *版本號(hào) *文件名 *備注 *修改人 **/

      2.文本注釋:/** 內(nèi)容 */ ,主要是對(duì)該頁(yè)面的一些描述,目的、創(chuàng)建人、創(chuàng)建時(shí)間、版本號(hào)、文件名、備注、修改人等.也可以用于注釋代碼塊。例如: /** *創(chuàng)建人 *創(chuàng)建時(shí)間 *版本號(hào) *文件名 *備注 *修改人 */ 3.單行注釋: //注釋內(nèi)容,一般與代碼后空4-8格,注釋必須對(duì)齊 4.多行注釋: /* 注釋內(nèi)容 */,一般是注釋從以/* 開(kāi)始,以*/結(jié)束中的所有內(nèi)容。

      八、JS注釋具體實(shí)現(xiàn) 1.文件注釋

      /** *對(duì)此文件的描述信息 *創(chuàng)建人 *版本號(hào) *創(chuàng)建時(shí)間 */ 2.方法的注釋

      /** *方法的用處 *該方法的參數(shù)列 *該方法返回的值 */ 3.模塊的注釋

      /** *模塊名稱(chēng)

      *模塊的用處

      */

      第三篇:java流實(shí)驗(yàn)內(nèi)容及代碼

      實(shí)驗(yàn)7 流(2學(xué)時(shí))

      一、實(shí)驗(yàn)?zāi)康?.熟悉流類(lèi)庫(kù)中各種常用流的使用方法。

      2.能夠使用流類(lèi)實(shí)現(xiàn)基本的文件讀寫(xiě)。

      二、實(shí)驗(yàn)內(nèi)容

      1.編寫(xiě)程序,在控制臺(tái)窗口提示輸入兩個(gè)整數(shù),然后接收這兩個(gè)整數(shù),并輸出它們的和。(要求:鍵盤(pán)輸入通過(guò)流封裝System.in獲取,不要使用Scanner類(lèi))

      import java.io.*;System.out.println(x);System.out.println(“y”);public class Num1 {n=in.readLine();public static void main(String []args)y=Integer.parseInt(n);{System.out.println(y);int x=0,y=0;}catch(IOException e)BufferedReader in=new BufferedReader({

      newSystem.out.println(“error”);InputStreamReader(System.in));}

      String n;int s=x+y;

      try{System.out.println(s);System.out.println(“x”);}

      n=in.readLine();}

      x=Integer.parseInt(n);

      2.設(shè)計(jì)學(xué)生類(lèi)Student,屬性:編號(hào)(整型);姓名(字符串),成績(jī)(整型)。編寫(xiě)一個(gè)程序:要求:(1)輸入3個(gè)學(xué)生的姓名和成績(jī),將其姓名和成績(jī)保存到data.txt中;(2)然后從該文件中讀取數(shù)據(jù),求得這三個(gè)學(xué)生的平均成績(jī)。

      import java.io.*;DataOutputStream dout = newDataOutputStream(public class num2 {newpublic static void main(String[]args)FileOutputStream(“D:data.txt”));{String n;

      BufferedReader in=new BufferedReader(for(int i=0;i<5;i++)new{

      InputStreamReader(System.in));n=in.readLine();

      int num=Integer.parseInt(n);try{String name=in.readLine();

      n=in.readLine();int grade=Integer.parseInt(n);dout.writeBytes(num+“rn”);dout.writeBytes(name+“rn”);dout.writeBytes(grade+“rn”);}dout.close();}catch(IOException e1){int num=Integer.parseInt(n);

      n=din.readLine();String name=n;n=din.readLine();int grade=Integer.parseInt(n);ave+=grade;}System.out.println(“平均成績(jī)”+ave*1.0/5);System.out.println(“文件寫(xiě)入失敗”);}try{DataInputStream din =new DataInputStream(new FileInputStream(“D:data.txt”));int ave=0;String n;for(int i=0;i<5;i++){n=din.readLine();

      三、實(shí)驗(yàn)要求

      完成程序設(shè)計(jì)并提交實(shí)驗(yàn)報(bào)告。

      在“);失敗”);} }

      }catch(FileNotFoundException e){System.out.println(“文件不存}catch(IOException e2){System.out.println(”文件讀取}

      第四篇:教學(xué)計(jì)劃編制問(wèn)題

      目 錄 課題需求描述..........................................2 1.1 教學(xué)計(jì)劃編制問(wèn)題..................................2 1.2 進(jìn)制轉(zhuǎn)換..........................................2 2 總體功能與數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì).................................3 2.1 總體功能結(jié)構(gòu)......................................3 2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)......................................4 3 算法設(shè)計(jì)和程序設(shè)計(jì)....................................6 3.1 教學(xué)計(jì)劃編制問(wèn)題..................................6 3.2 進(jìn)制轉(zhuǎn)換問(wèn)題......................................9 4 調(diào)試與測(cè)試...........................................23 4.1 教學(xué)計(jì)劃編制問(wèn)題調(diào)試結(jié)果.........................23 4.2 進(jìn)制轉(zhuǎn)換問(wèn)題調(diào)試結(jié)果.............................25 5 設(shè)計(jì)總結(jié).............................................27 6 程序代碼.............................................29 課題需求描述

      1.1 教學(xué)計(jì)劃編制問(wèn)題

      大學(xué)的每個(gè)專(zhuān)業(yè)都要制訂教學(xué)計(jì)劃。假設(shè)任何專(zhuān)業(yè)都有固定的學(xué)習(xí)年限,每學(xué)年含兩學(xué)期,每學(xué)期的時(shí)間長(zhǎng)度和學(xué)分上限均相等。每個(gè)專(zhuān)業(yè)開(kāi)設(shè)的課程都是確定的,而且課程在開(kāi)設(shè)時(shí)間的安排必須滿(mǎn)足先修關(guān)系。每門(mén)課程有哪些先修課程是確定的,可以有任意多門(mén),也可以沒(méi)有。每門(mén)課恰好占一個(gè)學(xué)期。在這樣的前提下設(shè)計(jì)一個(gè)教學(xué)計(jì)劃編制程序。通過(guò)輸入實(shí)際的課程及先后關(guān)系。結(jié)合每學(xué)期的學(xué)分及課程數(shù),制定好學(xué)習(xí)計(jì)劃。在輸入相關(guān)數(shù)據(jù)后,程序會(huì)安排好每學(xué)期的課程。

      1.2 進(jìn)制轉(zhuǎn)換

      進(jìn)制數(shù)制是人們利用符號(hào)進(jìn)行計(jì)數(shù)的科學(xué)方法。數(shù)制有很多種,在計(jì)算機(jī)中常用的數(shù)制有:十進(jìn)制,二進(jìn)制,八進(jìn)制和十六進(jìn)制。十六進(jìn)制數(shù)有兩個(gè)基本特點(diǎn):它由十六個(gè)字符0~9以及A,B,C,D,E,F組成(它們分別表示十進(jìn)制0~15),十六進(jìn)制數(shù)運(yùn)算規(guī)律逢十六進(jìn)一。

      要求:(1)輸入一個(gè)十進(jìn)制數(shù)N,將它轉(zhuǎn)換成R進(jìn)制數(shù)輸出,并可以進(jìn)行你轉(zhuǎn)換。

      (2)輸入數(shù)據(jù)包含多個(gè)測(cè)試實(shí)例,每個(gè)測(cè)試實(shí)例包含兩個(gè)整數(shù)N(32位整數(shù))和R(2<=R<=16)。

      (3)為每個(gè)測(cè)試實(shí)例輸出轉(zhuǎn)換后的數(shù),每個(gè)輸出占一行。如果R大于10,則對(duì)應(yīng)的數(shù)字規(guī)則參考16進(jìn)制(比如,10用A表示,等等)??傮w功能與數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

      1.教學(xué)計(jì)劃編制問(wèn)題

      根據(jù)問(wèn)題描述及要求,可知設(shè)計(jì)中需要定義先修關(guān)系的AOV網(wǎng)圖中的頂點(diǎn)及弧邊的結(jié)構(gòu)體,在運(yùn)行結(jié)果中將圖的信息顯示出來(lái),利用先修關(guān)系將課程排序,最后解決問(wèn)題——輸出每學(xué)期的課程。

      2.進(jìn)制轉(zhuǎn)換問(wèn)題

      由于計(jì)算機(jī)只能識(shí)別二進(jìn)制,所以當(dāng)我們從鍵盤(pán)輸入其他進(jìn)制數(shù)的時(shí)候,計(jì)算機(jī)內(nèi)部的系統(tǒng)會(huì)利用自帶的程序代碼自動(dòng)轉(zhuǎn)換成二進(jìn)制,我們是學(xué)計(jì)算機(jī)的,所以我們需要弄懂這種機(jī)制轉(zhuǎn)換的原理并且能計(jì)算出來(lái)。

      2.1 總體功能結(jié)構(gòu)

      2.1.1 教學(xué)計(jì)劃編制問(wèn)題

      教學(xué)計(jì)劃是學(xué)校保證教學(xué)質(zhì)量和人才培養(yǎng)的關(guān)鍵,也是組織教學(xué)過(guò)程、安排教學(xué)過(guò)程、安排教學(xué)任務(wù)、確定教學(xué)編制的基本依據(jù)和課程安排的具體形式。是穩(wěn)定教學(xué)秩序、提高教學(xué)質(zhì)量的重要保證。從教學(xué)計(jì)劃的設(shè)計(jì)、實(shí)施等方面,闡明了如何搞好教學(xué)管理,從而為提高教學(xué)質(zhì)量提供保證。隨著教育改革的不斷深入和社會(huì)發(fā)展的需要,原舊的教學(xué)計(jì)劃在定位上的方向性偏差,已經(jīng)不再適應(yīng)社會(huì)的需求。因此,應(yīng)重視教學(xué)計(jì)劃的改革和修訂工作,以確保教育教學(xué)質(zhì)量,提高教育教學(xué)水平。教學(xué)計(jì)劃編制中的思路:一是明確培養(yǎng)目標(biāo);二是注重學(xué)科設(shè)置的整體性、統(tǒng)一性和靈活性、全面性;三是與學(xué)分制改革有機(jī)結(jié)合.教學(xué)計(jì)劃是高校實(shí)施常規(guī)教學(xué)活動(dòng)的基本管理文檔,由于傳統(tǒng)的手工編制方式存在諸多弊端,開(kāi)發(fā)基于Web應(yīng)用程序形式的教學(xué)計(jì)劃編制系統(tǒng)具有很好的應(yīng)用價(jià)值。使用C程序設(shè)計(jì)語(yǔ)言,研究開(kāi)發(fā)教學(xué)計(jì)劃編制系統(tǒng)Web應(yīng)用系統(tǒng)。

      2.1.2 進(jìn)制轉(zhuǎn)換問(wèn)題

      1.十進(jìn)制數(shù)與非十進(jìn)制數(shù)之間的轉(zhuǎn)換

      (1)十進(jìn)制數(shù)轉(zhuǎn)換成非十進(jìn)制數(shù) 把一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換成非十進(jìn)制數(shù)(基數(shù)記作R)分成兩步.整數(shù)部分轉(zhuǎn)換時(shí)采用“除R取余法”;小數(shù)部分轉(zhuǎn)換時(shí)采用“乘R取整法”。

      (2)非十進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù) 非十進(jìn)制數(shù)(基數(shù)記作R,第j個(gè)數(shù)位的位權(quán)記作Rj)轉(zhuǎn)換成十進(jìn)制數(shù)的方法:按權(quán)展開(kāi)求其和。

      2.非十進(jìn)制數(shù)之間的轉(zhuǎn)換

      (1)二進(jìn)制數(shù)與八進(jìn)制數(shù)之間的轉(zhuǎn)換 ①二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù)的方法.以小數(shù)點(diǎn)分界,整數(shù)部分自右向左、小數(shù)部分自左向右,每三位一組,不足三位時(shí),整數(shù)部分在高位左邊補(bǔ)0,小數(shù)部分在低位右邊補(bǔ)0,然后寫(xiě)出對(duì)應(yīng)的八進(jìn)制數(shù)碼。②八進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法:用八進(jìn)制數(shù)碼對(duì)應(yīng)的三位二進(jìn)制數(shù)代替八進(jìn)制數(shù)碼本身即可。

      (2)二進(jìn)制數(shù)與十六進(jìn)制數(shù)之間的轉(zhuǎn)換 ①二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)的方法:以小數(shù)點(diǎn)分界,整數(shù)部分自右向左、小數(shù)部分自左向右,每四位一組,不足四位時(shí),整數(shù)部分在高位左邊補(bǔ)0,小數(shù)部分在低位右邊補(bǔ)0,然后寫(xiě)出對(duì)應(yīng)的十六進(jìn)制數(shù)碼。②十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法:用十六進(jìn)制數(shù)碼對(duì)應(yīng)的四位二進(jìn)制數(shù)代替十六進(jìn)制數(shù)碼本身即可。

      2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

      2.2.1 教學(xué)計(jì)劃編制問(wèn)題

      LocateVex():圖的鄰接表存儲(chǔ)的基本操作 CreateGraph():構(gòu)造生成樹(shù) Display():輸出圖的鄰接矩陣 FindInDegree():求頂點(diǎn)的入度 InitStack():構(gòu)造一個(gè)空棧

      ClearStack():清空棧 StackEmpty():判斷是否為空棧 Pop():出棧 Push():入棧

      TopologicalSort():輸出G頂點(diǎn)的拓?fù)渑判蚪Y(jié)果 2.2.2 進(jìn)制轉(zhuǎn)換問(wèn)題

      void D_B(): 十進(jìn)制轉(zhuǎn)換為二進(jìn)制 void D_O(): 十進(jìn)制轉(zhuǎn)換為八進(jìn)制 void D_X(): 十進(jìn)制轉(zhuǎn)換為十六進(jìn)制 void B_D(): 二進(jìn)制轉(zhuǎn)換為十進(jìn)制 void B_O(): 二進(jìn)制轉(zhuǎn)換為八進(jìn)制 void B_X(): 二進(jìn)制轉(zhuǎn)換為十六進(jìn)制 void O_B(): 八進(jìn)制轉(zhuǎn)換為二進(jìn)制 void O_D(): 八進(jìn)制轉(zhuǎn)換為十進(jìn)制 void O_X(): 八進(jìn)制轉(zhuǎn)換為十六進(jìn)制 void X_B(): 十六進(jìn)制轉(zhuǎn)換為二進(jìn)制 void X_D(): 十六進(jìn)制轉(zhuǎn)換為十進(jìn)制 void X_O(): 十六進(jìn)制轉(zhuǎn)換為八進(jìn)制 算法設(shè)計(jì)和程序設(shè)計(jì)

      3.1 教學(xué)計(jì)劃編制問(wèn)題

      3.1.1采用C語(yǔ)言定義相關(guān)的數(shù)據(jù)類(lèi)型。

      其中包括字符常量,整型,字符型,字符串型,typedef 定義的類(lèi)型,結(jié)構(gòu)體型,單鏈表節(jié)點(diǎn)類(lèi)型,結(jié)構(gòu)體數(shù)組。

      3.1.2主要函數(shù)的流程圖

      1.LocateVex():圖的鄰接表存儲(chǔ)的基本操作。由初始條件G存在,u和G中頂點(diǎn)有相同特征轉(zhuǎn)而進(jìn)行判斷,若G中存在頂點(diǎn)u,則返回該頂點(diǎn)在圖中位置;否則返回-1。

      2.CreateGraph():構(gòu)造生成圖。采用鄰接表存儲(chǔ)結(jié)構(gòu),構(gòu)造沒(méi)有相關(guān)信息的圖G(用一個(gè)函數(shù)構(gòu)造種圖)。

      3.Display():輸出圖的鄰接矩陣。采用循環(huán)設(shè)置輸出圖的鄰接矩陣。4.FindInDegree():求頂點(diǎn)的入度。

      5.InitStack():構(gòu)造一個(gè)空棧。6.ClearStack():清空棧。

      7.StackEmpty():判斷棧是否為空。若棧S為空棧,則返回TRUE,否則返回FALSE。

      8.Pop():出棧。若棧不空,則刪除S的棧頂元素,用e返回其值,并返回OK;否則返回ERROR。

      9.Push():入棧。插入元素e為新的棧頂元素。

      10.TopologicalSort():輸出G頂點(diǎn)的拓?fù)渑判蚪Y(jié)果。有向圖G采用鄰接表存儲(chǔ)結(jié)構(gòu)。若G無(wú)回路,則輸出G的頂點(diǎn)的一個(gè)拓?fù)湫蛄胁⒎祷豋K, 否則返回ERROR。

      3.2 進(jìn)制轉(zhuǎn)換問(wèn)題

      主要流程圖:

      進(jìn)制轉(zhuǎn)換菜單:

      1.void D_B(): 十進(jìn)制轉(zhuǎn)換為二進(jìn)制

      for(j=0;a!=0;j++){ p[j]=a%2;a=a/2;} printf(“n轉(zhuǎn)換后的數(shù)為:”);for(k=j-1;k>=0;k--){printf(“%d”,p[k]);} printf(“n”);

      2.void D_O(): 十進(jìn)制轉(zhuǎn)換為八進(jìn)制

      for(j=0;a!=0;j++){ p[j]=a%8;a=a/8;} printf(“n轉(zhuǎn)換后的數(shù)為:”);for(k=j-1;k>=0;k--){printf(“%d”,p[k]);} printf(“n”);

      3.void D_X(): 十進(jìn)制轉(zhuǎn)換為十六進(jìn)制

      for(j=0;a!=0;j++){p[j]=a%16;a=a/16;if(p[j]<10)p[j]+=48;else { switch(p[j]){ case 10: p[j]='A';break;case 11: p[j]='B';break;case 12: p[j]='C';break;case 13: p[j]='D';break;case 14: p[j]='E';break;case 15: p[j]='F';break;} }

      十進(jìn)制轉(zhuǎn)換為任意進(jìn)制:

      4.void B_D(): 二進(jìn)制轉(zhuǎn)換為十進(jìn)制

      for(i=1;a!=0;i*=2){

      if(a%10>1)

      {s=1;break;}

      else

      {result+=(a%10)*i;a=a/10;} } if(s==1)

      printf(“您的輸入有誤!請(qǐng)重新輸入n”);else printf(“n轉(zhuǎn)換后的數(shù)為:%dn”,result);5.void O_D(): 八進(jìn)制轉(zhuǎn)換為十進(jìn)制

      for(i=1;a!=0;i*=8){ if(a%10>7){ s=1;break;} else {result+=(a%10)*i;a=a/10;} } if(s==1)printf(“您的輸入有誤!請(qǐng)重新輸入n”);else { printf(“n轉(zhuǎn)換后的數(shù)為:%dn”,result);}

      任意進(jìn)制轉(zhuǎn)換為十進(jìn)制:

      6.void B_O(): 二進(jìn)制轉(zhuǎn)換為八進(jìn)制

      for(i=1;a!=0;i*=2){if(a%10>1){s=1;break;}

      else{result+=(a%10)*i;a=a/10;} } for(j=0;result!=0;j++){p[j]=result%8;result=result/8;} if(s==1)

      printf(“您的輸入有誤!請(qǐng)重新輸入n”);else

      {printf(“n轉(zhuǎn)換后的數(shù)為:”);

      for(k=j-1;k>=0;k--)

      {printf(“%d”,p[k]);}

      printf(“n”);}

      7.void B_X(): 二進(jìn)制轉(zhuǎn)換為十六進(jìn)制

      for(i=1;a!=0;i*=2){if(a%10>1){s=1;break;} else{result+=(a%10)*i;a=a/10;} } for(j=0;result!=0;j++){p[j]=result%16;result=result/16;if(p[j]>10){switch(p[j]){ case 10: p[j]='A';break;case 11: p[j]='B';break;case 12: p[j]='C';break;

      case 13: p[j]='D';break;case 14: p[j]='E';break;case 15: p[j]='F';break;} } else p[j]+=48;} if(s==1)printf(“您的輸入有誤!請(qǐng)重新輸入n”);else { printf(“n轉(zhuǎn)換后的數(shù)為:”);for(k=j-1;k>=0;k--){printf(“%c”,p[k]);} printf(“n”);}

      8.void O_B(): 八進(jìn)制轉(zhuǎn)換為二進(jìn)制

      for(i=1;a!=0;i*=8){if(a%10>7){ s=1;break;} else {result+=(a%10)*i;a=a/10;} } for(j=0;result!=0;j++){p[j]=result%2;result=result/2;} if(s==1)printf(“您的輸入有誤!請(qǐng)重新輸入n”);

      else {printf(“n轉(zhuǎn)換后的數(shù)為:”);for(k=j-1;k>=0;k--){printf(“%d”,p[k]);} printf(“n”);}

      9.void O_D(): 八進(jìn)制轉(zhuǎn)換為十進(jìn)制

      for(i=1;a!=0;i*=8){ if(a%10>7){ s=1;break;} else {result+=(a%10)*i;a=a/10;} } if(s==1)printf(“您的輸入有誤!請(qǐng)重新輸入n”);else { printf(“n轉(zhuǎn)換后的數(shù)為:%dn”,result);}

      10.void X_D(): 十六進(jìn)制轉(zhuǎn)換為十進(jìn)制

      for(i=0;i='1'){ b[i]=a[i]-48;} else { switch(a[i]){

      case 'A': b[i]=10;break;case 'B': b[i]=11;break;case 'C': b[i]=12;break;case 'D': b[i]=13;break;case 'E': b[i]=14;break;case 'F': b[i]=15;break;case 'a': b[i]=10;break;case 'b': b[i]=11;break;case 'c': b[i]=12;break;case 'd': b[i]=13;break;case 'e': b[i]=14;break;case 'f': b[i]=15;break;default: s=1;} }

      11.void O_X(): 八進(jìn)制轉(zhuǎn)換為十六進(jìn)制

      for(i=1;a!=0;i*=8){if(a%10>7){s=1;break;} else{result+=(a%10)*i;a=a/10;} } for(j=0;result!=0;j++){p[j]=result%16;result=result/16;if(p[j]<10)p[j]+=48;else { switch(p[j]){

      case 10: p[j]='A';break;case 11: p[j]='B';break;case 12: p[j]='C';break;case 13: p[j]='D';break;case 14: p[j]='E';break;case 15: p[j]='F';break;} }

      12.void X_B(): 十六進(jìn)制轉(zhuǎn)換為二進(jìn)制

      for(i=0;i='1')b[i]=a[i]-48;else { switch(a[i]){ case 'A': b[i]=10;break;case 'B': b[i]=11;break;case 'C': b[i]=12;break;case 'D': b[i]=13;break;case 'E': b[i]=14;break;case 'F': b[i]=15;break;case 'a': b[i]=10;break;case 'b': b[i]=11;break;case 'c': b[i]=12;break;case 'd': b[i]=13;break;case 'e': b[i]=14;break;case 'f': b[i]=15;break;

      default: s=1;} }

      13.void X_D(): 十六進(jìn)制轉(zhuǎn)換為十進(jìn)制

      for(i=0;i='1'){ b[i]=a[i]-48;} else { switch(a[i]){ case 'A': b[i]=10;break;case 'B': b[i]=11;break;case 'C': b[i]=12;break;case 'D': b[i]=13;break;case 'E': b[i]=14;break;case 'F': b[i]=15;break;case 'a': b[i]=10;break;case 'b': b[i]=11;break;case 'c': b[i]=12;break;case 'd': b[i]=13;break;case 'e': b[i]=14;break;case 'f': b[i]=15;break;default: s=1;} }

      14.void X_O(): 十六進(jìn)制轉(zhuǎn)換為八進(jìn)制

      for(i=0;i='1')b[i]=a[i]-48;else { switch(a[i]){ case 'A': b[i]=10;break;case 'B': b[i]=11;break;case 'C': b[i]=12;break;case 'D': b[i]=13;break;case 'E': b[i]=14;break;case 'F': b[i]=15;break;case 'a': b[i]=10;break;case 'b': b[i]=11;break;case 'c': b[i]=12;break;case 'd': b[i]=13;break;case 'e': b[i]=14;break;case 'f': b[i]=15;break;default: s=1;}

      其他進(jìn)制間的轉(zhuǎn)換: 調(diào)試與測(cè)試

      4.1 教學(xué)計(jì)劃編制問(wèn)題調(diào)試結(jié)果

      輸入學(xué)期總數(shù),輸入學(xué)期學(xué)分的上限,輸入教學(xué)計(jì)劃的課程數(shù),輸入先修關(guān)系的邊數(shù),輸入課程的代表值,輸入課程的學(xué)分值(如圖)

      輸入每條弧的弧尾和弧頭(如圖):

      顯示的課程計(jì)劃如下:

      4.2 進(jìn)制轉(zhuǎn)換問(wèn)題調(diào)試結(jié)果

      進(jìn)入系統(tǒng)時(shí)的界面:

      二進(jìn)制轉(zhuǎn)換為八進(jìn)制:

      十進(jìn)制轉(zhuǎn)換為十六進(jìn)制:

      十六進(jìn)制轉(zhuǎn)換為十進(jìn)制: 設(shè)計(jì)總結(jié) 我的收獲

      雖然在高中我們已經(jīng)學(xué)了C語(yǔ)言,大一我們已經(jīng)學(xué)習(xí)了C++語(yǔ)言,但是,直到本期我們才開(kāi)設(shè)了數(shù)據(jù)結(jié)構(gòu)這一門(mén)課程。這門(mén)課程讓我們對(duì)程序的原理有了系統(tǒng)的認(rèn)識(shí)。對(duì)以往模糊的經(jīng)驗(yàn),起了總結(jié)提升的作用。在學(xué)習(xí)了這門(mén)課程后,我們進(jìn)行了一個(gè)星期的課程設(shè)計(jì),以實(shí)踐我們的學(xué)習(xí)內(nèi)容。

      在這次課程設(shè)計(jì)中,我被分配到了教學(xué)計(jì)劃課程編制問(wèn)題,開(kāi)始感覺(jué)很難,因?yàn)槲覐奈淳帉?xiě)過(guò)如此復(fù)雜的程序。在多方查找資料并參考類(lèi)似程序后,我大體將程序的構(gòu)架描繪好了。一邊對(duì)照著網(wǎng)上的資料,一邊對(duì)程序進(jìn)行修改補(bǔ)充,然后根據(jù)擬好的大綱進(jìn)行編制。期間,我與其它同學(xué)進(jìn)行了討論和探究,對(duì)程序的細(xì)節(jié)問(wèn)題和應(yīng)用方面進(jìn)行了探索,并解決了主要的問(wèn)題,于是便著手寫(xiě)具體的程序。

      由于老師要求我們編寫(xiě)600多行的代碼,但是教學(xué)計(jì)劃課程編制問(wèn)題的代碼不足,所以我又選擇了一個(gè)課題——進(jìn)制轉(zhuǎn)換問(wèn)題,我會(huì)選擇這個(gè)課題是因?yàn)槲矣X(jué)得作為學(xué)計(jì)算機(jī)的我,應(yīng)該要能更好的了解關(guān)于計(jì)算機(jī)方面的知識(shí)。

      這次實(shí)驗(yàn),我進(jìn)行了大量的資料查閱,對(duì)所學(xué)知識(shí)進(jìn)行復(fù)習(xí)。通過(guò)這些努力,我對(duì)算法有了更深入的理解,對(duì)編程的步驟,有了具體的體會(huì)。通過(guò)和同學(xué)的廣泛交流,我體會(huì)到了合作的必要性及合作的優(yōu)勢(shì)。更重要的是,這個(gè)課題完全脫胎于實(shí)際問(wèn)題,讓我對(duì)計(jì)算機(jī)行業(yè),充滿(mǎn)了信心和自豪。

      以往我們學(xué)的計(jì)算機(jī)知識(shí)一般停留在理論上,這讓我們不太理解計(jì)算機(jī)的應(yīng)用和前景,而較少注重我們對(duì)算法的實(shí)踐鍛煉。而這一次的實(shí)習(xí)既需要我們?nèi)ヂ?lián)系理論,又需要我們?nèi)?shí)踐方法,很多東西看上去都學(xué)過(guò),但是和實(shí)際聯(lián)系才知道變通的艱難。紙上得來(lái)終覺(jué)淺,這是我這次實(shí)習(xí)的最大收獲。這次的實(shí)驗(yàn)讓我們知道該如何跨過(guò)實(shí)際和理論之間的鴻溝。

      存在的問(wèn)題

      由于程序十分的復(fù)雜,遇到了很多常見(jiàn)的語(yǔ)法錯(cuò)誤,及邏輯錯(cuò)誤。這需要我們不斷的調(diào)試分析。符號(hào)的格式之類(lèi),指針的用法,判斷輸入輸出的條件都是十分容易出錯(cuò)的地方。在逐條排除,程序終于得以完成。這讓我明白了,解決問(wèn)題,要細(xì)心認(rèn)真,集思廣益,這樣才能把問(wèn)題解決。

      雖然程序變出來(lái)了,但是我大量借鑒了別人的程序,中間有很多的程序段都是一知半解,雖然查閱了資料,但是畢竟不是自己思考出來(lái)的程序,又無(wú)法當(dāng)面詢(xún)問(wèn)寫(xiě)出編程的人,所以對(duì)部分程序還存在問(wèn)題,我會(huì)繼續(xù)查詢(xún)資料將目前不懂的內(nèi)容弄清楚。

      參考資料:數(shù)據(jù)結(jié)構(gòu)(C++語(yǔ)言描述)吉根林 陳波主編 C++語(yǔ)言教材 程序代碼

      教學(xué)計(jì)劃編制問(wèn)題:

      #include #include #include // malloc()等 #include // INT_MAX等 #include // EOF(=^Z或F6),NULL #include // atoi()52 #include // eof()#include // floor(),ceil(),abs()#include

      // exit()#include // cout,cin // 函數(shù)結(jié)果狀態(tài)代碼 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE-1 typedef int Status;// Status是函數(shù)的類(lèi)型,其值是函數(shù)結(jié)果狀態(tài)代碼,如OK等 typedef int Boolean;// Boolean是布爾類(lèi)型,其值是TRUE或FALSE #define MAX_NAME 10 /* 頂點(diǎn)字符串的最大長(zhǎng)度*/ #define MAXCLASS 100 int Z=0;int X=0;int xqzs,q=1,xfsx;typedef int InfoType;typedef char VertexType[MAX_NAME];/* 字符串類(lèi)型*/ /* 圖的鄰接表存儲(chǔ)表示*/

      #define MAX_VERTEX_NUM 100 typedef enum{DG}GraphKind;/* {有向圖,有向網(wǎng),無(wú)向圖,無(wú)向網(wǎng)} */ typedef struct ArcNode { int adjvex;/* 該弧所指向的頂點(diǎn)的位置*/ struct ArcNode *nextarc;/* 指向下一條弧的指針*/ InfoType *info;/* 網(wǎng)的權(quán)值指針)*/ }ArcNode;/* 表結(jié)點(diǎn)*/ typedef struct { VertexType data;/* 頂點(diǎn)信息*/ ArcNode *firstarc;/* 第一個(gè)表結(jié)點(diǎn)的地址,指向第一條依附該頂點(diǎn)的弧的指針*/ }VNode,AdjList[MAX_VERTEX_NUM];/* 頭結(jié)點(diǎn)*/ typedef struct { AdjList vertices,verticestwo;int vexnum,arcnum;/* 圖的當(dāng)前頂點(diǎn)數(shù)和弧數(shù)*/ int kind;/* 圖的種類(lèi)標(biāo)志*/ }ALGraph;/* 圖的鄰接表存儲(chǔ)的基本操作*/ int LocateVex(ALGraph G,VertexType u){ /* 初始條件: 圖G存在,u和G中頂點(diǎn)有相同特征*/ /* 操作結(jié)果: 若G中存在頂點(diǎn)u,則返回該頂點(diǎn)在圖中位置;否則返回-1 */ int i;for(i=0;i

      { /* 采用鄰接表存儲(chǔ)結(jié)構(gòu),構(gòu)造沒(méi)有相關(guān)信息的圖G(用一個(gè)函數(shù)構(gòu)造種圖)*/ int i,j,k;VertexType va,vb;ArcNode *p;printf(“請(qǐng)輸入教學(xué)計(jì)劃的課程數(shù): ”);scanf(“%d”,&(*G).vexnum);printf(“請(qǐng)輸入拓?fù)渑判蛩纬傻恼n程先修關(guān)系的邊數(shù): ”);scanf(“%d”,&(*G).arcnum);printf(“請(qǐng)輸入%d個(gè)課程的代表值(<%d個(gè)字符):n”,(*G).vexnum,MAX_NAME);for(i=0;i<(*G).vexnum;++i)/* 構(gòu)造頂點(diǎn)向量*/ {

      } printf(“請(qǐng)輸入%d個(gè)課程的學(xué)分值(<%d個(gè)字符):n”,(*G).vexnum,MAX_NAME);for(i=0;i<(*G).vexnum;++i)/* 構(gòu)造頂點(diǎn)向量*/ { } printf(“請(qǐng)順序輸入每條弧(邊)的弧尾和弧頭(以空格作為間隔):n”);for(k=0;k<(*G).arcnum;++k)/* 構(gòu)造表結(jié)點(diǎn)鏈表*/ {

      }

      scanf(“%s”,(*G).vertices[i].data);(*G).vertices[i].firstarc=NULL;scanf(“%s”,(*G).verticestwo[i].data);scanf(“%s%s”,va,vb);i=LocateVex(*G,va);/* 弧尾*/ j=LocateVex(*G,vb);/* 弧頭*/ p=(ArcNode*)malloc(sizeof(ArcNode));p->adjvex=j;p->info=NULL;/* 圖*/ p->nextarc=(*G).vertices[i].firstarc;/* 插在表頭*/(*G).vertices[i].firstarc=p;

      return OK;} void Display(ALGraph G){ /* 輸出圖的鄰接矩陣G */ int i;ArcNode *p;switch(G.kind){ case DG: printf(“有向圖n”);} printf(“%d個(gè)頂點(diǎn):n”,G.vexnum);for(i=0;i

      } printf(“n”);} } void FindInDegree(ALGraph G,int indegree[]){ /* 求頂點(diǎn)的入度,算法調(diào)用*/ int i;ArcNode *p;for(i=0;i

      printf(“%s→%s ”,G.vertices[i].data,G.vertices[p->adjvex].data);p=p->nextarc;

      indegree[i]=0;/* 賦初值*/ for(i=0;i

      } } } typedef int SElemType;/* 棧類(lèi)型*/ /*棧的順序存儲(chǔ)表示*/ #define STACK_INIT_SIZE 10 /* 存儲(chǔ)空間初始分配量*/ #define STACKINCREMENT 2 /* 存儲(chǔ)空間分配增量*/ typedef struct SqStack { SElemType *base;/* 在棧構(gòu)造之前和銷(xiāo)毀之后,base的值為NULL */ SElemType *top;/* 棧頂指針*/ int stacksize;/* 當(dāng)前已分配的存儲(chǔ)空間,以元素為單位*/ }SqStack;/* 順序棧*/ /* 順序棧的基本操作*/ Status InitStack(SqStack *S){ /* 構(gòu)造一個(gè)空棧S */(*S).base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!(*S).base)exit(OVERFLOW);/* 存儲(chǔ)分配失敗*/(*S).top=(*S).base;(*S).stacksize=STACK_INIT_SIZE;

      indegree[p->adjvex]++;p=p->nextarc;

      return OK;} void ClearStack(SqStack *S)//清空棧的操作 { S->top=S->base;} Status StackEmpty(SqStack S){ /* 若棧S為空棧,則返回TRUE,否則返回FALSE */

      } Status Pop(SqStack *S,SElemType *e){ /* 若棧不空,則刪除S的棧頂元素,用e返回其值,并返回OK;否則返回ERROR */

      if((*S).top==(*S).base)return ERROR;if(S.top==S.base)else return FALSE;return TRUE;*e=*--(*S).top;return OK;} Status Push(SqStack *S,SElemType e){ /* 插入元素e為新的棧頂元素*/ if((*S).top-(*S).base>=(*S).stacksize)/* 棧滿(mǎn),追加存儲(chǔ)空間*/ {(*S).base=(SElemType*)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));if(!(*S).base)exit(OVERFLOW);/* 存儲(chǔ)分配失敗*/(*S).top=(*S).base+(*S).stacksize;(*S).stacksize+=STACKINCREMENT;

      } *((*S).top)++=e;return OK;} typedef int pathone[MAXCLASS];typedef int pathtwo[MAXCLASS];Status TopologicalSort(ALGraph G){ /* 有向圖G采用鄰接表存儲(chǔ)結(jié)構(gòu)。若G無(wú)回路,則輸出G的頂點(diǎn)的一個(gè)拓?fù)湫蛄胁⒎祷豋K, */ /* 否則返回ERROR。*/ int i,k,j=0,count,indegree[MAX_VERTEX_NUM];bool has=false;SqStack S;pathone a;pathtwo b;ArcNode *p;FindInDegree(G,indegree);/* 對(duì)各頂點(diǎn)求入度indegree[0..vernum-1] */ InitStack(&S);/* 初始化棧*/ for(i=0;i

      Pop(&S,&i);a[i]=*G.vertices[i].data;

      b[i]=*G.verticestwo[i].data;printf(“課程%s→學(xué)分%s ”,G.vertices[i].data,G.verticestwo[i].data);/* 輸出i號(hào)頂點(diǎn)并計(jì)數(shù)*/ ++count;for(p=G.vertices[i].firstarc;p;p=p->nextarc){ /* 對(duì)i號(hào)頂點(diǎn)的每個(gè)鄰接點(diǎn)的入度減*/

      k=p->adjvex;if(!(--indegree[k]))/* 若入度減為,則入棧*/ { Push(&S,k);//cout<<*G.vertices[i].data<

      計(jì)

      劃===============================”<

      while(qq<=xqzs){

      int result[20];int rtop=0;int nn=0;//int ccount=0;// 學(xué)期學(xué)分計(jì)算

      xxf=0;for(i=0;i

      } if(0==indegree[i]){ } Push(&S,i);while(!StackEmpty(S)){

      int bb;Pop(&S,&i);bb=atoi(G.verticestwo[i].data);xxf=xxf+bb;if(xxf>xfsx){ } indegree[i]--;for(p=G.vertices[i].firstarc;p;p=p->nextarc){ /* 對(duì)i號(hào)頂點(diǎn)的每個(gè)鄰接點(diǎn)的入度減*/ k=p->adjvex;indegree[k]--;

      break;

      /* if(!(--indegree[k]))若入度減為,則入棧 { Push(&S,k);}*/ } result[rtop]=i;rtop++;} cout<<“第”<

      }

      cout<<“課程”<

      ALGraph f;printf(“以下為教學(xué)計(jì)劃編制問(wèn)題的求解過(guò)程:n”);printf(“請(qǐng)輸入學(xué)期總數(shù):”);scanf(“%d”,&xqzs);printf(“請(qǐng)輸入學(xué)期的學(xué)分上限:”);scanf(“%d”,&xfsx);CreateGraph(&f);Display(f);TopologicalSort(f);

      進(jìn)制轉(zhuǎn)換問(wèn)題:

      #include #include #include void D_B(int);void D_O(int);void D_X(int);void B_D(int);void B_O(int);void B_X(int);void O_B(int);void O_D(int);void O_X(int);void X_B(char r[],int k);void X_D(char r[],int k);void X_O(char r[],int k);void main(){ int i,j,k=0;int q;char r[10];

      printf(“+===============+n”);printf(“| 歡 迎 使 用 進(jìn) 制 轉(zhuǎn) 換 程 序 |n”);

      printf(“+===============+n”);

      printf(“ 本 版 本 只 做 正 整 數(shù) 的 進(jìn) 制 轉(zhuǎn) 換!”);do { q=0;//fflush(stdin);printf(“n請(qǐng)選擇需要被轉(zhuǎn)換的進(jìn)制:n1、二進(jìn)制n2、八進(jìn)制n3、十進(jìn)制n4、十六進(jìn)制n0、退出n”);printf(“請(qǐng)輸入0~4:”);scanf(“%d”,&i);switch(i){ case 1: printf(“n請(qǐng)選擇轉(zhuǎn)換后的進(jìn)制:n1、二進(jìn)制n2、八進(jìn)制n3、十進(jìn)制n4、十六進(jìn)制n0、退出n”);printf(“請(qǐng)輸入0~4:”);scanf(“%d”,&j);switch(j){ case 1: printf(“n同進(jìn)制之間不用轉(zhuǎn)化!n”);q=1;break;case 2: printf(“n請(qǐng)輸入您想要轉(zhuǎn)化的數(shù):”);scanf(“%d”,&k);B_O(k);q=1;break;case 3: printf(“n請(qǐng)輸入您想要轉(zhuǎn)化的數(shù):”);scanf(“%d”,&k);B_D(k);q=1;break;case 4: printf(“n請(qǐng)輸入您想要轉(zhuǎn)化的數(shù):”);scanf(“%d”,&k);B_X(k);q=1;break;case 0: printf(“謝謝使用!”);}

      break;case 2: printf(“n請(qǐng)選擇轉(zhuǎn)換后的進(jìn)制:n1、二進(jìn)制n2、八進(jìn)制n3、十進(jìn)制n4、十六進(jìn)制n0、退出n”);printf(“請(qǐng)輸入0~4:”);scanf(“%d”,&j);switch(j){ case 2: printf(“n同進(jìn)制之間不用轉(zhuǎn)化!n”);q=1;break;case 1: printf(“n請(qǐng)輸入您想要轉(zhuǎn)化的數(shù):”);scanf(“%d”,&k);O_B(k);q=1;break;case 3: printf(“n請(qǐng)輸入您想要轉(zhuǎn)化的數(shù):”);scanf(“%d”,&k);O_D(k);q=1;break;case 4: printf(“n請(qǐng)輸入您想要轉(zhuǎn)化的數(shù):”);scanf(“%d”,&k);O_X(k);q=1;break;case 0: printf(“謝謝使用!”);} break;case 3: printf(“n請(qǐng)選擇轉(zhuǎn)換后的進(jìn)制:n1、二進(jìn)制n2、八進(jìn)制n3、十進(jìn)制n4、十六進(jìn)制n0、退出n”);printf(“請(qǐng)輸入0~4:”);scanf(“%d”,&j);switch(j){ case 3: printf(“n同進(jìn)制之間不用轉(zhuǎn)化!n”);q=1;break;case 1: printf(“n請(qǐng)輸入您想要轉(zhuǎn)化的數(shù):”);scanf(“%d”,&k);D_B(k);q=1;break;

      case 2: printf(“n請(qǐng)輸入您想要轉(zhuǎn)化的數(shù):”);scanf(“%d”,&k);D_O(k);q=1;break;case 4: printf(“n請(qǐng)輸入您想要轉(zhuǎn)化的數(shù):”);scanf(“%d”,&k);D_X(k);q=1;break;case 0: printf(“謝謝使用!”);} break;case 4: printf(“n請(qǐng)選擇轉(zhuǎn)換后的進(jìn)制:n1、二進(jìn)制n2、八進(jìn)制n3、十進(jìn)制n4、十六進(jìn)制n0、退出n”);printf(“請(qǐng)輸入0~4:”);scanf(“%d”,&j);switch(j){ case 4: printf(“n同進(jìn)制之間不用轉(zhuǎn)化!n”);q=1;break;case 1: printf(“n請(qǐng)輸入您想要轉(zhuǎn)化的數(shù):”);fflush(stdin);gets(r);for(k=0;;k++){if(r[k]=='