SEM系统软件需求规格书V1.5详细解析

需积分: 9 9 下载量 30 浏览量 更新于2024-07-25 收藏 2.93MB DOC 举报
"SEM系统软件需求规格书V1.5_1" SEM系统,全称Search Engine Marketing,是指搜索引擎营销,通常涉及在搜索引擎上通过付费广告和优化自然搜索结果来提高在线可见度。这份文档是XXXX软件股份有限公司为XXXX有限公司制定的一份详细的需求规格书,用于指导SEM系统的开发工作。 文档介绍了 SEM 系统的各个关键方面,包括其目的、范围、目标读者以及参考文档。文档的目的是为了明确系统的需求,确保开发团队和利益相关者对系统的预期功能和性能有共同的理解。文档范围涵盖了系统开发的各个方面,包括系统用户描述、业务流程、功能模块、需求描述和系统接口等。 在项目概述中,文档阐述了项目的开发背景,即为何需要开发SEM系统,以及项目的目标,可能是提高广告效果、优化广告投入产出比或提升品牌在线知名度。软件范围定义了系统将涵盖的功能和边界,而词汇表则提供了文档中使用的专业术语和缩写的解释。 系统用户描述部分详细列出了组织结构,帮助理解系统的使用者和他们的职责。业务流程部分描述了总体和主要功能的业务流程,以便开发者理解业务逻辑。功能模块和菜单项部分详细列出了系统的主要组成部分,如BA(Business Analysis)、DS(Data Service)、MA(Marketing Analysis)、MF(Marketing Function)和PD(Product Development),每个模块的功能菜单项都有详尽的说明。 需求描述章节详细阐述了系统的技术、功能和规则性需求,包括窗体设计、业务逻辑流程和具体功能模块的详细需求。系统接口部分讨论了人机交互界面、软件内外部接口的设计要求,确保系统的兼容性和集成性。其他需求部分涉及软件遵循的标准、网络环境、软硬件约束、系统扩展性、操作便捷性、可靠性以及错误处理机制。 这份规格书是开发SEM系统的基础,它确保了开发过程的规范性和系统的高质量。随着版本的更新,如V1.5,文档不断根据客户需求和评审反馈进行修订和完善,以满足市场的变化和用户的新需求。

