免费预览已结束,剩余23页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2011年C语言程序设计课程设计-大型作业任务书一、题目(1)题目1高校教师捐款信息管理系统(2)题目2书店租书信息管理系统(3)题目3城区古树名木信息管理系统二、选题规定(1) 学号尾数(最后一位)为:1、4、7、0者自动选择题目(1),即:高校教师捐款信息管理系统。(2) 学号尾数为:2、5、8者自动选择题目(2),即:书店租书信息管理系统。(3) 学号尾数为:3、6、9者自动选择题目(3),即:城区古树名木信息管理系统。三、需要处理的基础数据(一)高校教师捐款信息管理系统院系基本信息参考:中文字段名类型及长度举例单位编号char5如0008代表计算机学院单位名称char30计算机学院负责人char20李四办公地点char30南一楼423办公电话char987541234教师基本信息息参考:中文字段名类型及长度举例单位编号char50008教师编号char80002601姓名char20张三性别charM 表示男,F表示女出生日期char111967/01/24联系电话char1213088881234E-mailchar30捐款基本信息参考:中文字段名类型及长度举例单位编号char50008教师编号char80002601捐款金额int捐款方式char0表示现金,1表示银行汇款等捐款日期char112010/04/20捐款目的char25青海玉树地震二、书店租书信息管理系统1图书类别基本信息参考:中文字段名类型及长度举例编号char0表示教辅,1表示少儿等类别名称char10中小学教辅续费率double会员出租折扣率double2图书基本信息参考:中文字段名类型及长度举例类别char0表示教辅图书编号char10“200900011”图书名称char30小学语文阅读训练80篇作者char20出版社char30长春出版社售价double租价double会员价double库存数int上架日期char112009/04/20架位char33图书租阅基本信息参考: 中文字段名类型及长度举例类别char0表示教辅图书编号char10“200900011”姓名char20身份证char19租书日期char112010/01/20可租天数int5应还日期char112010/01/25归还日期char112010/01/28续费double 图书续费=超期天数*租费*续费率*会员出租折扣率(三)城区古树名木信息管理系统1城区基本信息参考:中文字段名类型及长度举例区号char7如430070代表武汉市洪山区区名char20洪山区主管部门char30武汉市洪山区林业局地址char30武汉市珞瑜村电话char13027-87883229负责人char202. 古树名木基本信息参考:中文字段名类型及长度举例区号char7如430070代表武汉市洪山区古树名木编号char5如1002代表银杏名称char20银杏学名char20Ginkgo biloba L科属char20松科、松属树龄int600确认时间char112008-05-20保护级别char1表示一级,2表示二级等栽植地点char303. 古树名木养护基本信息参考:中文字段名类型及长度举例区号char7如430070代表武汉市洪山区古树名木编号char5如1002代表银杏养护人char20养护日期char112010-05-20养护措施char30修补树洞、修剪枯死枝生长状况char20生长衰弱、濒临死亡四、需实现的系统功能(一)各种基本数据的录入1高校教师捐款信息管理系统l 院系基本信息录入; l 教师基本信息录入;l 教师捐款基本信息录入;l 其它信息录入。2书店租书信息管理系统l 图书类别基本信息录入;l 图书基本信息录入;l 图书租阅基本信息录入;l 其它信息录入。3城区古树名木信息管理系统l 城区基本信息录入;l 古树名木基本信息录入;l 古树名木养护基本信息录入;l 其它信息录入。要求每个系统的1级链表、2级链表、3级链表都能够进行基本数据的录入。(二)各种基本数据的修改即:允许对以及录入的数据重新进行编辑、修改。如:l 修改院系基本信息(修改1级链表中的结点);l 修改图书基本信息(修改2级链表中的结点);l 修改古树名木养护基本信息(修改3级链表中的结点)。要求每个系统的1级链表、2级链表、3级链表都能够进行基本信息的修改。(三)各种基本数据的插入如:l 在城区基本信息链(1级链)中插入一条新信息;l 在图书基本信息链(2级链)中插入一条新信息;l 在捐款基本信息链(3级链)中插入一条新信息等。要求每个系统的1级链表、2级链表、3级链表都能够进行新信息的插入。(四)各种基本数据的删除如:1删除城区基本信息链中结点。算法(删除1级链表中的结点):遍历城区基本信息链,找到对应结点;遍历该结点指向的古树名木基本信息链;对链中的每一个结点,删除其指向的古树名木养护基本信息链;再删除该古树名木基本信息链;最后删除城区基本信息链中的对应结点。2删除图书基本信息链中的结点。算法(删除2级链表中的结点):遍历图书分类基本信息链,查找到图书分类基本信息链中对应结点;遍历对应的图书基本信息链,查找到图书基本信息链中对应结点;先删除该结点指向的图书租阅基本信息链;然后删除图书基本信息链中对应结点;同时修改图书分类基本信息链中对应结点的相关数据。(如果有的话)3删除捐款基本信息链中的结点。算法(删除某个3级链表中的结点):遍历院系基本信息链,查找到院系基本信息链中对应结点;遍历对应的教师基本信息链,查找到教师基本信息链中对应结点;遍历对应的捐款基本信息链,查找到捐款基本信息链中对应结点;删除该结点。同时教师基本信息链(2级链)和院系基本信息链(1级链)中对应结点的相关数据。(如果有的话)要求每个系统的1级链表、2级链表、3级链表都能够进行结点的删除。(五)基于各种数据的查询,如:计算机学院为青海玉树地震捐款的总额、某日的租阅详情、洪山区的所有一级古树等。(六)基于各种基本数据的统计计算如:高校教师捐款信息管理系统各种数据的统计n 统计每位教师历次捐款总金额,按总金额从高到低排序后输出(如:姓名,捐款金额);n 统计各单位某次捐款(如为青海玉树地震)的总金额,从高到低排序后输出(如青海玉树地震各单位捐款一览 单位,捐款金额 );n 列出捐款总金额最高的教师的捐款历史(如:1. 四川汶川地震,金额 2. 西南旱灾,金额 . );n 其它方面的统计(自行确定)。书店租书信息管理系统各种数据的统计l 统计某月各图书的租阅次数,按租阅次数从高到低排序后输出(如:书名,租阅次数);l 统计当日逾期未还图书的超期天数,计算其续费,按超期天数从高到低排序后输出(如:姓名,书名,超期天数,续费);l 统计某时段各类图书租出和还入数。l 其它方面的统计(自行确定)。城区古树名木信息管理系统各种数据的统计n 统计各种古树名木的总数,按总数从高到低排序后输出(如:树种,株数);n 统计各城区各级古树名木的株数和总数,按总数从高到低排序后输出(如:城区,一级株数,二级株数,三级株数,合计 );n 统计生长衰弱、濒临死亡的古树名木株数,计算所占比例(=该株数/总株数)。n 其它方面的统计(自行确定)。五、数据结构说明及举例(1)三个系统的数据结构采用十字交叉链表,也允许辅之以其它链表来完成对系统基础数据的完整描述。(2)三个系统的部分数据结构举例见下页图1、图2、图3。 院系nNULL院系2院系1 head教师1捐款信息链 教师1基本信息 教师2捐款信息链教师2基本信息 教师n捐款信息链教师n基本信息 图1高校教师捐款信息管理系统十字交叉链表 类别nNULL类别2类别1 head图书1租阅基本信息链图书1基本信息 图书2租阅基本信息链图书1基本信息 图书n租阅基本信息链图书n基本信息图2 书店租书信息管理系统十字交叉链表城区n NULL 城区2城区1head古树名木1养护基本信息链古树名木1基本信息古树名木2养护基本信息链古树名木2基本信息 古树名木n养护基本信息链古树名木n基本信息图3 城区古树名木信息管理系统十字交叉链表六、要求1、只能使用C语言,源程序编写格式要按照缩进方式,源程序要有详细的注释,使程序容易阅读。(注:源程序编写格式的规范和注释体现程序员的素质,必须从本课程设计开始培养。)2、使用结构和十字交叉链表等数据结构。3、使用三个数据文件来分别保存1级链表、2级链表、3级链表的数据。4、至少屏幕输出一份报表(以表格形式输出),鼓励自行增加新功能。5、写实验报告(要求正规打印,A4幅面),内容包括:l 题目l 系统功能模块结构图(如图4,图5所示)。l 数据结构设计及用法说明(列出程序中的struct设计和自己程序的使用、操作方法)l 程序结构(画流程图)(如系统总体流程图,某种查询、插入、删除程序实现的程序流程图。要求采用教材中的标准流程图图符至少画两个流程图。)l 各模块的功能(解释如图4中各个模块的软件功能)l 试验结果(包括输入数据的结果,查询、修改、删除的结果,可以拷屏实现结果的报告)l 体会(必须真实的说出自己在课程设计中的切身体会。)l 参考文献l 附录:程序清单及源程序盘注:每人以学号+姓名创建目录,目录需包括实验报告电子文档和源程序以备检查。然后由各班学习委员汇总到U盘上统一提交。源代码:#include#include#include#includetypedef struct Teacherchar code5;/单位编号char number8;/教师编号char name20;/姓名char sex;/性别M 表示男,F表示女char birthday11;/出生日期char phone12;/联系电话char email30;/E-mailstruct Teacher *next;struct Dominat *dominat;teacher;typedef struct Dominatchar number8;/单位编号char code5;/教师编号int sum;/捐款金额 char way;/捐款方式 0表示现金,1表示银行汇款等char data11;/捐款日期char aim25;/捐款目的struct Dominat*next;dominat;typedef struct Campuschar code5;/单位编号char name30;/单位名称char manager20;/负责人char address30;/办公地点char phone9;/办公电话struct Campus*next;struct Teacher*teacher; campus;typedef struct Singlechar code5;char number8;char name20;int total;struct Single *next;struct Single *pre;single;typedef struct CampSinchar name20;struct CampSin *next;int total;campsin;campus *head;single *head1;/指向教师捐款总金额链表;campsin *head2;/指向学院单位某次捐款总额链表;int N1,N2,N3;/N1表示学院总数,N2表示教师总数,N3表示捐款的次数;void Csh()/初始化链表head=NULL;N1=0;N2=0;N3=0;campus *CampusSearch(char code5)/学院地址定位int i;campus*p;p=head;for(i=0;icode,code)=0)return p;else p=p-next;return NULL;teacher*DominatSearch(char code5, char number8)/教师地址定位int i;campus *p;teacher *q;p=head;for(i=0;icode,code)=0)for(q=p-teacher;q!=NULL;q=q-next) if(strcmp(q-number,number)=0) return q; /if1p=p-next;/for1return NULL;void Initiat(int i)/1学院信息录入 2教师信息录入 3教师捐款基本信息录入和插入;int n;campus *p=NULL;teacher *q=NULL;dominat *r=NULL;if(i=1)printf(n请输入要建立/插入学院信息数量n:);scanf(%d,&n);getchar();for(i=0;icode);getchar();printf(t学院名称:);scanf(%s,p-name);getchar();printf(t学院负责人:);scanf(%s,p-manager);getchar();printf(t学院地点:);scanf(%s,p-address);getchar();printf(t学院联系方式:);scanf(%s,p-phone);getchar();p-teacher=NULL;p-next=head;head=p;/forN1=N1+n;/学院信息录入else if(i=2)printf(n请输入要建立/插入教师信息数量n:);scanf(%d,&n);getchar();if(head=NULL) printf(请先建立学院信息表!); return;for(i=0;inumber);getchar();printf(t单位编号:);scanf(%s,q-code);getchar();printf(t教师姓名:);scanf(%s,q-name);getchar();printf(t教师性别(f或m):);scanf(%c,&q-sex);getchar();printf(t教师生日:);scanf(%s,q-birthday);getchar();printf(t教师PhoneNumber:);scanf(%s,q-phone);getchar();printf(t教师e-mail:);scanf(%s,q-email);getchar();q-dominat=NULL;p=CampusSearch(q-code);/以教师所在单位编号,查找出其所在学院;if(p=NULL) printf(n当前无该学院的信息,请check该学院的信息!n);goto a;N2+;q-next=p-teacher;p-teacher=q;/for;/教师信息录入else if(i=3)printf(n请输入要建立/插入捐款信息数量n:);scanf(%d,&n);getchar();if(N2=0) printf(请先建立教师信息表!); return;for(i=0;inumber);getchar();printf(t捐款单位编号:);scanf(%s,r-code);getchar();printf(t捐款日期:);scanf(%s,r-data);getchar();printf(t捐款方式(0表示现金,1表示银行汇款):);scanf(%c,&r-way);getchar();printf(t捐款金额;);scanf(%d,&r-sum);getchar();printf(t捐款目的:);scanf(%s,r-aim);getchar();q=DominatSearch(r-code,r-number);/依据捐款所在单位信息,及教师的编号,找出所在教师的地址;if(q=NULL) printf(n教师编号:%s 当前无该教师的信息,请check该教师的信息!n,r-number);goto b;N3+;r-next=q-dominat;q-dominat=r;/for/ 教师捐款基本信息录入;else printf(请检查初始化参数后再尝试!);void Start()/信息录入模块调度Initiat(1);Initiat(2);Initiat(3);printf(n当前学院总数为:%d,N1);printf(n当前教师总数为:%d,N2);printf(n当前捐次总数为:%d,N3);void CampusRe()/学 院 信 息 修 改char code5;campus*p;teacher*q;dominat*r;printf(n请输入需要修改学院的编号:);scanf(%s,code);p=CampusSearch(code);if(p=NULL)printf(nt没有该学院信息,请核对当前信息后再尝试!); Sleep(1000);return;elseprintf(nt学院编号:);scanf(%s,p-code);getchar(); printf(t学院名称:);scanf(%s,p-name);getchar(); printf(t学院负责人:);scanf(%s,p-manager);getchar(); printf(t学院地点:);scanf(%s,p-address);getchar(); printf(t学院联系方式:);scanf(%s,p-phone);getchar();for(q=p-teacher;q!=NULL;q=q-next)/修改旗下信息strcpy(q-code,p-code);for(r=q-dominat;r!=NULL;r=r-next)strcpy(r-code,p-code);/for1void TeacherRe()/教 师 信 息 修 改char code5,number8;teacher*q;dominat*r;printf(教师所在单位编号:);scanf(%s,code);getchar();printf(教师编号:);scanf(%s,number);getchar();q=DominatSearch(code,number);if(q=NULL) printf(nt没有该教师的信息,请核对当前信息后再尝试!); Sleep(1000);return;elseprintf(nt教师编号:);scanf(%s,q-number);getchar();printf(t教师姓名:);scanf(%s,q-name);getchar();printf(t教师性别(f或m):);scanf(%c,&q-sex);getchar();printf(t教师生日:);scanf(%s,q-birthday);getchar();printf(t教师PhoneNumber:);scanf(%s,q-phone);getchar();printf(t教师e-mail:);scanf(%s,q-email);getchar();for(r=q-dominat;r!=NULL;r=r-next)/修改旗下信息strcpy(r-number,q-number); /修改教师当前所在学院void DominatRe()/捐 款 信 息 修 改 char code5,number8,data11; teacher*q;dominat*r; printf(教师所在单位编号:);scanf(%s,code);getchar(); printf(教师编号:);scanf(%s,number);getchar(); printf(捐款时间:);scanf(%s,data);getchar(); q=DominatSearch(code,number); if(q=NULL) printf(nt没有该信息,请核对当前信息后再尝试!); Sleep(1000);return; elsefor(r=q-dominat;r!=NULL;r=r-next) if(strcmp(data,r-data)=0)printf(t捐款日期:);scanf(%s,r-data);getchar();printf(t捐款方式(0表示现金,1表示银行汇款):);scanf(%c,&r-way);getchar();printf(t捐款金额;);scanf(%d,&r-sum);getchar();printf(t捐款目的:);scanf(%s,r-aim);getchar();return; printf(未找到当前捐款信息,请核查!);Sleep(1500);void Repair()/信息修改int i;while(1)printf(ntt*information refresh*n);printf(ntt 学 院 信 息 修 改 );printf(ntt 教 师 信 息 修 改 );printf(ntt 捐 款 信 息 修 改);printf(ntt 返 回 上 一 级 菜 单);printf(ntt*please input the option:);scanf(%d,&i);getchar();switch(i)case 1: CampusRe(); break;case 2: TeacherRe(); break;case 3: DominatRe(); break;case 4: printf(ntt返回上级菜单中); for(i=0;i20;i+) Sleep(110);printf(.);system(cls); return;default:printf(error,请输入正确的选项!);Sleep(110);system(cls);/whilevoid Insert()/数据插入int i;while(1)printf(ntt*information insert*n);printf(ntt 学 院 信 息 插 入);printf(ntt 教 师 信 息 插 入);printf(ntt 捐 款 信 息 插 入);printf(ntt 返 回 上 一 级 菜 单);printf(ntt*please input the option:);scanf(%d,&i);getchar();switch(i)case 1: Initiat(1); break;case 2: Initiat(2); break;case 3: Initiat(3); break;case 4: printf(ntt返回上级菜单中); for(i=0;inext)printf(n*n);printf(ttt学院%s信息及其旗下信息,p-code);printf(nn);printf(t学院编号:%s,p-code); printf(t学院名称:%s,p-name);printf(t学院负责人:%s,p-manager);printf(nt学院地点:%s,p-address);printf(t学院联系方式:%s,p-phone);printf(nttt%s学院旗下信息,p-name);for(q=p-teacher;q!=NULL;q=q-next)printf(nnt教师编号:%s,q-number); printf(t单位编号:%s,q-code);printf(t教师姓名:%s,q-name);printf(nt教师性别(f或m):%c,q-sex);printf(t教师生日:%s,q-birthday);printf(nt教师PhoneNumber:%s,q-phone);printf(nt教师e-mail:%s,q-email); for(r=q-dominat;r!=NULL;r=r-next)printf(n*n);printf(t捐款教师编号:%s,r-number);printf(t捐款单位编号:%s,r-code);printf(t捐款日期:%s,r-data);printf(nt捐款方式:%c,r-way);printf(t捐款金额;%d,r-sum);printf(nt捐款目的:%s,r-aim);/for2/for1teacher*Mode()/定位教师地址char code5,number8;teacher *q;printf(n所需查询单位编号:);scanf(%s,code);getchar();printf(n所需查询教师编号:);scanf(%s,number);getchar();q=DominatSearch(code, number);return q;void CampusDe()/学院信息删除campus *p,*p1;char code5;printf(请输入要删除节点单位编号:);scanf(%s,code);getchar();for(p=head,p1=head;p!=NULL;)if(strcmp(head-code,code)=0)/单独考虑头结点 head=head-next;N1-;printf(ntt信息从数据库中删除成功!);Sleep(1000);return;elseif(strcmp(p-code,code)=0) p1-next=p-next;N1-;printf(ntt信息从数据库中删除成功!);Sleep(1000);return;p1=p;p=p-next;printf(nThis information is not found,please check it and try agian!);Sleep(1000);void TeacherDe()/教师信息删除char code5,number8;campus*p;teacher *q,*q1;printf(请输入要删除节点单位编号:);scanf(%s,code);getchar();printf(请输入教师编号:);scanf(%s,number);getchar();for(p=head;p!=NULL;p=p-next)if(strcmp(p-code,code)=0) for(q=p-teacher,q1=p-teacher;q!=NULL;)if(strcmp(p-teacher-number,number)=0)/单独考虑头结点p-teacher=p-teacher-next;N2-;printf(ntt信息从数据库中删除成功!);Sleep(1000);return;elseif(strcmp(q-number,number)=0) q1-next=q-next;N2-;printf(ntt信息从数据库中删除成功!);Sleep(1000);return; q1=q; q=q-next;/for1printf(nThis information is not found,please check it and try agian!);Sleep(1000);void DominatDe()/捐款信息删除teacher *q;dominat *r,*r1;char data11;q=Mode();if(q=NULL)printf(tterror!please try angain!);Sleep(1500);return;printf(捐款时间:);scanf(%s,data);getchar();for(r=q-dominat,r1=q-dominat;r!=NULL;)if(strcmp(q-dominat-data,data)=0) q-dominat=q-dominat-next;N3-;printf(ntt信息从数据库中删除成功!);Sleep(1000);return;elseif(strcmp(r-data,data)=0) r1-next=r-next;N3-;printf(ntt信息从数据库中删除成功!);Sleep(1000);return;r1=r;r=r-next;printf(nThis information is not found,please check it and try agian!);Sleep(1000);void Delet()/信息删除int i;while(1)printf(ntt*information delete*n);printf(ntt 学 院 信 息 删 除);printf(ntt 教 师 信 息 删 除);printf(ntt 捐 款 信 息 删 除);printf(ntt 返 回 上 一 级 菜 单);printf(ntt*please input the option:);scanf(%d,&i);getchar();switch(i)case 1: CampusDe(); break;case 2: TeacherDe();break;case 3: DominatDe(); break;case 4: printf(ntt返回上级菜单中); for(i=0;icode); printf(t学院名称:%s,p-name);printf(t学院负责人:%s,p-manager);printf(nt学院地点:%s,p-address);printf(t学院联系方式:%s,p-phone);void TeacherSe()teacher *q;q=Mode();if(q=NULL) printf(nThis information is not found,please check it and try agian!);return;elseprintf(nt教师编号:%s,q-number);printf(t单位编号:%s,q-code); printf(t教师姓名:%s,q-name);printf(nt教师性别:%c,q-sex);printf(t教师生日:%s,q-birthday);printf(t教师PhoneNumber:%s,q-phone);printf(nt教师e-mail:%s,q-email);void DominatSe()int i;long int sum;teacher *q;dominat *r;char number8;char data11;char aim25;while(1)printf(ntt*Information Search*n);printf(ntt 教 师 捐 款 日 期 查 询);printf(ntt 教 师 所 有 信 息 查 询);printf(ntt 教 师 捐 款 目 的 查 询);p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工伤出院协议书
- 速腾总线协议书
- 胸痛患者护理健康宣教
- 2025版风湿病症状分析与护理指南
- 提高员工工作管理制度大纲
- 护理模拟产房建设与应用
- 视觉调节不足训练方法
- 酒店员工消防安全
- 2025版前列腺炎典型症状及保健护理建议
- 品牌设计视觉形象系统市场调研
- 英语FCE语用词汇-必备词缀
- 写字楼物业服务投标方案
- 蒋廷黻中国近代史
- 组团儿上春晚《八戒返乡》小品台词
- 河津市兴耿福利煤化有限公司煤焦油项目环境影响报告书
- 湖北省荆州市《公共基础知识》国考招聘考试真题含答案
- 腰椎退行性疾病课件
- 幼儿园小班社会:《红绿灯》 课件
- ISO 31000-2018 风险管理标准-中文版
- 六年级班会 我的理想职业课件
- JJF1208-2008沥青针入度仪校准规范-(高清现行)
评论
0/150
提交评论