题目1:学生成绩档案管理系统(实验准备)
數據結構課程實踐系列
題目1:學生成績檔案管理系統(實驗準備)
題目2:隱式圖的搜索問題(A*算法解決八數碼)
題目3:文本文件單詞的檢索與計數(實驗準備)
文章目錄
- 數據結構課程實踐系列
- 題目1:學生成績檔案管理系統(實驗準備)
- 題目2:隱式圖的搜索問題(A*算法解決八數碼)
- 題目3:文本文件單詞的檢索與計數(實驗準備)
- 聲明
- 實驗要求
- 編程語言以及開發環境的選擇
- 所需知識
- 所需知識導出
- DAO運用
- 簡單排序算法
- 雙向冒泡排序
- 快速排序
- 希爾排序
- 堆排序
聲明
實驗要求
- 學生信息錄入,信息包括學號、姓名、專業、四門課成績、總分、名次;
- 系統可對學生信息瀏覽、增加、刪除和修改;
- 按學生成績確定名次及信息輸出,雙向冒泡排序、希爾排序、快速排序、堆排序
- 要求可對學生信息查詢,根據學號或姓名進行查找;
- 信息修改僅可修改四門課成績;
- 文件存取學生信息。
編程語言以及開發環境的選擇
編程語言:java
開發環境:IDE使用的是idea,jdk版本為1.8
所需知識
一些簡單排序算法,以及DAO
所需知識導出
DAO運用
DAO (Database Access Object) 數據訪問對象,將數據對象常用的訪問方法(增刪改查)封裝在指定的對象中,該對象就稱為DAO對象,DAO對象是數據層構建的基礎,由業務層對象進行調用,DAO中定義的數據訪問方法和業務無關。
DAO設計模式主要分為三層:
其實也就是利用一個Dao對象,然后這個對象里面實現了相應的增刪改查,不讓用戶去直接接觸到數據庫。感覺和windows中線性虛擬地址的運用有著相同的味道
簡單排序算法
雙向冒泡排序
傳統冒泡排序運作如下:(從后往前)
雙向冒泡排序算法的運作如下:
快速排序
快速排序使用分治法(Divide and conquer)策略來把一個序列(list)分為兩個子序列(sub-lists)。
快速排序算法的運作如下:
遞歸到最底部時,數列的大小是零或一,也就是已經排序好了。這個算法一定會結束,因為在每次的迭代(iteration)中,它至少會把一個元素擺到它最后的位置去。
public List<Student> quickSort(List<Student> studentList){List<Student> list=studentList;quickSort1(list,0,list.size()-1);return list;}public void quickSort1(List<Student> studentList,int left,int right){if(left<right){int i=left,j=right;Student student=studentList.get(left);double x=student.getSum();while(i<j){while((i<j)&&(studentList.get(j).getSum()<x)){j--;}if(i<j){studentList.set(i,studentList.get(j));i++;}while((i<j)&&(studentList.get(i).getSum()>x)){i++;}if(i<j){studentList.set(j,studentList.get(i));j--;}}studentList.set(i,student);quickSort1(studentList,left,i-1);quickSort1(studentList,i+1,right);}}希爾排序
希爾排序是非穩定排序算法,把記錄按下標的一定增量分組,對每組使用直接插入排序算法排序;隨著增量逐漸減少,每組包含的關鍵詞越來越多,當增量減至1時,整個文件恰被分成一組,算法便終止。
public List<Student> shellSort(List<Student> studentList){List<Student> list=studentList;Student student=null;int j;for (int gap = list.size() / 2; gap > 0; gap /= 2) {for (int i = gap; i < list.size(); i++) {student=list.get(i);double tmp=student.getSum();for (j = i; j >= gap && tmp>list.get(j-gap).getSum(); j -= gap) {list.set(j,list.get(j-gap));}list.set(j,student);}}return list;}堆排序
堆排序(英語:Heapsort)是指利用堆這種數據結構所設計的一種排序算法。堆積是一個近似完全二叉樹的結構,并同時滿足堆積的性質:即子結點的鍵值或索引總是小于(或者大于)它的父節點。
public List<Student> heapSort(List<Student> studentList){List<Student> list=studentList;int len = list.size();buildMaxHeap(list, len);for (int i = len - 1; i > 0; i--) {swap(list, 0, i);len--;heapify(list, 0, len);}return list;}private void buildMaxHeap(List<Student> studentList, int len) {for (int i = (int) Math.floor(len / 2); i >= 0; i--) {heapify(studentList, i, len);}}private void heapify(List<Student> studentList, int i, int len) {int left = 2 * i + 1;int right = 2 * i + 2;int largest = i;if (left < len && studentList.get(left).getSum() < studentList.get(largest).getSum()) {largest = left;}if (right < len && studentList.get(right).getSum() < studentList.get(largest).getSum()) {largest = right;}if (largest != i) {swap(studentList, i, largest);heapify(studentList, largest, len);}}private void swap(List<Student> studentList, int i, int j) {Student student=studentList.get(i);studentList.set(i,studentList.get(j));studentList.set(j,student);}總結
以上是生活随笔為你收集整理的题目1:学生成绩档案管理系统(实验准备)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 题目2:隐式图的搜索问题(A*算法解决八
- 下一篇: 题目3:文本文件单词的检索与计数(实验准