import java.sql.*; import java.util.Scanner; public class keshe { public static String stu_name; public static String Enrollment_time; public static String Faculties; public static String majors; public static String stu_class; public static String stu_num;//学号 public static String Course; public static String fir_sem; public static String sec_sem; public static String thr_sem; public static String fou_sem; public static String fiv_sem; public static String six_sem; public static String sev_sem; public static String eig_sem; static Connection conn; static Statement stmt = null; public static void main(String[] args) throws SQLException { String url = "jdbc:mysql://localhost:3306/student"; String username = "root"; String password = "qwj1514399005"; try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (Exception e) { e.printStackTrace(); } try { conn = DriverManager.getConnection(url, username, password); stmt = conn.createStatement(); } catch (Exception e) { e.printStackTrace(); } } //插入课程名字和成绩 public static void Insert_course() throws SQLException { try { PreparedStatement prestmt = conn.prepareStatement("INSERT INTO Course_grades(course,fir_sem,sec_sem,thr_sem,fou_sem,fiv_sem,six_sem,sev_sem,eig_sem,stu_name,stu_num)VALUES (?, ?, ?, ?, ?,?, ?, ?, ?, ?,?)"); System.out.println("分别输入插入的课程名,第一学期成绩,第二学期成绩,第三学期成绩,第四学期成绩,第五学期成绩,第六学期成绩,第七学期成绩,第八学期成绩,学生姓名,学号"); Scanner scan = new Scanner(System.in); Course = scan.nextLine(); fir_sem = scan.nextLine(); sec_sem = scan.nextLine(); thr_sem = scan.nextLine(); fou_sem = scan.nextLine(); fiv_sem = scan.nextLine(); six_sem = scan.nextLine(); sev_sem = scan.nextLine(); eig_sem = scan.nextLine(); stu_name = scan.nextLine(); stu_num = scan.nextLine(); prestmt.setString(1,Course ); prestmt.setString(2,fir_sem ); prestmt.setString(3,sec_sem ); prestmt.setString(4,thr_sem ); prestmt.setString(5,fou_sem ); prestmt.setString(6,fiv_sem ); prestmt.setString(7,six_sem ); prestmt.setString(8,sev_sem ); prestmt.setString(9,eig_sem ); prestmt.setString(10,stu_name ); prestmt.setString(11,stu_num ); prestmt.executeUpdate(); prestmt.close(); System.out.println("插入学生课程成功"); }catch (Exception e){ e.printStackTrace(); System.out.println("插入出错"); } } 添加可以计算出所有人的总分和平均分,课程的平均分 直接给出代码

2023-06-09 上传

#include<stdio.h> #include<stdlib.h> #include<sys/ipc.h> #include<sys/shm.h> #include<sys/sem.h> #include<string.h> typedef struct _test{ int a_val; int b_val; int a_flag; int b_flag; int game_no; int stage; }test; int pk[3][3] = {0,-1,1,1,0,-1,-1,1,0}; void sem_p(); void sem_v(); void set_sem(); void del_sem(); int sem_id; union semun{ int val; struct semid_ds *buf; unsigned short *arry; }; int main(){ int shmid; test* shm; shmid = shmget((key_t)1236,sizeof(test),0666|IPC_CREAT); if(shmid == -1){ printf("shmget failed\n"); exit(EXIT_FAILURE); } printf("%d",shmid); shm = shmat(shmid,0,0); if (shm == (void*)-1){ printf("shmat failed\n"); exit(EXIT_FAILURE); } printf("\nMemory attached at %X\n",(int)shm); sem_id = semget((key_t)3000,1,0666|IPC_CREAT); set_sem(); int no=0,debug=0,a,b; shm->a_flag=0; shm->a_val = -2; shm->b_flag=0; shm->b_val = -2; shm->game_no=1; shm->stage=0; while(1){ sem_p(); //printf("a:%d b:%d\n",shm->a_val,shm->b_val); sleep(1); if(shm->game_no==-1){ sem_v(); break; } if (shm->stage==0){ if(no!=shm->game_no){ no = shm->game_no; printf("-------------------\n"); printf("game_no:%d\n",no); } if(shm->a_flag==1 && shm->b_flag==1) shm->stage=1; } else if(shm->stage==1){ printf("a:%d\n",shm->a_val); printf("b:%d\n",shm->b_val); a = pk[shm->a_val][shm->b_val]; b = pk[shm->b_val][shm->a_val]; shm->a_val=a; shm->b_val=b; shm->a_flag=0; shm->b_flag=0; shm->stage=2; } else if(shm->stage==2){ if(shm->a_flag==1 && shm->b_flag==1){ shm->stage=0; shm->game_no++; shm->a_flag=0; shm->b_flag=0; printf("-------------------\n"); if(shm->game_no > 100) shm->game_no=-1; } } sem_v(); } shmdt(shm); int ret=0; ret = shmctl(shmid,IPC_RMID,NULL); if(ret<0){ printf("shmctl error!\n"); } del_sem(); printf("finish"); } void set_sem(){ union semun sem_union; sem_union.val=1; semctl(sem_id,0,SETVAL,sem_union); } void del_sem(){ union semun sem_union; semctl(sem_id,0,IPC_RMID,sem_union); } void sem_p(){ struct sembuf sem_b; sem_b.sem_num = 0; sem_b.sem_op = -1; sem_b.sem_flg = SEM_UNDO; semop(sem_id,&sem_b,1); } void sem_v(){ struct sembuf sem_b; sem_b.sem_num = 0; sem_b.sem_op = 1; sem_b.sem_flg = SEM_UNDO; semop(sem_id,&sem_b,1); }

2023-06-08 上传