对于许多初尝文献综述的科研工作者而言,在写作的时候,常常不知如何动笔,建议你多看看计算机科学与应用这本期刊,,然后自己写吧,
.......论文.....源程序...... 一般不会有人给```
论文写作,先不说内容,首先格式要正确,一篇完整的毕业论文,题目,摘要(中英文),目录,正文(引言,正文,结语),致谢,参考文献。学校规定的格式,字体,段落,页眉页脚,开始写之前,都得清楚的,你的论文算是写好了五分之一。然后,选题,你的题目时间宽裕,那就好好考虑,选一个你思考最成熟的,可以比较多的阅读相关的参考文献,从里面获得思路,确定一个模板性质的东西,照着来,写出自己的东西。如果时间紧急,那就随便找一个参考文献,然后用和这个参考文献相关的文献,拼出一篇,再改改。正文,语言必须是学术的语言。一定先列好提纲,这就是框定每一部分些什么,保证内容不乱,将内容放进去,写好了就。参考文献去中国知网搜索,校园网免费下载。 合适采纳
你得说写什么C语言程序呀?大哥!我大二了,写了《学生档案管理》C语言程序,《职工工资管理》C语言程序等等~~就是不知道你要什么哩~`
C51语言应用编程的若干问题
摘 要 简要介绍了Franklin C51交叉编译器的特点,较详细地讨论了C51语言程序设计的基本技巧及其与汇编语言程序的混合编程、中断处理过程等实际问题,并给出了相应的处理程序。
关键词 Franklin C51编译器 汇编语言 结构化设计 模块 中断
--------------------------------------------------------------------------------
在研制单片机应用系统时,汇编语言是一种常用的软件工具。它能直接操作硬件,指令的执行速度快。但其指令系统的固有格式受硬件结构的限制很大,且难于编写与调试,可移植性也差。随着单片机硬件性能的提高,其工作速度越来越快,因此在编写单片机应用系统程序时,更着重于程序本身的编写效率。而Franklin C51交叉编译器是专为80C51系列单片机设计的一种高效的C语言编译器,使用它可以缩短开发周期,降低开发成本,而且开发出的系统易于维护,可靠性高,可移植性好,即使在代码的使用效率上,也完全可以和汇编语言相比,因此目前它已成为开发80C51系列单片机的流行工具。
1 C51语言程序设计的基本技巧
C语言是一种高级程序设计语言,它提供了十分完备的规范化流程控制结构。因此采用C51语言设计单片机应用系统程序时,首先要尽可能地采用结构化的程序设计方法,这样可使整个应用系统程序结构清晰,易于调试和维护。对于一个较大的程序,可将整个程序按功能分成若干个模块,不同的模块完成不同的功能。对于不同的功能模块,分别指定相应的入口参数和出口参数,而经常使用的一些程序最好编成函数,这样既不会引起整个程序管理的混乱,还可增强可读性,移植性也好。
在程序设计过程中,要充分利用C51语言的预处理命令。对于一些常用的常数,如TRUE,FALSE,PI以及各种特殊功能寄存器,或程序中一些重要的依据外界条件可变的常量,可采用宏定义"#define"或集中起来放在一个头文件中进行定义,再采用文件包含命令"#include"将其加入到程序中去。这样当需要修改某个参量时,只须修改相应的包含文件或宏定义,而不必对使用它们的每个程序文件都作修改,从而有利于文件的维护和更新。现举例说明如下:
例1 对于不同的单片机晶振,程序取不同的延时时间,而且可根据外界条件的变化修改延时时间的长短。对于这样的程序,可利用宏定义和条件编译来实现。程序如下:
#define flag 1
#ifdef flag==1
#define fosc 6M
delay=10;
#elif flag = = 0
#define fosc 8M
delay=12;
#else
#define fosc 12M
delay=20;
#endif
main()
{
for(I=0;I } 这样源程序不作任何修改就可适用于不同时钟频率的单片机系统,并可根据情况的不同取不同的delay值,完成不同的目的。 2 C51语言与汇编语言程序的混合编程 C51编译器能对C语言源程序进行高效率的编译,生成高效简洁的代码,在绝大多数场合采用C语言编程即可完成预期的目的。但有时为了编程直观或某些特殊地址的处理,还须采用一定的汇编语言编程。而在另一些场合,出于某种目的,汇编语言也可调用C语言。在这种混合编程中,关键是参数的传递和函数的返回值。它们必须有完整的约定,否则数据的交换就可能出错。下面就以力源公司的10位串行A/D转换器TLC1549 为例说明C语言程序与汇编语言程序的调用。 图1 TLC1549管脚图 1549的管脚图和时序图分别如图1和图2所示,假定DATA OUT接, 接,CLOCK接。 1549的具体特性请查阅有关资料。 图2 TLC1549时序图 例2 C语言程序与汇编语言程序的调用,其子程序如下: PUBLIC AD ;入口地址 SEG_AD SEGMENT CODE;程序段 RSEG SEG_AD USING 0 AD: MOV R6,#00 MOV R7,#00 SETB ACALL DELAY CLR ACALL DELAY MOV R0,#10 RR0: SETB NOP CLR DJNZ R0,RR0 ACALL DELAY MOV 30H,R6 ;A/D转换的高 ;两位保存在R6中 ACALL CIR MOV R6,30H SETB NOP CLR MOV 30H,R6 ACALL CIR MOV R6,30H MOV R0,#8 ;A/D转换的低 ;8位保存在R7中 RR2: SETB NOP CLR MOV 30H,R7 ACALL CIR MOV R7,30H DJNZ R0,RR2 RET CIR: CLR C MOV C, MOV A,30H RLC A MOV 30H,A RET END 在以上程序中,函数的返回值为一无符号整型数,根据调用规则,返回值的高位必须在R6中,低位在R7中,这样才可保证数据的传递不出错。另外,在调用过程中,必须注意寄存器的入栈。这样在以后用到A/D转换时,在C语言中调用汇编语言子程序AD()即可。 3 C51中断处理过程 C51编译器支持在C源程序中直接开发中断过程,因此减轻了使用汇编语言的繁琐工作,提高了开发效率。中断服务函数的完整语法如下: void函数名(void)[模式] [再入]interrupt n [using r] 其中n(0~31)代表中断号。C51编译器允许32个中断,具体使用哪个中断由80C51系列的芯片决定。r(0~3)代表第r组寄存器。在调用中断函数时,要求中断过程调用的函数所使用的寄存器组必须与其相同。"再入"用于说明中断处理函数有无"再入"能力。C51编译器及其对C语言的扩充允许编程者对中断所有方面的控制和寄存器组的使用。这种支持能使编程者创建高效的中断服务程序,用户只须在C语言下关心中断和必要的寄存器组切换操作。 例3 设单片机的fosc=12MHz,要求用T0的方式1编程,在脚输出周期为2ms的方波。 用C语言编写的中断服务程序如下: #include <> sbit P1_0=P1^0; void timer0(void)interrupt 1 using 1 { /*T0中断服务程序入口*/ P1_0=!P1_0; TH0=-(1000/256); /*计数初值重装*/ TL0=-(1000%256); } void main(void) { TMOD=0x01; /*T0工作在定时器方式1*/ P1_0=0; TH0=-(1000/256); /*预置计数初值*/ TL0=-(1000%256); EA=1; /*CPU开中断*/ ET0=1; /*T0开中断*/ TR0=1; /*启动T0*/ do{}while(1); } 在编写中断服务程序时必须注意不能进行参数传递,不能有返回值。 4 结论 C51编译器不但可以缩短单片机控制系统的开发周期,而且易于调试和维护。此外,C51语言还有许多强大的功能,如提供丰富的库函数供用户直接调用,完整的编译控制指令为程序调试提供必要的符号信息等等。总之,C51语言是广大单片机开发人员的强有力的工具。 .......论文.....源程序...... 一般不会有人给``` 只差界面设计。。。 最难的就是界面设计其实,如果你只是了解C语言,那基本上在编程上,可以是相当于小学毕业。MFC界面设计的层次大概打个比方就是“高中”,现在看MFC,它的难度会远远超过你的想象。 速成的话。。。没有很好的办法,界面设计在学校里基本上是不可能会教的,因为这些都是商业机密技术,QQ的界面,360的界面,都是专业的UI库做的,这些库随便就是上百万的授权费。继续回答你:这样的一个界面上,你看着简单,但其实用到的控件很多,按钮,列表,表格等等,你要想用MFC写这样的一个界面,那你几乎得把MFC全部学完,夜以继日地看,我个人感觉需要一个月的时间。还有如果你是用MFC的话,那么你会发现,你写控制台用的C语言和MFC的C语言,会完全不一样,微软封装了很多的数据结构,甚至连函数调用都封装了,看起来很头疼的。 机顶盒上游戏开发可以么,也是用C语言写的目 录第一章 绪论 机顶盒的产生背景 机顶盒的发展及其现状 游戏模块设计的必要性 模块设计需要解决的问题 3第二章 系统开发环境及相关技术介绍 XX-XX硬件平台 XX操作系统 内核 任务机制 消息队列 信号量 C语言的特点 7第三章 开发流程 功能需求分析 可行性分析 模块设计 编码 测试 11第四章 系统设计 游戏模块接口设计 游戏的初始化 游戏的按键读取和转化 游戏的暂停、恢复和退出 游戏算法设计 推箱子游戏设计 俄罗斯方块游戏设计 黑白棋游戏设计 14结 论 16谢 辞 17参 考 文 献 18附录 推箱子游戏源程序 19 计算机类毕业设计(论文)参考题目 马上就要进行毕业设计了,你是否还在为选题而烦恼呢?下面是我为大家收集的关于计算机类毕业设计(论 文)参考题目,希望能够帮到大家! 1、 ××大学学籍管理系统开发与设计 2、 ××公司固定资产管理系统的开发与设计 3、 ××局人事劳资管理信息系统分析与设计 4、 用POWERBUILDER实现工资管理系统 5、 ××省特种设备监督检验所仪器设备管理系统的开发与设计 6、 ××市电源空调集中监控系统报表管理及技术资料动态管理的实现 7、 ××县电信局通信线路工程管理系统 8、 ××学院毕业生就业管理系统的开发与设计 9、 本地网通信线路计算机管理系统的设计与实现 10、 长途交换机 S1240 呼叫局数据管理 11、 传输资料计算机管理系统的开发 12、 大客户管理系统的开发与设计 13、 电信集团(大)客户关系管理系统以及和电信97网的嵌入集成 14、 利用Dlephi开发电信大户管理系统 15、 地下线路资源图形、数据管理系统的设计和开发 16、 光缆线路维护资源管理系统的设计与实现 17、 电话卡业务管理系统 18、 电信管线资源管理系统的设计与实现 19、 电信机房综合管理系统的设计与实现 20、 电信接入网钥匙管理系统的设计与实现 21、 工程项目综合管理系统的设计与实现 22、 广告代码管理系统—基于WEB的应用系统设计实现 23、 基于BS结构的学籍管理系统的研制与开发 24、 基于GSM短消息的可WEB管理的客户调查系统 25、 基于INTERNET的'远程成绩查询管理系统的设计与实现 26、 基于Web的DMTF的网络管理软件的设计与实现 27、 基于WEB的教务管理系统 28、 教务在线系统教学计划管理子系统性 29、 联通193话费管理系统的设计与实现 30、 论企业生产管理ERP系统的设计与实现 31、 面向计算机应用领域—图书馆管理信息系统的开发与实现 32、 企业信息管理与发布—发布与访问控制子系统 33、 全国组织机构代码管理系统WWW技术建设方案 34、 商场电子类产品库存管理系统 35、 上海贝尔S1240程控交换机设备号管理系统 36、 数据维护管理Call center的设计 37、 图书馆管理信息系统的设计与实现 38、 网络信息管理系统 39、 无线寻呼营业微机管理系统 40、 校园信息管理系统——ASP动态网站建设 41、 移动网络硬件资源调配管理系统的总体设计 42、 邮政储蓄业绩管理信息系统 43、 远程成绩查询管理系统的设计与实现 44、 168声讯系统全省联网的开发与实现 45、 ××公司办公工作区域计算机局域网的设计 46、 ××区政府电子政务宽带网的建设规划 47、 基于 Intranet 的企业信息网络建设 48、 利用ASP实现OA网的设计——xx省通信光缆线路维护网 49、 利用ASP实现数据的传输和处理——电信大客户网上互动平台系统分析与设计 50、 企业局域网规划设计 51、 校园多媒体网络教学系统的设计和实现 52、 PSMS动力设备及环境集中监控系统 53、 ××市电源空调及接入网环境集中监控系统的设计与实施 54、 动力集中监控系统采集单元设备驱动软件设计 55、 在Web中的应用 56、 BMP图像的有损压缩和解压 57、 CLIENT/SERVER环境下数据库应用系统的开发 58、 C语言多媒体开发与设计--题库维护及抽题子系统 59、 IDEA 加密算法 60、 INTERNET网络协议的研究与实现 61、 INTRANET安全与防火墙的应用 62、 IP网络环境下的视频图像传输及播放 63、 JSP构建VOD(视频点播)网站 64、 LED矩阵式显示屏的设计 65、 LINUX网络编程----实现一个局域网的电子邮件系统 66、 Nokia移动交换子系统检测数据的采集及数据处理 67、 ORACLE数据库不同建表策略对移动计费系统的影响 68、 POWERBUIDER数据窗口技术动态报表的实现 69、 WEB服务器软件的设计与实现 70、 WEB环境下BBS的建立和主要功能 71、 ×× 通信针对电子政务提出的信息化解决方案 72、 ××本地交换网时间同步系统 73、 ××市电信公司营运数据存储备份系统建设方案 74、 ××银行接入INTERNET方案设计 75、 报刊分发电子显示系统的开发与设计 学术堂整理了十五个简单好写的毕业论文题目,供大家选择:1.计算机网络信息安全及其防护对策2.计算机网络犯罪对刑事诉讼的挑战与制度应对3.提高计算机网络可靠性的方法研究4.浅析计算机网络安全防范措施5.计算机网络安全问题及其防范措施6.创客教育视野下“计算机网络”课程实验设计7.计算机网络课程中的项目式实验教学8.计算机网络信息安全及防护策略研究9.浅谈计算机网络安全问题及其对策10.计算机网络中学生间社会性交互的规律11.计算机网络路由研究综述12.计算机网络实践教学体系与能力培养13.计算机网络信息管理及其安全防护策略14.计算机网络安全的研究与探讨15.计算机网络攻防建模仿真研究综述 C语言,感觉做一个嵌入式比较好因为很多驱动都用C语言编写的。所以建议你,做一个温度感应器什么的 要么是某某管理系统要么是某种常见软件。你可以做个根据人的照片做成表情包的,就像iphone x上那个相机一样。另外就是面部识别,跟踪,这个也比较新 这个具体得知道你的专业呀,还有就是选的是什么题目,每个题目的要求和要的功能那些都是不一样的,总之计算机的就是这样,比较独立的。所以要知道你所学的方向才能确定的。 论文写作,先不说内容,首先格式要正确,一篇完整的毕业论文,题目,摘要(中英文),目录,正文(引言,正文,结语),致谢,参考文献。学校规定的格式,字体,段落,页眉页脚,开始写之前,都得清楚的,你的论文算是写好了五分之一。然后,选题,你的题目时间宽裕,那就好好考虑,选一个你思考最成熟的,可以比较多的阅读相关的参考文献,从里面获得思路,确定一个模板性质的东西,照着来,写出自己的东西。如果时间紧急,那就随便找一个参考文献,然后用和这个参考文献相关的文献,拼出一篇,再改改。正文,语言必须是学术的语言。一定先列好提纲,这就是框定每一部分些什么,保证内容不乱,将内容放进去,写好了就。参考文献去中国知网搜索,校园网免费下载。 合适采纳 要么是某某管理系统要么是某种常见软件。你可以做个根据人的照片做成表情包的,就像iphone x上那个相机一样。另外就是面部识别,跟踪,这个也比较新 数据挖掘人工智能方面 应该是要求你用C语言写一个关于通讯录和记事本的程序.然后围绕这个来写一篇论文.主要是看你们学校以及你的老师对你有什么具体要求.这个你必须要自己去问清楚.一般来说,现在的学生写毕业设计都是在网上找些相关的,然后再改写别人的论文变成自己的.现在论文网非常多,有的是免费的,有的是要给钱的,你先问清楚老师的要求.然后在网上查一下有没有这方面相关的,有就最好,弄下来,加入与之不同的,去掉不要的,再加入你自己的思想就可以了.这个不用急的,反正到时候,老师自然会帮你想方法的,你记住一定要和老师搞好关系,多勾通一下.有不懂的地方及时的问.这样才能保证你过关,因为写论文一是要搞清楚题目要求,二是要按要求写,比如用什么样的格式,写多少字等等.总之,你首先应该做的是问清具体的要求,然后不懂的就问老师,或者是和老师商量,具体怎么做.然后根据安排再查相关资料完全论文. #include ""#include ""#include "" #include ""#include "" FILE *fp;int i; //i是全局变量 可代替length struct address { char postnum[10]; char a[40]; //家庭地址};struct birthday { int year; int month; int day; };struct ffriend { int num; //序号char name[20]; char sex; char telephone[13]; struct birthday birthday; struct address address; }friends[50]; void Load(){ int j;long k;fp=fopen("","a+"); //打开文件 if(fp!=NULL){ for(i=1;i<50;i++){ j=fgetc(fp);if(j==EOF) //判断是否到了文件尾return;k=i-1;fseek(fp,k*sizeof(struct ffriend),SEEK_SET);fread(&friends[i],sizeof(struct ffriend),1,fp); //从文件中读取一条记录}}else{ fp=fopen("","w");i=1;}}void Show(int j) {// friends[j].num=i;printf("\n\n\t编号-Nnumber: %3d",friends[j].num);printf("\n\t姓名-Name:%-20s",friends[j].name);printf("\n\t性别-Sex:%c",friends[j].sex);printf("\n\t联系电话-Telephone:%-13s",friends[j].telephone);printf("\n\t出生日期-Birthday:%4d-%2d-%3d",friends[j].[j].[j].);printf("\n\t邮编-Postnum:%-10s",friends[j].);printf("\n\t通信地址-address:%-40s",friends[j].);}void Append(int j) {fflush(stdin); //区内清除文件缓冲区,文件以写方式打开时将缓冲容写入文件//stdin是一个标准FILE*(文件型指针)指向通常是用键盘的输入的输入流friends[j].num=j;printf("\n\t\t\t序号-Number:%d",j);printf("\n\t\t\t姓名-Name:"); scanf("%s",friends[j].name);fflush(stdin); //为什么没有fflush(stdin); 的效果会自动跳过呢?printf("\t\t\t性别-Sex(m/w):"); //为什么输入汉字男女也会自动跳过联系电话呢 scanf("%c",&friends[j].sex);printf("\t\t\t联系电话-telephone:"); scanf("%s",friends[j].telephone);printf("\t出生日期-birthday"); printf("\n\t\t\t年份-year:");scanf("%d",&friends[j].);printf("\t\t\t月份-month:");scanf("%d",&friends[j].);printf("\t\t\t日-day:");scanf("%d",&friends[j].);printf("\t\t\t邮编-Postnumber:"); scanf("%s",friends[j].);printf("\t\t\t通信地址-Address:"); scanf("%s",friends[j].);getchar();}void Delete() {int k;printf("\n\tDelete 序号-Number:"); scanf("%d",&k);if(k<=i){for(int j=k;jk;j--) //插入功能{strcpy(friends[j].name,friends[j-1].name); //数据后移friends[j].sex=friends[j-1].sex;strcpy(friends[j].telephone,friends[j-1].telephone);friends[j].[j-1].;friends[j].[j-1].;friends[j].[j-1].;strcpy(friends[j].[j-1].);strcpy(friends[j].[j-1].);}Append(k);i++; printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");break; case 'D': //删除功能 //增添随意删除多条记录的功能Delete();if(i<1)printf("\n没有记录-No records\n");printf("\n请按回车键继续!");getchar();getchar(); printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");break;case 'E': //查询功能 printf("\n\t请输入要查询记录的相关姓名:"); //增添查询按列号的scanf("%s",searchname);for(j=1;j<=i;j++){if(strcmp(searchname,friends[j].name)==0) //比较字符串{ Show(j); break;}}if(i<1) {printf("\n 没有您所查询的记录-No records");printf("\n 请按回车键继续!");getchar();}printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");getchar();break;case 'F': //修改功能 / /增添按序列号查询printf("\n\t请输入要修改记录的相关姓名:");gets(searchname);scanf("%s",searchname);for(j=1;j<=i;j++){if(strcmp(searchname,friends[j].name)==0) //比较字符串{ Modify(j); // getchar(); //加个输出确定修改吗}}if(i<1) //修改功能{ printf("\n 没有您所要修改的记录-No records");printf("\n 请按回车键继续!");getchar();getchar();}printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");break;case 'G': Save(); //存盘功能 getchar();printf("\n\t\t\t\t\t\t\t此次操作结束"); printf("\n\t------------------------------------------------------------\t\t\n");break;case 'H': //退出功能char x;printf("是否保存?yes/no\n");scanf("%s",&x);//getchar();// getchar();if(x=='y') { Save();exit(0);}elseexit(0);default: printf("\n\t输入有误,请输入正确的序列号!");printf("\n请按回车键继续!");getchar();printf("\n\t\t\t\t\t\t\t此次操作结束");printf("\n\t------------------------------------------------------------\t\t\n");}}while(1);} /*源程序*//******头文件(.h)***********/#include""/*I/O函数*/#include""/*标准库函数*/#include""/*字符串函数*/#include""/*字符操作函数*/#defineM50/*定义常数表示记录数*/typedefstruct/*定义数据结构*/{charname[20];/*姓名*/charunits[30];/*单位*/chartele[10];/*电话*/}ADDRESS;/******以下是函数原型*******/intenter(ADDRESSt[]);/*输入记录*/voidlist(ADDRESSt[],intn);/*显示记录*/voidsearch(ADDRESSt[],intn);/*按姓名查找显示记录*/intdelete(ADDRESSt[],intn);/*删除记录*/intadd(ADDRESSt[],intn);/*插入记录*/voidsave(ADDRESSt[],intn);/*记录保存为文件*/intload(ADDRESSt[]);/*从文件中读记录*/voiddisplay(ADDRESSt[]);/*按序号查找显示记录*/voidsort(ADDRESSt[],intn);/*按姓名排序*/voidqseek(ADDRESSt[],intn);/*快速查找记录*/voidcopy();/*文件复制*/voidprint(ADDRESStemp);/*显示单条记录*/intfind(ADDRESSt[],intn,char*s);/*查找函数*/intmenu_select();/*主菜单函数*//******主函数开始*******/main(){inti;ADDRESSadr[M];/*定义结构体数组*/intlength;/*保存记录长度*/clrscr();/*清屏*/for(;;)/*无限循环*/{switch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/{case0:length=enter(adr);break;/*输入记录*/case1:list(adr,length);break;/*显示全部记录*/case2:search(adr,length);break;/*查找记录*/case3:length=delete(adr,length);break;/*删除记录*/case4:length=add(adr,length);break;/*插入记录*/case5:save(adr,length);break;/*保存文件*/case6:length=load(adr);break;/*读文件*/case7:display(adr);break;/*按序号显示记录*/case8:sort(adr,length);break;/*按姓名排序*/case9:qseek(adr,length);break;/*快速查找记录*/case10:copy();break;/*复制文件*/case11:exit(0);/*如返回值为11则程序结束*/}}}/*菜单函数,函数返回值为整数,代表所选的菜单项*/menu_select(){chars[80];intc;gotoxy(1,25);/*将光标定为在第25行,第1列*/printf("pressanykeyentermenu\n");/*提示压任意键继续*/getch();/*读入任意字符*/clrscr();/*清屏*/gotoxy(1,1);printf("********************MENU*********************\n\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("***********************************************\n");do{printf("\nEnteryouchoice(0~11):");/*提示输入选项*/scanf("%s",s);/*输入选择项*/c=atoi(s);/*将输入的字符串转化为整型数*/}while(c11);/*选择项不在0~11之间重输*/returnc;/*返回选择项,主程序根据该数调用相应的函数*/}/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/intenter(ADDRESSt[]){inti,n;char*s;clrscr();/*清屏*/printf("\npleaseinputnum\n");/*提示信息*/scanf("%d",&n);/*输入记录数*/printf("pleaseinputrecord\n");/*提示输入记录*/printf("nameunittelephone\n");printf("------------------------------------------------\n");for(i=0;in-1)/*如果整数i值大于n-1,说明没找到*/printf("notfound\n");elseprint(t[i]);/*找到,调用显示函数显示记录*/}/*显示指定的一条记录*/voidprint(ADDRESStemp){clrscr();printf("\n\n********************************************\n");printf("nameunittelephone\n");printf("------------------------------------------------\n");printf("%-20s%-30s%-10s\n",);printf("**********************end***********************\n");}/*查找函数,参数为记录数组和记录条数以及姓名s*/intfind(ADDRESSt[],intn,char*s){inti;for(i=0;in-1)/*如果i>n-1超过了数组的长度*/printf("nofoundnotdeleted\n");/*显示没找到要删除的记录*/else{print(t[i]);/*调用输出函数显示该条记录信息*/printf("Areyousuredeleteit(1/0)\n");/*确认是否要删除*/scanf("%d",&ch);/*输入一个整数0或1*/if(ch==1)/*如果确认删除整数为1*/{for(j=i+1;j=i;j--)/*从最后一个结点开始向后移动一条*/{strcpy(t[j+1].name,t[j].name);/*当前记录的姓名拷贝到后一条*/strcpy(t[j+1].units,t[j].units);/*当前记录的单位拷贝到后一条*/strcpy(t[j+1].tele,t[j].tele);/*当前记录的电话拷贝到后一条*/}strcpy(t[i].name,);/*将新插入记录的姓名拷贝到第i个位置*/strcpy(t[i].units,);/*将新插入记录的单位拷贝到第i个位置*/strcpy(t[i].tele,);/*将新插入记录的电话拷贝到第i个位置*/n++;/*记录数加1*/returnn;/*返回记录数*/}/*保存函数,参数为结构体数组和记录数*/voidsave(ADDRESSt[],intn){inti;FILE*fp;/*指向文件的指针*/if((fp=fopen("","wb"))==NULL)/*打开文件,并判断打开是否正常*/{printf("cannotopenfile\n");/*没打开*/exit(1);/*退出*/}printf("\nSavingfile\n");/*输出提示信息*/fprintf(fp,"%d",n);/*将记录数写入文件*/fprintf(fp,"\r\n");/*将换行符号写入文件*/for(i=0;i=0&&id0)/*比较大小*/{flag=1;strcpy([j].name);/*交换记录*/strcpy([j].units);strcpy([j].tele);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j+1].name,);strcpy(t[j+1].units,);strcpy(t[j+1].tele,);}if(flag==0)break;/*如果标志为0,说明没有发生过交换循环结束*/}printf("sortsucess!!!\n");/*显示排序成功*/}/*快速查找,参数为结构体数组和记录数*/voidqseek(ADDRESSt[],intn){chars[20];intl,r,m;printf("\nPleasesortbeforeqseek!\n");/*提示确认在查找之前,记录是否已排序*/printf("pleaseenternameforqseek\n");/*提示输入*/scanf("%s",s);/*输入待查找的姓名*/l=0;r=n-1;/*设置左边界与右边界的初值*/while(lr)/*如果左边界大于右边界时*/printf("notfound\n");/*显示没找到*/}/*复制文件*/voidcopy(){charoutfile[20];/*目标文件名*/inti,n;ADDRESStemp[M];/*定义临时变量*/FILE*sfp,*tfp;/*定义指向文件的指针*/clrscr();/*清屏*/if((sfp=fopen("","rb"))==NULL)/*打开记录文件*/{printf("cannotopenfile\n");/*显示不能打开文件信息*/exit(1);/*退出*/}printf("Enteroutfilename,forexamplec:\\f1\\:\n");/*提示信息*/scanf("%s",outfile);/*输入目标文件名*/if((tfp=fopen(outfile,"wb"))==NULL)/*打开目标文件*/{printf("cannotopenfile\n");/*显示不能打开文件信息*/exit(1);/*退出*/}fscanf(sfp,"%d",&n);/*读出文件记录数*/fprintf(tfp,"%d",n);/*写入目标文件数*/fprintf(tfp,"\r\n");/*写入换行符*/for(i=0;i 这个问题答案网上很多,这个地址就是或#include 我也答过#include "" #include "" #include "" #include "" #include "" #include "" /#include "" #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有关c语言毕业论文的题目
c语言设计本科毕业论文
基于c语言的通讯录毕业论文