图书借阅管理

合集下载

图书借阅管理制度

图书借阅管理制度

图书借阅管理制度
图书借阅管理制度
一、借阅条件
1. 馆内读者需办理借书证,提供有效身份证件及相关证明材料;
2. 借书证仅限本人使用,不得转借他人使用;
3. 借书证遗失需及时挂失并补办。

二、借阅期限
1. 各类读者可借阅图书不超过5册;
2. 借阅期限为30天;
3. 逾期不归还图书,须赔偿图书原价,并扣除借书证;
4. 如因特殊原因需要延期借阅,需提前到图书馆续借。

三、借阅方式
1. 图书馆提供自助借还书机,读者在借还书机上自助借书、还书;
2. 读者也可在图书馆网站上搜索所需图书,并通过在线预约取书。

四、图书馆服务
1. 图书馆提供图书资源检索,帮助读者快速找到所需图书;
2. 图书馆开放电子阅览室,供读者使用电子设备阅读电子书籍;
3. 图书馆设有阅览室供读者借阅图书阅读,并提供免费无线网络服务。

五、违规处理
1. 借阅图书后损坏、遗失,需按图书原价进行赔偿;
2. 逾期不归还图书,每逾期一天,对应借阅证有相应的扣分,扣分满10分将暂停借书权限一个月;
3. 借书证遗失需补办,挂失后借出的图书也需进行赔偿。

总结:
图书借阅管理制度是为了保护图书馆的资源,提供优质服务,规范读者借阅行为而制定的管理制度。

通过制定借阅条件、借阅期限、借阅方式等规定,让读者清楚了解借阅细则,避免违规行为的发生。

同时,图书馆提供丰富的服务,以方便读者的阅读和学习需求,在借阅过程中提供帮助和支持。

对于违规行为,则通过相应的惩罚措施进行处理,以确保借阅秩序的正常运行。

图书馆借阅管理规章制度(精选14篇)

图书馆借阅管理规章制度(精选14篇)

图书馆借阅管理规章制度(精选14篇)图书馆借阅管理规章制度大全(精选14篇)制度是一种要求大家共同遵守的规章或准则。

那么拟定图书馆管理制度真的很难吗?下面是小编整理的关于(精选14篇)的内容,欢迎阅读借鉴!图书馆借阅管理规章制度【篇1】一、图书馆借阅制度(一)借书制度1、图书馆图书(对教职工及学生)实行全开架的书库管理方式。

读者入室必须交验本人借书证,无证不得入室。

借出:读者在室内选书,不得将图书乱拿乱放,从室内中选好图书后持图书到借阅处,经检查仪检查并由计算机处理后,由管理人员将借书证和所借图书一并交还给读者。

还书:读者须将所借图书交还到借阅处,经检查并由计算机处理确认书籍未超期和完整无损后,方可离去。

挂失:读者一旦发现图书丢失,须持本人借书证立即到借书处对所丢失图书进行挂失。

2、办借书手续之前,读者要仔细查看书中有无缺页和污损,如发现图书已有损坏,应及时告知图书管理人员。

3、要按时归还。

因外出等原因不能按期还书的须提前办理续借手续或提前归还。

4、未按借阅制度擅自将图书带出图书馆者,即按偷书论处。

(二)借书数量及期限1、教职工每人每次可借10册图书,借阅期限为90天。

2、学生每人每次只可借5册图书,借阅期限为30天。

3、图书借阅7天后方可归还图书。

4、图书借阅20天后可续借,续借次数仅限一次,自续借之日起,续借期限为30天。

(三)其它规定1、外单位人员到图书室借书需经教务处批准后,方可办理借阅手续,并按期归还。

2、图书室对所有外借图书均有权随时收回。

3、对丢失、损坏的图书,可按“图书遗失,损坏赔偿办法”进行赔偿。

二、图书(刊)遗失、损坏赔偿办法图书馆图书属于学校财产,读者应对图书、报刊予以爱护,以便使其发挥更大作用。

若发生以下情况,应进行赔偿。

(一)读者在借书时应认真检查所借图书有无缺页,污损现象。

若发生有上述情况,可交图书管理员做好登记。

否则,在还书时发现有以上情况,批评教育外,以原书的1倍罚款。

办公室图书借阅管理制度(3篇)

办公室图书借阅管理制度(3篇)

办公室图书借阅管理制度一、借阅资格与条件1.办公室内部人员,包括在职员工、实习生等,具有借阅资格。

外来人员需经过特殊审批才能借阅。

2.借阅者必须持有效的借书证,借书证仅供本人使用。

3.借阅者需提供个人有效身份证明,以核实身份。

二、借阅方式与期限1.借书方式包括现场借阅和预约借阅。

2.现场借阅:借阅者可以在办公室图书室内借阅所需图书,每次最多借阅5本,借阅期限为一周。

3.预约借阅:借阅者可以提前一天预约需要借阅的图书,协助图书管理员准备。

借阅期限为一周。

4.借阅期满后,借阅者可进行续借,续借期限为一周。

续借次数为一次。

三、图书归还与罚款1.借阅者应按照借阅期限归还借阅的图书,逾期不归还者将被处以罚款。

2.逾期1天内归还的,罚款为每本图书的借阅期满日起每天0.5元。

3.逾期1天以上未归还的,罚款为每本图书的借阅期满日起每天1元。

4.逾期3天以上未归还的,借阅者将被暂停借阅资格,直至归还全部未归还的图书并支付相应罚款。

四、损坏与丢失处理1.借阅者在借阅期间损坏图书的,需按照图书实际价格进行赔偿。

在失去图书的情况下,需赔偿图书的实际价格及相关费用。

2.图书丢失或损坏后,借阅者需立即向图书管理员报告并进行相应赔偿。

3.借阅者需自行承担借阅期间图书的保管责任,若因个人原因导致损坏或遗失,也需进行赔偿。

五、其他注意事项1.借阅者不得擅自转借他人、出借他人使用自己的借书证。

2.借阅者不得将图书带离办公室,只能在规定的图书室内阅读和借阅。

3.借阅者应保持图书的完整性,不得标记、涂改、污损图书。

4.借阅者应尊重图书管理员的工作和规定,积极配合图书管理工作。

以上为办公室图书借阅管理制度,借阅者应严格遵守,如有违反,将承担相应的法律责任和后果。

办公室图书借阅管理制度(2)第一条本制度为办公室所有成员借阅图书所指定。

第二条本制度原则上是为了方便图书的管理和所有学生成员的借阅。

