C语言课程设计报告-电子投票平台

C语言课程设计报告-电子投票平台
C语言课程设计报告-电子投票平台

C语言课程设计报告

——08级电子4班 **** 3108009296

一、需求分析

1.设计题目:电子投票平台

2.设计内容

1)编程建立一个小型电子投票系统,其中包含电子投票、票数统计功能,。尽量做到提供一个简单的人机界面,系统界面友好,使用方便。

2)软件的使用者分为两类,一类为管理员,可以对候选人信息进行初始化和修改,还可浏览候选人信息介绍,对于候选人所得票数,管理员可以进行排序,以便得出最终投票结果,也可以对系统的用户进行管理,创建使用者用户名和密码等。另一类为使用者为普通投票者,该类用户需要用管理员分配的用户名和密码正确登录系统,可以查询候选人信息、浏览候选人信息和进行投票等,其中投票是只需做到输入自己想要投票的候选人编号即可完成投票。

3.系统功能

1)投票者功能

A.浏览候选人信息.

B.输入候选人的号码即可查询候选人信息。

C.输入所选候选人的号码即可完成投票。

2)管理员功能

A.初始化候选人信息且创建候选人:在系统投入使用前,管理员先将需要投票

选举的候选人信息录入系统中,以便投票和查看。管理员的初始化工作就是将候选人的号码、姓名和简介录入系统。

B.浏览和查询候选人信息:管理员有权浏览候选人信息及其投票情况,以便随

时掌握候选人的信息和对候选人信息进行修改。

C.管理员可以对投票者的用户名和密码进行管理,也可对投票的结果进行排

序。

二、详细设计

1.主要功能模块

a.主程序模块

输出主菜单,调用其他函数实现整体功能

b.封面输出模块

输出欢迎信息,主要是用点阵字模来输出中文内容。

c.功能选择模块

根据输入的用户名{1}和密码{1},进入不同的界面

d.身份验证模块

验证管理员和用户(投票者)的用户名和密码是否正确,不正确可选择重新输

入用户名和密码或者退出。

e.投票人管理模块

该模块主要实现常规的管理功能,如投票人的初始化,即创建投票人用户名和密码。因此该模块主要用结构体类型的数组和文件的读写来完成对大量数据的管理操作。

f.候选人管理模块

候选人管理模块和投票人管理模块类似,要对大量有一定结构的信息进行管理操作,如创建候选人,查询、浏览候选人信息。因此定义候选人信息结构体,用于存储候选人信息记录,并且将大量记录存储在硬盘文件中以便保存。用文件的读写函数辅助实现各项功能。

g.投票区模块

投票区模块用于完成系统的主体功能,提示投票人输入自己想要选举的候选人序号,系统立刻将该候选人对应的票数加一,并将目前的投票状况显示给投票人。要将候选人对应的票数增加,需读取候选人信息文件,将对应的候选人票数加一后再写回文件即可。

h.得票结果管理模块:

得票结果管理属于管理员的权限范围,该模块共有清空投票结果、得票结果按票数多少的排行浏览两大功能。能过得票结果排行浏览可得知哪位候选人选举成功。当选举结束后,可选择清空得票结果。

2.主要流程图

三、源程序代码

1.头文件

#include

#include

#include

#include

#include

#define closegr closegraph #define N 30

void welcome();/*欢迎*/ void thans();/*再见*/

void main_a();/*管理员主控平台*/

void main_v();/*用户(投票者)主控平台*/

void create();/*创建候选人*/

void CreatUser();/*创建用户*/

void search();/*查询候选人信息*/

void browse();/*浏览候选人信息*/

void vote();/*用户投票*/

void read_c_man();/*读取候选人信息*/

void c_save();/*存储候选人信息*/

*/

2.候选人信息数据结构

描述候选人的编号、姓名、简介和得票数量信息,作为候选人信息记录存在文件中。

typedef struct candidate

{

long number;/*候选人号码*/

char name[20];/*候选人名称*/

char intro[400];/*候选人简介*/

int vote;/*候选人票数*/

}candidate;

3.系统用户数据结构

描述系统用户的编号、用户名、密码和权限信息,作为一整条记录存放在文件中。

typedef struct user

{

char name[20];/*用户名称*/

char ps[8];/*用户密码*/

int power;/*用户权限*/

}user;

4.程序清单

#include

#include

#include

#include

#include

#define closegr closegraph

#define N 30

void welcome();/*欢迎 */

void thans();/* 再见 */

void main_a();/* 管理员主控平台 */

void main_v();/* 用户(投票者)主控平台 */

void create();/* 创建候选人 */

void CreatUser();/* 创建用户 */

void search();/* 查询候选人信息 */

void browse();/* 浏览候选人信息 */

void vote();/* 用户投票 */

void read_c_man();/* 读取候选人信息 */

void c_save();/* 存储候选人信息*/

/*候选人信息数据结构

描述候选人的编号、姓名、简介和得票数量信息,作为候选人信息记录存在文件中*/

typedef struct candidate

{

long number;

char name[20];

char intro[400];

int vote;

}candidate;

/*系统用户数据结构

描述系统用户的编号、用户名、密码和权限信息,作为一整条记录存放在文件中*/

typedef struct user

{

char name[20];

char ps[8];

int power;

}user;

candidate c_man[N];

user total_user[N];

int total=0,c_total=0;

int i=0;

void read_c_man()

{

char DataFile[20]="houxuan.txt";

FILE * fp=NULL;

c_total=0;

fp=fopen(DataFile,"rb");

if(fp==NULL)

{

printf("\nOpen file %s fail! End With any key \n",DataFile);

perror("Open file fail");

getch();

exit(1);

}

while(fread(&c_man[c_total],sizeof(candidate),1,fp)!=(int)NULL)

{

c_total++;

}

fclose(fp);

}

void c_save()

