C语言课程设计-科技成果信息管理系统.doc_第1页
C语言课程设计-科技成果信息管理系统.doc_第2页
C语言课程设计-科技成果信息管理系统.doc_第3页
C语言课程设计-科技成果信息管理系统.doc_第4页
C语言课程设计-科技成果信息管理系统.doc_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计课设华中科技大学计算机科学与技术学院C语言程序设计课程设计基础部分实验报告题目: 科技成果信息管理系统 专业: 计算机科学与技术 班级: CS1206班 学号: 姓名: 成绩: 指导教师: 2013年10月19日目录: 一系统结构功能设计-3 1系统主要模快-3 2文件-3 3数据维护-4 4数据查询-4 5数据统计-5 6帮助-5 二数据结构-5 三程序结构-7 1程序总结构-7 2修改信息流程-7 四功能函数原型及功能-8 五实验结果-12 1主界面-12 2新建信息-13 3修改信息-15 4查询信息-17 6数据统计-19 六实验总结-21 七源程序-22 一 系统结构功能设计1 系统主要模块科技成果信息管理系统文件数据的查询数据的统计 帮助信息数据的维护2 文件 文件 新建单位信息新建完成人员信息新建科技成果信息退出系统文件:直接打开文件夹下的“data.txt”,新建三类结点,直接保存,退出系统。3 数据维护数据维护删除科技成果信息 删除完成人员信息修改科技成果信息修改完成人员信息 删除单位信息 修改单位信息数据维护:三类结点的修改和删除,自动保存,选择相应功能,输入编号进行操作。 4 数据查询数据查询查询完成人员信息查询单位信息查询科技成果信息数据查询:选择相应功能,输入对应编号查询,输出对应信息数据统计5 数据统计年龄小于60岁的第一完成人统计某一单位科技成果数量按科技成果数量高低输出女完成人信息数据统计:输出选中的统计信息6 帮助信息帮助信息帮助主题关于帮助信息:帮助主题为快捷键设置信息,关于为制作者信息 二 数据结构null单位2完成人nnull完成人1单位n单位1head .成果1 .成果n .null .3个strust:Department:Char id9单位编号Char name41单位名称char principal21负责人char tel21电话Achievement *achievements科技成果链表struct Department *next指向下一个单位的结点Achievement:char id13成果编号char name41成果名称char area21所属技术领域char first_depart41第一完成单位 char first_people21第一完成人People *peoples完成人链表char award_name31获奖名称char award_level11获奖档次int award_rank获奖等级struct Achievement *next指向下一个成果的结点People:char name21姓名char id19身份证号char depart41工作单位char gender2性别int age年龄char title16职称int rank成果排名struct People *next指向下一个人员的结点 三 程序结构1 程序总结构 开始加载文件,构建列表 Main()修改信息新建人员信息新建单位信息帮助信息新建成果信息删除信息统计成果信息统计人员信息关闭界面选中退出 退出2 修改信息流程 开始选择相应修改信息显示对应数据信息按顺序修改相应信息 结束 四 功能函数原型及功能void update_int(char *p, int *i) ;功能:修改一个整数参数:p:修改处信息字符串指针 i:修改的整数的指针返回值:voidvoid update_string(char *p, char *str) ;功能:修改一个字符串参数:p:修改处信息字符串指针 i:修改的字符串的指针返回值:voidvoid input_string(char *p, char *str) ;功能:输入一个字符串参数:p:对应输出字符串指针 str:输入的字符串指针返回值:voidvoid input_int(char *p, int *i) ;功能:输入一个整数参数:p:对应输出字符串指针 str:输入的指针整数返回值:voidDepartment *create_department() ;功能:创建单位信息结点参数:void返回值:创建的Department结构指针Achievement *create_achievement() ;功能:创建科技成果信息结点参数:void返回值:创建的Achievement结构指针People *create_people() ;/* 创建人员 */功能:创建完成人员信息结点参数:void返回值:创建的People结构指针People *find_people(People *peoples, char *id) ;功能:根据身份证号查找人员参数:people:People结构头指针 id:输入编号的指针返回值:People结构指针Achievement *find_achievement(Achievement *achievement, char *id) ;功能:根据编号查找科技成果参数:achievement:Achievement结构头指针 id:输入编号的指针返回值:Achievement结构指针Department *find_department(Department *department, char *id) ;功能:根据编号查找单位参数:department:Department结构头指针 id:输入编号的指针返回值:Department结构指针void add_people(Department *department) ;功能:新建完成人员参数:department:Department结构指针 返回值:voidvoid add_achievement(Department *department) ;功能:新建科技成果参数:department:Department结构指针 返回值:voidDepartment *add_department(Department *department) ;功能:新建单位参数:department:Department结构指针 返回值:voidPeople *choose_people(Achievement *a) ;功能:选择一个完成人员参数:a:Achievement结构指针 返回值:选中的People结构头指针Achievement *choose_achievement(Department *d) ;功能:选择一个科技成果参数:d:Department结构指针 返回值:选中的Achievement结构头指针Department *choose_department(Department *departments) ;功能:选择一个单位参数:departments:Department结构指针 返回值:选中的Departments结构头指针void show_peoples(People *peoples) ; 功能:输出完成人员链表参数:peoples:Peoples结构头指针 返回值:voidvoid show_achievements(Achievement *achievements) ;功能:输出科技成果链表参数:achievement:Achievement结构头指针 返回值:voidvoid show_departments(Department *department) ;功能:输出单位链表参数:department:Department结构头指针 返回值:voidvoid query_people(Department *departments) ;功能:查询某科技成果的所有完成人员参数:department:对应编号的Department结构头指针 返回值:voidvoid query_achievement(Department *departments) ;功能:查询某单位下面的所有科技成果参数:department:对应编号的Department结构头指针 返回值:voidvoid query_department(Department *departments) ;功能:查询单位参数:department:对应编号的Department结构头指针 返回值:voidvoid update_people(Department *departments) ;功能:修改完成人员参数:department:对应编号的Department结构头指针 返回值:voidvoid update_achievement(Department *department) ;功能:修改科技成果参数:department:对应编号的Department结构头指针 返回值:voidvoid update_department(Department *departments) ;功能:修改单位参数:department:对应编号的Department结构头指针 返回值:voidvoid delete_people(Department *department) ; 功能:删除完成人员参数:department:对应编号的Department结构头指针 返回值:voidvoid delete_achievement(Department *departments) ; 功能:删除成果参数:department:对应编号的Department结构头指针 返回值:voidDepartment *delete_department(Department *department) ;功能:删除单位参数:department:对应编号的Department结构头指针 返回值:删除的Department结构指针void female_stat(Department *departments) ; 功能:列出成果中女完成人的基本信息参数:department:Department结构头指针 返回值:voidvoid people_stat(Department *departments) ;功能:列出成果中年龄60岁的第一完成人的基本信息参数:department:Department结构头指针 返回值:voidvoid achievement_stat(Department *departments) ;功能:按照获奖档次(国家级、省级、市级),分别统计某一单位各类档次的科技成果数量参数:department:Department结构头指针 返回值:voidvoid department_stat(Department *departments) ;功能:统计各单位的科技成果数量,从高到低排序后输出参数:department:Department结构头指针 返回值:voidvoid swap_string(char *s1, char *s2) ;功能:交换两个字符串参数:s1,s2:交换的字符串的指针 返回值:voidint achievement_count(Department *dept) ;功能:返回某单位的科技成果数量参数:dept:输入编号的Department结构头指针 返回值:科技成果数量void delete_all(Department *departments) ;功能:删除单位链表参数:departments:输入编号的Department结构头指针 返回值:voidvoid save_to_file(Department *department) ;功能:保存所有数据到文件中参数:departments:输入编号的Department结构头指针 返回值:voidDepartment *load_from_file() ; /* 从文件中读取所有信息 */功能:从文件中读取所有信息参数:void 返回值:链表头指针 五 实验结果1 主界面2 新建信息结点3修改删除信息4 查询信息5数据统计 六 实验体会 最初看到课设题目时,觉得略复杂。因为过去几乎没有做这种课设的经历。而大一下学习c语言,也主要是写些小程序。开始设计十字交叉链表时,我上网找了不少资料,设计挺复杂,包含太多,最后写功能函数时过于复杂,只好删掉一些。功能函数刚开始写的时候,我把需要的一些小功能写成函数,方便调用。函数在main.c不好调试,我把代码发给一位同学,让他帮我把错误指出,他告诉我可以新建一个main.c,编写相应的main函数来调试。我用这个方法,修正了不少错误。程序存在的一个bug,执行“帮助”下的“关于”一小段时间后,程序出现“main.exe已经停止工作”,调试的时候显示有三条课设给的源代码无效,我至今无法修正。这次通过做课设,我熟悉了指针的使用方法,及函数的设计。通过对链表函数的编写,我了解到许多细节方面的东西,课设使我对软件设计有了整体的布局感觉。我相信下次做软件时,可以做的更好。参考文献1. C语言与程序设计 曹计昌,卢萍,李开编著. 电子工业出版社2.C语言实验与课程设计 曹计昌,卢萍, 李开编著. 科学出版社 七源程序Science.h:#include#include#include#include#include#include#include#include#include#include#include#ifndef TYPE_H_INCLUDED#define TYPE_H_INCLUDED#define SCR_ROW 100 /*屏幕行数*/#define SCR_COL 80 /*屏幕列数*/#define FILE_NAME data.txt/* 人员信息节点 */typedef struct People char name21; /* 姓名 */ char id19; /* 身份证号 */ char depart41; /* 工作单位 */ char gender2; /* 性别 */ int age; /* 年龄 */ char title16; /* 职称 */ int rank; /* 成果排名 */ struct People *next; /* 指向下一个人员的结点 */ People;/* 科技成果信息结点 */typedef struct Achievement char id13; /* 成果编号 */ char name41; /* 成果名称 */ char area21; /* 所属技术领域 */ char first_depart41; /* 第一完成单位 */ char first_people21; /* 第一完成人 */ People *peoples; /* 完成人链表 */ char award_name31; /* 获奖名称 */ char award_level11; /* 获奖档次 */ int award_rank; /* 获奖等级 */ struct Achievement *next; /* 指向下一个成果的结点*/ Achievement;/* 单位基本信息结点*/typedef struct Department char id9; /* 单位编号 */ char name41; /* 单位名称 */ char principal21; /* 负责人 */ char tel21; /* 电话 */ Achievement *achievements; /* 科技成果链表 */ struct Department *next; /* 指向下一个单位的结点 */ Department;/*屏幕窗口信息链结点结构*/typedef struct layer_node char LayerNo; /*弹出窗口层数*/ SMALL_RECT rcArea; /*弹出窗口区域坐标*/ CHAR_INFO *pContent; /*弹出窗口区域字符单元原信息存储缓冲区*/ char *pScrAtt; /*弹出窗口区域字符单元原属性值存储缓冲区*/ struct layer_node *next; /*指向下一结点的指针*/ LAYER_NODE;/*标签束结构*/typedef struct label_bundle char *ppLabel; /*标签字符串数组首地址*/ COORD *pLoc; /*标签定位数组首地址*/ int num; /*标签个数*/ LABEL_BUNDLE;/*热区结构*/typedef struct hot_area SMALL_RECT *pArea; /*热区定位数组首地址*/ char *pSort; /*热区类别(按键、文本框、选项框)数组首地址*/ char *pTag; /*热区序号数组首地址*/ int num; /*热区个数*/ HOT_AREA;LAYER_NODE *gp_top_layer=NULL; /*弹出窗口信息链链头*/Project *gp_head=NULL; /*主链头指针*/char *gp_sys_name=科技成果信息管理系统; /*系统名称*/char *gp_stu_info_filename=house.dat; /*房屋基本信息数据文件*/char *gp_academy_info_filename=project.dat; /*楼盘基本信息数据文件*/char *gp_grade_info_filename=build.dat; /*楼栋基本信息数据文件*/ char *ga_main_menu= 文件(F), /*系统主菜单名*/ 数据维护(M), 数据查询(Q), 数据统计(S), 帮助(H), ;char *ga_sub_menu= S新建单位信息, /*系统子菜单名*/ B新建科技成果信息, R新建完成人员信息, , X退出系统, X修改单位信息, H修改科技成果信息, Y修改完成人员信息, , X删除单位信息, B删除科技成果信息, Y删除完成人员信息, , X查询单位信息, B查询科技成果信息, Y查询完成人员信息, , C按科技成果数量高低输出, J统计某一单位科技成果数量, K年龄小于60岁的第一完成人, Y列出所有女完成人的信息, , T帮助主题, A关于本系统, ;Department *departments;int ga_sub_menu_count=5,8,4,5,2; /*个子菜单下菜单的个数*/int gi_sel_menu=1; /*被选中的主菜单项号,初始化为1*/int gi_sel_sub_menu=0; /*被选中的子菜单项号,初始化为0,表示未选中*/CHAR_INFO* gp_buff_menubar_info=NULL; /*存放菜单条屏幕区字符信息的缓冲区*/CHAR_INFO* gp_buff_stateBar_info=NULL; /*存放状态条屏幕区字符信息的缓冲区*/char *gp_scr_att=NULL; /*存放屏幕上字符单元属性值得缓冲区*/char *gp_project_info_code=NULL; /*存放楼盘信息的数据缓冲区*/char *gp_grade_info_code=NULL; /*存放楼栋信息的数据缓冲区*/char *gp_student_info_code=NULL; /*存放房屋信息的数据缓冲区*/char gc_sys_info_state=0; /*用来保存系统状态的字符*/HANDLE gh_std_out; /*标准输出设备句柄*/HANDLE gh_std_in; /*标准输入设备句柄*/void ShowState();int LoadCode(char *filename,char *ppbuffer); /*代码表加载*/int CreatList(); /*数据链表初始化*/void InitInterface(void); /*系统界面初始化*/void ClearScreen(void); /*清屏*/void ShowMenu(void); /*显示菜单栏*/void PopMenu(int num); /*显示下拉菜单*/void PopPrompt(int num); /*显示弹出窗口*/void PopUp(SMALL_RECT*,WORD,LABEL_BUNDLE*,HOT_AREA*); /*弹出窗口屏幕信息维护*/void PopOff(void); /*关闭顶层弹出窗口*/void DrawBox(SMALL_RECT *parea); /*绘制边框*/void LocSubMenu(int num,SMALL_RECT *parea); /*主菜单下拉菜单定位*/void ShowState(void); /*显示状态栏*/void TagMainMenu(int num); /*标记被选中的主菜单项*/void TagSubMenu(int num); /*标记被选中的子菜单项*/int DealConInput(HOT_AREA *phot_area,int *pihot_num); /*控制台输入处理*/void SetHotPoint(HOT_AREA *phot_area,int hot_num); /*设置热区*/void RunSys(); /*系统功能模块的选择和运行*/BOOL ExeFuncation(int main_menu_num,int sub_menu_num); /*功能模块的调用*/void CloseSys(); /*退出系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论