第三条办公室所有成员必须做好图书的借阅登记,登记本必须与图书每天一对证。

图书借阅管理制度

图书借阅管理制度

图书借阅管理制度一、借阅登记1.读者在办理读者证时需要提供真实有效的个人信息,并遵守图书馆相关规定。

2.读者每次借阅图书时需要将借阅信息登记在借阅卡上,并由工作人员确认。

借阅卡上需填写书名、作者、借阅日期以及借阅期限等信息。

3.为了保证图书馆资源的合理利用,每位读者在借阅图书的同时,不得超过限额数量,可以根据自身的需求和咨询工作人员适当调整借阅数量。

二、借阅期限1.普通图书借阅期限为30天,如需续借,请在借阅期限到期前至少提前2天办理续借手续。

2.特殊图书借阅期限为7天,不得续借。

3.若借阅图书超期未归还,将根据规定收取逾期费用。

4.借阅期限到期或者需要提前归还图书的读者需及时办理借阅图书的归还手续。

三、续借规定1.读者可以申请续借图书,但仅限一次。

2.续借期限不得超过30天。

3.特殊图书不得续借。

4.续借期间仍然需要履行还书的义务,不得推迟还书日期。

四、逾期罚款规定1.超期未归还图书的读者每天需缴纳逾期费用。

逾期费用按照每本每天0.1元计算。

2.逾期超过7天未归还的图书,图书馆有权暂停该读者的借阅服务。

3.逾期超过30天未归还的图书,图书馆将向读者发出警告通知,若7天内仍未归还,将按照图书原价进行赔偿。

五、损坏与丢失赔偿1.借阅期间如发生图书损坏的情况,读者需要承担相应的赔偿责任,具体赔偿金额按照图书馆规定的价格计算。

2.借阅期间如发生图书丢失的情况,读者需要赔偿图书的原价。

3.如借阅的图书在还书时出现无法修复的损坏,读者需承担图书原价赔偿。

六、有关规定1.读者需爱护图书馆的图书资源,不得随意涂画、撕毁、剪裁书本。

2.读者如需向他人转交借阅的图书,需提前与图书馆工作人员进行沟通并办理相关手续。

3.读者需按时归还图书,并确保图书完好无损。

逾期归还或损坏图书的读者需承担相应的责任。

4.读者在图书馆内需要保持安静,不得大声喧哗,以免打扰他人阅读。

5.读者在借阅图书的同时,有义务保护好自己的借阅卡,不得将其借给他人使用。

图书室图书借阅管理制度(3篇)

图书室图书借阅管理制度(3篇)

图书室图书借阅管理制度为了最大限度的满足我院广大员工的学习需要,方便员工利用、管理和流通,特制定如下规则:一、图书公共管理的基本规则:1.讲究文明礼貌,提倡用文明礼貌语言.尊重管理人员。

2.维护环境卫生,保持整洁。

3.查阅图书后请归还原位。

4.爱护图书,不得在图书上圈点、批注、不得将未经借阅登记的图书带出员工书屋。

5.借阅时不得大声喧哗或影响他人正常工作。

7.员工图书阅览室设立在二楼会议室。

二、图书借阅规则:1.以全心全意为全体员工服务为原则。

2.借书数量。

每个人最多限____本。

3.借书期限。

每本书可借阅二个星期,如若未阅读完,可续借二周。

逾期不还者,按超期天数处以罚款。

超期每天罚款人民币____元。

4.图书借出时,应当面检查,如发现有错号、破损、污渍等现象,应立即向工作人员声明。

如还书刊时被发现,由还书读者负责.5.借用图书后应妥善保管,倍加爱护,不得折页、遗失、损坏、撕页、污渍和圈点,如有上述情况将按有关规定罚款。

6.借阅人如若连续三次违反本图书借阅规则,则取消借阅资格,并酌情向所在部门或其上级部门如实反映情况。

三、遗失文献资料赔款规则:1.凡遗失文献资料者则按所遗失的文献资料原价进行赔偿。

2.借阅文献超过规定期限,每天罚款____元。

(四)赔偿书刊时间规定:1.待偿时间以不超过一个月为限;超过一个月者又以超期的规定一并处理。

2.办理赔偿手续后一个月内找到原书刊资料,可持赔偿收据到办公室返还赔偿金。

(五)图书馆开放时间:每日9:00-17:30。

图书室图书借阅管理制度(2)主要包括以下内容:1. 借阅资格:只有注册读者才有借阅资格,需提供有效的身份证明和注册信息,包括学生证、教师证等。

2. 借阅流程:读者可通过图书馆自助借阅机或前台借书,需提供借书凭证(如借书卡、学生证)进行登记。

3. 借阅期限:借阅期限一般为几天或几周,读者应在规定期限内归还图书,逾期将产生相应的罚款。

4. 图书数量限制:一般规定每位读者最多可借阅多少本图书,以保证公平性和资源的合理分配。

图书借阅管理规定

图书借阅管理规定

图书借阅管理规定1. 借阅条件1.1 本馆注册读者可以借阅图书,须持有效读者证件。

1.2 读者应确保如实填写借阅登记表,不得盗用他人证件借书。

1.3 读者借书前应查询所借图书的归还日期,确保归还及时。

2. 借阅流程2.1 读者可携带读者证件至图书馆借书处借阅。

2.2 读者应遵守借书顺序,不得插队或跳过其他读者借书。

2.3 借书时应向工作人员出示读者证件,确保信息准确。

2.4 读者应按照借书数量限制借阅图书。

3. 借阅期限3.1 借书期限以借书时工作人员告知的归还日期为准。

3.2 读者未经续借而超过借书期限者,每天按规定金额支付逾期费用。

3.3 逾期超过一周未归还图书的读者将被限制借书资格。

4. 续借规定4.1 续借可通过线上或线下方式办理。

4.2 续借次数有限,超过限制次数则不予续借。

4.3 续借期限为当前借书期限的一半,续借费用视具体情况而定。

5. 归还规定5.1 到期未归还的图书将产生逾期费用。

5.2 归还时应保持图书完好无损,如有损坏须赔偿。

5.3 图书遗失或损坏需按照相关规定进行赔偿。

6. 丢失和损坏6.1 遗失图书需赔偿图书原价。

6.2 损坏图书需按照损坏程度和图书原价的一定比例赔偿。

7. 外借限制7.1 部分馆藏图书不得外借,只允许在阅览室内阅读。

7.2 特殊珍贵图书仅供特定人群观看,不得外借。

8. 违规处理8.1 若读者有超期归还、损坏图书等违规行为,将被限制借书资格。

