BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CẦN THƠ
TRƯỜNG BÁCH KHOA
KHOA KỸ THUẬT ĐIỆN TỬ
------------
BÁO CÁO ĐỒ ÁN
LẬP TRÌNH CĂN BẢN ĐIỆN TỬ
THIẾT KẾ HIỆU ỨNG QUẢNG CÁO
CÁN BỘ HƯỚNG DẪN
NHÓM SV THỰC HIỆN: N07
Cần Thơ, Ngày
Tháng
Năm
MỤC LỤC
I. Giới thiệu đề tài...................................................................................................
1.Mục tiêu thiết kế ..............................................................................................
2.Yêu cầu thiết kế ...............................................................................................
Báo cáo Lập Trình Căn Bản
3.Giới hạn thiết kế ..............................................................................................
4.Hướng giải quyết...........................................................................................
II.Nội dung .............................................................................................................
1. Giải thuật ........................................................................................................
* Giải thuật bằng ngôn ngữ tự nhiên ..............................................................
* Giải thuật bằng lưu đồ .................................................................................
2. Chương trình chi tiết ......................................................................................
3. Kết quả đạt được.............................................................................................
* Kết quả .........................................................................................................
* Nhận xét........................................................................................................
III.Tài Liệu Tham Khảo ........................................................................................
IV.Phụ lục ...............................................................................................................
1.Q trình thực hiện đề tài...............................................................................
2.Bảng phân chia cơng việc ...............................................................................
Báo cáo Lập Trình Căn Bản
I. Giới Thiệu Đề Tài
1. Mục tiêu thiết kế
- Viết chương trình mơ phỏng hiệu ứng quảng cáo với 16 hiệu ứng trên
chương trình Dev-C++ bằng ngôn ngữ C.
2. Yêu cầu thiết kế
- Gồm 8 cơng việc:
+ In ra màn hình số lần thực hiện chương trình
+ Tạo menu điều khiển chương trình
+ Nhập từ bàn phím nội dung cần quảng cáo
+ Chọn hiệu ứng từ 1 đến 16 để thực hiện
+ Hiển thị thông báo khi chọn không đúng hiệu ứng từ 1 đến 16 và cho
phép chọn lại
+ Nhấn Enter kết thúc hiệu ứng quảng cáo
+ Nhập từ bàn phím số 0 để sửa lại nội dung quảng cáo
+ Nhấn Esc để kết thúc chương trình
3. Giới hạn thiết kế
- Một tuần lên ý tưởng và thực hiện
- Số lượng thành viên thực hiện: 8 người
4. Hướng giải quyết
- Các thành viên ôn lại kiến thức đã học trên lớp
- Tham khảo tài liệu từ internet, giáo trình,...
- Lên kế hoạch, phân cơng việc cụ thể
II. Nội Dung
1. Giải thuật
* Giải thuật bằng ngôn ngữ tự nhiên
* Giải thuật bằng lưu đồ
2. Chương trình chi tiết
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>
#include<string.h>
#include<time.h>
typedef struct {
int x, y;
Báo cáo Lập Trình Căn Bản
}
toado;//truc tung y,truc hoanh x
typedef struct {
char s[99];
toado td;// ngang , doc
int tt, lan;
int solannhap;
}
chu;
// tao kieu cau truc cho chu s la noi dung cua chu
void TextColor(int x)
{
HANDLE h= GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(h,x);
}
void gotoxy(int x,int y)
{
HANDLE hConsoleOutput;
COORD Cursor_an_Pos = { x,y};
hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsoleOutput , Cursor_an_Pos);
}
void ff(chu * a) {
char m[20];
if (a -> tt != 0) strcpy(m, " ");
else strcpy(m, " ");
TextColor(7);
gotoxy(0, 0);
printf("1 so lan da nhap: %d lan\n",a->solannhap);
printf("2 noi dung quan cao: %s\n", a -> s);
printf("3 nhap hieu ung tu 1 den 16 \n%schon hieu ung: \n4 nhap 0
neu muon sua lai noi dung(quay lai 2)\n5 nhan Esc de thoat\n6 nhan Enter de
chon lai (quay lai 3)", m,a->lan);
for (int i = 0; i < 120; i++);
printf("\ntruong DHCT nhom7");
}
void f(chu*a){
system("cls");
if (kbhit()) // phat hien co phim nhap
{
Báo cáo Lập Trình Căn Bản
char key = getch(); // luu phim vao key ma khong dung chuong
trinh
if (key == 27) // 27 la ma ASCII
{
free(a);
exit(0);
} else if (key == 13) // 13 la ma ASCII
{
a -> lan = 0;
a -> tt = 0; // xoa hieu ung cu
}
}
}
void lan1(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
int k = 0;
// hien thi chuoi xeo xuong
int t = 0;
ff(a); //an con tro
printf(" ");
for (int u = 0; u < 2; u++) {
for (int i = 10; i < n + 10; i++) {
Sleep(50);// toc do hien ra
TextColor(5);
if (t == 0) {
gotoxy(i + 50, i); //toa do chu
printf("%c", a -> s[k]);
k++;
}
}
k = 0;
}// hien con tro
printf(" ");
}
}
}
void lan2(chu * a) { // hien thi chuoi xeo len
Báo cáo Lập Trình Căn Bản
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
int k = 0;
int t = 0;
ff(a);
//an con tro
printf(" ");
TextColor(9);
for (int u = 0; u < 2; u++) {
for (int i = 10; i < n + 10; i++) {
Sleep(100);
if (t == 0) {
gotoxy(i+50,n+1-(i-20)); //vi tri in ra man hinh
printf("%c",a->s[k]);
k++;
}
}
k = 0;
}// hien con tro
printf(" ");
}
}
}
void lan3(chu * a) { // chu xuat hien tu trai qua phai
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
ff(a);
//an con tro
printf(" ");
TextColor(11);
for (int i = 0; i < n; i++) {
gotoxy(60 + i,15);
printf("%c", a -> s[i]);
Sleep(50);//toc do
Báo cáo Lập Trình Căn Bản
} // chu xuat hien tu trai qua phai
}// hien con tro
printf(" ");
}
}
void lan4(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
else {
ff(a);
int n = strlen(a -> s);
char bokytu[] = " ";
//an con tro
printf(" ");
TextColor(14);
for (int i = 0; i < n; i++) {
Sleep(40);
srand(time(NULL));
for (int k = 0; k < n; k++);
gotoxy(50 + i, 20);
if (i == n - 1) {
ff(a);
ff(a);
gotoxy(50,20);
printf("%s", a -> s); // hien thi toan bo chuoi
Sleep(300);
}
}// hien con tro
printf(" ");
}
}
}
void lan5(chu * a) { //hieu ung xeo qua xeo lai
while (1) {
f(a);
if (a -> tt == 0) break; // tt=0 nghia la noi dung da bi loai bo hieu
ung, quay ve buoc nhap hieu ung
else {
int n = strlen(a -> s);
ff(a);
char c[51];
Báo cáo Lập Trình Căn Bản
int k = 0;
printf(" ");
for (int i = 0; i <= n; i++) {
if (a -> s[i] == ' ' || a -> s[i] == 0) {
ff(a);
ff(a);
strncpy(c, a -> s + k, i - k);
c[i - k] = NULL;
k = i + 1;
gotoxy(50, 17);
printf("%s", c);
Sleep(300);
}
}
system("cls");
ff(a);
gotoxy(50 - (n / 2), 16);
printf("%s", a -> s); // hien thi toan bo chuoi
Sleep(300);
}
}// hien con tro
printf(" ");
}
void lan6(chu * a) { // trai chay sang phai
while (1) {
f(a);
if (a -> tt == 0) break;
else {
char b[50];
int n = strlen(a -> s);
//an con tro
printf(" ");
for (int k = 0; k <= n + 90; k++) {
system("cls");
ff(a);
gotoxy(1 + k, 16);
printf("%s", a -> s);
gotoxy(1 + k, 16);
printf("%s", b);
if (k % 2 == 0);
else{
printf("%c",' ');
Báo cáo Lập Trình Căn Bản
}Sleep(5);
}
}// hien con tro
printf(" ");
}}
void lan7(chu * a) { // hieu ung ket hop
while (1) {
f(a);
if (a -> tt == 0) break;
else{
int n=strlen(a->s);
ff(a);
//an con tro
printf(" ");
TextColor(13);
for (int i=0;i<=n;i++)
{
gotoxy(50-(n/2)+i,14);printf("%< ",a->s[i]);
gotoxy(50-(n/2)+i,13);printf("% c",a->s[i]);
gotoxy(i + 50,i+2);printf("%c",a->s[i]); // xeo xuong
gotoxy(50,i+8);printf("%c",a->s[i]); //thang
gotoxy(i+50,n+1-(i-9)); printf("%c",a->s[i]);//xeo xuong
Sleep(100);
}
}
} // hien con tro
printf(" ");
}
void lan8(chu * a) { // hieu ung x
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int r=0;
int n=strlen(a->s);
ff(a);
//an con tro
printf(" ");
for( int i=0;i<=n+4+r;i++)
{
for (int k=0;k<=i;k++)
Báo cáo Lập Trình Căn Bản
{
ff(a);
gotoxy(40+i-k,15);
if(k<=n) printf("%c",a->s[n-k]);
}Sleep(100);// tao tuong va di chuyen dong chu
}char tam1[51], tam2[51];
strcpy(tam1, a->s);
strcpy(tam2, a->s);
for (int j = 0; j < n; j++) {
if (j % 2 == 0) tam1[j] = ' ';
else tam2[j]=' ';
}
for (int u = 0; u < 10; u++) {
ff(a);
gotoxy(40-u+3 , 15 - u);
printf("%s", tam1);
gotoxy(40-u-3 , 15 - u);
printf("%s", tam2);
gotoxy(40-u+3 , 15 + u);
printf("%s", tam1);
gotoxy(40-u-3 , 15 + u);
printf("%s", tam2);
gotoxy(40+u+3 , 15 - u);
printf("%s", tam1);
gotoxy(40+u+3 , 15 - u);
printf("%s", tam2);
gotoxy(40+u-3 , 15 + u);
printf("%s", tam1);
gotoxy(40+u-3 , 15 + u);
printf("%s", tam2);
Sleep(100);
}
}// hien con tro
printf(" ");
}
}
void lan9(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
Báo cáo Lập Trình Căn Bản
else {
ff(a);
int n = strlen(a -> s);
//an con tro
printf(" ");
TextColor(13);
for (int i = 0; i <= n; i++) {
gotoxy(50 + i, 15);
printf("%c", a -> s[i]);
gotoxy(50 + n - i, 16);
printf("%c", a -> s[n - i]);
Sleep(100);
} // xuat hien doi xung
int c = ' ';
for (int j = 0; j <= n; j++) {
gotoxy(50 + j, 15);
printf("%c", c);
gotoxy(50 + j, 16);
printf("%c", c);
Sleep(100);
}
}
}
printf(" ");
}
void lan10(chu * a) { //tu tren xuong
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
//an con tro
char a1[60], a2[60];
strcpy(a1, a -> s);
strcpy(a2, a -> s);
for (int u = 0; u < 10; u++) {
ff(a);
gotoxy(50, 12+u);
printf("%s", a1);
gotoxy(50, 13+u);
Báo cáo Lập Trình Căn Bản
printf("%s", a2);
Sleep(100);
}
}
}
printf("");
}
void lan11(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
else{
int n=strlen(a->s);
ff(a);
//an con tro
printf(" ");
TextColor(3);
for (int i=0;i<=n;i++)
{
gotoxy(54-(n/2)+i,14);printf("%c",a->s[i]);
gotoxy(54-(n/2)+i,15);printf("%c",a->s[i]);
gotoxy(54-(n/2)+i,16);printf("%c",a->s[i]);
Sleep(100);
}
char c[]=" ";
gotoxy(54-(n/2),14);printf("%s",c);
Sleep(400);
gotoxy(54-(n/2),15);printf("%s",c);
Sleep(500);
gotoxy(54-(n/2),16);printf("%s",c);
Sleep(600);
}
}
printf("\33[?25h");
}
void lan12(chu * a) { //hieu ung chu xuat hien lan luot
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
ff(a);
//an con tro
Báo cáo Lập Trình Căn Bản
printf(" ");
TextColor(14);
for (int i = 0; i < n; i++) {
gotoxy(50 + i, 20);
printf("%c", a -> s[i]);
Sleep(100);
} // chu xuat hien tu trai qua phai
char f1[50];
strcpy(f1, a -> s);
for (int k = 0; k < n; k++) {
gotoxy(50 + k, 20);
printf("%s", f1);
Sleep(100);
system("cls"); // chu bien mat
ff(a);
}
}
}
printf(" ");
}
void lan13(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
else {
ff(a);
int n = strlen(a -> s);
//an con tro
printf("");
TextColor(12);
for (int i = 0; i <= n; i++) {
gotoxy(50 + n - i, 17);
printf("%c", a -> s[n - i]);
Sleep(100);
}
int c = ' ';
for (int j = 0; j <= n; j++) {
gotoxy(50 + n - 1 - j, 17);
printf("%c", c);
Sleep(100);
}
}
}
Báo cáo Lập Trình Căn Bản
printf(" ");
}
void lan14(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
int k = 0;
int t = 0;
ff(a);
//an con tro
printf("");
TextColor(10);
for (int u = 0; u < 2; u++) {
for (int i = 10; i < n + 10; i++) {
Sleep(200);
if (t == 0) {
gotoxy(i + 8,i);
printf("%c", a -> s[k]);// hien thi chuoi xeo xuong
k++;
} else {
gotoxy(i+n+9,n+10-(i-8)); ;
printf("%c",a->s[k]);// hien thi
chuoi xeo len
k++;
}
}
k = 0;
t = 1;
}
}
}
// hien con tro
printf("");
}
void lan15(chu * a) {
while (1) {
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
int k = 0;
Báo cáo Lập Trình Căn Bản
int t = 0;
ff(a);
//an con tro
printf(" ");
TextColor(13);
for (int u = 0; u < 2; u++) {
for (int i = 10; i < n + 10; i++) {
Sleep(100);
if (t == 0) {
gotoxy(53, i);
printf("%c", a -> s[k]);
gotoxy(55, i);
printf("%c", a -> s[k]);
k++;
} else {
gotoxy(51, i + 0);
printf("%c", a -> s[k]);
gotoxy(49,i + 1);
printf("%c", a -> s[k]);
gotoxy(47,i+1);
printf("%c", a -> s[k]);
gotoxy(45,i+1);
printf("%c", a -> s[k]);
gotoxy(57,i+0);
printf("%c", a -> s[k]);
gotoxy(59,i+1);
printf("%c", a -> s[k]);
gotoxy(61,i+1);
printf("%c", a -> s[k]);
gotoxy(63,i+1);
printf("%c", a -> s[k]);
k++; // hien thi chuoi hang doc
}
}
k = 0;
t = 1;
}
}
}
printf("");//hien con tro
}
void lan16(chu * a) {
while (1) {
Báo cáo Lập Trình Căn Bản
f(a);
if (a -> tt == 0) break;
else {
int n = strlen(a -> s);
int k = 0;
char c[] = " ";
int t = 0;
ff(a);
//an con tro
printf(" ");
TextColor(14);
for (int u = 0; u < 2; u++) {
for (int i = 10; i < n + 10; i++) {
Sleep(200);
if (t == 0) {
gotoxy( 40,i);
printf("%c", a -> s[k]);// chuoi doc
k++;
} else {
gotoxy(40,i);
printf("%c", c[0]);
Sleep(100); //xoa chuoi doc
gotoxy(40+i,10);
printf("%c", a -> s[k]);
gotoxy(63,i+1);
printf("%c", a -> s[k]);
k++; // chuoi hang ngang
}
}
k = 0;
t = 1;
}
}
}
// hien con tro
printf("\33[?25h");
}
int main(int argc,
const char * argv[]) {
FILE *dem;
chu * a = (chu * ) malloc(sizeof(chu));
fscanf(dem,"%d",&a->solannhap);
Báo cáo Lập Trình Căn Bản
fclose(dem);
while(1){
system("cls");
a->s[0]=NULL;
a -> td.x = 12;
a -> td.y = 12;
a -> tt = 0;
a -> lan = 0;
ff(a);
gotoxy(22, 1);
fflush(stdin);
gets(a -> s); // Nhap noi dung
while (1) {
ff(a);
gotoxy(28, 3);
fflush(stdin);
scanf("%d", & a -> lan);// Nhap hieu ung
if (a->lan == 0) break;
else if (a -> lan < 1 || a -> lan > 16) {
a -> lan = 0;
system("cls");
ff(a);
gotoxy(35, 12);
printf("nhap trong khoang tu 1 den 16 !");
} // nhap sai khoang gia tri yeu cau nhap lai
else {
fprintf(dem,"%d",a->solannhap);
fclose(dem);
a -> tt = 1;
switch (a -> lan) {
case 1:lan1(a);break;
case 2:lan2(a);break;
case 3:lan3(a);break;
case 4:lan4(a);break;
case 5:lan5(a);break;
case 6:lan6(a);break;
case 7:lan7(a);break;
case 8:lan8(a);break;
case 9:lan9(a);break;
case 10:lan10(a);break;
case 11:lan11(a);break;
Báo cáo Lập Trình Căn Bản
case 12:lan12(a);break;
case 13:lan13(a);break;
case 14:lan14(a);break;
case 15:lan15(a);break;
case 16:lan16(a);break;
}}}}
getch();
return 0;}
3. Kết quả đạt được
Kết quả:
- Thực hiện được mục tiêu đã đề ra, thực hiện được chương trình chạy hiệu
ứng quảng cáo.
- Đã kiểm chứng, áp dụng được lý thuyết.
Nhận xét
* Ưu điểm:
- Giao diện đơn giản, dễ sử dụng.
- Hiểu biết và sử dụng được phần mền Dev-C++ .
- Cả nhóm đã hỗ trợ, bổ sung kiến thức lẫn nhau, Phát triển được khả
năng làm việc nhóm.
* Nhược điểm:
- Khơng phối hợp được hiệu ứng chạy được cùng một lúc.
- Hiệu ứng còn đơn giản, chưa được đa dạng.
* Cách khắc phục: cần học hỏi tìm hiểu thêm về bài làm và nghiên cứu
thêm ( hỏi giảng viên, bạn bè, tham khảo thêm nguồn tài liệu...).
III.Tài Liệu Tham Khảo
- Giáo trình Lập Trình Căn Bản – Đại học Cần Thơ
/>- Wed
/> />
IV. Phụ Lục
1. Quá trình thực hiện đề tài
- Kế hoạch thời gian: thời gian 1 tuần
- Kết quả thực hiện: đã hoàn thành mục tiêu đề ra.
2 .Danh sách các thành viên và bảng phân chia công việc
Báo cáo Lập Trình Căn Bản
Thành viên
Nguyễn Thành Tiến
Nhiệm vụ
Tìm hiểu về đề tài, viết chương trình.
Võ Nguyên Khánh
Tìm hiểu về đề tài, viết chương trình.
Nguyễn Hồng Khải
Tìm hiểu về đề tài, viết chương trình.
Lý Châu Gia Khang
Tìm hiểu về đề tài, viết chương trình.
Nguyễn Hồng Danh
Tìm hiểu về đề tài, viết báo cáo.
Huỳnh Lý Hải
Tìm hiểu về đề tài, viết chương trình.
Bùi Vĩnh Huy
Tìm hiểu về đề tài, viết chương trình.
Nguyễn Tấn Lộc
Tìm hiểu về đề tài, viết chương trình.