{

FILE *fp=NULL;

char DataFile[20]="houxuan.txt";/* 存储投票人信息的文件名 */

fp=fopen(DataFile,"wb");

for(i=0;i

{

if(fwrite(&c_man[i],sizeof(candidate),1,fp)!=1)

{

printf("\nwrite file is fail! End with any key\n",DataFile);

perror("write file fail");

getch();

exit(1);

}

}

}

void byebye()

{

thans();

}

void vote()

{

long candidatenum;/* 定义进行操作时的临时结构体变量 */

int i,flag;

char DataFile[20]="houxuan.txt",next;

/* DataFile存储候选人信息的文件名,next为是否进行下一次投标操作的选项*/

candidate TempS;

FILE *fp;

begin:

flag=0;/*flag用来标志是否找对应编号,即投票是否成功*/

read_c_man();

printf("Please input the number which you will vote:");

scanf("%ld",&candidatenum);

printf("The candidate you will vote is:%ld\n",candidatenum);

for(i=0;i

{

if(c_man[i].number==candidatenum)

{

flag=1;

c_man[i].vote++;

}

}

if(flag)

{

printf("vote success!\n");

fp=fopen(DataFile,"wb");

/* 如果当前文件不存在,提示打开文件失败 */

if(fp==NULL)

{

printf("\nOpen file is fail!End with any key.\n",DataFile); perror("Open file fail");

getch();

exit(1);

}

for(i=0;i

{

fwrite(&c_man[i],sizeof(candidate),1,fp);

}

fclose(fp);

}

else

{

printf("vote fail!the number not find!\n");

printf("press any key to continue...\n");

getch();

return;

}

/* 显示投票后的情况 */

fp=fopen(DataFile,"rb");

if(fp==NULL)

{

printf("\nOpen file %s fail! End With any key \n",DataFile); perror("Open file fail");

getch();

exit(1);

}

printf("the file after modify is:\n");

printf("\nNumber \tName\tvote\n");

/*将文件中的数据读入结构体数组*/

while(fread(&TempS,sizeof(candidate),1,fp)!=(int)NULL)

{

if(TempS.number!=0)

printf("\n%ld\t%s\t%d\n",TempS.number,https://www.360docs.net/doc/45921653.html,,TempS.vote); }

fclose(fp);

printf("\nGo On?(y/n)");

fflush(stdin);

next=getchar();

putchar('\n');

if(next=='y'||next=='Y')goto begin;

}

/*创建用户信息*/

void CreatUser()

{

FILE *fp=NULL;

char DataFile[20]="user.txt";/* 存储投票人信息的文件名 */

user TempS;

int over_flag=0;

char c;

/*读入原始数据,用于检查输入是否有重复*/

fp=fopen(DataFile,"rb");

if(fp==NULL)

{

printf("\nOpen file %s fail! End With any key \n",DataFile); perror("Open file fail");

getch();

exit(1);

}

while(fread(&total_user[total],sizeof(user),1,fp)!=(int)NULL)

{

total++;

}

fclose(fp);

fp=fopen(DataFile,"ab+");

clrscr();

do

{

clrscr();

printf("*******************************************************");

printf(" create users "); printf("********************************************************"); gotoxy(2,4);

printf("please input:");

gotoxy(30,5);printf("name: ");scanf("%s",&https://www.360docs.net/doc/45921653.html,);

https://www.360docs.net/doc/45921653.html,[19]='\0';

/*检查输入姓名是否有重复*/

for(i=0;i

{

if(strcmp(https://www.360docs.net/doc/45921653.html,,total_user[i].name)==0)

{

printf("The number is aready exist.please input again.press any key to continue...");

getch();

over_flag=1;

break;

}

}

if (over_flag)

{

over_flag=0;

continue;

}

gotoxy(30,6);printf("password: ");scanf("%s",&TempS.ps);

TempS.ps[7]='\0';

gotoxy(30,7);printf("power: ");scanf("%d",&TempS.power);

if(TempS.power!=1)

{

TempS.power=0;

}

/*将数据加入原始数据,用于下一次输入比较*/

total_user[total]=TempS;

total++;

if(fwrite(&TempS,sizeof(user),1,fp)!=1)

{

printf("\nwrite file is fail! End with any key\n",DataFile);

perror("write file fail");

getch();

exit(1);

}

printf("continue to creat user?(y/n)");

getchar();

c=getchar();

}while(c=='Y'||c=='y');

fclose(fp);

/* 在屏幕上显示文件内容 */

printf("The data you input is store successful is in file.\n",DataFile); printf("Content as follow:\n");

fp=fopen(DataFile,"rb");

if(fp==NULL)

{

printf("\nOpen file is fail! End With any key \n",DataFile);

perror("Open file fail");

getch();

exit(1);

}

printf("\nName\t\tpassword\t\tpower\n");

while(fread(&TempS,sizeof(user),1,fp)!=(int)NULL)

{

printf("\n%s\t\t%-8s\t\t%d\n",https://www.360docs.net/doc/45921653.html,,TempS.ps,TempS.power);

}

fclose(fp);

printf("press any key to continue...\n");

getch();

}

void create()

{

char DataFile[20]="houxuan.txt";

FILE * fp=NULL;

char c;

int over_flag=0;

candidate TempS;

clrscr();

read_c_man();

fp=fopen(DataFile,"ab+");

do

{

clrscr();

printf("*********************************************************");

printf(" create candidates "); printf("**********************************************************"); gotoxy(2,4);

printf("please input:");

gotoxy(30,5);printf("number: ");scanf("%ld",&TempS.number);

/*检查输入编号是否有重复*/

for(i=0;i

{

if(TempS.number==c_man[i].number)

{

printf("The number is aready exist.please input again.press any key to continue...");

getch();

over_flag=1;

break;

}

}

if (over_flag)

{

over_flag=0;

continue;

}

gotoxy(30,6);printf("name: ");scanf("%s",&https://www.360docs.net/doc/45921653.html,);

https://www.360docs.net/doc/45921653.html,[19]='\0';

/*检查输入姓名是否有重复*/

for(i=0;i

{

if(strcmp(https://www.360docs.net/doc/45921653.html,,c_man[i].name)==0)

{

printf("The user name is aready exist.please input again.press any key

to continue...");

getch();

over_flag=1;

break;

}

}

if (over_flag)

{

over_flag=0;

continue;

}

gotoxy(30,7);printf("intro: ");

fflush(stdin);

gets(TempS.intro);

TempS.intro[399]='\0';

TempS.vote=0;

/*将数据加入原始数据,用于下一次输入比较*/

c_man[c_total]=TempS;

c_total++;

if(fwrite(&TempS,sizeof(candidate),1,fp)!=1)

{

printf("\nwrite file is fail! End with any key\n",DataFile);

perror("write file fail");

getch();

exit(1);

}

printf("continuer?(y/n)");

fflush(stdin);

c=getchar();

}while(c=='Y'||c=='y');

fclose(fp);

/* 在屏幕上显示文件内容 */

printf("The data you input is store successful !\n");

fp=fopen(DataFile,"rb");

if(fp==NULL)

{

printf("\nOpen file %s fail! End With any key \n",DataFile);

perror("Open file fail");

getch();

exit(1);

}

while(fread(&TempS,sizeof(candidate),1,fp)!=(int)NULL)

{

printf("\nNumber:%-15ldName:%-15svote:%d\nintro:%s\n",TempS.number,Te https://www.360docs.net/doc/45921653.html,,TempS.vote,TempS.intro);

}

fclose(fp);

printf("press any key to continue....");

getch();

}

void browse()/* 浏览候选人信息 */

{

read_c_man();

clrscr();/* 清屏 */

printf("********************************************************\n"); for(i=0;i

{

printf("number: %-15ld",c_man[i].number);

printf("name:%-19s",c_man[i].name);

printf("vote:%-8d\n",c_man[i].vote);

printf("%s\n",c_man[i].intro);

}

printf("**********************************************************"); printf("\n\n\npress any key to continue");

getch();

}

void search()/* 查询候选人信息 */

{

char c;

long number;

int flag=0;

read_c_man();

do

{

clrscr();

printf("\n\tPlease input the candidates' number:");

scanf("%ld",&number);

for(i=0;i

{

if(number==c_man[i].number)

{

printf("\tthe information you looking for is below:\n\n");

printf("\tnumber:%ld \n",c_man[i].number);

printf("\tname:%s \n",c_man[i].name);

printf("\tintroduce:%s \n",c_man[i].intro);

printf("\tvote:%d \n",c_man[i].vote);

flag=1;

break;

}

}

if (flag)

{

flag=0;

}

else

printf("\tcan not been found\n");

}

printf("\tcontinue to search or not ?(y/n): ");

getchar();

c=getchar();

}while((c=='Y')||(c=='y'));

}

void sort() /*按票数从高到低列出所有数据*/

{

int i,k,j;

candidate c_man2[N],temp;/*c_man[N]用于存放排序后的数据*/

read_c_man();

for(i=0;i

c_man2[i]=c_man[i]; /*将c_man[c_total]赋值给c_man2[c_total]*/ for(i=0;i

{

k=i;

for(j=i+1;j

{

if(c_man2[k].vote

}

if(k!=i){

temp=c_man2[i];c_man2[i]=c_man2[k];c_man2[k]=temp;

}

} /*排序结束*/

printf("Sort by vote from high to low:\n");

printf("*---------------------------------------------*\n");

printf("*number name vote*\n");

printf("*---------------------------------------------*\n");

for(i=0;i

{

printf("%-13ld%-13s%-6d*\n",c_man2[i].number,c_man2[i].name,c_man2[i] .vote);

}

printf("*---------------------------------------------*\n");

fflush(stdin);

getch();

}

/*点阵字模*/

char dian64K[]={

/* 以下是 '电' 的 64点阵楷体_GB2312 字模,512 byte */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x30,0x00,0x80,0x00,0x00,

0x00,0x00,0x00,0x30,0x07,0xE0,0x00,0x00,

0x00,0x00,0x00,0x30,0xFF,0xF0,0x00,0x00,

0x00,0x00,0x00,0x7F,0xFF,0xFC,0x00,0x00,

0x00,0x20,0xFF,0xFF,0x80,0x7C,0x00,0x00,

0x00,0x3F,0xFF,0xF0,0x00,0x7C,0x00,0x00,

0x00,0x3F,0x00,0x30,0x00,0x78,0x00,0x00,

0x00,0x1C,0x00,0x30,0x00,0x78,0x00,0x00,

0x00,0x1C,0x00,0x30,0x00,0x78,0x00,0x00,

0x00,0x1C,0x00,0x20,0x00,0x70,0x00,0x00,

0x00,0x0C,0x00,0x20,0x00,0x70,0x00,0x00,

0x00,0x0C,0x00,0x21,0x80,0x70,0x00,0x00,

0x00,0x0C,0x00,0x3F,0xE0,0x60,0x00,0x00,

0x00,0x0C,0x03,0xFF,0x80,0xE0,0x00,0x00,

0x00,0x0E,0x0F,0xF0,0x00,0xE0,0x00,0x00,

0x00,0x06,0x06,0x20,0x00,0xE0,0x00,0x00,

0x00,0x06,0x00,0x20,0x00,0xE0,0x00,0x00,

0x00,0x06,0x00,0x20,0x00,0xC0,0x00,0x00,

0x00,0x06,0x00,0x20,0x01,0xC0,0x00,0x00,

0x00,0x06,0x00,0x20,0x01,0xC0,0x00,0x00,

0x00,0x02,0x00,0x20,0x01,0xC0,0x00,0x00,

0x00,0x02,0x00,0x20,0x1F,0x80,0x00,0x00,

0x00,0x03,0x00,0x3F,0xFF,0x80,0x00,0x00,

0x00,0x03,0x3F,0xFF,0xFF,0x80,0x00,0x00,

0x00,0x01,0xF8,0x20,0x01,0x00,0x00,0x00,

0x00,0x01,0x00,0x20,0x00,0x00,0x04,0x00,

0x00,0x00,0x00,0x20,0x00,0x00,0x04,0x00,

0x00,0x00,0x00,0x20,0x00,0x00,0x04,0x00,

0x00,0x00,0x00,0x20,0x00,0x00,0x0C,0x00,

0x00,0x00,0x00,0x30,0x00,0x00,0x0C,0x00,

0x00,0x00,0x00,0x30,0x00,0x00,0x0C,0x00,

0x00,0x00,0x00,0x30,0x00,0x00,0x0E,0x00,

0x00,0x00,0x00,0x38,0x00,0x00,0x1E,0x00,

0x00,0x00,0x00,0x18,0x00,0x00,0x3E,0x00,

0x00,0x00,0x00,0x1E,0x00,0x00,0xFF,0x00,

0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0x00,

0x00,0x00,0x00,0x07,0xFF,0xFF,0xFE,0x00,

0x00,0x00,0x00,0x03,0xFF,0xFF,0xF8,0x00,

0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

char zi64K[]={

/* 以下是 '子' 的 64点阵楷体_GB2312 字模,512 byte */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,

0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0x00,

0x00,0x00,0x00,0x07,0xFF,0xFC,0x00,0x00,

0x00,0x00,0x01,0xFF,0xE1,0xFC,0x00,0x00,

0x00,0x00,0x7F,0xFE,0x01,0xF0,0x00,0x00,

0x00,0x00,0x3F,0xE0,0x03,0xC0,0x00,0x00,

0x00,0x00,0x1E,0x00,0x07,0x80,0x00,0x00,

0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x04,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x80,0x01,0xFE,0x00, 0x00,0x00,0x00,0x01,0xC0,0x3F,0xFF,0x80, 0x00,0x00,0x00,0x00,0xCF,0xFF,0xFF,0xC0, 0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xC0, 0x00,0x00,0x01,0xFF,0xFF,0xF0,0x01,0x00, 0x00,0x00,0x7F,0xFF,0xE0,0x00,0x00,0x00, 0x07,0xFF,0xFF,0xF0,0xC0,0x00,0x00,0x00, 0x0F,0xFF,0xF8,0x00,0xE0,0x00,0x00,0x00, 0x03,0xFF,0x00,0x00,0xE0,0x00,0x00,0x00, 0x01,0xC0,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, 0x00,0x00,0x01,0x80,0xE0,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00, 0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

char tou64K[]={

/* 以下是 '投' 的 64点阵楷体_GB2312 字模,512 byte */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0xF0,0x00,0x00,0x0C,0x00,0x00,

0x00,0x00,0x60,0x00,0x00,0x1F,0x00,0x00,

0x00,0x00,0x60,0x00,0x00,0x7F,0x00,0x00,

0x00,0x00,0x60,0x00,0xFF,0xFF,0x00,0x00,

0x00,0x00,0x60,0x00,0xFE,0x0E,0x00,0x00,

0x00,0x00,0x60,0x00,0xE0,0x0C,0x00,0x00,

0x00,0x00,0x60,0x00,0x60,0x0C,0x00,0x00,

0x00,0x00,0x60,0x00,0x60,0x18,0x00,0x00,

0x00,0x00,0x60,0x00,0x60,0x18,0x00,0x00,

0x00,0x00,0x60,0x00,0x60,0x10,0x00,0x00,

0x00,0x00,0x60,0x00,0x60,0x10,0x00,0x00,

0x00,0x00,0x63,0x80,0x60,0x10,0x00,0x00,

0x00,0x00,0x7F,0xC0,0x60,0x18,0x00,0x00,

0x00,0x00,0xFF,0x00,0x40,0x18,0x1E,0x00,

0x00,0x07,0xFC,0x00,0xC0,0x0F,0xFE,0x00,

0x00,0xFF,0xE0,0x00,0xC0,0x0F,0xFE,0x00,

0x03,0xFE,0x20,0x00,0x80,0x03,0xF0,0x00,

0x00,0xC0,0x20,0x01,0x80,0x00,0x00,0x00,

0x00,0x00,0x20,0x03,0x00,0x00,0x00,0x00,

0x00,0x00,0x20,0x02,0x00,0x00,0x00,0x00,

0x00,0x00,0x20,0x04,0x00,0x00,0x00,0x00,

0x00,0x00,0x22,0x08,0x00,0x3C,0x00,0x00,

0x00,0x00,0x3C,0x00,0x01,0xFE,0x00,0x00,

0x00,0x00,0x30,0x00,0x1F,0xFF,0x00,0x00,

0x00,0x00,0x60,0x01,0xFC,0x0F,0x00,0x00,

0x00,0x01,0xE0,0x03,0xE0,0x0E,0x00,0x00,

0x00,0x03,0xE0,0x00,0x00,0x0C,0x00,0x00,

0x00,0x0F,0x20,0x00,0x00,0x1C,0x00,0x00,

0x00,0x3C,0x20,0x00,0x00,0x18,0x00,0x00,

0x00,0x78,0x20,0x06,0x00,0x18,0x00,0x00,

0x01,0xF0,0x20,0x03,0x80,0x30,0x00,0x00,

0x7F,0x80,0x20,0x00,0x30,0x60,0x00,0x00,

0x7F,0x00,0x20,0x00,0x18,0xE0,0x00,0x00,

0x3E,0x00,0x20,0x00,0x0F,0xC0,0x00,0x00,

0x18,0x00,0x20,0x00,0x07,0xC0,0x00,0x00,

0x00,0x00,0x60,0x00,0x03,0x80,0x00,0x00,

0x00,0x00,0x60,0x00,0x07,0xE0,0x00,0x00,

0x00,0x00,0x60,0x00,0x1E,0x70,0x00,0x00,

0x00,0x00,0x60,0x00,0x38,0x3C,0x00,0x00,

0x00,0x00,0x60,0x00,0x70,0x1E,0x00,0x00,

0x00,0x00,0x60,0x01,0xC0,0x0F,0x80,0x00,

0x00,0x30,0xE0,0x07,0x80,0x07,0xF0,0x00,

0x00,0x1F,0xE0,0x1E,0x00,0x03,0xFC,0x00,

0x00,0x07,0xC0,0x70,0x00,0x01,0xFF,0xC0,

0x00,0x03,0xC0,0x00,0x00,0x00,0xFF,0xF8,

0x00,0x01,0xC0,0x00,0x00,0x00,0x7F,0xFC,

0x00,0x00,0xC0,0x00,0x00,0x00,0x3F,0xC0,

0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

char piao64K[]={

/* 以下是 '票' 的 64点阵楷体_GB2312 字模,512 byte */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,

0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,

0x00,0x00,0x00,0x0F,0xFF,0xF0,0x00,0x00,

0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,

0x00,0x00,0x0F,0xFF,0x8C,0x00,0x00,0x00,

0x00,0x00,0x1F,0xF0,0x0C,0x00,0x00,0x00,

0x00,0x00,0x00,0x30,0x0C,0x00,0x00,0x00,

0x00,0x00,0x00,0x30,0x0C,0x00,0x00,0x00,

0x00,0x00,0x00,0x30,0x0C,0x00,0x00,0x00,

0x00,0x00,0x00,0x10,0x0C,0x00,0x00,0x00,

微机原理课程设计电压报警器实验报告

南通大学电子信息学院 微机原理课程设计 报告书 课题名: 班级: 姓名: 学号: 指导老师: 日期: xxx

目录 1.设计目的 (2) 2.设计内容 (2) 3.设计要求 (2) 4.设计原理 (3) 5.硬件电路图 (3) 6.程序代码 (5) 7.程序及硬件系统调试情况 (19) 8.设计总结与体会 (19)

一、设计目的 课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。 通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。 通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。 二、设计内容 设计一个电压报警器,要求采集实验箱提供的0~5V的电压,当输入电压在3V以内,显示电压值,如2.42。当输入电压超过3V,显示ERR,并报警。电压值可在七段数码管显示,点阵广告屏显示或液晶屏显示。报警形式自行设计,

模拟电子技术课程设计报告模板

模拟电子技术课程设计报告 设计课题: 数字电子钟的设计 姓名: 学院: 专业: 电子信息工程 班级: 学号: 指导教师:

目录 1.设计的任务与要求 (1) 2.方案论证与选择 (1) 3.单元电路的设计和元器件的选择 (5) 3.1 六进制电路的设计 (6) 3.2 十进制计数电路的设计 (6) 3.3 六十进制计数电路的设计 (6) 3.4双六十进制计数电路的设计 (7) 3.5时间计数电路的设计 (8) 3.6 校正电路的设计 (8) 3.7 时钟电路的设计 (8) 3.8 整点报时电路的设计 (9) 3.9 主要元器件的选择 (10) 4.系统电路总图及原理 (10) 5.经验体会 (10) 参考文献 (11) 附录A:系统电路原理图 (12) 附录B:元器件清单 (13)

数字电子钟的设计 1. 设计的任务与要求 数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。 因此,我们此次设计数字钟就是为了了解数字钟的原理,从而学会制作数字钟。而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。且由于数字钟包括组合逻辑电路和时叙电路。通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。 1.1设计指标 1. 时间以12小时为一个周期; 2. 显示时、分、秒; 3. 具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; 4. 计时过程具有报时功能,当时间到达整点前10秒进行蜂鸣报时; 5. 为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。1.2 设计要求 1. 画出电路原理图(或仿真电路图); 2. 元器件及参数选择; 3. 编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。 2. 方案论证与选择 2.1 数字钟的系统方案 数字钟实际上是一个对标准频率(1H Z)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1H Z时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。

C语言课程设计报告-游戏2048

东华理工大学C语言课程设计报告 学院:国际教育学院学院专业:电子信息工程 班级:1420606 学号:201420060638 姓名:钟天运

一、课程设计题目:游戏2048 二、课程设计要求: a)使用C语言编写2048这款游戏 b)能够正常运行,拥有游戏界面。 c)能正常进行游戏从开始到结束。 d)用户操作方便 三、设计思路: a)游戏介绍: i.2048是一款简单的数字类游戏,界面是一个 4*4的方形格子。每个格子里可以为空或者有 一个2^n的数值。 ii.用户可以输入4种指令,分别是:上下左右,游戏会根据用户的指定的方向,将格子中 的数值向对应方向进行移动,直至移动到最边 上的格子或者有其他数值占用,如果碰到等大 数值,将会进行合并。此外,成功移动后,会 在一个空格子随机生成一个2或者4 iii.游戏目标是合成2048这个数值或者更大的数值。 b)实现思路: i.可以使用二维数组来保存4*4格子中的数值 ii.指令,可以通过输入字符函数,读取用户

在键盘上的方向键,进行判断执行对应的代 码。 iii.游戏界面,可以使用简单的特殊制表符,来实现,并通过清屏函数来进行反复同位置打 印界面。 iv.需要判断游戏结束的函数,以及记录游戏分数和步骤的变量 v.当游戏结束时,能够询问用户是否重新开始。 vi.随机生成一个新数,可以调用随机函数,使用时间做种子。 c)实现难点: i.打印游戏界面,要实现灵活能根据棋盘数组里 面的数据灵活打印。 ii.执行操作时,数值的移动和合并。

四、流程图

五、C语言源代码 // 游戏2048.c #include "windows.h" #include "time.h" #include "stdio.h" #include "conio.h" #include "string.h" //宏定义常量方向键值 //const int LEFT = 75, UP = 72, RIGHT = 77, DOWN = 80; #define LEFT 75 #define UP 72 #define RIGHT 77 #define DOWN 80 const char error_str[] = "您上次输入的指令无法识别,请重新输入。"; struct board { int place[4][4]; long int stepn; long int num; //存储游戏分数 long int time; int dtk; //direction key 记录方向键,及操作方向 int over; int zeronum; }; //该函数为游戏运行函数,当只是玩游戏的时候。进入该函数,游戏控制函数。int main() { //place数组为棋盘,其中为零代表空,-1代表不能合并的牌,其他2的倍数值为本身含义,初始化为全0。 struct board board1, board_backup; int newgame(struct board *, int), show(struct board *), operate(struct board *); char str[100] = "首次运行游戏"; //用于记录系统返回给用户的信息,例如:上一步执行向左合并,按键有误等 newgame(&board1, 0); //调用函数为新局初始化,第二个

电子电路课程设计密码锁(满分实验报告)

密码锁设计报告 摘要: 本系统是由键盘和报警系统所组成的密码锁。系统完成键盘输入、开锁、超时报警、输入位数显示、错误密码报警、复位等数字密码锁的基本功能。 关键字:数字密码锁GAL16V8 28C64 解锁与报警 1

目录: 一、系统结构与技术指标 1、系统功能要求 (4) 2、性能和电气指标 (5) 3、设计条件 (5) 二、整体方案设计 1、密码设定 (6) 2、密码判断 (6) 3、密码录入和判断结果显示 (6) 4、系统工作原理框面 (7) 三、单元电路设计 1、键盘录入和编码电路图 (8) 2、地址计数和存储电路 (12) 3、密码锁存与比较电路 (12) 2

4、判决与结果显示电路 (14) 5、延时电路 (15) 6、复位 (17) 7、整机电路图 (19) 8、元件清单……………………………………………19四、程序清单 1、第一片GAL (21) 2、第二片GAL (23) 五、测试与调整 1、单元电路测试 (25) 2、整体指标测试 (26) 3、测试结果 (26) 六、设计总结 1、设计任务完成情况 (27) 2、问题及改进 (27) 3、心得体会 (28) 3

一、系统结构与技术指标 1.系统功能要求 密码锁:用数字键方式输入开锁密码,输入密码时开锁;如 果输入密码有误或者输入时间过长,则发出警报。 密码锁的系统结构框图如下图所示,其中数字键盘用于输入 密码,密码锁用于判断密码的正误,也可用于修改密码。开锁LED1亮表示输入密码正确并开锁,报警LED2亮表示密码有误或者输入时间超时。 开锁green 键盘密码锁 错误red 4

《电子设计基础》课程设计报告模板

课程设计报告册格式(本页不打印) 一、设计任务(四号、黑体,不加粗) 例如:十字路口交通灯控制系统设计(正文全部为宋体、小四,下同) 二、设计要求 教师下达的设计基本要求…… 三、设计内容 1.设计思想(宋体、小四、加粗) 对题目的理解,计划采用的实现方法 2.设计说明 对设计方案的简单综述,建议增加方案对比内容; 3.系统方案或者电路结构框图 包含对各个单元电路的详细分析; 保留详细的参数计算、卡诺图、状态转换图等设计内容; 4.设计方案 一个模块电路结构对应一个仿真波形和一段文字说明; 仿真及分析时,请捕捉关键点的波形数据,以确保设计结果具有良好的说服力; 5.电路原理总图 A4纸整张打印,打印出图纸边框 绘制原理图时,应注意加入电源、信号输入与输出端口; 芯片内部具有多个相同功能单元时,注意充分利用; 元器件在电路原理图中的布局应规范、紧凑; 6.PCB分层打印图 按照相同比例分别打印出顶层、底层、丝印层,并尽可能打印在同一张A4纸中; 在保证布通率的前提下,尽量选择较大的线宽、安全间距; 四、设计总结 个人真实的总结体会,不低于100字。 五、参考资料 包括网站、网页的资料;从网站上下载资料过多将被视为抄袭,一定要强调自己的设计思路,创新理念。 注: ——课程设计论文用A4纸打印,文中的计量单位、制图、制表、公式、缩略词和符号应遵循国家的有关规定。 ——实验报告采用A4纸双面打印,实验报告的内容全部手写,所有的打印图请牢固粘贴在实验报告上,不要使用QQ截图等低像素的截图工具。 ——封面与任务书双面打印在同一张A4纸;

1、设计题目 数字钟 2、设计内容和要求: 数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。 设计要求采用中小规模集成器件完成具有以下技术指标的数字钟: (1)显示时、分、秒; (2)24小时制计数; (3)具有校时功能,可以对小时和分单独校时,对分校时的时候,停止分向小时进位。校时时钟源可以手动输入或借用电路中的时钟; (4)具有正点报时功能; (5)要求计时准确、稳定。 3、设计目的 (1)进一步熟悉各种进制计数器的功能及使用; (2)掌握译码器显示电路的应用; (3)熟悉集成芯片的内部结构及应用; (4)掌握数字电子钟的组成与工作原理; (5)提升对实际电路的设计和调试能力。 4、设计原理 数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路,一般由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路等单元组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,在精度要求不高的时候,可选用555定时器构成的振荡器加分频器来实现,但精度要求高的电路中多采用晶体振荡器电路加分频器实现,在本设计中要求精度高,所以选用的是后者。将标准秒脉冲信号送入“秒计数器”,该计数器采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”可采用12进制也可采用24进制计数器,本实验采用24进制。最终完成一天的计数过程。译码显示电路将“时、分、秒”计数器的输出状态经七段显示译码器译码,通过六位LED 显示器显示出来。整点报时电路是根据计时系统的输出状态产生一个脉冲信号,去触发音频发生器实现报时。校时电路是对“时、分”显示数字进行校正和调整。其数字电子钟系统框图如图1所示。

c语言课程设计报告学生成绩信息管理系统源代码

实验报告 一、问题陈述及其需求分析 (一)问题陈述 学生信息管理系统是对学生信息的基本管理,其中包括以下及模块: (1)增加一个学生的信息(需输入要增加学生的所有信息); (2)统计本班学生总人数及男女生人数。 (3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。 (4)按学号对所有学生信息排序,并输出结果; (5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。( 二) 功能需求分析 学生信息管理系统设计 学生信息包括:学号,姓名,性别,出生年月,电话 使之提供以下功能: 1、系统以菜单方式工作 2、建立链表并显示 3、插入新的学生信息 4、删除某学号的学生信息 5、查找某学号的学生信息 6、对学生信息排序 7、统计学生人数 8、输出学生信息 二总体设计 (一)模块 依据程序的数据结构,描述该程序的层次结构,如下图:

1、建立链表并显示 void createlist(struct stucode **r); 2、插入新的学生信息 void insert(struct stucode **r); 3、删除某学号的学生信息 void del(struct stucode **r); 4、查找某学号的学生信息 void search1(struct stucode *r); 5、对学生信息排序 void sort(struct stucode **r); 6、统计学生人数 void search2(struct stucode *r); 7、输出学生信息 void out(struct stucode *r); 1 建立链表并显示 2 添加学生信息 3 删除学生信息 息 4 按学号查找学生信 5 对学生信息排序 6统计学生人数 7输出学员信息 8 学生信息写入文件 0退出 main() 菜单函数

单片机电子时钟课程设计实验报告

单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。

微机课设实验报告

微机课程设计 数字温度计实验报告

一、题目: 上位机:完成界面设计与通讯程序 1、能够显示两个温度值,温度精度0.5度,当超出报警温度阈值时,温度 值后又提示字幕。 2、能够设定报警温度阈值 3、每隔一秒将温度值保存至文件存档。当超出报警温度阈值时,温度值后 面有提示。 4、可以对串口进行设置。 下位机:完成电路设计与控制程序 1、用两个DS18B20测温。 2、通过串口与上位机通信,并传输温度值,接受阈值设置。 3、当超出报警温度阈值时,有相应指示灯提示。 4、将当前温度显示LCD1602液晶屏上,当超出报警温度阈值时,温度值后 有提示。 二、原理 DS18B20是DALLS公司推出的“1—wire”接口的数字温度传感器,可以直接将温度转换为9~12串行信号供单片机处理。由于这种传感器只有一个IO口,是单总线串行接口,单片机可以利用串行通信将数据读出并按照LCD 的协议显示在1602液晶屏上。同时,通过PC机与单片机之间的串行通信,可以用PC机控制温度的警戒值以及记录不同时间测量的温度。 三、原理图 图3.1 LCD、18B20以及串口与单片机最小系统连接图

图3.2电源模块 四、流程图 1、上位机流程图 图4.1.1发送数据流程图图4.1.2 接受数据流程图

2、下位机流程图 图4.2.2读出温度子程序流程图 图4.2.1总流程图 图4.2.4计算温度子程序流程图

图4.2.3 温度转换流程图 图4.2.6温度值显示在LCD1602上 图4.2.5 显示数据刷新子程序 五、源程序 1、上位机程序:见附录1; 2、下位机程序:见附录2; 3、实验结果显示(上位机):见附录3。

课程设计报告【模板】

模拟电子技术课程设计报告设计题目:直流稳压电源设计 专业电子信息科学与技术 班级电信092 学号 200916022230 学生姓名夏惜 指导教师王瑞 设计时间2010-2011学年上学期 教师评分 2010年月日

昆明理工大学津桥学院模拟电子技术课程设计 目录 1.概述 (2) 1.1直流稳压电源设计目的 (2) 1.2课程设计的组成部分 (2) 2.直流稳压电源设计的内容 (4) 2.1变压电路设计 (4) 2.2整流电路设计 (4) 2.3滤波电路设计 (8) 2.4稳压电路设计 (9) 2.5总电路设计 (10) 3.总结 (12) 3.1所遇到的问题,你是怎样解决这些问题的12 3.3体会收获及建议 (12) 3.4参考资料(书、论文、网络资料) (13) 4.教师评语 (13) 5.成绩 (13)

昆明理工大学津桥学院模拟电子技术课程设计 1.概述 电源是各种电子、电器设备工作的动力,是自动化不可或缺的组成部分,直流稳压电源是应用极为广泛的一种电源。直流稳压电源是常用的电子设备,它能保证在电网电压波动或负载发生变化时,输出稳定的电压。一个低纹波、高精度的稳压源在仪器仪表、工业控制及测量领域中有着重要的实际应用价值。 直流稳压电源通常由变压器、整流电路、滤波电路、稳压控制电路所组成,具有体积小,重量轻,性能稳定可等优点,电压从零起连续可调,可串联或关联使用,直流输出纹波小,稳定度高,稳压稳流自动转换、限流式过短路保护和自动恢复功能,是大专院校、工业企业、科研单位及电子维修人员理想的直流稳压电源。适用于电子仪器设备、电器维修、实验室、电解电镀、测试、测量设备、工厂电器设备配套使用。几乎所有的电子设备都需要有稳压的电压供给,才能使其处于良好的工作状态。家用电器中的电视机、音响、电脑尤其是这样。电网电压时高时低,电子设备本身耗供电造成不稳定因家。解决这个不稳定因素的办法是在电子设备的前端进行稳压。 直流稳压电源广泛应用于国防、科研、大专院校、实验室、工矿企业、电解、电镀、充电设备等的直流供电。 1.1直流稳压电源设计目的 (1)、学习直流稳压电源的设计方法; (2)、研究直流稳压电源的设计方案; (3)、掌握直流稳压电源的稳压系数和内阻测试方法。 1.2课程设计的组成部分 1.2.1 设计原理

c语言课程设计报告

C语言程序设计B 课程设计报告 设计题目:学生成绩管理系统年级班级: 学号: 姓名: 指导教师: 2020 年 6 月 18 日

目录 一、设计目的 (3) 二、课程设计内容和要求 (4) 三、总体设计 (5) 四、主要步骤 (12) 五、功能实现 (13) 六、功能测试 (64) 七、评价程序 (83) 八、课程设计体会 (84)

一、设计目的 程序设计能力是当代理工类大学生的必备能力,当学生学习了C语言之后,编程能力远远不能达到开发实际应用程序的要求,特备是对其中的指针、结构体、链表和文件部分的理解和应用都比较弱。 程序设计的目的是通过对面向过程的学习,将C语言的主要知识点进行综合,针对提高学生C语言程序设计能力,强化编写较大的应用软件能力,熟练运用已掌握的知识解决实际需要解决的问题,以达到更加熟知指针、链表、结构体、文件读取、标准库的使用。 主要目的为以下几点: 1、熟练掌握面向过程(结构化)程序设计基本知识; 2、综合运用所学知识解决实际问题; 3、受到面向过程(结构化)程序设计的基本训练; 4、体会面向过程(结构化)开发程序的过程。

二、课程设计内容和要求 1.课程设计内容: 学生通过使用C语言进行编写算法,开发学生成绩管理系统,以实现对学生成绩的管理。 2.课程设计要求 1)具有菜单,可以在菜单上进行选择; 2)能实现学生数据录入、修改、删除、查询; 3)能实现数据排序; 4)有数据输出功能; 5)有数据读取与存储功能; 6)一个学生的数据(称为:每条记录)包含姓名、学号、语文、数 学、英语、总分、名次等信息; 7)以结构方式存储每条记录; 8)多条记录以链表方式存储到内存; 9)随时可将全部数据存储到磁盘文件中,方便下次从磁盘读取数据。

电子商务系统分析与设计课程设计实验报告范本

电子商务系统分析与设计课程设计实 验报告

江苏科技大学 电子商务系统分析与设计课程设计 网上书城系统的开发 学生姓名张颖 学号 班级08404121 指导老师 成绩 经济管理学院信息管理系 1月8日 目录 一.系统规划 (4)

1.2初步调查 (5) 1.3确定电子商务模式和模型 (6) 1.4可行性分析和可行性分析报告 (6) 二.系统分析 (8) 2.1系统调查 (8) 2.2需求规格说明书 (9) 2.2.1 引言 (9) 2.2.2项目概述 (9) 2.2.3需求规定 (10) 2.2.4环境要求 (16) 2.3组织结构分析 (17) 2.4业务流程分析 (17) 2.5数据流程分析 (19) 三.系统设计 (21) 3.1系统总体结构 (21) 3.2网络基本结构 (22) 3.3系统平台选择 (22) 3.4应用系统方案 (23) 3.4.1各功能模块简要描述 (23) 3.4.4数据库设计 (24) 3.4.5用户界面设计 (31)

3.5.1客户端要求 (32) 3.5.2服务器端要求 (32) 3.5.3系统测试 (32) 四.支付系统设计 (39) 4.1支付协议选择 (39) 4.2支付系统数据流程分析 (39) 4.3支付系统安全需求分析 (41) 4.4支付系统总体设计 (42) 4.5支付系统功能 (44) 4.6交易流程设计 (46) 4.7支付系统安全设计 (47) 五.心得体会 (47) 一.系统规划 1.1明确用户需求 随着当今社会新系统大度的提高,网络的高速发展,计算机已被广泛应用于各个领域,因而网络成为人们生活中不可或缺的一部分。互联网用户应经接受了电子商务,网购成为一种时尚潮流。

微机原理课程设计报告

微型计算机技术课程设计 指导教师: 班级: 姓名: 学号: 班内序号: 课设日期: _________________________

目录 一、课程设计题目................. 错误!未定义书签。 二、设计目的..................... 错误!未定义书签。 三、设计内容..................... 错误!未定义书签。 四、设计所需器材与工具 (3) 五、设计思路..................... 错误!未定义书签。 六、设计步骤(含流程图和代码) ..... 错误!未定义书签。 七、课程设计小结 (36)

一、课程设计题目:点阵显示系统电路及程序设计 利用《汇编语言与微型计算机技术》课程中所学的可编程接口芯片8253、8255A、8259设计一个基于微机控制的点阵显示系统。 二、设计目的 1.通过本设计,使学生综合运用《汇编语言与微型计算机技术》、《数字电子技术》等课程的内容,为今后从事计算机检测与控制工作奠定一定的基础。 2.掌握接口芯片8253、8255A、8259等可编程器件、译码器74LS138、8路同相三态双向总线收发器74LS245、点阵显示器件的使用。 3.学会用汇编语言编写一个较完整的实用程序。 4.掌握微型计算机技术应用开发的全过程,包括需求分析、原理图设计、元器件选用、布线、编程、调试、撰写报告等步骤。 三、设计内容 1.点阵显示系统启动后的初始状态 在计算机显示器上出现菜单: dot matrix display system 1.←left shift display 2.↑up shift display 3.s stop 4.Esc Exit 2.点阵显示系统运行状态 按计算机光标←键,点阵逐列向左移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标↑键,点阵逐行向上移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标s键,点阵停止移动并显示当前字符。 3.结束程序运行状态 按计算机Esc键,结束点阵显示系统运行状态并显示“停”。 四.设计所需器材与工具 1.一块实验面包板(内含时钟信号1MHz或2MHz)。 2.可编程芯片8253、8255、74LS245、74LS138各一片,16×16点阵显示器件一片。

综合电子系统课程设计报告模板

衡阳师范学院 物理与电子信息科学系 《综合电子系统》 课程设计报告 一号黑体,居中 简易电子称的设计 小二号粗黑体,居中 班级2011级电信1班 组长 成员三号宋体,加粗 指导教师 提交日期2014年6月10 日 《综合电子系统课程设计》成绩评定表 课程设计题目:简易电子秤

第一部分设计任务 1.1 设计题目及要求 (1) 1.2 备选方案设计与比较 (2) 1.2.1 方案一 (3) 第二部分系统硬件平台的设计 2.1 总体设计方案说明 (7) 2.2单片机最小系统 (9) 2.2.1S T C89C52单片机 (10) 2.2.2时钟电路 (11) 2.2.3复位电路 (12) 2.3功能模块二(参照2.2) (13) 2.3.1模块电路及参数计算 (14)

2.3.2工作原理和功能说明 (15) 2.3.3器件说明(含结构图、管脚图、功能表等) (16) 2.4功能模块三(实际名 (17) 2.4.1模块电路及参数计算 (18) 2.4.2工作原理和功能说明 (19) 2.4.3器件说明(含结构图、管脚图、功能表等) (20) 第三部分系统软件的设计与实现 3.1主程序流程图 (21) 3.2子程序一(实际名) (22) 3.3子程序二(实际名) (23) 3.4子程序三(实际名) (24) 3.4电路仿真(实际名) (24) 3.4.1仿真软件简介 (25) 3.4.2仿真电路图 (26) 3.4.3仿真结果(附图) (27) 第四部分安装调试与性能测量 4.1电路安装 (28) (推荐附整机数码照片) 4.2系统软、硬件调试 (29) 6.2.1调试步骤及测量数据 (30) 6.2.2故障分析及处理 (31) 4.3整机性能指标测量(附数据、波形等) (32) 课程设计总结 (33) 参考文献 报告正文的排版: 1. 纸张大小及版心:统一用A4纸(21×29.7)打印,边距设为:上 2.54cm,下2.54cm,左2.2cm,右2.2cm。行距为固定值20磅。 2. 第一级标题用三号粗黑体,(段落设置)段前1行,段后1行, 3. 第二级标题用小三黑体,靠左上下空一行 4. 第三级标题用四号黑体,靠左本身不空行 5. 正文小四号字体,行距为固定值20磅 6. 图题及图中文字用5号宋体 7. 参考文献标题用三号粗黑体,居中上下空一行,参考文献正文为五号宋体

C语言课程设计报告-模板

C语言课程设计报告 班级:16 物联网 一、题目说明 (1)读取输入信息,能正确进行数字运算

(2)拥有记忆功能,可查询最近几次计算结果并继续进行数字运算。 二、基本功能实现 (1)能实现两个数之间的加减,乘,除,乘方,开方等运算。 (2)实现记忆功能,可保留近十位结果,可用#键查看。(3)*键作为清0键,清除当前屏幕上的值为0表示重新开三、设计流程(可以画流程图,可以直接写说明)

四、代码 #include #include #include #include double yunsuan(double a, char operate, double b); //处理数值之间的运算void PutRes(double array[], double res, int *i); //保存该次运算结果 int main() { char str[40]; double a = 0; double b = 0; double res = 0; double history[10] = {0,0,0}; char opt; int i = 0; printf("欢迎进入计算功能(eg: 1 \n+ 1 ; '#':查询历史结果; 'q':退出程序)·\n"); while(1){

fgets(str,40,stdin); //将从键盘的一整行标准输入保存在字符串str中 if(sscanf(str,"%lf", &a) == 1){ //将str以长浮点型的格式放入a中,如果返回值为1,说明输入的是数值, scanf("%c %lf", &opt, &b); //获取操作符的值和另外一个操作数的值 res = yunsuan(a,opt,b); //调用yunsuan()函数计算,并将结果给res printf("%lf %c %lf = %lf\n\n",a, opt, b, res); PutRes(history, res, &i); //调用函数PutRes()将本次结果保存到数组history中(i用引用传递) // printf("%d\n", i); }else if(sscanf(str,"%c",&opt) == 1){ //将str以字符型的格式放入opt中,如果返回值为1,说明输入的是字符 if(opt == '#'){ //如果opt为‘#’,则显示history 中的数值 int j = 0; for(j = 0; j < i; ++j){ //i为history中存放的数值个数 printf(" %lf ", history[j]); } printf("\n");

微机控制技术实验报告

《微机控制技术》课程设计报告 课题:最少拍控制算法研究专业班级:自动化1401 姓名: 学号: 指导老师:朱琳琳 2017年5月21日

目录 1. 实验目的 (3) 2. 控制任务及要求 (3) 3. 控制算法理论分析 (3) 4. 硬件设计 (5) 5. 软件设计 (5) 无纹波 (5) 有纹波 (7) 6. 结果分析 (9) 7. 课程设计体会 (10)

1.实验目的 本次课程设计的目的是让同学们掌握微型计算机控制系统设计的一般步骤,掌握系统总体控制方案的设计方法、控制算法的设计、硬件设计的方法。学习并熟悉最少拍控制器的设计和算法;研究最少拍控制系统输出采样点间纹波的形成;熟悉最少拍无纹波控制系统控制器的设计和实现方法。复习单片机及其他控制器在实际生活中的应用,进一步加深对专业知识的认识和理解,使自己的设计水平、对所学知识的应用能力以及分析问题解决问题的能力得到全面提高。 2.控制任务及要求 1.设计并实现具有一个积分环节的二阶系统的最少拍有纹波控制和无纹波控制。 对象特性G (s )= 采用零阶保持器H 0(s ),采样周期T =,试设计单位阶跃,单位速度输入时的有限拍调节器。 2.用Protel 、Altium Designer 等软件绘制原理图。 3.分别编写有纹波控制的算法程序和无纹波控制的算法程序。 4.绘制最少拍有纹波、无纹波控制时系统输出响应曲线,并分析。 3.控制算法理论分析 在离散控制系统中,通常把一个采样周期称作一拍。最少拍系统,也称为最小调整时间系统或最快响应系统。它是指系统对应于典型的输入具有最快的响应速度,被控量能经过最少采样周期达到设定值,且稳态误差为定值。显然,这样对系统的闭环脉冲传递函数)(z φ提出了较为苛刻的要求,即其极点应位于Z 平面的坐标原点处。 1最少拍控制算法 计算机控制系统的方框图为: 图7-1 最少拍计算机控制原理方框图 根据上述方框图可知,有限拍系统的闭环脉冲传递函数为: ) ()(1)()()()()(z HG z D z HG z D z R z C z +==φ (1) )(1)()(11)()()(1z z HG z D z R z E z e φφ-=+== (2) 由(1) 、(2)解得:

课程设计报告模板

《软件工程》课程设计报告 课程设计题目: 电子科技大学中山学院计算机学院班级: 组长: 其他成员: 指导教师: 实验地点: 完成起止日期:1-16

目录 一、系统可行性研究报告....................................... 错误!未定义书签。 1.引言................................................... 错误!未定义书签。 2 现行系统调查............................................ 错误!未定义书签。 3 新系统概述.............................................. 错误!未定义书签。 4 可行性综合评述.......................................... 错误!未定义书签。 5.方案选择............................................... 错误!未定义书签。 6.项目进度计划(Software Project Schedule).............. 错误!未定义书签。 二、需求规格说明书............................................ 错误!未定义书签。 1、用例模型(用例图)..................................... 错误!未定义书签。 2、用例文档描述........................................... 错误!未定义书签。 3、用例实现(时序图+类图)................................ 错误!未定义书签。 三、设计规格说明书............................................ 错误!未定义书签。 四、测试设计.................................................. 错误!未定义书签。 1、测试范围............................................... 错误!未定义书签。 2、测试覆盖设计........................................... 错误!未定义书签。 3、测试用例............................................... 错误!未定义书签。 五、工作总结.................................................. 错误!未定义书签。 1、本人在项目实现中的分工................................. 错误!未定义书签。 2、个人遇到的困难与获得的主要成果......................... 错误!未定义书签。 3、课程设计完成结果分析与个人小结......................... 错误!未定义书签。 六、附录...................................................... 错误!未定义书签。 1、软件配置............................................... 错误!未定义书签。 2、个人完成的程序模块..................................... 错误!未定义书签。 3、文档清单............................................... 错误!未定义书签。

c语言课程设计报告书

课程设计报告书 所属课程:c语言 项目:库函数模拟系统 指导老师:邹姝稚 班级:软件1401 姓名:江闯 学号:141403107 分数:

1.任务描述: 本系统开发的代码模拟了下列库函数的功能: (1).模拟gets和puts的功能:能接收一个字符串,将其写入ASCII文件,并且可以读出显示。 (2).在不使用字符串库函数的条件下,编程实现字符串的拷贝,连接,求长,倒置功能。 (3).字符串加密功能:将一段明文建立到一个ASCII文件中,按加密的算法加密后写入密文文件,最终实现将明文和密文文件都显示出来。 (4).编程实现字符串与对应数字的相互转换功能。 2.总体设计: 模块调用图: 图1

函数调用图: 图2 函数功能: (1)函数gp( ):模拟gets和puts的功能 (2)函数kaobei( ):实现字符串的拷贝 (3)函数lianjie( ):实现字符串的连接 (4)函数qiuchang( ):实现字符串的求长 (5)函数daozhi( ):实现字符串的倒置 (6)函数jiami( ):实现字符串的加密功能,最后将明文和密文文件都显示出来 (7)函数zhuanhuan1( ):将数字字符串转换为对应的数字 (8)函数zhuanhuan2( ):将数字转换为对应的数字字符串 3.详细设计: (1).模仿gets和puts功能: gets和puts功能与scanf和printf函数的功能相似,但是也不是完全相同,本系统模拟功能的程序总共运用了两次函数调用技术,模拟gets运用了一次,模拟puts运用了一次。 (2)..字符串的拷贝功能: 字符串的拷贝功能程序设计源于strcpy的功能,其中运用了字符串数组和指针的相关技术,还运用了一组while语句,实现语句的循环,从而将一个字符串拷贝到一个空数组中。

中南大学电工电子课程设计实验报告

中南大学 电工电子技术课程设计报告 题目:可编程乐曲演奏器的设计 学院:信息科学与工程学院 指导老师:陈明义 专业班级: 姓名: 学号:

前言 随着科学技术发展的日新日异,电工电子技术在现代社会生产中占据着非常重要的地位,因此作为二十一世纪的自动化专业的学生而言,掌握电力电子应用技术十分重要。 电工电子课程设计的目的在于进一步巩固和加深所学电工电子基本理论知识。使学生能综合运用相关关课程的基本知识,通过本课程设计,培养我们独立思考的能力,学会和认识查阅学习我们未学会的知识,了解专业工程设计的特点、思路、以及具体的方法和步骤,掌握专业课程设计中的设计计算、软件编制,硬件设计及整体调试。设计过程中还能树立正确的设计思想和严谨的工作作风,达到提高我们的设计能力的目标。 从理论到实践,往往看似简单,实则是有很大的差距的,通过课程设计,可以培养我们学到很多东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的学到知识,从而提高自己的实际动手能力和独立思考的能力。 在次,特别感谢老师给我们以实践动手的机会,让我们对以前的知识以复习,整合,并从理论走向实践,相信我们都会在这次课程设计中学到很多!!!

目录 前言 (2) 正文 第一章系统概述 (4) 系统功能 (4) 系统结构 (4) 实验原理 (4) 整体方案 (5) 第二章单元电路的设计与分析 (5) 音频发生器的设计 (5) 节拍发生器的设计 (6) 读取存储器数据 (7) 选择存储器地址 (8) 控制音频电路设计 (8) 第三章电路的安装与调试 (9) 第四章结束语 (9) 元器件明细表 (10) 参考文献 (10) 附录 (11)

微机系统课程设计实验报告---交通信号灯自动控制模拟指示系统[13页].docx

微机系统课程设计实验报告

课题:交通信号灯自动控制模拟指示系统 一、课程设计目的 1.掌握CPU与各芯片管脚连接方法,提高借口扩展硬件电路 的连接能力。 2.加深对定时器、计数器和并行借口芯片的工作方式和编程 方法的理解。 3.掌握交通信号灯自动控制系统的设计思路和实现方法。 二、课程设计内容 设计并实现十字路口通信号自动控制模拟指示系统。设该路口由A、B两条通行相交而成,四个路口各设一组红、黄、绿三色信号灯,用两位数码管作倒计时显示。 三、应用系统设计方案 交通信号灯的亮灭时间及数码管显示时间可以通过8253来控制,8253的时钟源采用时钟信号发生器与分频电路提供,通过计算获得计数初值为1000。按照需要设定工作在方式3. 交通信号灯及数码管可以采用系统提供的相应模块,控制可以通过8255可编程并行借口,PA口控制红黄绿交通灯的亮灭,PB口和PC口控制时间显示数码管的段和位。PC0作为OUT1的输入。

四、系统测试结果 1.基本功能实现 (1)以秒为计时单位,两位数码管以十进制递减计数显示通行剩余时间,在递减计数为零瞬间转换。即南 北的绿灯、东西的红灯同时亮30秒,同时南北路口 数码管递减显示绿灯剩余时间;为0时,南北的黄 灯闪烁5秒钟,同时东西的红灯继续亮;南北的红 灯、东西的绿灯同时亮30秒,同时东西路口数码管 递减显示绿灯剩余时间;为0时,南北红灯继续亮, 同时东西的黄灯闪烁5秒;若不结束,则开始循环。 (2)通过键盘可以对红、黄、绿三色信号灯所亮时间再0~99内任意设定。 (3)十字路口的通行气势状态可自行设定,系统启动后自动运行,按“Q”退出。 2、发挥部分实现 (1)增加人工干预模式,在特殊情况下可通过人工干预,手动控制A、B交通灯的切换时间,并可以随时切 换为自动运行模式。 (2)增加夜间控制功能,交通灯在进入夜间模式后,A、B干道上红、绿灯均不亮,黄灯信号灯闪烁。 (3)增加红灯倒计时显示。

相关文档
最新文档