⑴ 如何在报表服务中使用自定义程序集或嵌入的代码
创建自定义程序集
若要创建自定义程序集,请执行以下步骤︰
创建 Visual Studio 的类库。在文件菜单上,指向新建、 指向项目,然后单击类库。
指定的名称和位置。例如,我使用了 SimpleClassLibrary 和 C:\Documents 以及 Settings\user1\My Documents\Visual Studio 2005\projects。
打开类文件 (在本例中,Class1.vb),然后再创建您想要在报表服务中使用的函数。我的情况而言,我只是创建一个简单的共享的函数。
注意:因为这是一个共享的函数 (在 C# 静态),我们不需要通过使用实例化的对象来访问它。这起我们是如何引用在本文的后面我们程序集,请记住这一点。
Public Class Class1
Public Shared Function DoSomething() As String
Return "string data returned from custom assembly"
End Function
End Class
一旦您添加完所有代码,单击生成菜单生成 SimpleClassLibrary 。此步骤创建各自的 bin 文件夹中的程序集或托管的.dll。在我的示例中,此步骤创建我的程序集,SimpleClassLibrary.dll,我 Documents\Visual Studio 2005\Projects\ SimpleClassLibrary\bin\Debug 文件夹中。
将自定义程序集复制到 SQL 报表服务文件夹
使您的程序集可供报表设计器和报表在报表服务的服务器。若要执行此操作,必须将.dll 复制到报表设计器文件夹和报表服务器文件夹。
注意:该路径可能是有点不同,这取决于您的安装路径。
报告服务 2005 年将.dll 文件复制到以下文件夹︰
编写该 Visual Studio 8\Common7\IDE\PrivateAssemblies
计划该 SQL Server\MSSQL.3\Reporting Services\ReportServer\bin
对于报告服务 2000,将.dll 文件复制到以下文件夹︰
计划该 SQL Server\80\Tools\Report 设计器
计划该 SQL Server\MSSQL\Reporting Services\ReportServer\bin
注意:由于您所要做的每次更改的代码时,它可能有点乏味。许多开发人员创建批处理文件来处理此任务。下面是可以使用的示例批处理文件。
@ECHO OFF
REM Name: SRSDeploy.bat
REM
REM This batch files copies my custom assembly to my Reporting Services folders.
REM Run this from the directory where the customer assembly was compiled.
REM Be sure to close any applications that have your custom assembly open.
REM
REM This is the SQL Server 2005 version:
SimpleClassLibrary.dll "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies"
SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin"
REM This is the SQL Server 2000 version:
REM SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\80\Tools\Report Designer"
REM SimpleClassLibrary.dll "C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin"
我通常通过在项目中创建自定义生成后事件处理此任务。为此,转到您的项目的属性。接下来,单击编译选项卡,然后单击生成事件。这将打开生成事件对话框。选择生成后事件命令行,然后再键入以下命令︰
复制"$(目标路径)""C:\Program 数值 Visual Studio 8\Common7\IDE\PrivateAssemblies\"
复制"$(目标路径)""C:\Program 该 SQL Server\MSSQL.3\Reporting Services\ReportServer\bin\"
这可以使用后期生成宏来指定我的程序集的位置。创建生成后事件的详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) Web 站点︰
http://msdn2.microsoft.com/en-us/library/42x5kfw4.aspx
在报表服务中添加自定义程序集的引用
要添加到您的自定义程序集的引用,请在报表设计器中打开报表服务报表。若要执行此操作,请按照下列步骤操作:
打开将引用自定义程序集的报表。
在报表菜单上单击报表属性。
在报表属性对话框中,单击引用选项卡。
在引用,单击程序集名称的列标题旁边的省略号 (...) 按钮。
注意:基于实例的成员是类部分。它不是静态成员。静态 (也称为"共享"在某些我们报告服务文档) 表示成员可用类的每个实例,并且每个实例都使用同一存储位置。通过使用共享的关键字在 Microsoft Visual Basic 和在 C# static 关键字声明静态成员。这可能是有点令人困惑。这意味着,如果您自定义的程序集包含需要访问的实例成员,则将需要类部分中指定的类名和实例名。因为我将从报表服务呼叫的方法被定义为静态,在 Visual Basic 中使用共享的关键字,我将代替类节使用参考部分。
在添加引用对话框中,单击浏览。(在 SQL Server 2005 中,请单击浏览选项卡)。
找到并单击自定义程序集。单击打开。(在 SQL Server 2005 中,请单击添加,而不是打开)。
在添加引用对话框中,单击确定。
在报表属性对话框中,单击确定。
现在我们就可以使用报表服务中的自定义程序集。
在报表设计器中打开报表 (.rdl 文件)。
为了说明如何在报表服务中使用的自定义程序集,请添加一个文本框。若要执行此操作,将从工具箱向报表空白文本框。
文本框属性,在单击值属性,然后使用下面的语法调用的函数。
=ClassLibraryName.ClassName.MethodName or Namespace.ClassName.MethodName
在我的示例中,指定以下。
=SimpleClassLibrary.Class1.DoSomething()
其他格式用于引用报表服务中的代码。如果调用嵌入的代码,例如,使用以下格式。
=Code.MethodName()
如果使用实例来调用非静态的还是基于实例的方法中,自定义程序集中,请使用以下格式。
=Code.InstanceName.Method
注意:您已设置引用以不同的方式如果您想要使用基于实例的方法。要做到这一点,请需要转到报表属性,单击引用选项卡,然后在类部分指定的类名和实例名。
如果自定义程序集需要更多权限的代码访问安全性
如果自定义程序集需要更多比默认执行级别权限的权限,您必须进行一些代码访问安全的更改。如果使用代码访问安全的权限问题发生,很可能会看到"#Error"的是您自定义的程序集,而不是预期的结果。若要确定是否出现此问题,您可以执行的几个快速步骤以及有关如何为您的自定义程序集授予其他权限的详细说明,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章︰
842419如何向报表中报告服务引用自定义程序集授予权限
注意:以下方法是测试可帮助确定是否出现了代码访问安全问题。不建议使用以下方法,因为它为您自定义程序集授予完全信任权限。
为您的自定义程序集,创建新的代码组,然后再授予完全信任权限。若要执行此操作,打开程序该 SQL Server\MSSQL.3\Reporting Services\ReportServer\rssrvpolicy.config 文件,然后添加以下代码。
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyCodeGroup"
Description="Code group for my data processing extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\pathtocustomassembly\customassembly.dll"
/>
</CodeGroup>
我们建议您创建更特定的权限,而不是分配给代码组设置此权限设置。这篇文章已预期,您并且正在运行的自定义程序集,并且这需要更多详细信息。
注意:自定义程序集通常报表设计器中正常工作。但是,您可能会发现,当您部署,然后尝试在报表服务器中运行的自定义程序集,默认执行级别权限不足。这样做的原因是,默认情况下,报表设计器使用"完全信任"权限运行自定义程序集。但是,在将报表部署到报表服务器时,在报表服务器中授予的默认权限设置为执行级别。如果发生此问题,您很可能会看到而不是从自定义程序集的预期结果报表控件中的"#Error"。
嵌入的代码
嵌入的代码是报表属性对话框中的代码部分中编写的代码。嵌入的代码是一个不错的选择,将在报告中多次调用的代码。如果您想要重用代码在多个报表,自定义的程序集可能是更好的选择。若要创建嵌入式的函数,请执行以下步骤︰
在报表菜单上单击报表属性。
在报表属性对话框中,单击代码选项卡
添加下面的函数,然后单击确定。
Public Function EmbeddedFunction() as String
Return "this is from embedded code function"
End Function
在报告中,将添加一个新的文本框。
值属性中添加以下。
=code.EmbeddedFunction
⑵ C语言的源代码是什么意思啊
C语言源代码,就是依据C语言规则所写出的程序代码,常见的存储文件扩展名为.c文件和.h文件,分别对应C源文件(source file)和C头文件(header file)。
C语言是一门编程语言,简单点说,就是由人类书写按照一定规范书写的字符,通过一定手段(编译链接)转换后,可以让电脑或者其它电子芯片"读懂",并按照其要求工作的语言。
在所有的编程语言中,C语言是相对古老而原始的,同时也是在同类语言中更接近硬件,最为高效的编程语言。
(2)c报表设计器源码扩展阅读:
C语言广泛应用于底层开发。它的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
它能提供了许多低级处理的功能,可以保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
⑶ c语言程序设计图书馆源代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
typedef int BOOL;
typedef struct bookinfo
{
char number[15];/*产品编号*/
char name[30];/*产品名称*/
float price;/*单价*/
char auther[20];/*作者*/
BOOL isExit;/*存在状态*/
char lendername[20];/*借书人姓名*/
char lendersex[2];/*借书人性别*/
char lendernum[15];/*借书人学号*/
}BOOKINFO;
void menu()
{
printf("\n\n\n\n\n\n\n");
printf("\t\t\t图书管理系统\n");
printf("\t\t\t1:新进图书基本信息的输入\n");
printf("\t\t\t2:显示全部记录\n");
printf("\t\t\t3:根据图书名称查询图书基本信息\n");
printf("\t\t\t4:根据图书名称对撤销的图书信息进行删除\n");
printf("\t\t\t5:按照图书名称从小大到排序\n");
printf("\t\t\t6:统计某价格以上的图书数量\n");
printf("\t\t\t7:列出所有未借出去的图书信息\n");
printf("\t\t\t8:退出\n");
}
void choice_1_input_new()/*输入新进的图书信息*/
{
char choice;
FILE *p;
BOOKINFO newbook;
system("cls");
while(1)
{
printf("输入图书编号:");
gets(newbook.number);
printf("输入图书名称:");
gets(newbook.name);
printf("输入图书单价:");
scanf("%f",&newbook.price);
while(getchar()!='\n');
printf("输入图书的作者:");
gets(newbook.auther);
printf("输入借书人姓名:");
gets(newbook.lendername);
printf("输入借书人性别:");
gets(newbook.lendersex);
printf("输入借书人学号:");
gets(newbook.lendernum);
printf("是否保存该条书目?(Y/N)\n");
if(choice=='Y'||choice=='y')
{
newbook.isExit=1;/*将图书状态设置成1,表示没有借出*/
p=fopen("c:\\bookinfo.data","ab");
fwrite(&newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n该条书目已添加到c:\\bookinfo.data文件中!\n");
}
else
{
printf("\n本条书目未保存!\n");
}
printf("\n是否继续添加书目?(Y/N)\n");
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
if(choice=='Y'||choice=='y')
continue;
else
break;
}
}
void choice_2_display_all()/*显示全部图书信息*/
{
FILE *p;
int n;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
/*booknumber--;使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
booknumber--;
if(booknumber==0)
{
printf("没有任何图书信息!\n\n");
}
else
{
n=0;
printf(" 图书信息如下\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
while(n<booknumber)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
n++;
}
}
printf("\n\n按任意键回到主菜单!\n");
}
void choice_3_search_according_name()/*根据图书名称显示图书的信息*/
{
char search[20]="";/*search用来存放要查询的书名*/
int n;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
while(1)
{
printf("输入要查询的书本名称:");
gets(search);
if(booknumber==0)
{
printf("书库中没有任何信息!\n\n");
printf("按任意键回到主菜单!\n\n");
getch();
break;
}/*if结束*/
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
printf("该书的详细信息如下:\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
break;
}
if(n>=booknumber)
printf("没有查找该书的任何信息!\n");
printf("\n\n是否继续查询?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else结束*/
}/*while(1)结束*/
}
void choice_4_delete_according_name()/*根据图书名称对图书信息进行删除*/
{
char search[20]="";/*search用来存放要删除的书名*/
int n,i;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
while(1)
{
printf("输入要删除的书本名称:");
gets(search);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)
{
printf("书库中没有任何信息!\n\n");
printf("按任意键回到主菜单!\n\n");
getch();
break;
}/*if结束*/
else
{
for(n=0;n<booknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
break;
}
if(n>=booknumber)
printf("没有查找该书的任何信息!\n");
else
{
printf("是否确认需要删除该条书目?(Y/N)");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
for(i=n;i<booknumber-1;i++)
bookinfo[i]=bookinfo[i+1];
booknumber--;
p=fopen("c:\\bookinfo.data","wb");
for(n=0;n<booknumber;n++)
fwrite(&bookinfo[n],sizeof(BOOKINFO),1,p);
fclose(p);
printf("删除成功!\n");
}
else
printf("\n\n该条书目没有被删除!");
}
printf("\n\n是否继续进行删除操作?(Y/N)\n");
choice=getch();
while(choice!='Y'&&choice!='y'&&choice!='N'&&choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else结束*/
}/*while(1)结束*/
}
void choice_5_sort_according_name()/*根据图书名称排序*/
{
FILE *p;
int m,n;
BOOKINFO temp;
BOOKINFO bookinfo[100];
int booknumber;
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
system("cls");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)
{
printf("没有任何图书信息!\n\n");
}
else
{
for(m=0;m<booknumber-1;m++)
for(n=m+1;n<booknumber;n++)
if(strcmp(bookinfo[m].name,bookinfo[n].name)>0)
{
temp=bookinfo[m];
bookinfo[m]=bookinfo[n];
bookinfo[n]=temp;
}
p=fopen("c:\\bookinfo.data","wb");
for(m=0;m<booknumber;m++)
fwrite(&bookinfo[m],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n完成排序!\n\n");
}
printf("按任意键回到主菜单!\n");
getch();
}
void choice_6_display_high_price()/*根据价格列出图书信息*/
{
float price;
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
printf("请输入价格:");
scanf("%f",&price);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)
{
printf("没有任何图书信息!\n\n");
}
else
{
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
count++;
}
if(count==0)
printf("书库中没有比%.1f$价格高的图书!",price);
else
{
printf(" 价格高于%.1f$的图书信息如下\n",price);
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
for(n=0;n<booknumber;n++)
{
if(bookinfo[n].price>=price)
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n\n按任意键回到主菜单!\n");
getch();
}
void choice_7_display_according_exitflag()/*根据存在状态列出图书信息*/
{
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
booknumber=0;
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(&bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("书库中没有任何书目存在!\n");
}
else
{
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)
count++;
if(count==0)
printf("书库中的书籍全部借出!\n");
else
{
printf("书库中未被借出的图书信息如下:\n\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
for(n=0;n<booknumber;n++)
if(bookinfo[n].isExit==1)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n按任意键返回主菜单!\n");
getch();
}
void main()
{
char choice;
clock_t tm;
FILE *p;
if((p=fopen("c:\\bookinfo.data","rb"))==NULL)
{
p=fopen("c:\\bookinfo.data","wb");
fclose(p);
}
while(1)
{
system("cls");
menu();
choice=getch();
switch(choice)
{
case '1':choice_1_input_new();break;/*输入新进的图书信息*/
case '2':choice_2_display_all();break;/*显示全部图书信息*/
case '3':choice_3_search_according_name();break;/*根据图书名称显示图书的信息*/
case '4':choice_4_delete_according_name();break;/*根据图书名称对图书信息进行删除*/
case '5':choice_5_sort_according_name();break;/*根据图书名称排序*/
case '6':choice_6_display_high_price();break;/*根据价格列出图书信息*/
case '7':choice_7_display_according_exitflag();break;/*根据存在状态列出图书信息*/
case '8':printf("\n\n\t\t\t谢谢使用,再见!\n\t\t\t按任意键退出!\n");getch();return;
default:
printf("\n\n\t\t\t请输入菜单中的数字!(1~8)");
tm=clock();
while(clock()<tm+1800);
break;
}
}
}
⑷ 如何编译ireport的源码
iReport-3.0.0-src的源码文件引入工程
新建一个java工程
在工程上右键-->import-->选择file system-->next -->浏览找到iReport-3.0.0-src的源码文件夹
在左侧选择要导入的文件夹,比如src--finish就可以了
⑸ 较复杂的c语言程序设计源代码
一个“歼灭敌机”的小游戏,DEVc++通过编译:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#define zlx 10 //增量坐标(x)让游戏框不靠边
#define zly 3 //增量坐标(y)让游戏框不靠边
#define W 26 //游戏框的宽度
#define H 24 //游戏框的高度
int jiem[22][22]={0}, wj=10; //界面数组, 我机位置(初值为10)
int speed=4,density=30, score=0,death=0; //敌机速度, 敌机密度, 玩家成绩,死亡次数
int m=0,n=0; // m,n是控制敌机的变量
void gtxy (int x, int y) //控制光标位置的函数
{ COORD pos;
pos.X = x; pos.Y = y;
SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );
}
voidColor(inta) //设定颜色的函数(a应为1-15)
{ SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), a ); }
void yinc(int x=1,int y=0) //隐藏光标的函数
{ CONSOLE_CURSOR_INFO gb={x,y}; //y设为0即隐藏
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &gb);
}
void csh( ) //初始化函数
{ int i;
Color(7);
gtxy(zlx,zly); printf("╔"); gtxy(zlx+W-2,zly); printf("╗"); //左上角和右上角的框角
gtxy(zlx,zly+H-1); printf("╚"); gtxy(zlx+W-2,zly+H-1); printf("╝"); //下边两框角
for(i=2;i<W-2;i+=2) {gtxy(zlx+i,zly); printf("═"); } //打印上横框
for(i=2;i<W-2;i+=2) {gtxy(zlx+i,zly+H-1); printf("═"); } //打印下横框
for(i=1;i<H-1;i++) { gtxy(zlx,zly+i); printf("║"); } //打印左竖框
for(i=1;i<H-1;i++) {gtxy(zlx+W-2,zly+i); printf("║"); } //打印右竖框
Color(14); gtxy(19,2); printf("歼灭敌机"); Color(10);
gtxy(37,5); printf("设置:Esc ");
gtxy(37,7); printf("发射:↑ ");
gtxy(37,9); printf("控制:← → ");
gtxy(37,11);printf("得分:%d",score);
gtxy(37,13); printf("死亡:%d",death);
yinc(1,0);
}
void qcjm( ) //清除界面函数
{int i,j;
for(i=0;i<H-2;i++)
for(j=0;j<W-4;j++){gtxy(zlx+2+j,zly+1+i);printf(" ");}
}
void feiji( ) //飞机移动函数
{int i,j;
for(i=21;i>=0;i--) //从底行往上是为了避免敌机直接冲出数组
for(j=0;j<22;j++)
{if(i==21&&jiem[i][j]==3)jiem[i][j]=0; //底行赋值0 以免越界
if(jiem[i][j]==3)jiem[i][j]=0, jiem[i+1][j]=3;
}
if(jiem[20][wj]==3&&jiem[21][wj]==1) death++;
}
void zidan( ) //子弹移动函数
{ int i,j;
for(i=0;i<22;i++)
for(j=0;j<22;j++)
{if(i==0&&jiem[i][j]==2) jiem[i][j]=0;
if(jiem[i][j]==2) {if(jiem[i-1][j]==3) score+=100,printf("7");
jiem[i][j]=0,jiem[i-1][j]=2; }
}
}
void print( ) //输出界面函数
{int i,j;
qcjm( );
for(i=0;i<22;i++)
for(j=0;j<22;j++)
{ gtxy(12+j,4+i);
if(jiem[i][j]==3) {Color(13);printf("□");}
if(jiem[i][j]==2) {Color(10);printf(".");}
if(jiem[i][j]==1) {Color(10);printf("■");}
}
gtxy(37,11); Color(10);printf("得分:%d",score);
gtxy(37,13); printf("死亡:%d",death);
}
void setting( ) //游戏设置函数
{ qcjm( );
gtxy(12,4);printf("选择敌机速度:");
gtxy(12,5);printf(" 1.快 2.中 3.慢>>");
switch(getche( ))
{case '1': speed=2; break;
case '2': speed=4; break;
case '3': speed=5; break;
default: gtxy(12,6);printf(" 错误!默认值");
}
gtxy(12,7);printf("选择敌机密度:");
gtxy(12,8);printf(" 1.大 2.中 3.小>>");
switch(getche( ))
{case '1': density=20; break;
case '2': density=30;break;
case '3': density=40; break;
default: gtxy(12,9);printf(" 错误!默认值");
}
for(int i=0;i<22;i++)
for(int j=0;j<22;j++) jiem[i][j]=0;
jiem[21][wj=10]=1; jiem[0][5]=3;
gtxy(12,10);printf(" 按任意键保存...");
getch( );
qcjm( );
}
void run( ) //游戏运行函数
{ jiem[21][wj]=1; //值为1代表我机(2则为子弹)
jiem[0][5]=3; //值为3代表敌机
SetConsoleTitle("歼灭敌机"); //设置窗口标题
while(1)
{if (kbhit( )) //如有键按下,控制我机左右移动、发射或进行设定
{int key;
if((key=getch( ))==224) key=getch( );
switch(key)
{case 75: if(wj>0) jiem[21][wj]=0,jiem[21][--wj]=1; break;
case 77: if(wj<20)jiem[21][wj]=0,jiem[21][++wj]=1;break;
case 72: jiem[20][wj]=2; break;
case 27: setting( );
}
}
if(++n%density==0) //控制产生敌机的速度
{ n=0;srand((unsigned)time(NULL));
jiem[0][rand( )%20+1]=3;
}
if(++m%speed==0) { feiji( ); m=0; } //控制敌机移动速度(相对子弹而言)
zidan( ); //子弹移动
print( ); //输出界面
Sleep(120); //延时120毫秒
}
}
int main( )
{csh( );
run( );
return 0;
}
⑹ 用c语言设计程序,用于存放某班级学生姓名和三门功课的成绩.并输出成绩报表。
#include"stdio.h"
#include<string.h>
structCJB
{
charname[20];
intkemu1,kemu2,kemu3;
intzcj;
};
voidmain()
{
intr=0;
inti;
structCJBa[100];
while(1)
{
printf("请输入学生[姓名][科目1成绩][科目2成绩][科目3成绩](0000——结束) ");
r++;
scanf("%s%d%d%d",&a[r].name,&a[r].kemu1,&a[r].kemu2,&a[r].kemu3);
a[r].zcj=a[r].kemu1+a[r].kemu2+a[r].kemu3;
if(strcmp(a[r].name,"0")==0)
{
r--;
break;
}
}
printf("***************成绩表**************** ");
printf("姓名科目1成绩科目2成绩科目3成绩总成绩 ");
for(i=1;i<=r;i++)
printf("%-8s%-8d%-8d%-8d%-8d ",a[i].name,a[i].kemu1,a[i].kemu2,a[i].kemu3,a[i].zcj);
}
⑺ C语言编写的计时器源代码怎么编写
几天前写了个大概
你做个参考把
#include<stdio.h>
void
main()
{
float
x,y;
char
fuhao;
pintf("请输入第一个数:\t请输入运算符:\t,请输入第二个数:\n");
scanf("%f,%c,%f",&x,&fuhao,&f);
if(fuhao=='+')printf("%f,%c,%f=%f\n",x,fuhao,y,x+y);
else
if(fuhao=='-')printf("%f,%c,%f=%f\n"x,fuhao,y,x-y);
else
if(fuhao=='*')printf("%f,%c,%f=%f\n"x,fuhao,y,x*y);
else
if(fuhao=='/')
{
if(y==0.0)printf("分母不能为0\n");
else
printf("%f,%c,%f=%f\n"x,fuhao,y,x/y);
}
}