
Java程序设计与Web应用程序设计哪门课简单
java程序设计主要讲解java的基础知识,它是一种语言性的课程。
web应用设计则是一种方向性的课程,这个web的设计你可以使用asp,也可以使用jsp,如果是通过jsp来进行web开发的话,需要java的知识作为基础。
因此,如果你有asp的相关知识的话,可以不学习java直接学习web应用程序设计,如果没有的话,建议你先学习java程序设计,然后再学习web应用程序设计。
java程序设计的内容简介
本书讲解了copyJava语言的基本知识及程序设计的基本方法,使读者掌握面向对象程序设计的基本概念,从而具有利用Java语言进行程序设计的能力,为将来从事软件开发,特别是Web应用系统开发打下良好基础。全书共分10章,从内容上大致分为三个部分:第一部分为第1章~第3章,介绍Java程序设计的基础知识,包括Java语言概述、Java语言基础以及算法与程序控制结构。第二部分为第4章~第6章,介绍Java面向对象程序设计的基本方法与技术,这是Java的核心与特色内容,包括类与对象、封装、继承与多态以及异常处理与输入/输出。第三部分为第7章~第10章,介绍Java的实际应用,包括多线程、网络程序设计、数据库应用以及图形用户界面开发技术。
本书内容讲解详细,程序代码均经过调试,案例实用。
本书适合作为高等院校计算机程序设计课程的教材,也可作为具有一定程序设计基础和经验的读者的参考用书。
《JAVA程序设计》结课设计
你应该问一些技术上的问题,而不是让别人帮你做作业
JAVA程序设计课程讲什么内容
《Java程序设计》课程是使用Java语言进行应用程序设计的课程。课程的主要目标有三:一、掌握Java语言的语法,能够较为深入理解Java语言机制,掌握Java语言面向对象的特点。 二、掌握JavaSE中基本的API,掌握在 、线程、输入输出、文本处理、图形用户界面、网络等方面的应用。三、能够编写有一定规模的应用程序,养成良好的编程习惯。 本课程要对Java语言的一些机制会详细讲解,所以具有系统性。本课程还注重实践性,要讲Java语言在文本、文件、窗体界面、图形、数据库、多线程、并行编程方面的应用。还会讲到编好代码的经验与技巧,包括面向对象的思想、软件开发工具的使用等。 在教学中,采用教师讲授、学生自测、学生讨论、编程实践相结合的方法。
java程序设计的内容简介
本书采用任务驱动教学模式,通过任务的实施,使读者在读程序、版学知识、写程序的过程中,权逐渐掌握面向对象的Java程序设计思想和技能。本书共分12个单元,主要包括Java程序设计过程、基本语法规则、面向对象技术、数组与字符串、异常处理、GUI编程、输入/输出处理、多线程编程以及基础网络编程等内容。
本书适合作为高等职业院校计算机相关专业“Java程序设计”或者“面向对象程序设计”课程的教材,也可作为相关技术人员学习Java的参考用书。
JAVA程序设计课程主讲老师是谁
JAVA程序设计主讲老师是北京大学信息科学技术学院教师,在程序设计方面有多年的项目开发经验和教学经验,任教育部计算机教指委分委专家组成员。出版的教材包括《Java程序设计》(曾获第六届全国高校出版社优秀畅销书奖)、《C#程序设计教程》、《VB程序设计》、《Visual C++NET程序设计》等。在北京大学开设多门程序设计课程,课程内容以系统知识与实践应用相结合,注重培养对知识体系的深入理解,在与实际工作生活相结合的应用实践中分析问题、解决问题的能力。
JAVA程序设计课程成绩管理系统
第一步先设计表结构,这种练习的项目,建立用mysql数据库,安装方便,而且不大版;第二步按需权求写查询统计SQL,这一步很关键,SQL写好了,结果也就出来了,最后一步,将结果写入文本和在控制台输出。只要思路清晰,这个不难的,有不懂的可以问我。
《JAVA程序设计》课程设计
1 package studypart02;
2 import javautilCalendar;
3 import javaawt;
4 import javaxswing;
5 import javaawtevent;
6 import javalangThread;
7 public class Clock extends JFrame implements ComponentListener,
8 ItemListener,Runnable{
9 Thread timer;
10 private JComboBox bobox_color;
11 public void start(){
12 if(timer==null)
13 timer=new Thread(this,"ShowTime");
14 timerstart();
15 }
16 public void run(){
17 while(true){
18 try{
19 timersleep(1000);
20 }catch(InterruptedException e){}
21 repaint();
22 }
23 }
24 public void stop(){
25 timerstop();
26 }
27 public Clock(){
28 super("Clock");
29 thissetSize(600,600);
30 thissetDefaultCloseOperation(EXIT_ON_CLOSE);
31 thissetLayout(new FlowLayout());
32
33 thissetVisible(true);
34 }
35 public void paint(Graphics g){
36 Calendar cal=CalendargetInstance();
37 int year=calget(CalendarYEAR);
38 int month=calget(CalendarMONTH);
39 int day=calget(CalendarDATE);
40 int hour=calget(CalendarHOUR);
41 int minute=calget(CalendarMINUTE);
42 int second=calget(CalendarSECOND);
43 int a,b;
44 a=thisgetWidth()/2;
45 for(int i=1;i<=360;i++){
46 double angle=iMathPI/180;
47 double radius=a-50;
48 int x=(int)Mathround(radiusMathsin(angle));
49 int y=(int)Mathround(radiusMathcos(angle));
50 if(i%30==0){
51 int j=i/30;
52 String str=StringvalueOf(j);
53 gsetColor(Colorblack);
54 // gfillOval(a+x,a+y,1,1);
55 gdrawString(str,a+x,a-y);
56 }
57 double radh=a-200;
58 angle=hourMathPI/30;
59 int xh=(int)Mathround(radhMathsin(angle));
60 int yh=(int)Mathround(radhMathcos(angle));
61 gsetColor(Colorred);
62 gdrawLine(a,a,a+xh,a-yh);
63 double radm=a-150;
64 angle=minuteMathPI/30;
65 int xm=(int)Mathround(radmMathsin(angle));
66 int ym=(int)Mathround(radmMathcos(angle));
67 gsetColor(Colorblue);
68 gdrawLine(a,a,a+xm,a-ym);
69 double rads=a-100;
70 angle=secondMathPI/30;
71 int xs=(int)Mathround(radsMathsin(angle));
72 int ys=(int)Mathround(radsMathcos(angle));
73 gsetColor(Coloryellow);
74 gdrawLine(a,a,a+xs,a-ys);
75 //gdrawString(calget(CalendarHOUR)+":"+calget(Calendar
76 // MINUTE)+":"+calget(CalendarSECOND));
77 }
78 }
79 public void itemStateChanged(ItemEvent e){
80 repaint();
81 }
82 public void ponentResized(ComponentEvent e){
83 repaint();
84 }
85 public void ponentMoved(ComponentEvent e){}
86 public void ponentHidden(ComponentEvent e){}
87 public void ponentShown(ComponentEvent e){}
88
89 public static void main(String[] args){
90 Clock show=new Clock();
91 showstart();
92 }
93 }
千锋JAVA课程介绍
Java语言的发展及相关技术的介绍,Java技术和平台在网络计算及电子商务中的应用介绍;Java语言的基础知识:Java语言的主要特点,设计思想,Java虚拟机,垃圾回收机制,安全性的保证机制;Java语言的基本语法规范,包括标识符、关键字、数据类型、表达式和流控制,程序基本结构;面向对象技术的基本特点,Java语言的面向对象特性,类和对象的概念,封装性、继承性、多态性,Java语言的特殊属性;Java程序的例外处理机制和方法;
Java语言的输入/输出处理机制和方法,常用的输入/输出方法,输入/输出处理的应用;
Java语言的图形用户界面设计:AWT界面设计的基本方法,常用的组件类库,图形用户界面的事件处理模型和方法,JFC介绍,Swing图形界面设计;Java Applet程序设计,Applet程序的特点,运行机制,与浏览器的集成,安全机制的使用;
多线程程序设计,进程和线程的联系和区别,多线程程序设计的一般方法,线程的生命周期,线程状态的控制,多线程的互斥和同步;Java语言的网络编程技术和应用,Socket程序设计,Client/Server程序设计;Java的Servlet和JSP(JavaServerPage)技术;
JavaBeans和RMI。
#include <stdioh>
#define MAX 200
int main()
{
int a[MAX][MAX],n;
void initmatrix(int a[][MAX]);//初始化矩阵,将所有元素赋0
void creatematrix_2k1(int a[][MAX],int n);//生成2n+1阶幻方
void creatematrix_4k(int a[][MAX],int n);//生成4n阶幻方
void creatematrix_4k2(int a[][MAX],int n);//生成4n+2阶幻方
void outputmatrix(int a[][MAX],int n);//输出n阶幻方
initmatrix(a);
printf("please input a interger number:");
scanf("%d",&n);
if(n%2) creatematrix_2k1(a,(n-1)/2);
else {if(n%4==0) creatematrix_4k(a,n/4);
else creatematrix_4k2(a,(n-2)/4);}
outputmatrix(a,n);
return 0;
}
void initmatrix(int a[][MAX])
{
for(int i=0;i<MAX;i++)
for(int j=0;j<MAX;j++)
a[i][j]=0;
}
void outputmatrix(int a[][MAX],int n)
{
for(int i=0;i<n;i++)
{
printf("第%-3d行的数依次为:",i+1);
for(int j=0;j<n;j++)
printf("%-5d",a[i][j]);
printf("\n");
}
}
void creatematrix_2k1(int a[][MAX],int n)
{
int col=-1,row=-1;
int p,q;
p=&col,q=&row;
void fillmatrix(int a[][MAX],int p,int q,int n,int i);//将i填入2n+1阶幻方中
for(int i=1;i<=((2n+1)(2n+1));i++)
fillmatrix(a,p,q,n,i);
}
void fillmatrix(int a[][MAX],int p,int q,int n,int i)
{
if(i==1)
{
a[0][n]=i;
p=0,q=n;
}
else
{
if((p==0&&q==2n)||a[(p+2n)%(2n+1)][(q+1)%(2n+1)])
{
a[(p+1)%(2n+1)][q]=i;
p=(p+1)%(2n+1);}
else{a[(p+2n)%(2n+1)][(q+1)%(2n+1)]=i;
p=(p+2n)%(2n+1),q=(q+1)%(2n+1);}
}
}
void creatematrix_4k(int a[][MAX],int n)
{
int temp;
for(int i=0;i<4n;i++)
{ for(int j=0;j<4n;j++)
a[i][j]=4ni+j+1;}
for(i=0;i<4n;i++)
for(int j=0;j<4n;j++)
if((i>j)&&((i-j)%4==0||(i+j+1)%4==0))
{temp=a[i][j];
a[i][j]=a[4n-1-i][4n-1-j];
a[4n-1-i][4n-1-j]=temp;}
for(i=0;i<2n;i++)
{temp=a[i][i];
a[i][i]=a[4n-1-i][4n-1-i];
a[4n-1-i][4n-1-i]=temp;}
}
void creatematrix_4k2(int a[][MAX],int n)//构造4n+2阶幻方
{
int col=-1,row=-1,i;
int exn=(2n+1)(2n+1);
int p,q;
p=&col,q=&row;
void fillmatrix_2(int a[][MAX],int p,int q,int cs, int rs,int n,int i);/将i填入以a[cs][rs]为起始的2n+1阶幻方中,用p,q返回的i-1行列值/
for(i=1;i<=exn;i++)
fillmatrix_2(a,p,q,0,0,n,i);
for(i=exn+1;i<=exn2;i++)
fillmatrix_2(a,p,q,2n+1,2n+1,n,i);
for(i=2exn+1;i<=3exn;i++)
fillmatrix_2(a,p,q,0,2n+1,n,i);
for(i=3exn+1;i<=4exn;i++)
fillmatrix_2(a,p,q,2n+1,0,n,i);
void lastswap(int a[][MAX],int n);//对4n+2阶幻方做最后的变换
lastswap(a,n);
}
void fillmatrix_2(int a[][MAX],int p,int q,int cs, int rs,int n,int i)
{
int exn=(2n+1)(2n+1);
if(i%exn==1)
{
a[cs+0][rs+n]=i;
p=0,q=n;
}
else {if((p==0&&q==2n)||a[(p+2n)%(2n+1)+cs][(q+1)%(2n+1)+rs])
{
a[(p+1)%(2n+1)+cs][q+rs]=i;
p=(p+1)%(2n+1);
}
else{
a[(p+2n)%(2n+1)+cs][(q+1)%(2n+1)+rs]=i;
p=(p+2n)%(2n+1),q=(q+1)%(2n+1);
}
}
}
void lastswap(int a[][MAX],int n)
{
int temp,i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{temp=a[i][j];
a[i][j]=a[2n+1+i][j];
a[2n+1+i][j]=temp;}
for(i=1;i<=n;i++)
{temp=a[n][i];
a[n][i]=a[3n+1][i];
a[3n+1][i]=temp;}
for(i=n+1;i<2n+1;i++)
for(j=0;j<n;j++)
{temp=a[i][j];
a[i][j]=a[2n+1+i][j];
a[2n+1+i][j]=temp;}
for(i=0;i<2n+1;i++)
for(j=4n+1;j>3n+2;j--)
{temp=a[i][j];
a[i][j]=a[2n+1+i][j];
a[2n+1+i][j]=temp;}
}
求幻方的程序
#include <stdioh>
#include <stdlibh>
#define IO "%d"//和下面一行共同扩展数据成员的格式
typedef int ElemType;//同上
typedef struct LinkNode
{
ElemType data;
struct LinkNode next;
}LinkNode,Link;
Link creat();//建立带头结点的链表,并返回头指针
void print(Link);//输出链表所有结点
bool insert(Link,int ,ElemType);//向head为头指针的链表中插入元素e使之成为链表第i个元素成功返回TRUE否则FALSE
bool del(Link,int );//在head为头指针的链表中删除第i个结点,成功返回TRUE否则返回FALSE
void operate(Link);//在本程序中进行链表的插入,删除,输出 *** 作
Link creat()
{
Link head=(Link)malloc(sizeof(LinkNode));
Link pre=head,p;
int count=1;
char ch;
printf("是否终止建立链表(Y/N):");
scanf("%c",&ch);
while(ch=='n'||ch=='N')
{
p=(Link)malloc(sizeof(LinkNode));
printf("请输入第%d个结点内的数据:",count);
scanf(IO,&(p->data));
fflush(stdin);
pre->next=p;
pre=p;
printf("是否终止建立链表(Y/N):");
scanf("%c",&ch);
count++;
}
pre->next=NULL;
return head;
}
void print(Link head)
{
printf("链表目前情况为:\n");
Link p=head->next;
int count=1;
while(p)
{
printf("第%d个结点中数据为"IO" ",count,p->data);
p=p->next;
if((count++)%3==0)printf("\n");
}
if(count%3!=1)printf("\n");
}
bool insert(Link head,int i,ElemType e)
{
Link pre,p;
int k;
for(k=0,pre=head;k<i-1&⪯k++,pre=pre->next);//寻找第i-1个元素的指针
if(k!=i-1||(!pre))return false;
p=(Link)malloc(sizeof(LinkNode));
p->data=e;
p->next=pre->next;
pre->next=p;
return true;
}
bool del(Link head,int i)
{ Link pre,p;
int k;
for(k=0,pre=head,p=head->next;k<i-1&&p;k++,pre=p,p=p->next);//寻找第i-1个元素的指针
if(k!=i-1||(!p))return false;
pre->next=p->next;
free(p);
return true;
}
void operate(Link head)
{
int n,i;
ElemType e;
do
{
printf("\n");
printf("请输入想进行何种 *** 作\n1============插入结点\n2============删除结点\n3============输出链表\n");
scanf("%d",&n);
switch(n)
{
case 1:printf("现在进行结点插入\n");
printf("请输入欲插入到何位置:");scanf("%d",&i);
printf("请输入欲插入的数据:");scanf(IO,&e);
if(insert(head,i,e))printf("插入成功!\n");else printf("插入失败!\n");
break;
case 2:printf("现在进行结点删除\n");
printf("请输入欲删除结点位置:");scanf("%d",&i);
if(del(head,i))printf("删除成功!\n");else printf("删除失败!\n");
break;
case 3:print(head);break;
default:break;
}
}while(n<4&&n>0);
}
int main()
{
Link head=creat();
operate(head);
return 0;
}
链表的 *** 作
#include <stdioh>
#include <mathh>//求积分
int main()
{
double f1(double);
double f2(double);
double f3(double);
double f4(double);
double f5(double);
double (p)(double);
double integral(double a,double b,double(p)(double));
double a,b;//记录积分区间
printf("请输入积分区间:");
scanf("%lf %lf",&a,&b);
if(a>b){double temp=a;a=b;b=temp;}//确保a<b
printf("sin(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,sin));
printf("cos(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,cos));
printf("exp(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,exp));
printf("x+1在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f1));
printf("2x+3在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f2));
printf("exp(x)+1在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f3));
printf("(1+x)^2在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f4));
printf("x^3在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f5));
return 0;
}
double integral(double a,double b,double(p)(double))
{
double sum=0,l=b-a,pl;//sum保存积分和,l保存积分区间的长度,pl保存积分区间细分后每个小区间的长度
int n=2,i;//n保存划分的小区间数i用作累加指针
pl=l/n;
while(pl>1e-6)
{
sum=0;
for(i=0;i<n;i++)
sum+=(p)(a+ipl)pl;
n=2;
pl/=2;
}
return sum;
}
double f1(double x)
{
return x+1;
}
double f2(double x)
{
return 2x+3;
}
double f3(double x)
{
return exp(x)+1;
}
double f4(double x)
{
return (1+x)(1+x);
}
double f5(double x)
{
return xxx;
}
求积分
都是以前写的 便宜楼主了!!
#include<timeh>
#include<stdioh>
#include<stringh>
#include<Windowsh>
#define N 20
#define M 100
struct student
{
char id[N];
char theclass[N];
char name[N];
char ontime[N];
}student[M];
int n;
void addition()
{
int i;
printf("\n请输入录入学生信息的总数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("\n\t请输入第%d个学生学号(20s):",i);
scanf("%s",student[i-1]id);
printf("\n\t请输入第%d个学生班级(20s):",i);
scanf("%s",student[i-1]theclass);
printf("\n\t请输入第%d个学生姓名(20s):",i);
scanf("%s",student[i-1]name);
printf("\n\t请输入第%d个学生上机时间(20s)(例08:02):",i);
scanf("%s",student[i-1]ontime);
printf("\n\t提示:您已成功录入第%d条信息\n",i);
}
}
void calculate()
{
int hours;
char times[30];
time_t rawtime;
struct tm timeinfo;
time ( &rawtime );
timeinfo = localtime(&rawtime );
strcpy(times,asctime(timeinfo));
printf("\t所有学生上机费用如下:\n");
for(int i=1;i<=n;i++)
{
printf("学生%d费用:",i);
if((student[i-1]ontime[3]-48)10+student[i-1]ontime[4]>(times[14]-48)10+times[15])
hours=(times[11]-48)10+times[12]-(student[i-1]ontime[0]-48)10-student[i-1]ontime[1];
else
hours=(times[11]-48)10+times[12]-(student[i-1]ontime[0]-48)10-student[i-1]ontime[1]+1;
printf("%d\n",hours);
}
}
void search()
{
int i,b,c,count;
do
{
char find[20];
printf("\n请选择查询方式:1根据学号查询;2根据班级查询;3根据姓名查询;4根据上机时间:");
scanf("%d",&b);
switch(b)
{
case 1:
count=PF_FLOATING_POINT_PRECISION_ERRATA;
printf("\n请输入学生的学号:");
scanf("%s",find);
for(i=0;i<n;i++)
{
if (strcmp(student[i]id,find)==0)
{
count++;
if(count==PF_FLOATING_POINT_EMULATED)
printf("学生学号\t学生班级\t学生姓名\t上机时间\n");
printf("%8s%15s%15s%17s",student[i]id,student[i]theclass,
student[i]name,student[i]ontime);
}
}
if(!count)
printf("提示:该生不存在");
goto A;
case 2:
count=PF_FLOATING_POINT_PRECISION_ERRATA;
printf("\n请输入学生的班级:");
scanf("%s",find);
for(i=0;i<n;i++)
{
if (strcmp(student[i]theclass,find)==0)
{
count++;
if(count==PF_FLOATING_POINT_EMULATED)
printf("学生学号\t学生班级\t学生姓名\t上机时间\n");
printf("%8s%15s%15s%17s",student[i]id,student[i]theclass,
student[i]name,student[i]ontime);
}
}
if(!count)
printf("提示:该生不存在");
goto A;
case 3:
count=PF_FLOATING_POINT_PRECISION_ERRATA;
printf("\n请输入学生的姓名:");
scanf("%s",find);
for(i=0;i<n;i++)
{
if (strcmp(student[i]name,find)==0)
{
count++;
if(count==PF_FLOATING_POINT_EMULATED)
printf("学生学号\t学生班级\t学生姓名\t上机时间\n");
printf("%8s%15s%15s%17s",student[i]id,student[i]theclass,
student[i]name,student[i]ontime);
}
}
if(!count)
printf("提示:该生不存在");
goto A;
case 4:
count=PF_FLOATING_POINT_PRECISION_ERRATA;
printf("\n请输入学生的上机时间:");
scanf("%s",find);
for(i=0;i<n;i++)
{
if (strcmp(student[i]ontime,find)==0)
{
count++;
if(count==PF_FLOATING_POINT_EMULATED)
printf("学生学号\t学生班级\t学生姓名\t上机时间\n");
printf("%8s%15s%15s%17s",student[i]id,student[i]theclass,
student[i]name,student[i]ontime);
}
}
if(!count)
printf("提示:该生不存在");
goto A;
default:printf("提示:输入错误");
}
A:printf("\n\t1继续\n\t0返回主菜单");
printf("\n\t 请输入您的选择:");
scanf("%d",&c);
}while(c);
}
void menu()
{
printf("\n\t欢迎进入机房收费管理系统!\n");
printf("\t 1录入功能 2计算功能 \n");
printf("\t 3查询功能 0-EXIT- \n");
printf("\t\n");
printf("\n\t 请输入您的选择:");
}
void main()
{
system("color 5f");
int a;
C:menu();
scanf("%d",&a);
switch(a)
{
case 0:printf("正在退出谢谢使用本系统,再见");break;
case 1:addition();goto C; /录入功能/
case 2:calculate();goto C; /浏览功能/
case 3:search();goto C; /查询功能/
}
}
看看满意不
课程设计包含课程计划、课程标准、教材。
一、课程计划
课程计划由教学科目的设置、学科顺序、课时分配、学年编制与学周安排这几个部分构成,其中教学科目的设置是课程计划要解决的首要问题。课程计划体现了国家对学校教育的统一要求,是学校组织教学工作、确定工作步调的依据,是指导教师进行教学和其他活动的依据。
2、课程标准
课程标准规定了学科的教学目的与任务,知识的范围、深度和结构,教学进度以及有关教学法的基本要求。课程标准由前言、课程目标、内容标准、实施和建议附录这五部分组成,且课程目标,即课程本身要实现的具体目标和意图,是课程计划的核心。
3、教材
教材是教学的材料。教材一般由目录、课文、习题、练习、实验、图表、注释、附录等分部分构成,其中,课文是教材的主体部分。除教科书以外,各类指导书、补充读物、工具书、挂图、图表、其他教学辅助用具、教学程序软件包、幻灯片、**片和音像磁盘等都可以是教材。
课程设计的原则:
1、整体化原则:在课程设计中,必须有一个整体的思路和规划,对时间、内容、总体目标都要有全面的规划,课与课之间应当是联系在一起的,而不是各自游离。
2、阶段性原则:对整体化的目标,应当阶段化,使得目标更加的明确具有可 *** 作性。
3、个性化原则:新课程改革后,对于学生个性的注重不容忽视,课程设计应当考虑学生的知识基础、兴趣爱好等不同的实际情况,为不同类型的学生设计不同的学习方法,让学生掌握主动性。
程序设计基础实训
项目名称:
学生学分管理
系 别: 计算机工程系
专 业: 计算机网络技术
班 级: 0922211
学生姓名:
指导教师: 韦立蓉
北 京 信 息 职 业 技 术 学 院
2010年 1 月 日
一、项目背景介绍
(概要介绍此项目设计的意义和要求)
本程序为学生学分管理系统。本程序根据现实中的问题通过c语言形式编程。本程序要求能够登记学分,显示学分查询学分,修改学分,删除学分,统计学分。
二、程序功能描述:
(描述基本程序中每个函数的功能,给处各函数流程图)
1、
登记单流程图
2、
显示学分流程图
3、
查询学分流程图
4、
修改信息流程图
5、
删除信息流程图
6、
统计信息流程图
三、设计方案介绍
(基本思想函数调用的思路介绍)
1、主流程图
2、界面设计
(界面设计,函数的定义,功能设计、,罗列出所有需要解决的问题
函数调用问题,循环问题,查找问题,修改问题,查询问题,删除问题,比较问题。
3、变量定义
序号 变量名 变量性质(局部/全局) 功能 作用范围
1 typedef 全局 定义结构体类型 整体
2 Int 全局 定义五门课类型 整体
Char 全局 定义学号班级姓名类型 整体
5、函数调用的类型
四、测试与分析
(简要介绍测试的作用及意义)
测试可以知道所编写的程序是否可行,通过实际的测试可以找出程序是否符合现实。通过测试和反复修改可以使程序更加人性化。
(一)测试列表
(以表格的形式给出,不少于10个)
测试数据或执行 *** 作 执行结果 是否正确 测试人签名
调用主菜单 显示了主菜单 正确
选择主菜单里的1 请输入学生学生信息… 正确
输出 有重复有乱码 否
查询 无 否
修改 按学号修改…… 是
按学号查询 显示了该信息 是
按班级查询 只显示里一名同学的信息 否
按学好删除 删除成功 是
须补考基础课的 所有学生信息都显示 否
可升学学生 显示了该显示的信息 是
(二)测试结果分析
(根据以下表格,如实填写并签名)
bug个数 错误类型 错误原因分析 是否修改 设计者签名
1 与count声名中的类型不匹配 少了void count() 是
2 错误 jiac 19: 表达式语法错在 main 函数中 Scanf中少了&s 是
4 错误 jiac 31: do语句中必须有while关键字在 main 函数中 没写while 是
5 错误 jiac 30: 未定义的符号's'在 main 函数中 上面没int I; 是
6 错误 1c 335: 表达式语法错在 count 函数中 Switch() 括号里没有变量 是
7
五、实训总结
(总结实训过程中的所使用的知识和已实现的功能,总结自己掌握理论知识和动手能力的程度,提出自己的不足之处及改进措施)
通过这一周的实训。我们充分运用了所学的东西编出了解决实际问题的程序。我们运用了函数的调用,循环,定义,比较,查找,删除等知识。通过实际动手,我更加深入的了解了课本上的知识。同时提高了我的动手能力。
实训中我找到了我许多的不足,以前我遇到不董的就会直接去问别人,不独自思考。试训中我学会了独自思考和团队合作。虽然我在编程当中遇到许多问题,但经过独自思考和学习解决了问题。最后编出了管理程序。
C语言学生学分管理程序代码
typedef struct student
{ char num[11],name[7],class[10];
int jichu,renwen,xuanxiu,zhuanye,shiyan;
}STU;
STU st[37];
static int n;
void menu();
void input();
void print();
void query();
void modi();
void del();
void count();
main()
{ int s;
do{
menu();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
{ case 0:break;
case 1:input();break;
case 2:print();break;
case 3:query();break;
case 4:modi();break;
case 5:del();break;
case 6:count();break;
default:printf("选择无效!");
}
}while(s!=0);
getch();
}
void menu()
{ clrscr();
printf("\t\t\t\n");
printf("\t\t\t欢迎您的使用\n");
printf("\t\t\t学生学分管理程序\n");
printf("\t\t\t 1-登记学生学分 \n");
printf("\t\t\t 2-显示学生学分 \n");
printf("\t\t\t 3-查询学生学分 \n");
printf("\t\t\t 4-修改学生学分 \n");
printf("\t\t\t 5-删除学生学分 \n");
printf("\t\t\t 6-统计学生学分 \n");
printf("\t\t\t 0-退出 \n");
printf("\t\t\t\n");
}
void input()
{ do
{ printf("请输入学生信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[n]num,st[n]name,st[n]class,&st[n]jichu,&st[n]zhuanye,&st[n]xuanxiu,&st[n]renwen,&st[n]shiyan);
n++;
printf("是否继续输入?(n-退出,任意键继续):");
}while(getche()!='n');
}
void print()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
getch();
}
void menu1()
{ clrscr();
printf("\t\t\t\n");
printf("\t\t\t查询模块\n");
printf("\t\t\t 1-按学号查询 \n");
printf("\t\t\t 2-按姓名查询 \n");
printf("\t\t\t 3-按班级查询 \n");
printf("\t\t\t 0-退出 \n");
printf("\t\t\t\n");
}
void query1()
{ char sn[11];
int i;
printf("请输入要查询的学号:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i]num)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
printf("\按任意键继续");
break;
}
else printf("\n对不起!没有该学号,任意键继续");
getch();
}
void query2()
{ char sn[7];
int i;
printf("请输入要查询的姓名:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i]name)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
printf("\按任意键继续");
break;
}else printf("\n对不起!没有该姓名,任意键继续");
getch();
}
void query3()
{ char sn[10];
int i;
printf("请输入要查询的班级:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i]class)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
printf("\按任意键继续");
break;
}
else printf("\n对不起!没有该班,任意键继续");
getch();
}
void query()
{ int s;
do{
menu1();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
{ case 0:break;
case 1:query1();break;
case 2:query2();break;
case 3:query3();break;
default:printf("选择无效!");
}
}while(s!=0);
getch();
}
void menu2()
{ clrscr();
printf("\t\t\t\n");
printf("\t\t\t修改模块\n");
printf("\t\t\t 1-按学号修改 \n");
printf("\t\t\t 2-按姓名修改 \n");
printf("\t\t\t 3-按班级修改 \n");
printf("\t\t\t 0-退出 \n");
printf("\t\t\t\n");
}
void modi1()
{ char sn[11];
int i;
printf("请输入要修改学分学生的学号:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i]num)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
{printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[i]num,st[i]name,st[i]class,&st[i]jichu,&st[i]zhuanye,&st[i]xuanxiu,&st[i]renwen,&st[i]shiyan);
printf("是否继续输入?(n-退出,任意键继续):");
}while(getche()!='n');
break;
}
getch();
}
void modi2()
{ char sn[7];
int i;
printf("请输入要修改学分学生的姓名:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i]name)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
{printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[i]num,st[i]name,st[i]class,&st[i]jichu,&st[i]zhuanye,&st[i]xuanxiu,&st[i]renwen,&st[i]shiyan);
printf("是否继续输入?(n-退出,任意键继续):");
}while(getche()!='n');
break;
}
getch();
}
void modi3()
{ char sn[10];
int i;
printf("请输入要修改学分学生的班级:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i]class)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
{printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[i]num,st[i]name,st[i]class,&st[i]jichu,&st[i]zhuanye,&st[i]xuanxiu,&st[i]renwen,&st[i]shiyan);
printf("是否继续输入?(n-退出,任意键继续):");
} while(getche()!='n');
break;
}
getch();
}
void modi()
{ int s;
do{
menu2();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
{ case 0:break;
case 1:modi1();break;
case 2:modi2();break;
case 3:modi3();break;
default:printf("选择无效!");
}
}while(s!=0);
getch();
}
void menu3()
{ clrscr();
printf("\t\t\t\n");
printf("\t\t\t删除模块\n");
printf("\t\t\t 1-按学号删除 \n");
printf("\t\t\t 2-按姓名删除 \n");
printf("\t\t\t 3-按班级删除 \n");
printf("\t\t\t 0-退出 \n");
printf("\t\t\t\n");
}
void del1()
{ char sn[11];
int i,j;
printf("请输入要删除学分学生的学号:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i]num)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
printf("\n是否删除(任意键确认,n\取消)");
if(getche()!='n');
{if(i!=n-1);
for(j=i;j<n-1;j++)
st[j]=st[j+1];
n--;
printf("\n该记录已删除");
getch();
break ;
}
}
else printf("\n对不起!没有该学号,任意键继续");
}
void del2()
{ char sn[7];
int i,j;
printf("请输入要删除学分学生的姓名:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i]name)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
printf("\n是否删除(任意键确认,n\取消)");
if(getche()!='n');
{if(i!=n-1);
for(j=i;j<n-1;j++)
st[j]=st[j+1];
n--;
printf("\n该记录已删除");
getch();
break ;
}
}
else printf("\n对不起!没有该学号,任意键继续");
}
void del3()
{ char sn[10];
int i,j;
printf("请输入要删除学分学生的班级:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i]class)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
printf("\n是否删除(任意键确认,n\取消)");
if(getche()!='n');
{if(i!=n-1);
for(j=i;j<n-1;j++)
st[j]=st[j+1];
n--;
printf("\n该记录已删除");
getch();
break ;
}
}
else printf("\n对不起!没有该学号,任意键继续");
}
void del()
{ int s;
do{
menu3();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
{ case 0:break;
case 1:del1();break;
case 2:del2();break;
case 3:del3();break;
default:printf("选择无效!");
}
}while(s!=0);
getch();
}
void menu4()
{ clrscr();
printf("\t\t\t\n");
printf("\t\t\t统计模块\n");
printf("\t\t\t 1- 可升学的学生 \n");
printf("\t\t\t 2-需补考基础课的 \n");
printf("\t\t\t 3-需补考专业课的 \n");
printf("\t\t\t 4-需补考选修课的 \n");
printf("\t\t\t 5-需补考人文课的 \n");
printf("\t\t\t 6-需补考实验课的 \n");
printf("\t\t\t 0-退出 \n");
printf("\t\t\t\n");
}
void count1()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i]jichu>=60&st[i]zhuanye>=60&st[i]xuanxiu>=60&st[i]renwen>=60&st[i]shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
getch();
}
void count2()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i]jichu<60&st[i]zhuanye>=60&st[i]xuanxiu>=60&st[i]renwen>=60&st[i]shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
getch();
}void count3()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i]jichu>=60&st[i]zhuanye<60&st[i]xuanxiu>=60&st[i]renwen>=60&st[i]shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
getch();
}
void count4()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i]jichu>=60&st[i]zhuanye>=60&st[i]xuanxiu<60&st[i]renwen>=60&st[i]shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
getch();
}
void count5()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i]jichu>=60&st[i]zhuanye>=60&st[i]xuanxiu>=60&st[i]renwen<60&st[i]shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
getch();
}
void count6()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i]jichu>=60&st[i]zhuanye>=60&st[i]xuanxiu>=60&st[i]renwen>=60&st[i]shiyan<60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);
getch();
}
void count()
{ int s;
do{
menu4();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
{ case 0:break;
case 1:count1();break;
case 2:count2();break;
case 3:count3();break;
case 4:count4();break;
case 5:count5();break;
case 6:count6();break;
default:printf("选择无效!");
}
}while(s!=0);
getch();
}
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
push dx
lea dx,Str_Addr
mov ah,9
int 21h
pop dx
EndM
; -----------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
Output_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Output_Chr endp
; -----------------------------------------
; 功能:输出回车换行
Output_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Output_CTLF endp
; -----------------------------------------
; 功能:取光标位置
; 入口:无
; 出口:DH=行号,DL=列号
GetCursor Proc Near
PUSH AX
PUSH BX
PUSH CX
XOR BX,BX
MOV AH,3
INT 10H
MOV Cursor_Row,DH
MOV Cursor_Col,DL
POP CX
POP BX
POP AX
RET
Cursor_Row DB
Cursor_Col DB
GetCursor EndP
; -----------------------------------------
; 功能:置光标位置
; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标)
SetCursor Proc Near
PUSH CX
PUSH BX
PUSH AX
MOV DH,Cursor_Row
MOV DL,Cursor_Col
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
POP CX
RET
SetCursor EndP
; -----------------------------------------
; 功能:将AL中的低4位二进制数转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AL=转换后的ASCII码
AL_ASCII Proc Near
cmp al,10 ;AL<10
jb @@To_ASCII ;AL<10,按数字处理
add al,7 ;AL>=10,按大写字母处理
@@To_ASCII: add al,'0' ;转换成相应的数字或大写字母
ret
AL_ASCII EndP
; -----------------------------------------
; 功能:将AL中的字节数据转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AX=转换后的ASCII码
Byte_ASCII Proc Near
push cx
mov cx,4
xor ah,ah ;将AH置0
shl ax,cl ;将AX左移4位
shr al,cl ;将AL右移4位
xchg ah,al
call AL_ASCII ;调用子程序,将AL中的值转换成相应的ASCII码
xchg ah,al
call AL_ASCII
xchg ah,al
pop cx
ret
Byte_ASCII EndP
; -----------------------------------------
; 功能:将AL中的字节数据转换成十六进制显示的ASCII码,并在当前光标位置显示
; 入口:AL
; 出口:AX=转换后的ASCII码
ByteD_ASCII Proc Near
push dx
push ax
call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码
cmp al,'9'
jbe $+7
mov dl,'0'
call Output_Chr ;显示一个字符
mov dl,al
call Output_Chr ;显示一个字符
mov dl,ah
call Output_Chr ;显示一个字符
mov dl,'H'
call Output_Chr ;显示一个字符
pop ax
pop dx
ret
ByteD_ASCII EndP
; -----------------------------------------
; 功能:将AX中的字数据转换成十六进制显示的ASCII码,并在当前光标位置显示
; 入口:AX
WordD_ASCII Proc Near
push dx
push ax
push ax
xchg ah,al
call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码
cmp al,'9'
jbe $+7
mov dl,'0'
call Output_Chr ;显示一个字符
mov dl,al
call Output_Chr ;显示一个字符
mov dl,ah
call Output_Chr ;显示一个字符
pop ax
call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码
mov dl,al
call Output_Chr ;显示一个字符
mov dl,ah
call Output_Chr ;显示一个字符
mov dl,'H'
call Output_Chr ;显示一个字符
pop ax
pop dx
ret
WordD_ASCII EndP
; -----------------------------------------
; 功能:输入内存单元的段地址或偏移地址
; 入口参数:无
; 出口参数:若直接回车(没有输入地址)或地址中含有无效字符,进位标志置位;
; 否则,进位标志清位,BX=有效地址
Input_Addr Proc Near
lea dx,Buffer ;字符串缓冲区地址
mov ah,0ah
int 21h
lea si,Buffer[1] ;实际输入的字符数地址
lodsb ;读入实际输入的字符数
test al,0ffh
jz @@Invalid
xor bx,bx ;有效地址初值
mov cl,al
xor ch,ch
@@Checking: lodsb ;读入一个字符
cmp al,'0' ;字符<'0'?
jb @@Letter ;是,判断是否字母
cmp al,'9' ;字符<='9'?
jbe @@Valid ;是,累加有效地址
@@Letter: mov ah,al
and ah,0dfh
cmp ah,'A' ;字符<'A'?
jb @@Invalid ;是,无效字符
cmp ah,'Z' ;字符<'Z'?
ja @@Invalid ;是,无效字符
@@Valid: and al,0fh
push cx
mov cx,4
shl bx,cl ;有效地址左移4位
or bl,al ;加上低4位
pop cx
loop @@Checking ;下一位
clc ;进位标志清位
ret
@@Invalid: stc ;进位标志置位
ret
Input_Addr EndP
; -----------------------------------------
Segment_Str db 'Please input a segment address(heximal): $'
Offset_Str db 13,10,'Please input a offset address(heximal): $'
Memory_Addr dd ;内存地址。偏移地址在前、段地址在后
Press_Key db 7,13,10,13,10,'Press any key to exit$'
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
cld
Output Segment_Str ;提示输入段地址
call GetCursor ;取光标位置
@@Segment: call SetCursor ;置光标位置
call Input_Addr ;输入地址
jc @@Segment ;若地址无效,重新输入
mov word ptr Memory_Addr[2],bx ;保存段地址
Output Offset_Str ;提示输入偏移地址
call GetCursor
@@Offset: call SetCursor
call Input_Addr
jc @@Offset
mov word ptr Memory_Addr,bx ;保存偏移地址
call Output_CTLF ;输出一个回车、换行
call Output_CTLF
mov dl,'['
call Output_Chr
mov ax,word ptr Memory_Addr[2] ;取内存单元段地址
call WordD_ASCII ;将AX中的字数据转换成十六进制显示的ASCII码,并在当前光标位置显示
mov dl,':'
call Output_Chr
mov ax,word ptr Memory_Addr ;取内存单元偏移地址
call WordD_ASCII
mov dl,']'
call Output_Chr
mov dl,'='
call Output_Chr
lds si,Memory_Addr ;装入有效地址
lodsb ;读入这个内存单元的一个字节
push cs
pop ds
call ByteD_ASCII ;将AL中的字节数据转换成十六进制显示的ASCII码
Exit_Key: Output Press_Key
mov ah,1
int 21h
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Buffer db 5 ;段地址、偏移地址输入缓冲区
Code ENDS
END Start ;编译到此结束
#include<stdioh> /引用库函数/
#include<stdlibh>
#include<ctypeh>
#include<stringh>
typedef struct /定义结构体数组/
{
char num[10]; /学号/
char name[20]; /姓名/
int score; /成绩/
}Student;
Student stu[80]; /结构体数组变量/
int menu_select() /菜单函数/
{
char c;
do{
system("cls"); /运行前清屏/
printf("\t\tStudents' 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=10sum/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 %52f\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);
}
}
}
以上就是关于java程序设计课程介绍全部的内容,包括:java程序设计课程介绍、C语言程序课程设计、c语言程序课程设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)