vb课程设计
⑴ 急求一个VB课程设计计算器的完整代码,最好有个人做好了给我,万分感谢
什么叫做“课程设计计算器”?
⑵ VB课程设计 题目如图VB VB VB
界面你自已做一下了,源代码如下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
Option Explicit
Dim Board(0 To 18, 0 To 18) As Byte '此数组标识棋盘上每个点是否有子:0 无子,1 黑,2 白子
Dim lastnum As Integer '最新放置棋子的位置号
Const HDist As Integer = 250
Const VDist As Integer = 800
Const Grid As Integer = 250
Private Sub cmdRemoveBlack_Click() '移除黑子
Dim i As Integer
For i = 0 To 360
If Board(i Mod 19, i \ 19) = 1 Then Board(i Mod 19, i \ 19) = 0: shpChess(i).Visible = False
Next
Call CountChess
End Sub
Private Sub cmdRemoveWhite_Click() '移除白子
Dim i As Integer
For i = 0 To 360
If Board(i Mod 19, i \ 19) = 2 Then Board(i Mod 19, i \ 19) = 0: shpChess(i).Visible = False
Next
Call CountChess
End Sub
Private Sub cmdUndo_Click() '撤消最后一步
shpChess(lastnum).Visible = False
Board(lastnum Mod 19, lastnum \ 19) = 0
Call CountChess
End Sub
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Load()
'窗体加载时,使用直线控件数组生成19*19的围棋盘
Dim i As Integer
Randomize
'生成横线
For i = 1 To 18
Load LinH(i)
Next
For i = 0 To 18
LinH(i).Visible = True
LinH(i).X1 = HDist
LinH(i).Y1 = VDist + Grid * i
LinH(i).Y2 = VDist + Grid * i
LinH(i).X2 = HDist + Grid * 18
Next
'生成竖线
For i = 1 To 18
Load LinV(i)
Next
For i = 0 To 18
LinV(i).Visible = True
LinV(i).Y1 = VDist
LinV(i).X1 = HDist + Grid * i
LinV(i).Y2 = VDist + Grid * 18
LinV(i).X2 = HDist + Grid * i
Next
'生成棋子
For i = 1 To 360
Load shpChess(i)
shpChess(i).FillStyle = 0
shpChess(i).FillColor = vbWhite
Next
For i = 0 To 360
shpChess(i).Top = (i \ 19) * Grid + VDist - 100
shpChess(i).Left = (i Mod 19) * Grid + HDist - 100
shpChess(i).Visible = True
Next
'读取已存的棋局
If Dir("save.txt") <> "" Then
Open "save.txt" For Input As #1
For i = 0 To 360
Input #1, Board(i Mod 19, i \ 19)
Next
Close
End If
Call CountChess
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Integer
Dim j As Integer
'计算行列
i = (X - HDist) / Grid
j = (Y - VDist) / Grid
'防止下标越界
If i > 18 Then i = 18
If i < 0 Then i = 0
If j > 18 Then j = 18
If j < 0 Then j = 0
If Shift = 0 Then '加子
lastnum = j * 19 + i
If Board(i, j) = 0 Then
Select Case Button
Case 1
shpChess(lastnum).FillColor = vbBlack
Board(i, j) = 1
Case 2
shpChess(lastnum).FillColor = vbWhite
Board(i, j) = 2
End Select
shpChess(lastnum).Visible = True
Else
MsgBox "此处有子,不能落子。"
End If
ElseIf Shift = 2 Then '按住Ctrl键去子
If Board(i, j) <> 0 Then
Select Case Button
Case 1
If Board(i, j) = 1 Then
shpChess(i + 19 * j).Visible = False
Board(i, j) = 0
End If
Case 2
If Board(i, j) = 2 Then
shpChess(i + 19 * j).Visible = False
Board(i, j) = 0
End If
End Select
Else
MsgBox "此处无子,不能提子。"
End If
End If
Call CountChess
End Sub
'退出时,保存当前棋局
Private Sub Form_Unload(Cancel As Integer)
Open "save.txt" For Output As #1
Dim i As Integer
For i = 0 To 360
Write #1, Board(i Mod 19, i \ 19),
Next
Close #1
End Sub
Private Sub Timer1_Timer()
Static i As Integer
Dim j As Integer
If i = 0 Then
For j = 0 To 360
shpChess(j).FillColor = vbBlack
Next
i = i + 1
Else
For j = 0 To 360
If Board(j Mod 19, j \ 19) = 1 Then
shpChess(j).FillColor = vbBlack
ElseIf Board(j Mod 19, j \ 19) = 2 Then
shpChess(j).FillColor = vbWhite
Else
shpChess(j).Visible = False
End If
Next
Timer1.Enabled = False
End If
End Sub
Sub CountChess()
Dim total As Byte, black As Byte, white As Byte
Dim i As Integer
Dim j As Integer
For i = 0 To 18
For j = 0 To 18
If Board(i, j) = 1 Then
black = black + 1
ElseIf Board(i, j) = 2 Then
white = white + 1
End If
Next
Next
txtBlack.Text = black
txtWhite.Text = white
txtTotal.Text = black + white
If total = 361 Then MsgBox "Game Over"
End Sub
⑶ vb课程设计心得体会
VB课程设计要求
1、每位同学自行选择一个题目进行设计,不得雷同。也可自己提回出设计题目,要答预先取得老师的同意。
2、题目后面是每个题目的每班限值人数。
3、题目工作量较大时,可结组完成,但要预先取得老师的同意。
4、设计后期,应写出设计报告,包括:题目内容、算法说明、程序变量使用说明、解决方法、创新点及对设计所包含的知识点的认识等。
设计封面要包括题目、完成人班级、学号、姓名、指导教师、完成时间等。
VB课程设计报告格式 :
XXX系统的设计(题目自拟)
一、功能描述
对系统要实现的功能进行确切的描述。
二、概要设计
根据功能分析,建立系统的体系结构,即将整个系统分解成若干子模块,用框图表示各功能模块之间的接口关系
三、详细设计
详细说明各功能模块的实现过程,所用到的算法、技巧等(附上代码)。
四、效果及存在问题
说明系统的运行效果(附上界面图形)、存在哪些不足以及预期的解决办法。
五、心得
谈谈在课程设计过程中的心得体会。
⑷ 关于VB的课程设计
自己参照数据改一下应该就可以了。
#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
int score; /*成绩*/
}Student;
Student stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜单选择*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*读入选择*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{ printf("\t\t\tstudent's num:"); /*交互输入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多余的输入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*输入判断*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式头*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循环输入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十个暂停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按学号排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一条记录*/
{char x[10]; /*清除多余输入所用*/
printf("\t\t\tstudent's num:"); /*交互式输入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*调用排序函数*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*交互式问寻*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*交互式输入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*输入失败信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成绩平均值*/
for(i=0;i<n;i++) /*循环输入判断*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*总共记录数*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*从文件中读入数据*/
{ int i=0,num;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读入总记录量*/
while(i<num) /*循环读入数据*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*将所有记录写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*输入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*关闭文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\tInput Records\n"); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*显示所有记录*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按学号排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一条记录*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,输出统计信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,输出统计信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循环写入数据*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
四、函数调用关系图
注:“→”代表调用
Input函数
打印链表记录
Display函数
输入若干条记录
menu_select()函数
选择菜单
Sort_by_num函数
显示所有记录
Delete_a_record函数
按姓名查找,删除一条记录
Query_a_record查找并显示一条记录
Statistic函数
输出统计信息 (新增)
AddfromText函数
从正文中添加数据到结构体数组中
Main函数
Insert_a_record插入一条记录
WritetoText函数 将所有数据写入文件中
退出程序
Reverse(head)函数
按学号排序
五、设计测试流程
1、进入界面
2、输入选项1,回车;
按提示输入数据:
3、回到主菜单;
输入选项7,回车;
输入文件名:data.txt,回车;
出现成功提示,则读入文件操作成功。
4、回到主菜单,输入2,回车
每10个暂停显示数据
5、回到主菜单,输入3,回车
出现排序成功信息。
6、回到主菜单,输入4,回车
按提示插入一组数据
7、回到主菜单,输入5,回车
按提示输入姓名,删除数据
出现删除成功的信息
8、回到主菜单,输入6,回车
输入姓名进行查询
9、回到主菜单,输入7,回车
出现统计信息
10、回到主菜单,输入9,回车
输入result.txt,回车
出现成功写入文件的信息
11、回到主菜单,输入0,回车退出系统
回答者:kingkey001 - 试用期 一级 7-14 22:38
修改答复: kingkey001,您要修改的答复如下: 积分规则 关闭
C语言课程设计报告-------学生成绩简单管理程序
一、系统菜单的主要功能
(1)输入若干条记录
(2)显示所有记录
(3)按学号排序
(4)插入一条记录
(5)按姓名查找,删除一条记录
(6)查找并显示一条记录
(7)输出统计信息 (新增)
(8)从正文中添加数据到结构体数组中
(9)将所有数据写入文件中
(0)退出程序
二、题目分析
该题主要考察学生对结构体,指针,文件的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。
菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧,下面就各个子程序中的功能进行说明:
功能1和4的算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets将所有的多余的字符,回车读去,否则就会出错。
功能2是显示所有的记录,通过循环输出,格式也比较重要。
功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp,strcpy等函数。
功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。
功能6的算法在5中就已经体现了,输入姓名,一一比较。
功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。
功能8和9是对文件的操作,提前准备好数据。
三、程序正文部分
#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
int score; /*成绩*/
}Student;
Student stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜单选择*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*读入选择*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{ printf("\t\t\tstudent's num:"); /*交互输入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多余的输入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*输入判断*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式头*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循环输入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十个暂停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按学号排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一条记录*/
{char x[10]; /*清除多余输入所用*/
printf("\t\t\tstudent's num:"); /*交互式输入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*调用排序函数*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*交互式问寻*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*交互式输入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*输入失败信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成绩平均值*/
for(i=0;i<n;i++) /*循环输入判断*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*总共记录数*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*从文件中读入数据*/
{ int i=0,num;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读入总记录量*/
while(i<num) /*循环读入数据*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*将所有记录写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*输入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*关闭文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\tInput Records\n"); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*显示所有记录*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按学号排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一条记录*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,输出统计信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,输出统计信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循环写入数据*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
四、函数调用关系图
注:“→”代表调用
Input函数
打印链表记录
Display函数
输入若干条记录
menu_select()函数
选择菜单
Sort_by_num函数
显示所有记录
Delete_a_record函数
按姓名查找,删除一条记录
Query_a_record查找并显示一条记录
Statistic函数
输出统计信息 (新增)
AddfromText函数
从正文中添加数据到结构体数组中
Main函数
Insert_a_record插入一条记录
WritetoText函数 将所有数据写入文件中
退出程序
Reverse(head)函数
按学号排序
五、设计测试流程
1、进入界面
2、输入选项1,回车;
按提示输入数据:
3、回到主菜单;
输入选项7,回车;
输入文件名:data.txt,回车;
出现成功提示,则读入文件操作成功。
4、回到主菜单,输入2,回车
每10个暂停显示数据
5、回到主菜单,输入3,回车
出现排序成功信息。
6、回到主菜
⑸ 求vb高手!!!大一vb课程设计,请解释一下源代码。代码都是干什么的,越详细越好。~~~
没有界面,没有按钮的名称,可能部分翻译有部分的出入!
'全局变量,可简化成 Public i,m,n,k As Integer
Public i As Integer, m As Integer, n As Integer, k As Integer
'按钮名称为Command1的单击事件,按钮功能为开局前的变量和控件初始化
Private Sub Command1_Click()
'标签名称为Label1的控件显示 ready 字样
Label1.Caption = "ready"
'设置滚动条的值为200
HScroll1.Value = 200
'两个文本款内的内容设置为 0:00::00 应该是要显示时间
Text2.Text = "0:00:00"
Text1.Text = "0:00:00"
'名称为Timer2和Timer4的两个时间控件的活动状态设置为否。
Timer2.Enabled = False
Timer4.Enabled = False
'将全局变量 n 和 k
n = 0
k = 0
'P3和P4的左边缘在窗体的0像素位
P3.Left = 0
P4.Left = 0
'全局变量 i 赋值 1
i = 1
'Timer1时间空间的活动状态设置为真,开始计时,每隔Interval(Timer1控件该属性的值)毫秒执行一次Timer1_Timer函数
Timer1.Enabled = True
End Sub
'触发a1和Command1控件的单击事件
Private Sub a1_Click()
Command1_Click
End Sub
'退出按钮
Private Sub a2_Click()
End
End Sub
'单击b1按钮时,调用系统自带记事本 打开位于A:\龟兔赛跑\2\readme.txt 文件。你那位学长的系统应该是安装在D盘的!如果你系统安装在C盘只要把D改成C即可,另外A:一般为软驱,将路径指向存在的路径才能正常访问
Private Sub b1_Click()
Shell "d:\windows\notepad.exe A:\龟兔赛跑\2\readme.txt", 1
End Sub
'单击b2按钮时弹出 消息框
Private Sub b2_Click()
MsgBox "版本1.0" & Chr(13) & "初次尝试,不足之处,多多指教", 48, "关于赛跑"
End Sub
'响应Form窗体的键盘按下事件,键盘按下一次运行一次该函数
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim j As Integer
'把HScroll1滚动条的当前值赋给变量 j
j = HScroll1.Value
'定义两个静态变量,第一次创建后在窗体关闭前不会二次重建,也就是说本次函数执行后Blin1的值是True,则再运行本函数时Blin1的初值就是True
Static blin1 As Boolean
Static blin2 As Boolean
'判断按下的按键是不是 A 或者 S ,是则继续判断,否则跳到执行Endif下面的语句
If KeyCode = vbKeyA Or KeyCode = vbKeyS Then
'如果i小于8则继续,否则跳到执行Endif下面的语句
If i < 8 Then
'Text2文本款显示“抢跑”并弹出“犯规”警告框
Text2.Text = "抢跑"
MsgBox "PLAYERONE抢跑", 16, "犯规"
'两个文本框内容重新换为0:00:00
Text2.Text = "0:00:00"
Text1.Text = "0:00:00"
'重新初始化全局变量 n,k,i
n = 0
k = 0
i = 1
’退出该函数
Exit Sub
End If
End If
'判断如果blin1为假,而且i=8则继续,否则跳到对应的Endif
If blin1 = False And i = 8 Then
'如果按下的按键为A则继续,否则跳到对应的Endif
If KeyCode = vbKeyA Then
'P3控件的左边缘在窗体的位置+j个像素
P3.Left = P3.Left + j
'变量blin1和blin2的值自反,原来为真的变为假,原来为假的变为真
blin1 = Not blin1
blin2 = Not blin2
End If
End If
'判断若blin2的值为真且i=8则继续执行,否则跳到对应的Endif语句后的代码
If blin2 = True And i = 8 Then
'如果按下的按钮为 S 则继续,否则……
If KeyCode = vbKeyS Then
'P3控件的左边缘在窗体的位置增加j个像素
P3.Left = P3.Left + j
'blin1和blin2自反,同上一句IF
blin2 = Not blin2
blin1 = Not blin1
End If
End If
'静态变量blin3和blin4
Static blin3 As Boolean
Static blin4 As Boolean
'如果按下按键的ASCII码为222或186,则继续,否则……
If KeyCode = 222 Or KeyCode = 186 Then
'如果i<8则继续,否则……
If i < 8 Then
'Text2显示 “抢跑” 字样,并显示犯规警告
Text2.Text = "抢跑"
MsgBox "PLAYERTWO抢跑", 16, "犯规"
'初始化全局变量和Text2文本框内容
i = 1
Text2.Text = "0:00:00"
n = 0
k = 0
'结束本函数
Exit Sub
End If
End If
'判断blin3的值是否为假 并且 i=8,是则继续,否则……
If blin3 = False And i = 8 Then
'判断按下的按钮的ASCII码是否为186
If KeyCode = 186 Then
'P4控件的左边缘在窗体的位置加j个像素
P4.Left = P4.Left + j
'blin3和blin4自反
blin3 = Not blin3
blin4 = Not blin4
End If
End If
'判断功能同上,只要上面懂了这里也就懂了。功能大致一样。只是响应的控件不一样而已。(上面为P3,这里为P4)
If blin4 = True And i = 8 Then
If KeyCode = 222 Then
P4.Left = P4.Left + j
blin4 = Not blin4
blin3 = Not blin3
End If
End If
'如果P3控件的左边缘大于或者等于P1控件的宽减去P3控件的宽的值则继续,否则……
If P3.Left >= P1.Width - P3.Width Then
'设置Timer4时间控件为不活动的
Timer4.Enabled = False
'P3的左边缘设置为P1控件的宽减P3控件的宽
P3.Left = P1.Width - P3.Width
End If
'功能同上一个IF语句。
If P4.Left >= P2.Width - P4.Width Then
Timer2.Enabled = False
P4.Left = P2.Width - P4.Width
End If
'判断P3控件的左边缘位置是否比P1控件的宽减P3控件的宽的值要大于或等于,并且P4的左边缘也比P2的宽减P4的宽要大于或等于,是则继续,否则……
If P3.Left >= P1.Width - P3.Width And P4.Left >= P2.Width - P4.Width Then
'判断n的值是否比k大,是则继续,否则……
If n > k Then
'弹出窗口,显示获胜者为一号
MsgBox "PLAYERONE 获胜", 48, "比赛 "
'Label1文本控件的可见状态为假(不可见)
Label1.Visible = False
'Timer2和Timer4的活动状态为假
Timer2.Enabled = False
Timer4.Enabled = False
'初始化一下变量和控件文本
k = 0
n = 0
Text1.Text = "0:00:00"
Text2.Text = "0:00:00"
'P3和P4控件左边缘紧贴窗体
P3.Left = 0
P4.Left = 0
End If
'如果k大于n
If k > n Then
'弹出窗口,显示获胜者为二号
MsgBox "PLAYERTWO 获胜", 48, "比赛 "
'此处功能和前一个IF的对应代码段功能相同,此处不再熬述
Label1.Visible = False
Timer2.Enabled = False
Timer4.Enabled = False
k = 0
n = 0
Text1.Text = "0:00:00"
Text2.Text = "0:00:00"
P3.Left = 0
P4.Left = 0
End If
End If
End Sub
'当Timer1时间控件的Enabled属性值为真时,每隔Interval的值(毫秒数)执行一次该函数
Private Sub Timer1_Timer()
'静态变量blins
Static blins As Boolean
'Label1控件的可见性为blins
Label1.Visible = blins
'i的值自增1
i = i + 1
'blins的值自反,自反后每次执行相当于Label1标签会闪烁
blins = Not blins
'如果i=8则触发,否则……
If i = 8 Then
Beep
'label1显示 “开始”
Label1.Caption = "开始"
'label1标签可见
Label1.Visible = True
'timer2和timer4控件为活动状态,timer1为不活动
Timer2.Enabled = True
Timer4.Enabled = True
Timer1.Enabled = False
End If
End Sub
'同上,控件为TIMER2
Private Sub Timer2_Timer()
'n值自增1
n = n + 1
'n0的值取n和60的模
n0 = n Mod 60
'以下是一些赋值的数学计算
n1 = (n \ 60) Mod 60
n2 = ((n \ 60) \ 60) Mod 60
'text1文本框显示("0" & CStr(n2)这段文本的右2位和("0" + CStr(n1)的右2位和("0" & CStr(n0)的右2位,(控制时间的现实格式)
Text1.Text = Right(("0" & CStr(n2)), 2) & ":" & Right(("0" + CStr(n1)), 2) & ":" & Right("0" & CStr(n0), 2)
将时间显示在text1里面
End Sub
'功能同Timer3控件!显示Text2文本框的时间内容,宿舍熄灯,有所不足,见谅!
Private Sub Timer4_Timer()
k = k + 1
k0 = k Mod 60
k1 = (k \ 60) Mod 60
k2 = ((k \ 60) \ 60) Mod 60
Text2.Text = Right(("0" & CStr(k2)), 2) & ":" & Right(("0" + CStr(k1)), 2) & ":" & Right("0" & CStr(k0), 2)
End Sub
⑹ VB课程设计和报告
欢迎看一下我的计算器,
有程序界面,
你可以参考一下,添加运算功能。
http://hi..com/jack%5Fican/blog/item/f3ab762acc95133a5243c1a2.html
说明:1.共有4个文本框其,其中三个是填入或输出数据的(名称分别是:txta txtb txtc),剩下的那个是符号(txtd)2.共7个按钮,4个是符号按钮,一个计算,一个清零.这是我弄的程序”袖珍计算器”代码也是自己编写的,代码如下:通用声明Dim j As Integer '定义j为整型
Private Sub Text1_Change()End SubPrivate Sub Command1_Click()
txtfuhao.Text = "+" '将”+”显示到文本框txtfuhao.Text中
End SubPrivate Sub Command2_Click()
txtfuhao.Text = "-" ''将”-”显示到文本框txtfuhao.Text中
End SubPrivate Sub Command3_Click()
txtfuhao.Text = "×" '将”×”显示到文本框txtfuhao.Text中
End SubPrivate Sub Command4_Click()
txtfuhao.Text = "÷" 将”÷”'显示到文本框txtfuhao.Text中
End Sub
Private Sub Command5_Click()
Dim a, b, c As Integer
a = Val(txta.Text) '将txta.Text里的内容转化为数值型,然后再赋给a
b = Val(txtb.Text) '将txtb.Text里的内容转化为数值型,然后再赋给b
If txtfuhao.Text = "+" Then '运算过程
c = a + b '运算过程
ElseIf txtfuhao.Text = "-" Then '运算过程
c = a - b '运算过程
ElseIf txtfuhao.Text = "÷" Then '运算过程
c = a / b '运算过程
ElseIf txtfuhao.Text = "×" Then '运算过程
c = a * b '运算过程
Else
j = MsgBox("您输入的符号不正确", vbOKOnly, "错误信息")
End If
txtc.Text = c '将运算结果c输出到文本框txtc中
End SubPrivate Sub Command6_Click()
txta.Text = "" '将空字符输入到文本框内(刷新)
txtb.Text = "" '将空字符输入到文本框内(刷新)
txtc.Text = "" '将空字符输入到文本框内(刷新)
txtfuhao.Text = "" '将空字符输入到文本框内(刷新)
End SubPrivate Sub Command7_Click()
End '结束程序
End SubPrivate Sub Form_Load()End Sub
参考资料:http://hi..com/jack%5Fican/blog/item/f3ab762acc95133a5243c1a2.html
要的话请发邮件到:[email protected] 叫我要,我再发到你的邮箱里!
⑺ Vb课程设计
VB课程设计需求1、每位同学自行选取1个题目进行设计,不得雷同。也可自己提出设计题目,要回预先答取得老师的同意。2、题目后面是每一个题目的每班限值人数。 3、题目工作量较大时,可结组完成,但要预先取得老师的同意。 4、设计后期,应写出设计报告,包括:题目内容、算法表明、软件程序变量用表明、处理方法、创新点及对设计所包含的知识点的认识等。 设计封面要包括题目、完成人班级、学号、姓名、指导教师、完成时间等。 VB课程设计报告格式 :XXX系统(System)的设计(题目自拟) 一、功能描述 对系统(System)要实现的功能进行确切的描述。 二、概要设计 根据功能分析,新建系统(System)的体系结构,即将整个系统(System)分解成若干子模块,用框图表明各功能模块之间的接口关系 三、清楚设计 清楚表明各功能模块的实现过程,所用到的算法、技巧等(附上代码)。 四、效果及存在问题 表明系统(System)的运行效果(附上页面图形)、存在哪些不到以及预期的处理方法。 五、心得 谈谈在课程设计过程中的心得体会。
⑻ VB课程设计算法集锦
Private Sub Command1_Click()
If IsNumeric(Text1.Text) And IsNumeric(Text2.Text) And IsNumeric(Text3.Text) And IsNumeric(Text4.Text) Then
Text5.Text = Val(Text1.Text) * Val(Text2.Text) + Val(Text3.Text) * Val(Text4.Text)
End If
End Sub
Private Sub Form_Load()
Label1.Caption = "22:00-05:00"
Label2.Caption = "05:00-22:00"
Label3.Caption = "电价"
Label4.Caption = "用电量版"
Command1.Caption = "计算电费权"
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
End Sub
⑼ VB课程设计
这个懂了的话其实很简单,包括三步:
1、计算曲线经过的各点,将点存在一个数组里。计算的公式根据你需要的曲线来算。
2、用绘图函数将保存在数组里的各个点按次连接起来,显示到屏幕上。
3、图形显示一定时间后再用绘图函数用背景色画一遍图形(就是将图形擦除啦。)
然后再循环到第一步,不断循环就实现动态显示了。
循环可以用计时器做。
绘图函数vb有自带的,但是貌似比较慢,最好用windows带的函数(API 函数)。
还有不懂可以问我。