




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
華中科技大學計算機科學與技術學院
《C語言程序設計》課程設計
基礎部分實驗報告
題目:科技成果信息管理系統
專業:計算機科學與技術
班級:1204
學號:
姓名:
成績:
指導教師:
目錄
一、系統功能結構設計.................................................1
二、數據結構設計.................................................1
三、程序結構...................................................4
四、函數原型及功能..................................................9
五、試驗結果.................................................13
六、實驗體會...................................................29
七、附錄I:參考文獻....................................................31
八、附錄2:程序清單....................................................31
C語言課程設計實驗報告
一、系統功能結構設計
航科技成果信息管理系統由五大功能模塊組成:文件模塊,編輯模塊,查詢模塊,統計
模塊,幫助模塊。如下圖所示:
文件模塊編輯模塊■查詢模塊■統計模塊幫助模塊
加載數據信添加單位查詢單位1-+
唯軟件信息
及祚者信
腐
m
查詢科技-息
數
成果.
查詢完成
人員統計各單
位成果排
名
統計50歲
以下第一
完成人
二、數據結構設計
1.單位信息鏈結點結構(DEPTNODE)及用法
typedefstructdept_node
i
C語言課程設計實驗報告
charnumber[8];/*單位編號*/
charname[30];/*單位名稱*/
charPIC[20];/*負責人*/
structdept_node*next;/*指向下一結點*/
structarchs_node*achs;/*指向科技成果信息鏈結點的指針*/
GtkTreelteriter;/*treeview中對應treeiter*/
}DEPT_NODE;
中文字段名類型及長度變量名舉例
單位編號char[8]43007401
number
單位名稱char[30]nameHuazhong_university_of_sci&tech
負責人char[20]PICLi_peigeng
2.科技成果信息鏈結點結構(ACHS_NODE)及用法
typedefstructachs_node
charnumber[12];/*成果編號*/
charname[50];/*成果名稱*/
charfield[20];/*所屬技術領域*/
charfirst_dept_name[30];/*第一完成單位*/
charfirst_dept_number[8];/*第一完成單位編號*/
charfirst_member_name[20];/*第一完成人*/
charaward_name[30];/*獲獎名稱*/
2
C語言課程設計實驗報告
charaward_level[10];/*獲獎檔次*/
charaward_grade[10];/*獲獎等級*/
structarhs_node*next;/*指向下一節點*/
structmember_node*members;/*指向完成人員信息結點的指*/
GtkTreelteriter;/*treeview中對應treeiter*/
}ACHS_NODE;
中文字段名類型及長度變量名舉例
成果編號char[12]200703150001
numbe
成果名稱char[40]The_method_of_study
name
所屬技術領域char[20]computer
field
第一完成單位char[30]Huazhong_university_of
first_dept_name_sci&tech
第一完成單位43007401
編號first_dept_first_dept_number
number
第一完成人char[20]Lu_zhengding
first_member_nam
e
獲獎名稱char[30]Naturalscience_of_hub
award_nameie_province
獲獎檔次char[10]province/*省級*/
award_level
獲獎等級int1/*一等獎*/
award_grade
3.完成人員信息鏈結點結構(MEMBER_NODE)及用法
typedefstructmember_node
3
C語言課程設計實驗報告
charnumber[18];/*身份證號*/
charname[20];/*姓名*/
chardept_name[30];/*工作單位*/
charsex[4];/*性別*/
intage;/*年齡*/
chartitle[15];/*職稱*/
intrank;/*成果排名*/
charachs_name[40];/*所屬成果名稱*/
structmember_node*next;/*指向下一個結點*/
GtkTreelteriter;/*treeview中對應treeiter*/
}MEMBER_NODE;
中文字段名類型及長度舉例
姓名char[20]Luzhengding
number
身份證號char[18/p>
name
工作單位char[30]Iluazhong_university_of_sci&tech
dept_name
性別charm
sex
年齡int60
age
職稱char[15]professor
title
成果排名int1
rank
2
C語言課程設計實驗報告
所屬成果名稱char[40]The_method_of_study
achs_name
4.三方向的十字交叉鏈表結構
5.登陸窗體控件結構體(wgt)及用法
structlogin_widget
(
GtkWidget*window;〃主窗體
GtkWidget*label_tips;〃用于信息提示的標簽
GtkWidget*button」ogin;〃兩個按鈕,一個點擊后登錄,…個點擊后退出
GtkWidget*button_exit;
GtkWidget*entry_username;〃兩個文本框,用于輸入用戶名和密碼
GtkWidget*entry_pwd;
GtkWidget*label_username;〃兩個標簽用于顯示username文本框和
password文本框提示
3
C語言課程設計實驗報告
GtkWidget*label_pwd;
GtkWidget*vbox;〃垂直布局盒子,包含以下三個水平布局盒子
GtkWidget*hbox_username;〃包含用戶名提示標簽和用戶名文本框,下
面的HBOX作用類似
GtkWidget*hbox_pwd;
GtkWidget*hbox_button;
}wgt;
說明:將登陸窗體相關控件獨立成一個結構體
6.指向3種節點的指針聯合及用法
typedefunionnodep
{
structdept_node*dept;
structachs_node*achs;
structmember_node*member;
}nodep;
說明:用于3種結構都會用到但不會同時用到的情形
7.兩個傳遞參數的結構及其用法
structnodecreate
4
C語言課程設計實驗報告
GtkWidget*window;
GtkWidget*entry[9];
nodepunp;
inttype;
);
structqueryjudge
{
GtkWidget*entry;
intflag;
);
說明:GTK信號連接g_signal_connected將函數與信號鏈接后之內傳遞一個參
數給函數,所以定義這兩個結構分別將幾個參數結合在一起傳遞
三、程序結構
1.主程序運行流程
C語言課程設計實驗報告
6
C語言課程設計實驗報告
7
C語言課程設計實驗報告
3.添加流程
試用殛
entry_info?^
根據type生成
對應的輸入框
點擊確定
-Add_nodegiiz-
傳遞的參數struct
nodecreate
包含了entry三的text
和type
根捏type與態分犯相
試
括入關
敗調目相應的insert函數
將pNew鏈在相它位置
在梃狀列表里添加相
應選項
8
C語言課程設計實驗報告
4.單位查詢流程
9
C語言課程設計實驗報告
5.統計50歲以下第一完成人流程
10
C語言課程設計實驗報告
四、函數原型及功能
(所有GtkWidget*button參數均為與消息鏈接用)
1.登陸模塊
〃功能:登錄框初始化函數
〃輸入參數:
〃返回值:無
voidinit_login_widget()
〃功能:登錄驗證函數,點擊login按鈕時調用
〃輸入參數:
〃返回值:無
voidlogin(GtkWidget*widget,gpointerdata)
2.圖形界面模塊
/**初始化部分變量,再依次調用各函數初始化界面各部分*/
intmain(intargc,char*argv口)
/**初始化菜單欄*/
voidinit_menubar(GtkWidget*menubar)
/**初始化目錄*/
voidcreate_view_and_model(void)
/**初始化顯示欄*/
voidinit_show(GtkWidget*list)
/**改變狀態欄及顯示欄*/
voidon_changed(GtkWidget*widget,gpointerstatusbar)
11
C語言課程設計實驗報告
〃功能:將選中的節點信息在顯示欄中顯示出來
〃輸入參數:iter
〃返回值:無
intShow_Node(GtkTreeIteriter)〃值傳遞不影響selectediter
/**對應3個節點顯示的3個函數,返回對應GtkListStore*/
GtkListStore*Show_Dept(char*name);
GtkListStore*Show_Achs(char*name,char*P_name);
GtkListStore*Show_Member(char*name,char*P_name,char*PP_name);
3.文件模塊
〃功能:讀取數據文件
〃輸入參數:
〃返回值:re的二進制前3位記錄了三個數據文件是否成功打開,1為成功
intLoadData(GtkWidget*button)
〃功能:讀取數據文件中數據到鏈表中
〃輸入參數:phead單位節點頭指針的地址
〃返回值:re的二進制前3位記錄了三個數據文件是否成功打開,1為成功
intLoadList(DEPT_NODE**phead)
〃功能:將鏈表中節點添加到左側樹狀列表中
〃輸入參數:
〃返回值:
voidrebuildtreeQ
12
C語言課程設計實驗報告
〃功能:存儲數據文件
〃輸入參數:
〃返回值:flag的二進制前3位記錄了三個數據文件是否成功打開,1為成功
intSaveData(GtkWidget*button)
〃功能:將鏈表中數據存儲在數據文件中
〃輸入參數:phead單位節點頭指針
〃返回值:flag的二進制前3位記錄了三個數據文件是否成功打開,1為成功
intSaveList(DEPT_NODE*phead)
〃功能:推出前提示保存
〃輸入參數:
〃返回值:
voidquit_save(GtkWidget*button)
4.查詢模塊
〃功能:根據type彈出一個查詢框,再分別調用對應的Query函數
〃輸入參數:type對應枚舉的幾種類型
〃返回值:無
voidQuery_info(GtkWidget*button,inttype)
〃功能:查詢學院
〃輸入參數:in包含iter和名稱的結構
〃返回值:無
voidQuery_Dept(GtkWidget*button,structqueryJudge*in)
〃功能:根據type彈出一個查詢框,再分別調用對應的Query函數
〃輸入參數:type對應枚舉的幾種類型
〃返回值:無
voidQuery_info(GtkWidget*button,inttype)
〃功能:查詢完成人員
〃輸入參數:in包含iter和名稱的結構
〃返回值:無
voidQuery_Member(GtkWidget*button,structqueryjudge*in)
13
C語言課程設計實驗報告
〃功能:展開并跳轉至指定iter
〃輸入參數:itertreeview中的一個目標iter
〃返回值:無
voidexpand_select(GtkTreeIteriter)
〃功能:按.稱搜索單位
〃輸入參數:D_name單位名稱
〃返回值:單位節點指針
DEPT_NODE*DEPT_search(char*D_name)
〃功能:按名稱搜索癡技成果節點
〃輸入參數:A_name科技成果節點名稱,ACHS所在學院頭科技成果節點指針
〃返回值:科技成果節點節點指針
ACHS_NODE*ACHS_search(char*A_name,ACHS_NODE*ACHS)
〃功能:按名稱搜索藕人員節點
〃輸入參數:M_name完成人員節點名稱,ACHS所屬科技成果頭完成人員節點
指針
〃返回值:完成人員節點節點指針
MEMBER_NODE*MEMBER_search(char*M_name,MEMBER_NODE
*MEMBER)
5.添加模塊
〃功能:彈出一個輸入框
〃輸入參數:type對應枚舉的幾種類型
〃返回值:無
voidentry_info(GtkWidget*button,inttype)
〃功能:添加3種節點統一函數,由entry_info確定按鈕調用
〃輸入參數:
〃返回值:無
voidAdd_node(GtkWidget*button,structnodecreate*nodec)
〃功能:屆入科技成果節點函數,由Add_Node中情況3調用
〃輸入參數:pNew指向新節點的指針
〃返回值:對應單位節點指針
DEPT_NODE*insert_ACHS(ACHS_NODE*pNew)
〃功能:插入完成人員節點函數,由Add_Node中情況4調用
〃輸入參數:pNew指向新節點的指針
〃返回值:對應科技成果節點指針
ACHS_NODE*insert_MEMBER(MEMBER_NODE*pNew)
6.刪除模塊
〃功能:刪除3種節點統一函數,由“刪除”按鈕調用
〃輸入參數:
〃返回值:無
voidDel_Node(GtkWidget*button)
14
C語言課程設計實驗報告
〃功能:刪除單位節點,由Del_Node函數case2調用
〃輸入參數:name單位名稱
〃返回值:int1為有錯,0為正常
intDel_Dept(char*name)
〃功能:刪除科技成果
節點,由Del_Node函數case2調用
〃輸入參數:name科技成果名稱,P_name對應單位名稱
〃返回值:int1為有錯,0為正常
intDel_Achs(char*name,char*P_name)
〃功能:刪除完成人員節點,由Del_Node函數case4調用
〃輸入參數:name完成人員名稱,P_name對應科技成果名稱,PP_name對應
單位名稱
〃返回值:inti為有錯,0為正常
intDel_Member(char*name,char*P_name,char*PP_name)
7.編輯模塊
〃功能:彈出…個編輯框
〃輸入參數:
〃返回值:無
intEdit_info(GtkWidget"button)
〃功能:編輯節點
〃輸入參數:
〃返回值:無
voidEdit_Node(GtkWidget*button,structnodecreate*nodec)
8.統計模塊
〃功能:彈出一個統計框,由傳入參數設置具體內容
〃輸入參數:title統計框標題,coll第一列標題,col2第二列標題,in傳入的
model
〃返回值:無
voidStatis_info(char*title,char*coll,char*col2,GtkListStore*in)
〃功能:家計各單位科技成果數量,調用Statis_info顯示統計結果
〃輸入參數:
〃返回值:無
voidstatis_funcl(GtkWidget*button)
〃功能:條計各單位完成人員成果排名,調用Statis_info顯示統計結果
〃輸入參數:
〃返回值:無
voidstatis_func2(GtkWidget"button)
〃功能:.計所有50歲以下第一完成人,調用Statis_info顯示統計結果
〃輸入參數:
〃返回值:無
voidstatis_func3(GtkWidget*button)
15
C語言課程設計實驗報告
9.幫助模塊
〃功能:彈出軟件信息及作者信息
〃輸入參數:
〃返回值:無
voidhelp_about(GtkWidget:}Jbutton)
五、試驗結果
編譯環境:Ubuntulinux64位
MingwGcc
(源代碼配置好后可跨平臺編譯)
GTK版本:GTK+2.41
開發IDE:Codeblocks12.11
1.系統登陸
輸對自動進入
輸錯顯示錯誤
16
C語言課程設計實驗報告
2.登陸成功進入主界面
3.全屏模式
17
C語言課程設計實驗報告
■:■令-20:561ZHU
瑁目內B
史憎江號:044如
??:91江
工作81位:什?機學S?
性例;
網格碳0代科舅
外布式15退座管序樂比SK:4S
取樣:MHI
成■排菖:4
分布式故挺第蛻
學年所■成事2梅IfettH
▼目叨化學除
*幾5!俵理優化網一
?美aiiaiis融東統的X性沖恬
▼磯H孚蹂
?多足》打機0人道動投朝
0W
張江
4.讀取數據
Systen文件”SD合N傕計ffiK20:071ZHU
BuildtargetDcbuo
:init_meftubar(ctkwidget,menubar):void
?ch>Ml;hXXm/.L,,,「?.,.X;O、XU"”、出:1八」。:,QWDZC.X":,;;cXhclp.cx
Projectt
Symbols118
▼QWorkspace119
126
,,MIS_GTK121
?t?Sources122
123
?Headers124
125
126
127
128
IM
130
m
132
133
134
135
13?
137
13?
139
140
141
142
一時3,
⑻,
Fll?
is>?e*'0、6tWA?力?a卡?BMH,b?gett.■ewunnIQURX1
,g〃UKlg,Qllk.MARU->WSS'?MlMrr'.?K?ma>l'tnt'
/rxxw/rtHVa?/co..)?■?.傳Up>lQn?l<crne?4tAnXStHAiMUaNIIaa
uir-8une120.ColumniimertiRwd/Write'default
(標準gnome菜單欄在最上面)
18
C語言課程設計實驗報告
5.讀取成功
點擊相應節點右側顯示相關信息
6.添加單位
19
C語言課程設計實驗報告
(添加成功提示)
20
C語言課程設計實驗報告
7.添加科技成果
21
C語言課程設計實驗報告
8.添加完成人員
文忤壽加amailwas
m加科按成果
:sut?_hjnc1{CtkWKjQet*button):Z
不加先成人員
?chsMt5.hXsX.XmytibxXXKit.XittMia-cXopeftie.cX
projecrSymbol%
l9
*QWorkspace2e
21fl>_____________________?5
▼,MIS_CTK22
??2?:
?£?Sources23▼ttavivK
24KS
?Headen?水電口含ar更震應是tt
2s工作,位:
2e彭根
27SH:
28?網絡tea需列
29京江
3?含海EW-
3A1成■屜名:
當月
所■成■名悻
3M3▼分鉆式故?年哲理泰彼
35■里
36?UI
37
季東
38對
?自動化*林
48
日sort.dejstru41▼幾51首理優化向■
e(o)42NA?
43
at13IX陽
m?金海\ooo\,關聯MaiftlftJRtt的8《
0]luiwfcoa▼機械學陵
日⑴
-多£3行機R人看6左1
HI*
rw-內網\80\
,一叫mu貴江
mib"―.——-_,
S(2]zr/”>w“,《。aa???Q^nai?a-v?t>iufc*“—一,—>—■>]
S[3]B■?■???riatw*l-anaM-MruMe)
/noK/znu/M/co9AMnlfl?|-wwM-MTMBtel
用⑷
une31.Column1Rea<3/wricedefault
9.添加錯誤返回信息
22
C語言課程設計實驗報告
目錄理目內容
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45594-2025超高性能混凝土非承重構件性能試驗方法
- GB/T 45514-2025紡織品定量化學分析聚芳酯纖維與某些其他纖維的混合物
- 材料能源物理重點基礎知識點
- 電子氣體 六氟化鎢 征求意見稿
- 行政法學多樣化試題及答案分析
- 綠色政策在經濟建設中的重要性試題及答案
- 遏制通貨膨脹政策與經濟增長的互動試題及答案
- 2025年用戶體驗設計試題及答案
- 小學發生大火災應急預案(3篇)
- 網絡監控和維護試題及答案
- 2025年北京市西城區高三一模數學試卷(含答案)
- 鄉村振興戰略相關試題及答案
- 粉筆線上協議班合同
- 2025-2030中國體聲波濾波器行業市場發展趨勢與前景展望戰略研究報告
- 急診護理團隊精神
- 世界環境日主題班會《生物多樣性保護》班會課件
- 智聯網汽車技術 課件 13.9自動緊急制動系統
- 危廢轉運合同范例
- DBJT13-323-2019 土壤固化劑應用技術規程
- 手術患者管路安全管理
- 數字化轉型下的對公客戶業務場景解析
評論
0/150
提交評論