




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华中科技大学计算机科学与技术学院C语言程序设计课程设计实验报告题目: 科研项目信息管理系统 专业: 计算机 班级: 学号: 姓名: 成绩: 指导教师: 李开 完成日期: 2009年 10 月 20 日科研项目信息管理系统一、 系统功能结构模块图二、 数据结构设计及其用法说明typedef struct lakeychar name30;/*团队名称*/int total;/*自然科学基金的科研项目数*/float dudu;/*经费数*/struct lakey *next;*plakey;/*统计3中用到的数据结构*/typedef struct emmeychar name30;/*团队名称*/int teacher;/*老师人数*/int harden;/*项目数*/float bizhi;/*比值*/struct emmey *next;*pemmey;/*统计4中用到的数据结构*/typedef struct kProchar code15;/*项目编号*/charsort;/*项目种类*/int aking1;chartime8;/*项目时间*/floatdudu;/*项目经费*/int aking2;charbeiler15;/*负责人*/int aking3;charkeynoName30;/*所在团队名称*/struct kPro *next;harden,*pHarden;typedef struct Komoint teacher;/*老师人数*/char name20;/*院系名称*/int student;/*学生人数*/float bizhi;/*二者比值*/struct Komo *next;*pKomo;/*统计1中用到的数据结构,统计结果放在这个数据结构中*/typedef struct kTeachar name30;/*团队名称*/char beiler15;/*负责人*/int stuNum;/*学生人数*/int aking2;int coco;/*老师人数*/char colName20;/*所在院系的名称*/int aking1;struct kTea*next;pHardenchild;keyno,*pKeyno;typedef struct edwardchar name20;/*院系名称*/int totalnum;/*项目总数*/int num973;/*973项目数*/int num863;/*863项目数*/float amount;/*经费数*/struct edward *next;*pedward;/*统计2中用到的数据结构*/typedef struct kColchar name20;/*院系名称*/int aking;char beiler15;/*院系负责人*/structkCol*next;char call15;/*负责人电话号码*/pKeynochild;kekey,*pKekey;三、 程序结构MAIN MENUDisplay allSearchTongji院系信息团队信息项目信息按负责人按院系名按团队名按教师人数按项目编号按所属团队录入修改删除院系基本信息科研团队基本信息科研项目基本信息保存输出院系教师及研究生总数院系各类科研项目数及总经费团队国家自然科学基金项目数前10科研项目数和教师人数比前5各院系拥有的团队总数前5按比值降序输出按项目数降序输出按项目数降序输出按比值降序输出团队信息降序输出返回返回 四、 各模块的功能1、 pKekey Charge(pKekey alpha)/*这个函数将文件中的内容写入链表中*/2、 pKekey temption(int aking,int aking1,int aking2,pKekey item1,pKeyno item2,pHarden item3,pKekey alpha,int sort)/*这个函数用于向指定位置(aking)添加指定节点(item),alpha是头结点。sort控制3种添加类型*/3、 pKekey reserv(int aking1,int aking2,int aking3,pKekey alpha,int sort)/*删除指定位置的节点,sort控制删除的类型*/4、 pKekey tab(pKekey alpha)/*这个函数修改文本,使用时先将链表中的对象修改掉,再调用这个函数将文本库中的内容修改掉*/5、 pKekey seamood(char *boss,char *name,pKekey alphaer,pKekey result,int sort)/*查询,sort为1表示利用院系负责人来查询,输入:char *boss,pKekey alphaer,pKekey result,int sort,sort为2表示用院系名的一部分来查询,输入:char *name,pKekey alphaer,pKekey result,int sort*/6、 pKeyno foward (char *name,int num,pKekey alphaer,pKeyno result,int sort)/*查询,sort为1表示利用团队名称查询,输入:char *name,pKekey alphaer,pKeyno result,int sort,sort为2表示利用教师人数查询,输入:nt num,pKekey alphaer,pKeyno result,int sort*/7、 pHarden codyssed (char *code,pKekey alphaer,pHarden result,int sort)/*查询,sort 为1表示由序列号查,此时code表示序列号,sort为2表示由名字来查,此时code表示名字*/8、 void awesome(pKekey alpha,pKomo *result1,pedward *result2,plakey *result3,pemmey *result4,char *year,int sort)/*统计:sort取1,2,3,4时分别按课设是上的要求统计,其中year在2时输入*/五、 试验结果1、 主菜单页面2、 数据处理之输入3、 查询功能4、 统计功能六、 体会这是我第一次做这么大型的且比较复杂的一个C程序,从暑假开始边看书边慢慢尝试到如今全部做出来花费了许多时间与精力。以前接触到的C程序设计都是最简单、最基本的编程,就连最后的期末考试也只是一些小程序,并不像课程设计这样庞大复杂。小程序是考察我们对基本概念的熟识,而这种大程序则是考察了我们对整体构架的设计以及各种小程序的拼接,看似不难,实则会遇到许多意想不到的困难,当然,这过程当中我学到了许多。刚开始接到任务书的时候我感到无从下手,知道应该注重链表但是仍旧无法从整体上设计出这个程序,后来经过网上的搜索资料以及和其他同学的讨论,对这个科研项目信息管理系统进行一些列分块,拆成几个部分,然后再逐个突破,这样显得有条理且方便。接下来是真正开始动手写程序,随之而来的是一些列的问题,其中最困扰我的是十字链表,过去我们使用的一般是单向链表,虽然在此基础上建立十字链表并不困难,但是如何保存则成了一个难题,后来经过对书本的钻研解决了次问题,从中我更加了解各种文件操作函数的用法。在所有内核做好之后,接下来就是界面的问题,最开始的时候我考虑做图形界面,但是由于时间比较紧迫,不得不放弃,只好做了一个简易菜单,菜单设计容易,可是将界面和程序内核结合起来却又是一个难题。最后将这些函数和文件组合在一起后,终于形成了一个完整的可以运行的系统。由于我只是C语言初学者,虽然啃过书本,但是仍能力有限,所以界面不够漂亮,有些功能也不够完善,但是我能够做出一个可以正确运行的科研项目信息管理系统已是很有成就感,尽管它不完善。这次课程设计,巩固了我的C语言的知识,锻炼了我的动手能力,让我在这一方面有了进一步的提升。其实,让我感触最深刻的是,学好C语言,不仅仅在于啃光书本上的知识,考试能得高分,最重要的是实践!俗语云:实践出真知。只有动手了才会更快发现自己的错误,以便于及时改正,才能更快的提升自己的能力,纸上谈兵终究只是一段段空话,毫无实际意义!当然,不仅仅是在学习这一门语言方面有了认知,在其他方面也有了一些认识,最大的收获是写课设让我更加细心,我往往由于一个符号的错误导致程序无法运行,所以,注重细节是非常重要的。最后,我觉得,其实C语言和其他中文、英语、日语等语言一样,虽然是由一些枯燥的字母字符组成,但是经过我们人为的设计排列,可以组成精美的东西,就像各国都有文学名作一样,C语言亦可以写出庞大复杂实用的程序系统,便于大家使用!七、 参考文献C语言程序设计 李开 曹计昌 卢萍 著 科学出版社C语言程序设计(第二版) 谭浩强 著 清华大学出版社附录#include string.h#include stdio.h#include stdlib.h#include conio.htypedef struct kNodchar c;struct kNod *next;kame,*pKame;/*辅助性数据结构*/typedef struct lakeychar name30;/*团队名称*/int total;/*自然科学基金的科研项目数*/float dudu;/*经费数*/struct lakey *next;*plakey;/*统计3中用到的数据结构*/typedef struct emmeychar name30;/*团队名称*/int teacher;/*老师人数*/int harden;/*项目数*/float bizhi;/*比值*/struct emmey *next;*pemmey;/*统计4中用到的数据结构*/typedef struct kProchar code15;/*项目编号*/charsort;/*项目种类*/int aking1;chartime8;/*项目时间*/floatdudu;/*项目经费*/int aking2;charbeiler15;/*负责人*/int aking3;charkeynoName30;/*所在团队名称*/struct kPro *next;harden,*pHarden;typedef struct Komoint teacher;/*老师人数*/char name20;/*院系名称*/int student;/*学生人数*/float bizhi;/*二者比值*/struct Komo *next;*pKomo;/*统计1中用到的数据结构,统计结果放在这个数据结构中*/typedef struct kTeachar name30;/*团队名称*/char beiler15;/*负责人*/int stuNum;/*学生人数*/int aking2;int coco;/*老师人数*/char colName20;/*所在院系的名称*/int aking1;struct kTea*next;pHardenchild;keyno,*pKeyno;typedef struct edwardchar name20;/*院系名称*/int totalnum;/*项目总数*/int num973;/*973项目数*/int num863;/*863项目数*/float amount;/*经费数*/struct edward *next;*pedward;/*统计2中用到的数据结构*/typedef struct kColchar name20;/*院系名称*/int aking;char beiler15;/*院系负责人*/structkCol*next;char call15;/*负责人电话号码*/pKeynochild;kekey,*pKekey;FILE* orgive(FILE *in,pKekey pointer1,pKeyno pointer2,pHarden pointer3,int sort)int c,i=0;if(sort=1)while(c=fgetc(in)!=;)pointer1-namei=c;i+;for(;inamei=0;i=0;while(c=fgetc(in)!=;)pointer1-beileri=c;i+;for(;ibeileri=0;i=0;while(c=fgetc(in)!=;)pointer1-calli=c;i+;for(;icalli=0;else if(sort=2)while(c=fgetc(in)!=;)pointer2-namei=c;i+;for(;inamei=0;i=0;while(c=fgetc(in)!=;)pointer2-beileri=c;i+;for(;ibeileri=0;i=0;pointer2-coco=0;c=fgetc(in);while(c!=;&c!=-)pointer2-coco=pointer2-coco*10+c-0;c=fgetc(in);if(c=-)fgetc(in);fgetc(in);pointer2-coco=-1;pointer2-stuNum=0;c=fgetc(in);while(c!=;&c!=-)pointer2-stuNum=pointer2-stuNum*10+c-0;c=fgetc(in);if(c=-)fgetc(in);fgetc(in);pointer2-stuNum=-1;while(c=fgetc(in)!=;)pointer2-colNamei=c;i+;for(;icolNamei=0;else if(sort=3)while(c=fgetc(in)!=;)pointer3-codei=c;i+;for(;icodei=0;pointer3-sort=fgetc(in);fgetc(in);i=0;while(c=fgetc(in)!=;)pointer3-timei=c;i+;for(;itimei=0;int k=-1;c=fgetc(in);i=0;pointer3-dudu=0;if(c!=-)while(c!=;)if(c!=.)pointer3-dudu=pointer3-dudu*10+c-0;elsei=1;if(i)k+;c=fgetc(in);while(k&i)pointer3-dudu/=10;k-;elsepointer3-dudu=-1;fgetc(in);fgetc(in);fgetc(in);fgetc(in);i=0;while(c=fgetc(in)!=;)pointer3-beileri=c;i+;for(;ibeileri=0;i=0;while(c=fgetc(in)!=;)pointer3-keynoNamei=c;i+;for(;ikeynoNamei=0;return in;pKekey Charge(pKekey alpha)/*将文件中的内容写入链表中*/int position3=0,0,0;int input;pKekey colCurrent,colPre;FILE *in=fopen(py.txt,r);if(in=NULL)printf(Open Error!);getchar();exit(-1);alpha=NULL;fgetc(in);while(input=fgetc(in)!=)pKeyno teaCurrent,teaPre;colCurrent=(pKekey)malloc(sizeof(struct kCol);colCurrent-next=NULL;colCurrent-child=NULL;if(position0=0)alpha=colCurrent;elsecolPre-next=colCurrent;position0+;in=orgive(in,colCurrent,NULL,NULL,1);colCurrent-aking=position0;position1=0;while(input=fgetc(in)!=)pHarden proCurrent,proPre;teaCurrent=(pKeyno)malloc(sizeof(struct kTea);teaCurrent-next=NULL;teaCurrent-child=NULL;in=orgive(in,NULL,teaCurrent,NULL,2);if(position1=0)colCurrent-child=teaCurrent;elseteaPre-next=teaCurrent;position1+;teaCurrent-aking1=colCurrent-aking;teaCurrent-aking2=position1;position2=0;while(input=fgetc(in)!=)proCurrent=(pHarden)malloc(sizeof(struct kPro);proCurrent-next=NULL;in=orgive(in,NULL,NULL,proCurrent,3);if(position2=0)teaCurrent-child=proCurrent;elseproPre-next=proCurrent;position2+;proCurrent-aking1=colCurrent-aking;proCurrent-aking2=teaCurrent-aking2;proCurrent-aking3=position2;proPre=proCurrent;fgetc(in);teaPre=teaCurrent;colPre=colCurrent;fclose(in);return alpha;pKekey temption(int aking,int aking1,int aking2,pKekey item1,pKeyno item2,pHarden item3,pKekey alpha,int sort)/*这个函数用于向指定位置(aking)添加指定节点(item),alpha是头结点。sort控制3种添加类型*/FILE *in;if(sort=1)pKame cody,alphaer,annie;int num=1;pKekey anniefir=alpha;alphaer=(pKame)malloc(sizeof(struct kNod);annie=alphaer;if(in=fopen(py.txt,r)=NULL)printf(Open error!);getchar();exit(-1);annie-c=fgetc(in);annie-next=(pKame)malloc(sizeof(struct kNod);annie=annie-next;if(annie-c=fgetc(in)=)while(annie-c!=)annie-next=(pKame)malloc(sizeof(struct kNod);annie=annie-next;if(annie-c=fgetc(in)=)anniefir=anniefir-next;char str60;int i;sprintf(str,%s;%s;%s;,item1-name,item1-beiler,item1-call);for(i=0;stri;i+)annie-c=stri;annie-next=(pKame)malloc(sizeof(struct kNod);annie=annie-next;annie-c=);fclose(in);annie=alphaer;if(in=fopen(py.txt,w)=NULL)printf(Open error!);getchar();exit(-1);while(annie-c!=)cody=annie;fputc(annie-c,in);annie=annie-next;free(cody);fputc(annie-c,in);free(annie);fclose(in);anniefir-next=item1;item1-aking=anniefir-aking+1;else if(sort=2)int nHelp;pKeyno annieTea;pKame anniedir,alphaer,cody;pKekey annie=alpha;alphaer=(pKame)malloc(sizeof(struct kNod);anniedir=alphaer;nHelp=aking;if(annie=NULL)printf(Wrong Kekey!);getchar();free(alphaer);return alpha;while(nHelp1)annie=annie-next;nHelp-;if(annie=NULL)printf(Wrong Kekey!);getchar();free(alphaer);return alpha;sprintf(item2-colName , annie-name);annieTea=annie-child;nHelp=aking;in=fopen(py.txt,r);if(in=NULL)printf(Open Error!);getchar();exit(-1);while(nHelp0)if(anniedir-c=fgetc(in)=)nHelp-;anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;int k=0;while(anniedir-c=fgetc(in)!=)if(anniedir-c=&k)k=1;annieTea=annieTea-next;anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;char str85;char strTeach4;char strStu5;int i;sprintf(str,%s;%s;%s;%s;%s;,item2-name,item2-beiler,itoa(item2-coco,strTeach,10),itoa(item2-stuNum,strStu,10),item2-colName);for(i=0;stri;i+)anniedir-c=stri;anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;anniedir-c=;anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;while(anniedir-c=fgetc(in)!=)anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;fclose(in);anniedir=alphaer;if(in=fopen(py.txt,w)=NULL)printf(Open error!);getchar();exit(-1);while(anniedir-c!=)cody=anniedir;fputc(anniedir-c,in);anniedir=anniedir-next;free(cody);fputc(anniedir-c,in);free(anniedir);fclose(in);if(annieTea=NULL)annie-child=item2;item2-aking1=annie-aking;item2-aking2=1;elseannieTea-next=item2;item2-aking1=annieTea-aking1;item2-aking2=annieTea-aking2+1;else if(sort=3)int nHelpx,nHelpy;pKeyno annieTea;pKame anniedir,alphaer,cody;pHarden anniePro;pKekey annie=alpha;annieTea=(pKeyno)annie-child;alphaer=(pKame)malloc(sizeof(struct kNod);anniedir=alphaer;nHelpx=aking1;while(nHelpx1)annie=annie-next;nHelpx-;if(annie=NULL)printf(Wrong Kekey!);getchar();free(alphaer);return alpha;nHelpy=aking2;annieTea=annie-child;if(annieTea=NULL)printf(Wrong Keyno!);free(alphaer);return alpha;while(nHelpy1)annieTea=annieTea-next;nHelpy-;if(annieTea=NULL)printf(Wrong Keyno!);free(alphaer);return alpha;nHelpx=aking1;in=fopen(py.txt,r);if(in=NULL)printf(Open Error!);getchar();exit(-1);while(nHelpx0)if(anniedir-c=fgetc(in)=)nHelpx-;anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;nHelpy=aking2;while(nHelpy0)if(anniedir-c=fgetc(in)=)nHelpy-;anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;sprintf(item3-keynoName , annieTea-name );anniePro=annieTea-child;int k=0;while(anniedir-c=fgetc(in)!=)if(anniedir-c=next;anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;char str90;char strOut11;int i;sprintf(str,item3-code,item3-sort,item3-time,strcat(gcvt(item3-dudu,7,strOut),0),item3-beiler,item3-keynoName);for(i=0;stri;i+)anniedir-c=stri;anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;anniedir-c=;anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;while(anniedir-c=fgetc(in)!=)anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;fclose(in);anniedir=alphaer;if(in=fopen(py.txt,w)=NULL)printf(Open error!);getchar();exit(-1);while(anniedir-c!=)cody=anniedir;fputc(anniedir-c,in);anniedir=anniedir-next;free(cody);fputc(anniedir-c,in);free(anniedir);fclose(in);if(anniePro=NULL)annieTea-child=item3;item3-aking1=annieTea-aking1;item3-aking2=annieTea-aking2;item3-aking3=1;elseanniePro-next=item3;item3-aking1=anniePro-aking1;item3-aking2=anniePro-aking2;item3-aking3=anniePro-aking3+1;return alpha;pKekey reserv(int aking1,int aking2,int aking3,pKekey alpha,int sort)/*删除指定位置的节点,sort控制删除的类型*/FILE *in;if(sort=1)int nHelp;pKeyno annieTea,codyTea;pHarden anniePro,codyPro;pKame anniedir,alphaer,codydir;pKekey cody,annie=alpha;cody=NULL;alphaer=(pKame)malloc(sizeof(struct kNod);anniedir=alphaer;nHelp=aking1;if(annie=NULL)printf(Wrong Kekey!);getchar();free(alphaer);return alpha;while(nHelp1)cody=annie;annie=annie-next;nHelp-;if(annie=NULL)printf(Wrong Kekey!);getchar();free(alphaer);return alpha;codyTea=annie-child;annie-child=NULL;while(codyTea)codyPro=codyTea-child;codyTea-child=NULL;while(codyPro)anniePro=codyPro-next;free(codyPro);codyPro=anniePro;annieTea=codyTea-next;free(codyTea);codyTea=annieTea;if(cody=NULL)alpha=annie-next;nHelp=1;elsecody-next=annie-next;nHelp=cody-aking+1;free(annie);annie=cody-next;while(annie)annie-aking-;annie=annie-next;if(in=fopen(py.txt,r)=NULL)printf(Open error!);getchar();exit(-1);while(anniedir-c=fgetc(in)!=)if(anniedir-c=)nHelp-;if(nHelp!=0)anniedir-next=(pKame)malloc(sizeof(struct kNod);anniedir=anniedir-next;fclose(in);if(in=fopen(py.txt,w)=NULL)printf(Open error!);getchar();exit(-1);codydir=alphaer;anniedir=codydir-next;while(codydir-c!=)fputc(codydir-c,in);free(codydir);codydir=anniedir;anniedir=codydir-next;fputc(codydir-c,in);free(codydir);fclose(in);else if(sort=2)int nHelpx,nHelpy;pKeyno annieTea,codyTea;pHarden anniePro,codyPro;pKame anniedir,alphaer,codydir;pKekey annie=alpha;alphaer=(pKame)malloc(sizeof(struct kNod);anniedir=alphaer;nHelpx=aking1;if(annie=NULL)printf(Wrong Kekey!);getchar();free(alphaer);return alpha;while(nHelpx1)annie=annie-next;nHelpx-;if(annie=NULL)printf(Wrong Kekey!);getchar();free(alphaer);ret
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46024-2025色漆和清漆用流出杯测定流出时间
- GB/T 45856-2025真空技术真空计皮拉尼真空计的规范、校准和测量不确定度
- GB/T 45895-2025麻醉和呼吸设备医用气体不可互换螺纹(NIST)低压接头的尺寸
- 森林防火知识培训必要性
- 森林火灾知识培训内容
- 森林法基础知识培训课件
- 幼儿园培训教学课件
- 2025年老年护理专业招聘考试预测题
- 风湿疾病试题及答案
- 2025健康照护技师考试题库及答
- 《亚低温冬眠治疗》课件
- 2025年山西中阳钢铁有限公司招聘笔试参考题库含答案解析
- 2025年四川攀枝花钒钛高新国有资本投资运营有限公司招聘笔试参考题库附带答案详解
- (新版)电信网上大学智能云服务交付工程师认证考试题库-上(单选题)
- 《化工安全技术》教学设计(教学教案)
- 物理-湖北省2024年秋季鄂东南联盟学校高一年级期中联考试题和答案
- 10kV小区供配电设计、采购、施工EPC 投标方案(技术方案)
- 工业互联网边缘计算
- 劳动防护用品检查方案2
- 《论语十二章》挖空练习及答案
- 2024年福建省托育服务职业技能竞赛理论考试题库(含答案)
评论
0/150
提交评论