8.2 严重违规者将面临相关法律责任。

9. 申诉管理9.1 读者如对借阅管理规定有异议,可向图书馆相关部门提出申诉。

9.2 图书馆将及时处理和回复读者的申诉。

本规定自颁布之日起生效,如有变动将另行通知。

读者在借阅过程中应遵守以上规定,共同维护良好的借阅秩序和图书利用环境。

图书馆借阅管理制度

图书馆借阅管理制度

图书馆借阅管理制度一、借阅准则在图书馆借阅图书之前,读者需要遵守以下准则:1.登记注册:读者需在图书馆办理借阅卡,并按要求填写个人信息,包括姓名、学号(工号)、住址等。

只有注册过的读者才能借阅图书。

2.借阅限额:每位读者可同时借阅不超过5本图书,包括纸质书籍和电子书籍。

3.借阅期限:借纸质书籍的借阅期限为30天,借电子书籍的借阅期限为14天。

期满后,读者需按时归还或续借。

4.续借规定:读者可以通过图书馆网站或前台服务台办理图书续借,续借期限为借阅期限的一半。

同一本书只能续借一次。

5.图书丢失或损坏:读者在借阅图书期间应妥善保管书籍,如因故意损坏或丢失,需按照图书馆规定赔偿图书。

二、借阅流程1.登录系统:读者凭借阅卡和密码登录图书馆系统,选择借阅功能,并输入要借阅书籍的书名或其它相关信息。

2.查询图书:系统根据读者输入的信息,查询图书馆数据库,将与查询条件匹配的图书显示给读者,并提供相关信息,如书名、作者、出版社等。

3.选择图书:读者根据查询结果选择自己需要借阅的图书,并查看该书的可借数量。

4.借阅确认:读者确认借阅图书后,系统会显示借阅成功,并生成借阅单据,包括借阅日期、借阅期限等信息。

5.取书:读者凭借阅卡到图书馆的借阅处,出示借阅单据和借阅卡,借阅处工作人员核对信息后,将图书交给读者。

三、归还流程1.登录系统:读者凭借阅卡和密码登录图书馆系统,选择归还功能,并输入要归还书籍的书名或其它相关信息。

2.查询图书:系统根据读者输入的信息,查询图书馆数据库,将与查询条件匹配的图书显示给读者,并提供相关信息,如书名、作者、出版社等。

3.选择图书:读者根据查询结果选择自己要归还的图书,并确认无误。

4.归还确认:读者确认归还图书后,系统会显示归还成功,并生成归还单据,包括归还日期等信息。

5.归还书籍:读者将要归还的图书交给图书馆的归还处工作人员,并出示归还单据和借阅卡。

6.续借或还书:如果读者想要续借图书,可以在归还处办理续借手续;如果不续借,则归还处工作人员将图书放入归还架。

图书借阅管理规定

图书借阅管理规定

图书借阅管理规定
以下是图书借阅管理的常见规定:
1.注册:借阅者应在图书馆注册,填写个人信息并获得借阅证。

2.借阅期限:一般情况下,借书期限为一个月,期限结束后可续借,续借期限为15天。

3.借阅数量:借阅者一次最多可借阅5本图书,部分特殊图书(如参考书、期刊等)可能有数量限制。

4.图书归还:借阅者应按时归还图书,逾期归还会产生罚款。

5.续借:借阅者可通过图书馆网站或现场进行续借,但同一本书不能连续续借超过两次。

6.损坏丢失:借阅者损坏或丢失图书应负责赔偿,具体赔偿金额根据图书馆规定。

7.借阅权限:部分图书可能有限制借阅权限,根据学历、职位等条件划分。

8.预约:借阅者可通过图书馆网站或现场进行图书预约,预约后需在规定时间内取书,逾期将失效。

9.禁止转借:借阅者不能将借阅的图书转借给他人。

10.咨询服务:图书馆提供咨询服务,借阅者可咨询关于图书馆藏书、借阅规定等问题。

请注意,以上规定仅为一般性规定,实际情况可能因图书馆、学校等不同而有所差异。

