




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华中科技大学计算机科学与技术学院
《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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高级经济师考试试卷及答案详细汇报
- 2025年心理学考研复习试题及答案
- 2025年全国大学英语考试模拟试题及答案
- 2025年初中数学补习班考试题及答案
- 中医执业医师考试复习app:如何选择高效工具
- 中考物理考点冲刺23【热机】(含答案)
- 医疗机构后勤服务流程优化与建筑设施改造合同
- 民宿景区特色民宿租赁及民宿旅游导览服务合同
- 人工智能语音数据标注合作框架协议
- 虚拟现实旅游项目风险评估与投资决策合作协议
- 2025年北京市朝阳区高三二模-政治+答案
- 温州市普通高中2025届高三第三次适应性考试物理试题及答案
- 《光纤激光切割技术》课件
- 10.信息光子技术发展与应用研究报告(2024年)
- 2025年下半年商务部外贸发展事务局第二次招聘8人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年山西杏花村汾酒集团有限责任公司招聘笔试真题
- 《行政法与行政诉讼法》课件各章节内容-第一章 行政法概述
- 浙江2025年浙江省地质院本级及所属部分事业单位招聘笔试历年参考题库附带答案详解
- 2025年广东广州中物储国际货运代理有限公司招聘笔试参考题库含答案解析
- 海外安保面试题及答案
- 危重患者的早期康复
评论
0/150
提交评论