⑴ 如何在報表服務中使用自定義程序集或嵌入的代碼
創建自定義程序集
若要創建自定義程序集,請執行以下步驟︰
創建 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);
}
}