建议借阅者在借阅前详细阅读所在图书馆的借阅规定。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图书借阅管理#include "stdio.h"#include "bios.h"#include "dos.h"#include "conio.h"#include "stdlib.h"#include "string.h"#include "mem.h"#include "ctype.h"#include "alloc.h"#include "stdio.h"#include "graphics.h"#include "d:\cbook\14\c14_m.c" /*根据实际存放位置设*/ typedef struct t1{char no[11];char name[15];char sex[5];char profess[15];char dept[15];char class[15];float workload;float lessonf;struct t1 *prior;struct t1 *next;}TEACHER;TEACHER *First;TEACHER *Last;TEACHER *p;void init(); /*初始化双链表*/void firstr(); /*显示头一条*/void lastr();/*显示最后一条*/void priorr(); /*显示前一条*/void nextr();/*显示下一条*/void clear(); /*清除显示信息*/void delete(); /*删除当前记录*/void save(); /*保存*/void load();/*读入文件*/void sort();/*排序*/void create(); /*创建双链表*/void print(TEACHER*p); /*输出数据*/void run(int m,int n); /*调用各功能*/void button(int buttonx1,int buttony1,int buttonx2,int buttony2,char *name,int stat); /*按钮*/void wins(int x1,int y1,int x2,int y2); /*窗口*/void realwin(int x1,int y1,int x2,int y2);/*校验窗口*/void mousewin(); /*主控界面*/void cross(int y1,int x2,int press); /*关闭按钮*/char *Str[]={"First","Prior","Next","Last","Clear","Delete","Load","Save","Sort","Exit"}; /*命令项*//*********主函数**********/void main(){char ch;int gdriver,gmode,i,j;init();printf("Do you create new table(Y/N)\n");ch=getchar();if(ch=='Y'||ch=='y')create();gdriver=DETECT;initgraph(&gdriver,&gmode,"");mousewin();closegraph();}/**按钮实现函数,buttonx1和buttony1为按钮的左上角的坐标,buttonx2和buttony2为按钮的右下角的坐标,*name为按钮上显示的字符串名,stat为按钮类型,0为平面,1为凸起,2为凹下,3为兰色平面*/void button(int buttonx1,int buttony1,int buttonx2,int buttony2,char *name,int stat){if(stat==0) /*显示平面按钮*/{setcolor(BLACK);outtextxy(buttonx1+3,buttony1+4,name);}if(stat==1) /*显示凸起按钮*/{setfillstyle(1,WHITE);bar(buttonx1,buttony1,buttonx2,buttony2);setfillstyle(1,DARKGRAY);bar(buttonx1+1,buttony1+1,buttonx2,buttony2);setfillstyle(1,LIGHTGRAY);bar(buttonx1+1,buttony1+1,buttonx2-1,buttony2-1);setcolor(BLACK);outtextxy(buttonx1+3,buttony1+4,name);}if(stat==2) /*显示凹下按钮*/{setfillstyle(1,DARKGRAY);bar(buttonx1,buttony1,buttonx2,buttony2);setfillstyle(1,WHITE);bar(buttonx1+1,buttony1+1,buttonx2,buttony2);setfillstyle(1,LIGHTGRAY);bar(buttonx1+1,buttony1+1,buttonx2-1,buttony2-1);setcolor(BLACK);outtextxy(buttonx1+3,buttony1+4,name);}if(stat==3) /*显示平面兰色背景按钮*/{setfillstyle(1,DARKGRAY);bar(buttonx1,buttony1,buttonx2,buttony2);setfillstyle(1,WHITE);bar(buttonx1+1,buttony1+1,buttonx2,buttony2);setfillstyle(1,BLUE);bar(buttonx1+1,buttony1+1,buttonx2-1,buttony2-1);setcolor(WHITE);outtextxy(buttonx1+3,buttony1+4,name);}}/****窗口函数,x1和y1为左上角坐标,x2和y2为右下角坐标*/void wins(int x1,int y1,int x2,int y2){char lable[][10]={"No","Name","Sex","Profess","Dept", "Class","Workload","LessonF"}; /*标签信息*/int m,n;setfillstyle(1,WHITE);/*画窗口*/bar(x1,y1,x2,y2);setfillstyle(1,LIGHTGRAY);bar(x1+1,y1+1,x2,y2);setfillstyle(1,BLUE); /*画兰色标题栏*/bar(x1+3,y1+3,x2-3,y1+20);cross(y1,x2,0); /*画关闭按钮*/outtextxy(x1+5,y1+8,"teacher LessonF");/*输出标题文字*/for(m=0;m<4;m++)for(n=0;n<2;n++){button(x1+n*250+20,y1+50+m*30+20,x1+n*250+90,y1+50+m*30+40,lable[n+m*2],2);/*标签信息*/setfillstyle(1,WHITE);bar(x1+n*250+100,y1+50+m*30+20,x1+n*250+200,y1+50+m*30+40);/*白色背景显示数据区*/}settextstyle(0,0,1);for(m=0;m<2;m++)for(n=0;n<5;n++)button(x1+n*100+10,y1+200+m*30+20,x1+n*100+80,y1+200+m*30+40,Str[n+m*5],1); /*显示凸起命令按钮*/}/*关闭按钮函数y1和x2分别是窗口的左上角的y坐标和右下角的x坐标,*/ void cross(int y1,int x2,int press){if(press==1)setfillstyle(1,BLACK);elsesetfillstyle(1,WHITE);bar(x2-17,y1+5,x2-5,y1+18);/*画矩形区域*/setfillstyle(1,LIGHTGRAY);bar(x2-16,y1+6,x2-5,y1+18);setwritemode(EMPTY_FILL);/*用背景颜色填充*/setcolor(BLACK);setlinestyle(0,0,3); /*设置线型*/line(x2-14,y1+8,x2-8,y1+16);/*画交叉线*/line(x2-8,y1+8,x2-14,y1+16);}/*鼠标操作控制处理函数*/void mousewin(){union REGS inregs,outregs;int x1,y1,i,m,n,state;int press=0,close=0,cpress=0;int winx1=70,winy1=100,winx2=570,winy2=400;/*设置窗口坐标*/MouseSetXY(50,50); /*设置鼠标位置*/MouseOn(); /*显示鼠标*/wins(winx1,winy1,winx2,winy2);/*显示窗口主界面*/while(1){press=0;/*是否选择了exit菜单*/cpress=0; /*是否单击了命令按钮*/MouseStatus(&x1,&y1,&state);/*读鼠标状态*/while(x1>winx1+3&&x1<winx1+45&&y1>winy1+21&&y1<winy1+35){/*鼠标在main*/if(press==0)button(winx1+3,winy1+21,winx1+45,winy1+35,"main",1); /*凸起*/ delay(1000);MouseStatus(&x1,&y1,&state);while(state==1) /*单击了鼠标左键*/{settextstyle(0,0,0);button(winx1+3,winy1+21,winx1+45,winy1+35,"main",2);/*凹下*/MouseStatus(&x1,&y1,&state);delay(1000);press=1;}if(press==1)button(winx1+3,winy1+35,winx1+45,winy1+50,"exit",1);}while(press==1&&(x1>winx1+3&&x1<winx1+45&&y1>winy1+35&&y1<winy1+50))/*鼠标在exit上*/{button(winx1+3,winy1+35,winx1+45,winy1+50,"exit",3);/*蓝色平面*/delay(1000);MouseStatus(&x1,&y1,&state);if(state==1) /*单击了exit菜单,退出*/exit(0);}if(!(x1>winx1+3&&x1<winx1+45&&y1>winy1+21&&y1<winy1+35)&&press==0) /*鼠标不在main上*/{setfillstyle(1,LIGHTGRAY);bar(winx1+3,winy1+21,winx1+45,winy1+35);settextstyle(0,0,0);button(winx1+3,winy1+21,winx1+45,winy1+35,"main",0);delay(1000);}if(press==1&&!(x1>winx1+3&&x1<winx1+45&&y1>winy1+35&&y1<winy1+50)){ /*鼠标不在exit上*/settextstyle(0,0,0);button(winx1+3,winy1+35,winx1+45,winy1+50,"exit",1);delay(1000);}if(state==1&&(!(x1>winx1+3&&x1<winx1+45&&y1>winy1+21&&y1<winy1+35))){/*在main区域外单击了鼠标*/setfillstyle(1,LIGHTGRAY);bar(winx1+3,winy1+35,winx1+45,winy1+50);press=0;}while(state==1){MouseStatus(&x1,&y1,&state);if(x1>winx2-17&&y1>winy1+5&&x1<winx2-5&&y1<winy1+18){/*鼠标在关闭按钮上单击*/cross(winy1,winx2,1);/*凸起显示关闭按钮*/delay(1000);close=1;}}if(state==0){cross(winy1,winx2,0);/*平面显示关闭按钮*/if(close==1) exit(0);}while(x1>winx1+5&&y1>winy1+220&&x1<winx2-20&&y1<winy2-20) {if(cpress==0) /*鼠标在命令按钮上*/{settextstyle(0,0,1);for(m=0;m<2;m++) /*显示命令按钮*/for(n=0;n<5;n++)button(winx1+n*100+10,winy1+200+m*30+20,winx1+n*100+80,winy1+200+m*30+40,Str[n+m*5],1);delay(1000);MouseStatus(&x1,&y1,&state);if(state==1)/*判断单击了哪个命令按钮*/{settextstyle(0,0,0);if(x1>80&&x1<150)if(y1>320&&y1<340)/*单击了First命令按钮*/{m=0;n=0;}else{m=1;n=0;} /*单击了Delete命令按钮*/if(x1>180&&x1<250)if(y1>320&&y1<340){m=0;n=1;} /*单击了Prior命令按钮*/else{m=1;n=1;} /*单击了Load命令按钮*/if(x1>280&&x1<350)if(y1>320&&y1<340){m=0;n=2;} /*单击了Next命令按钮*/else{m=1;n=2;} /*单击了Save命令按钮*/if(x1>380&&x1<450)if(y1>320&&y1<340){m=0;n=3;} /*单击了Last命令按钮*/else{m=1;n=3;} /*单击了Sort命令按钮*/if(x1>480&&x1<550)if(y1>320&&y1<340){m=0;n=4;} /*单击了Clear命令按钮*/else{m=1;n=4;} /*单击了Exit命令按钮*/cpress=1;break;}}}if(cpress==1){button(winx1+n*100+10,winy1+200+m*30+20,winx1+n*100+80, winy1+200+m*30+40,Str[n+m*5],2); /*单击的按钮凹下显示*/run(m,n); /*调用相应的功能*/}} /*结束while(1)*/}/********功能调用函数,参数m和n代表按钮行和列位置********/void run(int m,int n){switch(n+m*5){case 0:firstr();break;case 1:priorr();break;case 2:nextr();break;case 3:lastr();break;case 4:clear();break;case 5:delete();break;case 6:load();break;case 7:save();break;case 8:sort();break;case 9:exit(0);}/*结束switch*/}/*1. mouse.c源程序*//***mouse.c***/#include "dos.h"/*鼠标光标显示*/void MouseOn(){_AX=0x01;geninterrupt(0x33);/*产生软中断*/}/*鼠标光标隐藏*/void MouseOff(){_AX=0x02;geninterrupt(0x33);}/*设置鼠标当前位置x和y*/void MouseSetXY(int x,int y){_CX=x;_DX=y;_AX=0x04;geninterrupt(0x33);}/*读取鼠标状态,x和y返回鼠标位置,status返回鼠标击键操作代码*/ void MouseStatus(int *x,int *y,int *status){union REGS regs; /*寄存器变量*/regs.x.ax=3;int86(0x33,&regs,&regs);*x=regs.x.cx;*y=regs.x.dx;*status=regs.x.bx;}学生成绩管理/******头文件(.h)***********/#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*其它说明*/#include "string.h" /*字符串函数*/#include "conio.h" /*屏幕操作函数*/#include "mem.h" /*内存操作函数*/#include "ctype.h" /*字符操作函数*/#include "alloc.h" /*动态地址分配函数*/#define N 3 /*定义常数*/typedef struct z1 /*定义数据结构*/{char no[11];char name[15];int score[N];float sum;float average;int order;struct z1 *next;}STUDENT;/*以下是函数原型*/STUDENT *init(); /*初始化函数*/ STUDENT *create(); /*创建链表*/STUDENT *delete(STUDENT *h); /*删除记录*/ void print(STUDENT *h); /* 显示所有记录*/ void search(STUDENT *h); /*查找*/void save(STUDENT *h); /*保存*/ STUDENT *load(); /*读入记录*/void computer(STUDENT *h); /*计算总分和均分*/ STUDENT *insert(STUDENT *h); /*插入记录*/ void append(); /*追加记录*/void copy(); /*复制文件*/ STUDENT *sort(STUDENT *h); /*排序*/ STUDENT *index(STUDENT *h); /*索引*/void total(STUDENT *h); /*分类合计*/int menu_select(); /*菜单函数*//******主函数开始*******/main(){int i;STUDENT *head; /*链表定义头指针*/head=init(); /*初始化链表*/clrscr(); /*清屏*/for(;;) /*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/{ /*值不同,执行的函数不同,break 不能省略*/case 0:head=init();break; /*执行初始化*/case 1:head=create();break; /*创建链表*/case 2:head=delete(head);break; /*删除记录*/case 3:print(head);break; /*显示全部记录*/case 4:search(head);break; /*查找记录*/case 5:save(head);break; /*保存文件*/case 6:head=load(); break; /*读文件*/case 7:computer(head);break; /*计算总分和均分*/case 8:head=insert(head); break; /*插入记录*/case 9:copy();break; /*复制文件*/case 10:head=sort(head);break; /*排序*/case 11:append();break; /*追加记录*/case 12:head=index(head);break; /*索引*/case 13:total(head);break; /*分类合计*/case 14:exit(0); /*如菜单返回值为14程序结束*/}}}/*菜单函数,返回值为整数*/menu_select(){char *menu[]={"***************MENU***************", /*定义菜单字符串数组*/ " 0. init list", /*初始化*/" 1. Enter list", /*输入记录*/" 2. Delete a record from list", /*从表中删除记录*/" 3. print list ", /*显示单链表中所有记录*/" 4. Search record on name", /*按照姓名查找记录*/" 5. Save the file", /*将单链表中记录保存到文件中*/" 6. Load the file", /*从文件中读入记录*/" 7. compute the score", /*计算所有学生的总分和均分*/" 8. insert record to list ", /*插入记录到表中*/" 9. copy the file to new file", /*复制文件*/" 10. sort to make new file", /*排序*/" 11. append record to file", /*追加记录到文件中*/" 12. index on nomber", /*索引*/" 13. total on nomber", /*分类合计*/" 14. Quit"}; /*退出*/char s[3]; /*以字符形式保存选择号*/int c,i; /*定义整形变量*/gotoxy(1,25); /*移动光标*/printf("press any key enter menu......\n"); /*压任一键进入主菜单*/getch(); /*输入任一键*/clrscr(); /*清屏幕*/gotoxy(1,1); /*移动光标*/textcolor(YELLOW); /*设置文本显示颜色为黄色*/textbackground(BLUE); /*设置背景颜色为蓝色*/gotoxy(10,2); /*移动光标*/putch(0xc9); /*输出左上角边框┏*/for(i=1;i<44;i++)putch(0xcd); /*输出上边框水平线*/putch(0xbb); /*输出右上角边框┓*/for(i=3;i<20;i++){gotoxy(10,i);putch(0xba); /*输出左垂直线*/gotoxy(54,i);putch(0xba);} /*输出右垂直线*/gotoxy(10,20);putch(0xc8); /*输出左上角边框┗*/for(i=1;i<44;i++)putch(0xcd); /*输出下边框水平线*/putch(0xbc); /*输出右下角边框┛*/window(11,3,53,19); /* 制作显示菜单的窗口,大小根据菜单条数设计*/ clrscr(); /*清屏*/for(i=0;i<16;i++) /*输出主菜单数组*/{gotoxy(10,i+1);cprintf("%s",menu[i]);}textbackground(BLACK); /*设置背景颜色为黑色*/window(1,1,80,25); /*恢复原窗口大小*/gotoxy(10,21); /*移动光标*/do{printf("\n Enter you choice(0~14):"); /*在菜单窗口外显示提示信息*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整形数*/}while(c<0||c>14); /*选择项不在0~14之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/}STUDENT *init(){return NULL;}/*创建链表*/STUDENT *create(){int i; int s;STUDENT *h=NULL,*info; /* STUDENT指向结构体的指针*/for(;;){info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/if(!info) /*如果指针info为空*/{printf("\nout of memory"); /*输出内存溢出*/return NULL; /*返回空指针*/}inputs("enter no:",info->no,11); /*输入学号并校验*/if(info->no[0]=='@') break; /*如果学号首字符为@则结束输入*/inputs("enter name:",info->name,15); /*输入姓名,并进行校验*/printf("please input %d score \n",N); /*提示开始输入成绩*/s=0; /*计算每个学生的总分,初值为0*/for(i=0;i<N;i++) /*N门课程循环N次*/{do{printf("score%d:",i+1); /*提示输入第几门课程*/scanf("%d",&info->score[i]); /*输入成绩*/if(info->score[i]>100||info->score[i]<0) /*确保成绩在0~100之间*/printf("bad data,repeat input\n"); /*出错提示信息*/}while(info->score[i]>100||info->score[i]<0);s=s+info->score[i]; /*累加各门课程成绩*/}info->sum=s; /*将总分保存*/info->average=(float)s/N; /*求出平均值*/info->order=0; /*未排序前此值为0*/info->next=h; /*将头结点做为新输入结点的后继结点*/h=info; /*新输入结点为新的头结点*/}return(h); /*返回头指针*/}/*输入字符串,并进行长度验证*/inputs(char *prompt, char *s, int count){char p[255];do{printf(prompt); /*显示提示信息*/scanf("%s",p); /*输入字符串*/if(strlen(p)>count)printf("\n too long! \n"); /*进行长度校验,超过count值重输入*/ }while(strlen(p)>count);strcpy(s,p); /*将输入的字符串拷贝到字符串s中*/}/*输出链表中结点信息*/void print(STUDENT *h){int i=0; /* 统计记录条数*/STUDENT *p; /*移动指针*/clrscr(); /*清屏*/p=h; /*初值为头指针*/printf("\n\n\n****************************STUDENT******************************* *\n");printf("|rec|nO | name | sc1| sc2| sc3| sum | ave |order|\n");printf("|---|----------|---------------|----|----|----|--------|-------|-----|\n");while(p!=NULL){i++;printf("|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", i, p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);p=p->next;}printf("**********************************end*********************************\n") ;}/*删除记录*/STUDENT *delete(STUDENT *h){STUDENT *p,*q; /*p为查找到要删除的结点指针,q为其前驱指针*/char s[11]; /*存放学号*/clrscr(); /*清屏*/printf("please deleted no\n"); /*显示提示信息*/scanf("%s",s); /*输入要删除记录的学号*/q=p=h; /*给q和p赋初值头指针*/while(strcmp(p->no,s)&&p!=NULL) /*当记录的学号不是要找的,或指针不为空时*/ {q=p; /*将p指针值赋给q作为p的前驱指针*/p=p->next; /*将p指针指向下一条记录*/}if(p==NULL) /*如果p为空,说明链表中没有该结点*/printf("\nlist no %s student\n",s);else /*p不为空,显示找到的记录信息*/{printf("*****************************havefound***************************\n");printf("|no | name | sc1| sc2| sc3| sum | ave |order|\n");printf("|----------|---------------|----|----|----|--------|-------|-----|\n");printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("********************************end*******************************\n");getch(); /*压任一键后,开始删除*/if(p==h) /*如果p==h,说明被删结点是头结点*/h=p->next; /*修改头指针指向下一条记录*/elseq->next=p->next; /*不是头指针,将p的后继结点作为q的后继结点*/free(p); /*释放p所指结点空间*/printf("\n have deleted No %s student\n",s);printf("Don't forget save\n");/*提示删除后不要忘记保存文件*/}return(h); /*返回头指针*/}/*查找记录*/void search(STUDENT *h){STUDENT *p; /* 移动指针*/char s[15]; /*存放姓名的字符数组*/clrscr(); /*清屏幕*/printf("please enter name for search\n");scanf("%s",s); /*输入姓名*/p=h; /*将头指针赋给p*/while(strcmp(p->name,s)&&p!=NULL) /*当记录的姓名不是要找的,或指针不为空时*/ p=p->next; /*移动指针,指向下一结点*/if(p==NULL) /*如果指针为空*/printf("\nlist no %s student\n",s); /*显示没有该学生*/else /*显示找到的记录信息*/{printf("\n\n*****************************havefound***************************\n");printf("|nO | name | sc1| sc2| sc3| sum | ave |order|\n");printf("|----------|---------------|----|----|----|--------|-------|-----|\n");printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("********************************end*******************************\n");}}/*插入记录*/STUDENT *insert(STUDENT *h){STUDENT *p,*q,*info; /*p指向插入位置,q是其前驱,info指新插入记录*/ char s[11]; /*保存插入点位置的学号*/int s1,i;printf("please enter location before the no\n");scanf("%s",s); /*输入插入点学号*/printf("\nplease new record\n"); /*提示输入记录信息*/info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/if(!info){printf("\nout of memory"); /*如没有申请到,内存溢出*/return NULL; /*返回空指针*/}inputs("enter no:",info->no,11); /*输入学号*/inputs("enter name:",info->name,15); /*输入姓名*/printf("please input %d score \n",N); /*提示输入分数*/s1=0; /*保存新记录的总分,初值为0*/for(i=0;i<N;i++) /*N门课程循环N次输入成绩*/{do{ /*对数据进行验证,保证在0~100之间*/printf("score%d:",i+1);scanf("%d",&info->score[i]);if(info->score[i]>100||info->score[i]<0)printf("bad data,repeat input\n");}while(info->score[i]>100||info->score[i]<0);s1=s1+info->score[i]; /*计算总分*/}info->sum=s1; /*将总分存入新记录中*/info->average=(float)s1/N; /*计算均分*/info->order=0; /*名次赋值0*/info->next=NULL; /*设后继指针为空*/p=h; /*将指针赋值给p*/q=h; /*将指针赋值给q*/while(strcmp(p->no,s)&&p!=NULL) /*查找插入位置*/{q=p; /*保存指针p,作为下一个p的前驱*/p=p->next; /*将指针p后移*/}if(p==NULL) /*如果p指针为空,说明没有指定结点*/if(p==h) /*同时p等于h,说明链表为空*/h=info; /*新记录则为头结点*/elseq->next=info; /*p为空,但p不等于h,将新结点插在表尾*/elseif(p==h) /*p不为空,则找到了指定结点*/{info->next=p; /*如果p等于h,则新结点插入在第一个结点之前*/h=info; /*新结点为新的头结点*/}else{info->next=p; /*不是头结点,则是中间某个位置,新结点的后继为p*/q->next=info; /*新结点作为q的后继结点*/}printf("\n ----have inserted %s student----\n",info->name); printf("---Don't forget save---\n"); /*提示存盘*/return(h); /*返回头指针*/}/*保存数据到文件*/void save(STUDENT *h){FILE *fp; /*定义指向文件的指针*/STUDENT *p; /* 定义移动指针*/char outfile[10]; /*保存输出文件名*/printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示文件名格式信息*/scanf("%s",outfile);if((fp=fopen(outfile,"wb"))==NULL) /*为输出打开一个二进制文件,如没有则建立*/ {printf("can not open file\n");exit(1);}printf("\nSaving file......\n"); /*打开文件,提示正在保存*/p=h; /*移动指针从头指针开始*/while(p!=NULL) /*如p不为空*/{fwrite(p,sizeof(STUDENT),1,fp);/*写入一条记录*/p=p->next; /*指针后移*/}fclose(fp); /*关闭文件*/printf("-----save success!!-----\n"); /*显示保存成功*/}/* 从文件读数据*/STUDENT *load(){STUDENT *p,*q,*h=NULL; /*定义记录指针变量*/FILE *fp; /* 定义指向文件的指针*/char infile[10]; /*保存文件名*/printf("Enter infile name,for example c:\\f1\\te.txt:\n"); scanf("%s",infile); /*输入文件名*/if((fp=fopen(infile,"rb"))==NULL) /*打开一个二进制文件,为读方式*/{printf("can not open file\n"); /*如不能打开,则结束程序*/exit(1);}printf("\n -----Loading file!-----\n");p=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/if(!p){printf("out of memory!\n"); /*如没有申请到,则内存溢出*/return h; /*返回空头指针*/}h=p; /*申请到空间,将其作为头指针*/while(!feof(fp)) /*循环读数据直到文件尾结束*/{if(1!=fread(p,sizeof(STUDENT),1,fp))break; /*如果没读到数据,跳出循环*/p->next=(STUDENT *)malloc(sizeof(STUDENT)); /*为下一个结点申请空间*/if(!p->next){printf("out of memory!\n"); /*如没有申请到,则内存溢出*/return h;}q=p; /*保存当前结点的指针,作为下一结点的前驱*/p=p->next; /*指针后移,新读入数据链到当前表尾*/}q->next=NULL; /*最后一个结点的后继指针为空*/fclose(fp); /*关闭文件*/printf("---Y ou have success read data from file!!!---\n");return h; /*返回头指针*/}/*追加记录到文件*/void append(){FILE *fp; /*定义指向文件的指针*/STUDENT *info; /*新记录指针*/int s1,i;char infile[10]; /*保存文件名*/printf("\nplease new record\n");info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/if(!info){printf("\nout of memory"); /*没有申请到,内存溢出本函数结束*/return ;}inputs("enter no:",info->no,11); /*调用inputs输入学号*/inputs("enter name:",info->name,15); /*调用inputs输入姓名*/printf("please input %d score \n",N); /*提示输入成绩*/s1=0;for(i=0;i<N;i++){do{printf("score%d:",i+1);scanf("%d",&info->score[i]); /*输入成绩*/if(info->score[i]>100||info->score[i]<0)printf("bad data,repeat input\n");}while(info->score[i]>100||info->score[i]<0); /*成绩数据验证*/s1=s1+info->score[i]; /*求总分*/}info->sum=s1; /*保存总分*/info->average=(float)s1/N; /*求均分*/info->order=0; /*名次初始值为0*/info->next=NULL; /*将新记录后继指针赋值为空*/printf("Enter infile name,for example c:\\f1\\te.txt:\n"); scanf("%s",infile); /*输入文件名*/if((fp=fopen(infile,"ab"))==NULL) /*向二进制文件尾增加数据方式打开文件*/{printf("can not open file\n"); /*显示不能打开*/exit(1); /*退出程序*/}printf("\n -----Appending record!-----\n");if(1!=fwrite(info,sizeof(STUDENT),1,fp)) /*写文件操作*/{printf("-----file write error!-----\n");return; /*返回*/}printf("-----append sucess!!----\n");fclose(fp); /*关闭文件*/}/*文件拷贝*/void copy(){char outfile[10],infile[10];FILE *sfp,*tfp; /*源和目标文件指针*/STUDENT *p=NULL; /*移动指针*/clrscr(); /*清屏*/printf("Enter infile name,for example c:\\f1\\te.txt:\n");scanf("%s",infile); /*输入源文件名*/if((sfp=fopen(infile,"rb"))==NULL) /*二进制读方式打开源文件*/{printf("can not open input file\n");exit(0);}printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示输入目标文件名*/ scanf("%s",outfile); /*输入目标文件名*/if((tfp=fopen(outfile,"wb"))==NULL) /*二进制写方式打开目标文件*/{printf("can not open output file \n");exit(0);}while(!feof(sfp)) /*读文件直到文件尾*/{if(1!=fread(p,sizeof(STUDENT),1,sfp))break; /*块读*/fwrite(p,sizeof(STUDENT),1,tfp); /*块写*/}fclose(sfp); /*关闭源文件*/fclose(tfp); /*关闭目标文件*/printf("you have success copy file!!!\n"); /*显示成功拷贝*/}/*排序*/STUDENT *sort(STUDENT *h){int i=0; /*保存名次*/STUDENT *p,*q,*t,*h1; /*定义临时指针*/h1=h->next; /*将原表的头指针所指的下一个结点作头指针*/h->next=NULL; /*第一个结点为新表的头结点*/while(h1!=NULL) /*当原表不为空时,进行排序*/{t=h1; /*取原表的头结点*/h1=h1->next; /*原表头结点指针后移*/p=h; /*设定移动指针p,从头指针开始*/q=h; /*设定移动指针q做为p的前驱,初值为头指针*/while(t->sum<p->sum&&p!=NULL) /*作总分比较*/{q=p; /*待排序点值小,则新表指针后移*/p=p->next;}if(p==q) /*p==q,说明待排序点值大,应排在首位*/{t->next=p; /*待排序点的后继为p*/h=t; /*新头结点为待排序点*/}else /*待排序点应插入在中间某个位置q和p之间,如p为空则是尾部*/ {t->next=p; /*t的后继是p*/q->next=t; /*q的后继是t*/}}p=h; /*已排好序的头指针赋给p,准备填写名次*/while(p!=NULL) /*当p不为空时,进行下列操作*/{i++; /*结点序号*/p->order=i; /*将名次赋值*/p=p->next; /*指针后移*/}printf("sort sucess!!!\n"); /*排序成功*/return h; /*返回头指针*/}/*计算总分和均值*/void computer(STUDENT *h){STUDENT *p; /*定义移动指针*/int i=0; /*保存记录条数初值为0*/long s=0; /*总分初值为0*/float average=0; /*均分初值为0*/p=h; /*从头指针开始*/while(p!=NULL) /*当p不为空时处理*/{s+=p->sum; /*累加总分*/i++; /*统计记录条数*/p=p->next; /*指针后移*/}average=(float)s/i;/* 求均分,均分为浮点数,总分为整数,所以做类型转换*/ printf("\n--All students sum score is:%ld average is %5.2f\n",s,average);}/*索引*/STUDENT *index(STUDENT *h){STUDENT *p,*q,*t,*h1; /*定义临时指针*/h1=h->next; /*将原表的头指针所指的下一个结点作头指针*/h->next=NULL; /*第一个结点为新表的头结点*/while(h1!=NULL) /*当原表不为空时,进行排序*/{t=h1; /*取原表的头结点*/h1=h1->next; /*原表头结点指针后移*/p=h; /*设定移动指针p,从头指针开始*/q=h; /*设定移动指针q做为p的前驱,初值为头指针*/while(strcmp(t->no,p->no)>0&&p!=NULL) /*作学号比较*/{q=p; /*待排序点值大,应往后插,所以新表指针后移*/p=p->next;}if(p==q) /*p==q,说明待排序点值小,应排在首位*/{t->next=p; /*待排序点的后继为p*/h=t; /*新头结点为待排序点*/}else /*待排序点应插入在中间某个位置q和p之间,如p为空则是尾部*/ {t->next=p; /*t的后继是p*/q->next=t; /*q的后继是t*/}}printf("index sucess!!!\n"); /*索引排序成功*/return h; /*返回头指针*/}/*分类合计*/void total(STUDENT *h){STUDENT *p,*q; /*定义临时指针变量*/char sno[9],qno[9],*ptr; /*保存班级号的*/float s1,ave; /*保存总分和均分*/int i; /*保存班级人数*/clrscr(); /*清屏*/printf("\n\n *******************Total*****************\n");printf("---class---------sum--------------average----\n");p=h; /*从头指针开始*/while(p!=NULL) /*当p不为空时做下面的处理*/{memcpy(sno,p->no,8); /*从学号中取出班级号*/sno[8]='\0'; /*做字符串结束标记*/q=p->next; /*将指针指向待比较的记录*/s1=p->sum; /*当前班级的总分初值为该班级的第一条记录总分*/ave=p->average; /*当前班级的均分初值为该班级的第一条记录均分*/i=1; /*统计当前班级人数*/while(q!=NULL) /*内循环开始*/{memcpy(qno,q->no,8); /*读取班级号*/qno[8]='\0'; /*做字符串结束标记*/if(strcmp(qno,sno)==0) /*比较班级号*/{s1+=q->sum; /*累加总分*/ave+=q->average; /*累加均分*/i++; /*累加班级人数*/q=q->next; /*指针指向下一条记录*/}elsebreak; /*不是一个班级的结束本次内循环*/}printf("%s %10.2f %5.2f\n",sno,s1,ave/i);if(q==NULL)break; /*如果当前指针为空,外循环结束,程序结束*/elsep=q; /*否则,将当前记录作为新的班级的第一条记录开始新的比较*/ }printf("---------------------------------------------\n");}通讯录管理#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*标准库函数*/#include "string.h"/*字符串函数*/#include "ctype.h" /*字符操作函数*/#define M 50 /*定义常数表示记录数*/typedef struct /*定义数据结构*/{char name[20]; /*姓名*/char units[30]; /*单位*/char tele[10]; /*电话*/}ADDRESS;/******以下是函数原型*******/int enter(ADDRESS t[]); /*输入记录*/void list(ADDRESS t[],int n); /*显示记录*/void search(ADDRESS t[],int n); /*按姓名查找显示记录*/int delete(ADDRESS t[],int n); /*删除记录*/int add(ADDRESS t[],int n); /*插入记录*/void save(ADDRESS t[],int n); /*记录保存为文件*/int load(ADDRESS t[]); /*从文件中读记录*/void display(ADDRESS t[]); /*按序号查找显示记录*/void sort(ADDRESS t[],int n); /*按姓名排序*/void qseek(ADDRESS t[],int n); /*快速查找记录*/void copy(); /*文件复制*/void print(ADDRESS temp); /*显示单条记录*/int find(ADDRESS t[],int n,char *s) ; /*查找函数*/int menu_select(); /*主菜单函数*//******主函数开始*******/main(){int i;ADDRESS adr[M]; /*定义结构体数组*/int length; /*保存记录长度*/clrscr(); /*清屏*/for(;;)/*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ {case 0:length=enter(adr);break;/*输入记录*/case 1:list(adr,length);break; /*显示全部记录*/case 2:search(adr,length);break; /*查找记录*/case 3:length=delete(adr,length);break; /*删除记录*/case 4:length=add(adr,length); break; /*插入记录*/case 5:save(adr,length);break; /*保存文件*/。

相关文档
最新文档