算法设计与分析课程设计报告(算法设计与分析报告总结)
本篇文章给大家谈谈算法设计与分析课程设计报告,以及算法设计与分析报告总结对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、数据结构课程设计
- 2、c语言程序设计实验报告
- 3、数据结构课程设计报告
- 4、关于编程超市商品信息管理系统(至少包括:商品名称,商品编号,单价,库存数量)的课程设计报告怎么写
- 5、!高分跪求帮忙写一个简单小程序的JAVA课程设计报告(内详!!)
数据结构课程设计
#include stdio.h
#include malloc.h
#include windows.h
#include time.h
#define MAXSIZE 100
typedef struct Ttime{
int t_hour;
int t_min;
int t_sec;
}Ttime;
typedef struct Mcar{
int number;
Ttime t[2];
}Mcar;
typedef struct{
Mcar elements[MAXSIZE];
int top;
}CarStop;
typedef struct node{
Mcar date;
struct node *next;
}LinkQueue;
typedef struct{
LinkQueue *front;
LinkQueue *rear;
}Queue;
void InitQueue(Queue *Q){
Q - front = (LinkQueue *) malloc(sizeof(LinkQueue));
Q - front - next = NULL;
Q - rear = Q - front;
}
int IsEmptyH(Queue Q){
if(Q.front == Q.rear)
return 1;
else
return 0;
}
void EeQueue(Queue *Q, Mcar x){
Q - rear - next = (LinkQueue *)malloc(sizeof(LinkQueue));
Q - rear = Q - rear - next;
Q - rear - date = x;
Q - rear - next = NULL;
}
Mcar DeQueue(Queue *Q){
LinkQueue *p;
Mcar y;
if(!IsEmpty(*Q)){
p = Q - front - next;
Q - front - next = p - next;
if(p - next == NULL)
Q - rear = Q - front;
y = p - date;
free(p);
return y;
}
}
int IsEmpty(CarStop S){
if(S.top == 0)
return 1;
else
return 0;
}
int IsFull(CarStop S){
if(S.top == MAXSIZE)
return 1;
else
return 0;
}
int Init(CarStop *S){
S - top = 0;
}
void PutIn(CarStop *S, Mcar D){
if(!IsFull(*S)){
S - elements[S - top] = D;
S - top++;
}
else
printf("IS FULL");
}
Mcar Pop(CarStop *S){
if(!IsEmpty(*S)){
S - top--;
return S - elements[S - top];
}
else
printf("IS NULL");
}
Mcar TopNum(CarStop S){
if(!IsEmpty(S)){
return S.elements[S.top - 1];
}
}
int serachOneCar(CarStop S, Mcar num){
int i = 0;
if(!IsEmpty(S)){
while(i = S.top){
if(num.number == S.elements[i].number)
return 1;
i++;
}
}
else
return 0;
}
void getInOneCar(CarStop *CarStack, Queue *Q, Mcar car){
time_t secnow;
struct tm * tmptr;
time(secnow);
tmptr = localtime(secnow);
car.t[0].t_hour= tmptr - tm_hour;
car.t[0].t_min = tmptr - tm_min;
car.t[0].t_sec = tmptr - tm_sec;
printf("please put in you car number:\n");
scanf("%d", car.number);
if(!IsFull(*CarStack))
PutIn(CarStack, car);
else{
printf("car stop is full, please stay in biandao\n");
EeQueue(Q, car);
}
printf("you car's intime is :[%d]:[%d]:[%d]\n\n\n", car.t[0].t_hour, car.t[0].t_min, car.t[0].t_sec);
}
void getOutOneCar(CarStop *CarStack, CarStop *CarStackL, Queue *Q, Mcar car){
Mcar lin;
time_t secnow;
struct tm * tmptr;
time(secnow);
tmptr = localtime(secnow);
car.t[1].t_hour= tmptr - tm_hour;
car.t[1].t_min = tmptr - tm_min;
car.t[1].t_sec = tmptr - tm_sec;
printf("please put in you car number:\n");
scanf("%d", car.number);
if(IsEmpty(*CarStack) || !serachOneCar(*CarStack, car))
printf("soory, there is no the car\n");
else{
while(1){
lin = Pop(CarStack);
if(lin.number == car.number)
break;
else
PutIn(CarStackL, lin);
}
while(!IsEmpty(*CarStackL)){
PutIn(CarStack, Pop(CarStackL));
}
if(!IsEmptyH(*Q))
PutIn(CarStack, DeQueue(Q));
printf("\n\nyou car's intime is :[%d]:[%d]:[%d]\n", lin.t[0].t_hour, lin.t[0].t_min, lin.t[0].t_sec);
printf("you car's out time is :[%d]:[%d]:[%d]\n", car.t[1].t_hour, car.t[1].t_min, car.t[1].t_sec);
int alltime = (car.t[1].t_hour - lin.t[0].t_hour) * 3600 + (car.t[1].t_min - lin.t[0].t_min) * 60 + (car.t[1].t_sec - lin.t[0].t_sec);
printf("you car's all time is second:[%d]\n", alltime);
}
}
int main(){
CarStop CarStack, CarStackL;
Queue Q;
LinkQueue *pp;
InitQueue(Q);
Init(CarStack);
Init(CarStackL);
Mcar car;
//String caozuo;
int caozuo, i, j;
while(1){
printf("\t**************the car stop menu*************\n");
printf("\t\t***** 1. get in a car\n\n");
printf("\t\t***** 2. get out a car\n\n");
printf("\t\t***** 0. out the car stop\n\n");
printf("\t\t*****put in the else you can see all the car in the carstop\n\n");
printf("\t*****************************************\n");
printf("please put in you caozuo: \n");
scanf("%d", caozuo);
switch(caozuo){
case 1: getInOneCar(CarStack, Q, car);
break;
case 2: getOutOneCar(CarStack, CarStackL, Q, car);
break;
case 0: return 0; break;
default : break;
}
if(!IsEmpty(CarStack)){
i = 0;
printf("the all car is:\n");
while(i CarStack.top){
printf("the [%d] is %d\n",i + 1, CarStack.elements[i].number);
i++;
}
}
else
printf("the car stop IS NULL\n");
printf("****************************\n");
if(!IsEmptyH(Q)){
j = 1;
pp=Q.front;
printf("the biandao's car is:\n");
while(pp!=Q.rear){
printf("the [%d] wait car is %d\n", j, pp - next - date.number);
pp = pp - next;
j++;
}
}
else
printf("the biandao is NULL\n");
printf("****************************\n");
system("pause");
system("cls");
}
}
C语言编译通过
c语言程序设计实验报告
五、 课程设计小结心得体会
1设计思想
1)、设定一个一维数组,可先按员工序号设定每位员工的工资
2)、利用While语句和Prinft语句完成用户菜单的设计
功能为:第1项 设为员工编号和工资数据
第2项 设为修改员工工资数据
第3项 设为查询员工工资数据
第4项 设为结束系统
3)、当用户选择1、2项时,需输入员工编号,所以需要设计编号校正功能,如果出错可输出“The error employe number”
4)、当选择2时,进行工资数据的修改,并将新数据存回该员工的工资数组中
5)、利用for循环中判断语句,将用户工资数与数组中的工资数进行比较,如相同则输出,将计数器加1,如此下去,直到把整个数组遍历一遍
6)、判断计数器是否为0, 是0表示找不到相符的工资,如果不为0,则输出共查出几比相符的工资
以上当然里面也涉及了“函数的模块化”理念,可以避免但需要重复打印头文件时重复编写打印信头的语句。像这样的程序是多见的,这样不但降低了程序还发效率,而且耗时浪费资源“共用体”的使用简化了程序的“复杂”性,正如(4)中,学号与姓名同时表示一个人,但在函数使用了“共用体”,从而程序的简单可以便于纠错,查找问题,避免了代码的重复,这样就给编译时带来了一定的难度与“量”的繁杂。一般不采取这样的做法,力求“简单、明了、清晰”。
数据结构课程设计报告
1、一元稀疏多项式相加
详细设计
4.1 程序头的设计:
#includestdio.h
#includemalloc.h
typedef struct pnode
{int coef;/*系数 */
int exp;/*指数 */
struct pnode *next;/*下一个指针*/
}pnode;
4.2 用头插法生成一个多项式,系数和指数输入0时退出输入
pnode * creat()
{int m,n; pnode *head,*rear,*s;
/*head为头指针,rear和s为临时指针*/
head=(pnode *)malloc(sizeof(pnode));
rear=head;
/*指向头*/
printf("input coef:");/*输入系数*/
scanf("%d",n);
printf("input exp:");/*输入指数*/
scanf("%d",m);
while(n!=0)/*输入0就退出*/
{s=(pnode *)malloc(sizeof(pnode));
s-coef=n;
s-exp=m;
s-next=NULL;
rear-next=s;/*头插法*/
rear=s;
printf("input coef:");/*输入系数*/
scanf("%d",n);
printf("input exp:");/*输入指数*/
scanf("%d",m);
}
head=head-next;/*第一个头没有用到*/
return head;
}
4.3 显示一个多项式
void display(pnode *head)
{pnode *p;int one_time=1; p=head;
while(p!=NULL)/*不为空的话*/
{
if(one_time==1)
{if(p-exp==0)/*如果指数为0的话,直接输出系数*/
printf("%d",p-coef); /*如果系数是正的话前面就要加+号*/
else if(p-coef==1||p-coef==-1)
printf("x^%d",p-exp);/*如果系数是1的话就直接输出+x*/
/*如果系数是-1的话就直接输出-x号*/
else if(p-coef0)/*如果系数是大于0的话就输出+系数x^指数的形式*/
printf("%dx^%d",p-coef,p-exp);
else if(p-coef0)/*如果系数是小于0的话就输出系数x^指数的形式*/
printf("%dx^%d",p-coef,p-exp);
one_time=0;
}
else{
if(p-exp==0)/*如果指数为0的话,直接输出系数*/
{if(p-coef0)
printf("+%d",p-coef); /*如果系数是正的话前面就要加+号*/
}
else if(p-coef==1)
printf("+x^%d",p-exp);
else if(p-coef==-1)
printf("x^%d",p-exp);/*如果系数是1的话就直接输出+x号*/
else if(p-coef0)/*如果系数是大于0的话就输出+系数x^指数的形式*/
printf("+%dx^%d",p-coef,p-exp);
else if(p-coef0)/*如果系数是小于0的话就输出系数x^指数的形式*/
printf("%dx^%d",p-coef,p-exp);
}
p=p-next;/*指向下一个指针*/
}
printf("\n");
4.4 两个多项式的加法运算
pnode * add(pnode *heada,pnode *headb)
{pnode *headc,*p,*q,*s,*r;
/*headc为头指针,r,s为临时指针,p指向第1个多项式并向右移动,q指向第2个多项式并并向右移动*/
int x;
/*x为系数的求和*/
p=heada;
/*指向第一个多项式的头*/
q=headb;
/*指向第二个多项式的头*/
headc=(pnode *)malloc(sizeof(pnode));
r=headc;
/*开辟空间*/
while(p!=NULLq!=NULL)
/*2个多项式的某一项都不为空时*/
{if(p-exp==q-exp)/*指数相等的话*/
{x=p-coef+q-coef;/*系数就应该相加*/
if(x!=0)/*相加的和不为0的话*/
{s=(pnode *)malloc(sizeof(pnode));/*用头插法建立一个新的节点*/
s-coef=x;
s-exp=p-exp;
r-next=s;
r=s;
}
q=q-next;p=p-next;
/*2个多项式都向右移*/
}
else if(p-expq-exp)/*p的系数小于q的系数的话,就应该复制q接点到多项式中*/
{s=(pnode *)malloc(sizeof(pnode));
s-coef=q-coef;
s-exp=q-exp;
r-next=s;
r=s;
q=q-next;/*q向右移动*/
}
else/*p的系数大于q的系数的话,就应该复制p接点到多项式中*/
{s=(pnode *)malloc(sizeof(pnode));
s-coef=p-coef;
s-exp=p-exp;
r-next=s;
r=s;
p=p-next;/*p向右移动*/
}
}
当第2个多项式空,第1个数不为空时,将第一个数剩下的全用新节点产生
while(p!=NULL)
{s=(pnode *)malloc(sizeof(pnode));
s-coef=p-coef;
s-exp=p-exp;
r-next=s;
r=s;
p=p-next;
}
当第1个多项式空,第1个数不为空时,将第2个数剩下的全用新节点产生
while(q!=NULL)
{s=(pnode *)malloc(sizeof(pnode));
s-coef=q-coef;
s-exp=q-exp;
r-next=s;
r=s;
q=q-next;
}
r-next=NULL;
/*最后指向空*/
headc=headc-next;/*第一个头没有用到*/
return headc;/*返回头接点*/
4.5 两个多项式的减法运算,和加法类似,不同的地方已经注释
pnode * sub(pnode *heada,pnode *headb)
{pnode *headc,*p,*q,*s,*r;
int x;
p=heada;q=headb;
headc=(pnode *)malloc(sizeof(pnode));
r=headc;
while(p!=NULLq!=NULL)
{if(p-exp==q-exp)
{x=p-coef-q-coef;/*系数相减*/
if(x!=0)
{s=(pnode *)malloc(sizeof(pnode));
s-coef=x;
s-exp=p-exp;
r-next=s;
r=s;
}
q=q-next;p=p-next;
}
else if(p-expq-exp)/*p的系数小于q的系数的话*/
{s=(pnode *)malloc(sizeof(pnode));
s-coef=-q-coef;/*建立的接点的系数为原来的相反数*/
s-exp=q-exp;
r-next=s;
r=s;
q=q-next;
}
else
{s=(pnode *)malloc(sizeof(pnode));
s-coef=p-coef;
s-exp=p-exp;
r-next=s;
r=s;
p=p-next;
}
}
while(p!=NULL)
{s=(pnode *)malloc(sizeof(pnode));
s-coef=p-coef;
s-exp=p-exp;
r-next=s;
r=s;
p=p-next;
}
while(q!=NULL)
{s=(pnode *)malloc(sizeof(pnode));
s-coef=-q-coef;/*建立的接点的系数为原来的相反数*/
s-exp=q-exp;
r-next=s;
r=s;
q=q-next;
}
r-next=NULL;
headc=headc-next;
return headc;
4.6 界面设计:
printf("\n ****************************************\n");
printf("\n ************** 03 Computer *************\n");
printf("\n ******** Class:two **** Num:34 *********\n");
printf("\n *********** Name: xie pan **********\n");
printf("\n ****************************************\n");
printf("\n --------------1: add -------------\n");
printf("\n --------------2: sub -------------\n");
printf("\n --------------3: exit ------------\n");
printf("\n ****************************************\n");
4.7 连接程序:
case 1:add_main();break;/*加法*/
case 2:sub_main();break;/*减法*/
case 3:break;/*退出*/
关于编程超市商品信息管理系统(至少包括:商品名称,商品编号,单价,库存数量)的课程设计报告怎么写
如果你是抱着学习的目的,给你些建议。你这几个模块跟本就达不到可以使用的程度。你考虑到前台销售模块没有?考虑到商品售价变价没有?考虑到促销零时变价如何实现?限时促销如何实现?散秤商品如何与条码秤实现程序对接。财务模块呢?这种软件内置了财务模块,有的可以设置八级财务科目。这是关系型数据库,数学模型如何建立?采用什么架构?很多很多的问题。
!高分跪求帮忙写一个简单小程序的JAVA课程设计报告(内详!!)
连连看java源代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class lianliankan implements ActionListener
{
JFrame mainFrame; //主面板
Container thisContainer;
JPanel centerPanel,southPanel,northPanel; //子面板
JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组
JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮
JLabel fractionLable=new JLabel("0"); //分数标签
JButton firstButton,secondButton; //分别记录两次被选中的按钮
int grid[][] = new int[8][7];//储存游戏按钮位置
static boolean pressInformation=false; //判断是否有按钮被选中
int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标
int i,j,k,n;//消除方法控制
public void init(){
mainFrame=new JFrame("JKJ连连看");
thisContainer = mainFrame.getContentPane();
thisContainer.setLayout(new BorderLayout());
centerPanel=new JPanel();
southPanel=new JPanel();
northPanel=new JPanel();
thisContainer.add(centerPanel,"Center");
thisContainer.add(southPanel,"South");
thisContainer.add(northPanel,"North");
centerPanel.setLayout(new GridLayout(6,5));
for(int cols = 0;cols 6;cols++){
for(int rows = 0;rows 5;rows++ ){
diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1]));
diamondsButton[cols][rows].addActionListener(this);
centerPanel.add(diamondsButton[cols][rows]);
}
}
exitButton=new JButton("退出");
exitButton.addActionListener(this);
resetButton=new JButton("重列");
resetButton.addActionListener(this);
newlyButton=new JButton("再来一局");
newlyButton.addActionListener(this);
southPanel.add(exitButton);
southPanel.add(resetButton);
southPanel.add(newlyButton);
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));
northPanel.add(fractionLable);
mainFrame.setBounds(280,100,500,450);
mainFrame.setVisible(true);
}
public void randomBuild() {
int randoms,cols,rows;
for(int twins=1;twins=15;twins++) {
randoms=(int)(Math.random()*25+1);
for(int alike=1;alike=2;alike++) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
while(grid[cols][rows]!=0) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
}
this.grid[cols][rows]=randoms;
}
}
}
public void fraction(){
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));
}
public void reload() {
int save[] = new int[30];
int n=0,cols,rows;
int grid[][]= new int[8][7];
for(int i=0;i=6;i++) {
for(int j=0;j=5;j++) {
if(this.grid[i][j]!=0) {
save[n]=this.grid[i][j];
n++;
}
}
}
n=n-1;
this.grid=grid;
while(n=0) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
while(grid[cols][rows]!=0) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
}
this.grid[cols][rows]=save[n];
n--;
}
mainFrame.setVisible(false);
pressInformation=false; //这里一定要将按钮点击信息归为初始
init();
for(int i = 0;i 6;i++){
for(int j = 0;j 5;j++ ){
if(grid[i+1][j+1]==0)
diamondsButton[i][j].setVisible(false);
}
}
}
public void estimateEven(int placeX,int placeY,JButton bz) {
if(pressInformation==false) {
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
pressInformation=true;
}
else {
x0=x;
y0=y;
fristMsg=secondMsg;
firstButton=secondButton;
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
if(fristMsg==secondMsg secondButton!=firstButton){
xiao();
}
}
}
public void xiao() { //相同的情况下能不能消去。仔细分析,不一条条注释
if((x0==x (y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)(y0==y))){ //判断是否相邻
remove();
}
else{
for (j=0;j7;j++ ) {
if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空
if (yj) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边
for (i=y-1;i=j;i-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮
if (grid[x][i]!=0) {
k=0;
break;
}
else{ k=1; } //K=1说明通过了第一次验证
}
if (k==1) {
linePassOne();
}
}
if (yj){ //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边
for (i=y+1;i=j ;i++ ){ //判断第二按钮左侧直到第一按钮中间有没有按钮
if (grid[x][i]!=0){
k=0;
break;
}
else { k=1; }
}
if (k==1){
linePassOne();
}
}
if (y==j ) {
linePassOne();
}
}
if (k==2) {
if (x0==x) {
remove();
}
if (x0x) {
for (n=x0;n=x-1;n++ ) {
if (grid[n][j]!=0) {
k=0;
break;
}
if(grid[n][j]==0 n==x-1) {
remove();
}
}
}
if (x0x) {
for (n=x0;n=x+1 ;n-- ) {
if (grid[n][j]!=0) {
k=0;
break;
}
if(grid[n][j]==0 n==x+1) {
remove();
}
}
}
}
}
for (i=0;i8;i++ ) { //列
if (grid[i][y0]==0) {
if (xi) {
for (j=x-1;j=i ;j-- ) {
if (grid[j][y]!=0) {
k=0;
break;
}
else { k=1; }
}
if (k==1) {
rowPassOne();
}
}
if (xi) {
for (j=x+1;j=i;j++ ) {
if (grid[j][y]!=0) {
k=0;
break;
}
else { k=1; }
}
if (k==1) {
rowPassOne();
}
}
if (x==i) {
rowPassOne();
}
}
if (k==2){
if (y0==y) {
remove();
}
if (y0y) {
for (n=y0;n=y-1 ;n++ ) {
if (grid[i][n]!=0) {
k=0;
break;
}
if(grid[i][n]==0 n==y-1) {
remove();
}
}
}
if (y0y) {
for (n=y0;n=y+1 ;n--) {
if (grid[i][n]!=0) {
k=0;
break;
}
if(grid[i][n]==0 n==y+1) {
remove();
}
}
}
}
}
}
}
public void linePassOne(){
if (y0j){ //第一按钮同行空按钮在左边
for (i=y0-1;i=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮
if (grid[x0][i]!=0) {
k=0;
break;
}
else { k=2; } //K=2说明通过了第二次验证
}
}
if (y0j){ //第一按钮同行空按钮在与第二按钮之间
for (i=y0+1;i=j ;i++){
if (grid[x0][i]!=0) {
k=0;
break;
}
else{ k=2; }
}
}
}
public void rowPassOne(){
if (x0i) {
for (j=x0-1;j=i ;j-- ) {
if (grid[j][y0]!=0) {
k=0;
break;
}
else { k=2; }
}
}
if (x0i) {
for (j=x0+1;j=i ;j++ ) {
if (grid[j][y0]!=0) {
k=0;
break;
}
else { k=2; }
}
}
}
public void remove(){
firstButton.setVisible(false);
secondButton.setVisible(false);
fraction();
pressInformation=false;
k=0;
grid[x0][y0]=0;
grid[x][y]=0;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==newlyButton){
int grid[][] = new int[8][7];
this.grid = grid;
randomBuild();
mainFrame.setVisible(false);
pressInformation=false;
init();
}
if(e.getSource()==exitButton)
System.exit(0);
if(e.getSource()==resetButton)
reload();
for(int cols = 0;cols 6;cols++){
for(int rows = 0;rows 5;rows++ ){
if(e.getSource()==diamondsButton[cols][rows])
estimateEven(cols+1,rows+1,diamondsButton[cols][rows]);
}
}
}
public static void main(String[] args) {
lianliankan llk = new lianliankan();
llk.randomBuild();
llk.init();
}
}
//old 998 lines
//new 318 lines
参考资料:
算法设计与分析课程设计报告的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于算法设计与分析报告总结、算法设计与分析课程设计报告的信息别忘了在本站进行查找喔。