vb课程设计百度文库
A. vb课程设计心得体会
VB课程设计要求
1、每位同学自行选择一个题目进行设计,不得雷同。也可自己提回出设计题目,要答预先取得老师的同意。
2、题目后面是每个题目的每班限值人数。
3、题目工作量较大时,可结组完成,但要预先取得老师的同意。
4、设计后期,应写出设计报告,包括:题目内容、算法说明、程序变量使用说明、解决方法、创新点及对设计所包含的知识点的认识等。
设计封面要包括题目、完成人班级、学号、姓名、指导教师、完成时间等。
VB课程设计报告格式 :
XXX系统的设计(题目自拟)
一、功能描述
对系统要实现的功能进行确切的描述。
二、概要设计
根据功能分析,建立系统的体系结构,即将整个系统分解成若干子模块,用框图表示各功能模块之间的接口关系
三、详细设计
详细说明各功能模块的实现过程,所用到的算法、技巧等(附上代码)。
四、效果及存在问题
说明系统的运行效果(附上界面图形)、存在哪些不足以及预期的解决办法。
五、心得
谈谈在课程设计过程中的心得体会。
B. 求VB 关于车辆管理系统的课程设计 有现成的给发一个 到我邮箱 [email protected](PS:不要百度文库的)谢
真的很想有。但没有。。。。。
C. 求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
D. Vb课程设计
VB课程设计需求1、每位同学自行选取1个题目进行设计,不得雷同。也可自己提出设计题目,要回预先答取得老师的同意。2、题目后面是每一个题目的每班限值人数。 3、题目工作量较大时,可结组完成,但要预先取得老师的同意。 4、设计后期,应写出设计报告,包括:题目内容、算法表明、软件程序变量用表明、处理方法、创新点及对设计所包含的知识点的认识等。 设计封面要包括题目、完成人班级、学号、姓名、指导教师、完成时间等。 VB课程设计报告格式 :XXX系统(System)的设计(题目自拟) 一、功能描述 对系统(System)要实现的功能进行确切的描述。 二、概要设计 根据功能分析,新建系统(System)的体系结构,即将整个系统(System)分解成若干子模块,用框图表明各功能模块之间的接口关系 三、清楚设计 清楚表明各功能模块的实现过程,所用到的算法、技巧等(附上代码)。 四、效果及存在问题 表明系统(System)的运行效果(附上页面图形)、存在哪些不到以及预期的处理方法。 五、心得 谈谈在课程设计过程中的心得体会。
E. VB课程设计
这个懂了的话其实很简单,包括三步:
1、计算曲线经过的各点,将点存在一个数组里。计算的公式根据你需要的曲线来算。
2、用绘图函数将保存在数组里的各个点按次连接起来,显示到屏幕上。
3、图形显示一定时间后再用绘图函数用背景色画一遍图形(就是将图形擦除啦。)
然后再循环到第一步,不断循环就实现动态显示了。
循环可以用计时器做。
绘图函数vb有自带的,但是貌似比较慢,最好用windows带的函数(API 函数)。
还有不懂可以问我。
F. 关于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、回到主菜
G. 帮忙做简单《VB程序设计》课程设计
真不知道为什么书上会让你们去学Adodc这种垃圾控件....发布程序的时候带个累赘不说,用起来也不灵活....
自己用ado写个多简单啊....
唉....教育啊.....把些好学生都毁了
H. 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] 叫我要,我再发到你的邮箱里!
I. vb课程设计滚动字幕版
Private Sub Command1_Click()
Dim i As Long
Dim r As Long
Dim a(1 To 20) As Long
List1.Clear
Randomize
For i = 1 To 6
Do
r = Int(Rnd * 20 + 1)
Loop Until a(r) <= 2
a(r) = a(r) + 1
List1.AddItem r
Next
List1.AddItem vbNullString
For i = 1 To 20
If a(i) > 0 Then
List1.AddItem i & "出现了" & a(i) & "次; "
End If
Next
End Sub
J. vb课程设计
这才明白,抄其实很简单,包括三个步袭骤:<br /> 1,通过计算曲线的点,点上有一个数组。你需要计算的曲线计算公式的基础上。 <br /> 2,将被保存在不同的时间点在数组中的按次付费链接,屏幕上显示的绘图功能。 <br /> 3,图形显示的背景颜色一段时间,然后再次使用的绘图功能画出图形(图形删除它。)<br /> <br />然后回收到的第一个步骤,连续循环,实现动态显示。 <br /> <br />周期定时器。 <br /> <br />绘图功能VB来了,但它看起来像慢,最好是使用Windows的函数(API函数)。 <br /> <br />有不明白的可以问我。